Merge "Valid tags on a gallery should correspond to unordered list"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 3 Apr 2017 18:25:37 +0000 (18:25 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 3 Apr 2017 18:25:37 +0000 (18:25 +0000)
220 files changed:
RELEASE-NOTES-1.29
composer.json
includes/EditPage.php
includes/OutputPage.php
includes/Title.php
includes/api/ApiParse.php
includes/api/i18n/de.json
includes/api/i18n/en.json
includes/api/i18n/fr.json
includes/api/i18n/ko.json
includes/api/i18n/pt-br.json
includes/api/i18n/qqq.json
includes/api/i18n/sv.json
includes/api/i18n/uk.json
includes/api/i18n/zh-hans.json
includes/cache/MessageBlobStore.php
includes/cache/MessageCache.php
includes/changes/ChangesListBooleanFilter.php
includes/changes/ChangesListFilter.php
includes/changes/ChangesListFilterGroup.php
includes/changes/ChangesListStringOptionsFilter.php
includes/changes/ChangesListStringOptionsFilterGroup.php
includes/installer/Installer.php
includes/installer/i18n/br.json
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/database/DatabaseMysqlBase.php
includes/libs/rdbms/database/DatabaseSqlite.php
includes/media/IPTC.php
includes/objectcache/ObjectCache.php
includes/page/Article.php
includes/page/WikiPage.php
includes/parser/CoreTagHooks.php
includes/parser/ParserOptions.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/resourceloader/ResourceLoaderUserDefaultsModule.php
includes/resourceloader/ResourceLoaderUserOptionsModule.php
includes/resourceloader/ResourceLoaderUserTokensModule.php
includes/resourceloader/ResourceLoaderWikiModule.php
includes/specialpage/ChangesListSpecialPage.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialWatchlist.php
includes/widget/search/InterwikiSearchResultSetWidget.php
languages/i18n/ar.json
languages/i18n/arz.json
languages/i18n/atj.json
languages/i18n/azb.json
languages/i18n/ba.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bn.json
languages/i18n/br.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/crh-cyrl.json
languages/i18n/crh-latn.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/dty.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/fr.json
languages/i18n/frr.json
languages/i18n/gl.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hr.json
languages/i18n/ia.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/jv.json
languages/i18n/kiu.json
languages/i18n/km.json
languages/i18n/ko.json
languages/i18n/krl.json
languages/i18n/lb.json
languages/i18n/lt.json
languages/i18n/mk.json
languages/i18n/nl.json
languages/i18n/or.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sl.json
languages/i18n/sq.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/tl.json
languages/i18n/tr.json
languages/i18n/tt-cyrl.json
languages/i18n/uk.json
languages/i18n/vi.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
package.json
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-core-apex.css
resources/lib/oojs-ui/oojs-ui-core-mediawiki.css
resources/lib/oojs-ui/oojs-ui-core.js
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui-toolbars-apex.css
resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css
resources/lib/oojs-ui/oojs-ui-toolbars.js
resources/lib/oojs-ui/oojs-ui-widgets-apex.css
resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css
resources/lib/oojs-ui/oojs-ui-widgets.js
resources/lib/oojs-ui/oojs-ui-windows-apex.css
resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css
resources/lib/oojs-ui/oojs-ui-windows.js
resources/lib/oojs-ui/themes/apex/icons-interactions.json
resources/lib/oojs-ui/themes/apex/images/icons/add-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/add-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/check-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/check-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/clear-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/clear-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/close-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/close-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/heart-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/heart-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/key-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/key-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/key-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/key-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/subtract-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/subtract-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/sun-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/sun-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/sun-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/sun-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/watchlist-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/watchlist-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/watchlist-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/watchlist-rtl-invert.svg [deleted file]
resources/src/mediawiki.legacy/oldshared.css
resources/src/mediawiki.libs/mediawiki.libs.jpegmeta.js
resources/src/mediawiki.skinning/content.parsoid.less
resources/src/mediawiki.special/mediawiki.special.search.interwikiwidget.styles.less
resources/src/mediawiki.special/mediawiki.special.userlogin.common.css
resources/src/mediawiki.widgets/mw.widgets.TitleOptionWidget.js
resources/src/mediawiki/mediawiki.Upload.BookletLayout.js
resources/src/mediawiki/mediawiki.util.js
resources/src/moment-locale-overrides.js
tests/parser/DbTestPreviewer.php
tests/parser/parserTests.txt
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/FauxRequestTest.php
tests/phpunit/includes/HtmlTest.php
tests/phpunit/includes/MessageTest.php
tests/phpunit/includes/api/ApiMainTest.php
tests/phpunit/includes/changes/ChangesListBooleanFilterGroupTest.php
tests/phpunit/includes/changes/ChangesListBooleanFilterTest.php
tests/phpunit/includes/changes/ChangesListStringOptionsFilterGroupTest.php
tests/phpunit/includes/changes/RCCacheEntryFactoryTest.php
tests/phpunit/includes/libs/ObjectFactoryTest.php
tests/phpunit/includes/libs/objectcache/HashBagOStuffTest.php
tests/phpunit/includes/objectcache/ObjectCacheTest.php [new file with mode: 0644]
tests/phpunit/includes/resourceloader/MessageBlobStoreTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php
tests/phpunit/includes/specialpage/AbstractChangesListSpecialPageTestCase.php
tests/phpunit/mocks/MockChangesListFilter.php
tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js
tests/selenium/wdio.conf.jenkins.js
tests/selenium/wdio.conf.js

index 2ced8a5..b9b6485 100644 (file)
@@ -37,7 +37,6 @@ production.
   added to $wgExtraLanguageCodes instead.
 
 === New features in 1.29 ===
-* (T137376) New language support: Atikamekw (atj)
 * (T5233) A cookie can now be set when a user is autoblocked, to track that user
   if they move to a new IP address. This is disabled by default.
 * Added ILocalizedException interface to standardize the use of localized
@@ -83,6 +82,7 @@ production.
   highlight prefix matches in the results.
 * (T157035) "new mw.Uri()" was ignoring options when using default URI.
 * Special:Allpages can no longer be filtered by redirect in miser mode.
+* (T160519) CACHE_ANYTHING will not be CACHE_ACCEL if no accelerator is installed.
 
 === Action API changes in 1.29 ===
 * Submitting sensitive authentication request parameters to action=login,
@@ -160,6 +160,7 @@ changes to languages because of Phabricator reports.
   The new or reinstated language fallbacks are (after cs ↔ sk in 1.28):
   ca ↔ oc; hsb ↔ dsb; io → eo; mdf → ru; pnt → el; roa-tara → it; rup → ro;
   sh → bs, sr-el, hr.
+* (T137376) New language support: Atikamekw (atj).
 * (T155957) Talk Namespaces for Javanese language (jv) have been updated.
 
 ==== No fallback for Ukrainian ====
@@ -279,6 +280,7 @@ changes to languages because of Phabricator reports.
 * Selflinks are now rendered as href-less <a> tags with the class mw-selflink
   rather than <strong> tags. The old class name, "selflink", was deprecated
   and will be removed in a future release. (T160480)
+* (T156184) $wgRawHtml will no longer apply to internationalization messages.
 
 == Compatibility ==
 
index 2942f92..ece725c 100644 (file)
@@ -25,7 +25,7 @@
                "ext-xml": "*",
                "liuggio/statsd-php-client": "1.0.18",
                "mediawiki/at-ease": "1.1.0",
-               "oojs/oojs-ui": "0.20.1",
+               "oojs/oojs-ui": "0.20.2",
                "oyejorge/less.php": "1.7.0.13",
                "php": ">=5.5.9",
                "psr/log": "1.0.2",
index 7d19e94..e4d217c 100644 (file)
@@ -2421,7 +2421,7 @@ class EditPage {
                # Show log extract when the user is currently blocked
                if ( $namespace == NS_USER || $namespace == NS_USER_TALK ) {
                        $username = explode( '/', $this->mTitle->getText(), 2 )[0];
-                       $user = User::newFromName( $username, false /* allow IP users*/ );
+                       $user = User::newFromName( $username, false /* allow IP users */ );
                        $ip = User::isIP( $username );
                        $block = Block::newFromTarget( $user, $user );
                        if ( !( $user && $user->isLoggedIn() ) && !$ip ) { # User does not exist
index 9ecfa23..d3e1373 100644 (file)
@@ -1568,6 +1568,7 @@ class OutputPage extends ContextSource {
                        // been changed somehow, and keep it if so.
                        $anonPO = ParserOptions::newFromAnon();
                        $anonPO->setEditSection( false );
+                       $anonPO->setAllowUnsafeRawHtml( false );
                        if ( !$options->matches( $anonPO ) ) {
                                wfLogWarning( __METHOD__ . ': Setting a changed bogus ParserOptions: ' . wfGetAllCallers( 5 ) );
                                $options->isBogus = false;
@@ -1581,6 +1582,7 @@ class OutputPage extends ContextSource {
                                // either.
                                $po = ParserOptions::newFromAnon();
                                $po->setEditSection( false );
+                               $po->setAllowUnsafeRawHtml( false );
                                $po->isBogus = true;
                                if ( $options !== null ) {
                                        $this->mParserOptions = empty( $options->isBogus ) ? $options : null;
@@ -1590,6 +1592,7 @@ class OutputPage extends ContextSource {
 
                        $this->mParserOptions = ParserOptions::newFromContext( $this->getContext() );
                        $this->mParserOptions->setEditSection( false );
+                       $this->mParserOptions->setAllowUnsafeRawHtml( false );
                }
 
                if ( $options !== null && !empty( $options->isBogus ) ) {
index 98d5e0a..f16f0c5 100644 (file)
@@ -4032,7 +4032,6 @@ class Title implements LinkTarget {
                                __METHOD__,
                                [
                                        'ORDER BY' => 'rev_timestamp ASC',
-                                       'LIMIT' => 1,
                                        'IGNORE INDEX' => 'rev_timestamp'
                                ]
                        );
index 287ffb7..b8d2641 100644 (file)
@@ -340,6 +340,9 @@ class ApiParse extends ApiBase {
                if ( isset( $prop['sections'] ) ) {
                        $result_array['sections'] = $p_result->getSections();
                }
+               if ( isset( $prop['parsewarnings'] ) ) {
+                       $result_array['parsewarnings'] = $p_result->getWarnings();
+               }
 
                if ( isset( $prop['displaytitle'] ) ) {
                        $result_array['displaytitle'] = $p_result->getDisplayTitle() ?:
@@ -452,6 +455,7 @@ class ApiParse extends ApiBase {
                        'modulestyles' => 'm',
                        'properties' => 'pp',
                        'limitreportdata' => 'lr',
+                       'parsewarnings' => 'pw'
                ];
                $this->setIndexedTagNames( $result_array, $result_mapping );
                $result->addValue( null, $this->getModuleName(), $result_array );
@@ -751,7 +755,8 @@ class ApiParse extends ApiBase {
                        ],
                        'prop' => [
                                ApiBase::PARAM_DFLT => 'text|langlinks|categories|links|templates|' .
-                                       'images|externallinks|sections|revid|displaytitle|iwlinks|properties',
+                                       'images|externallinks|sections|revid|displaytitle|iwlinks|' .
+                                       'properties|parsewarnings',
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_TYPE => [
                                        'text',
@@ -777,6 +782,7 @@ class ApiParse extends ApiBase {
                                        'limitreportdata',
                                        'limitreporthtml',
                                        'parsetree',
+                                       'parsewarnings'
                                ],
                                ApiBase::PARAM_HELP_MSG_PER_VALUE => [
                                        'parsetree' => [ 'apihelp-parse-paramvalue-prop-parsetree', CONTENT_MODEL_WIKITEXT ],
index d2e956c..14c9986 100644 (file)
        "apihelp-parse-paramvalue-prop-iwlinks": "Gibt Interwiki-Links des geparsten Wikitextes zurück.",
        "apihelp-parse-paramvalue-prop-wikitext": "Gibt den originalen Wikitext zurück, der geparst wurde.",
        "apihelp-parse-paramvalue-prop-properties": "Gibt verschiedene Eigenschaften zurück, die im geparsten Wikitext definiert sind.",
+       "apihelp-parse-paramvalue-prop-parsewarnings": "Gibt die Warnungen aus, die beim Parsen des Inhalts aufgetreten sind.",
        "apihelp-parse-param-section": "Parst nur den Inhalt dieser Abschnittsnummer.\n\nFalls <kbd>new</kbd>, parst <var>$1text</var> und <var>$1sectiontitle</var>, als ob ein neuer Abschnitt der Seite hinzugefügt wird.\n\n<kbd>new</kbd> ist nur erlaubt mit der Angabe <var>text</var>.",
        "apihelp-parse-param-sectiontitle": "Überschrift des neuen Abschnittes, wenn <var>section</var> = <kbd>new</kbd> ist.\n\nAnders als beim Bearbeiten der Seite wird der Parameter nicht durch die <var>summary</var> ersetzt, wenn er weggelassen oder leer ist.",
        "apihelp-parse-param-disablepp": "Benutze <var>$1disablelimitreport</var> stattdessen.",
index ab8a8a5..cd30960 100644 (file)
        "apihelp-parse-paramvalue-prop-limitreportdata": "Gives the limit report in a structured way. Gives no data, when <var>$1disablelimitreport</var> is set.",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "Gives the HTML version of the limit report. Gives no data, when <var>$1disablelimitreport</var> is set.",
        "apihelp-parse-paramvalue-prop-parsetree": "The XML parse tree of revision content (requires content model <code>$1</code>)",
+       "apihelp-parse-paramvalue-prop-parsewarnings": "Gives the warnings that occurred while parsing content.",
        "apihelp-parse-param-pst": "Do a pre-save transform on the input before parsing it. Only valid when used with text.",
        "apihelp-parse-param-onlypst": "Do a pre-save transform (PST) on the input, but don't parse it. Returns the same wikitext, after a PST has been applied. Only valid when used with <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Includes language links supplied by extensions (for use with <kbd>$1prop=langlinks</kbd>).",
index 262b5eb..252e027 100644 (file)
        "apihelp-parse-paramvalue-prop-limitreportdata": "Fournit le rapport de limite d’une manière structurée. Ne fournit aucune donnée, si <var>$1disablelimitreport</var> est positionné.",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "Fournit la version HTML du rapport de limite. Ne fournit aucune donnée, si <var>$1disablelimitreport</var> est positionné.",
        "apihelp-parse-paramvalue-prop-parsetree": "L’arbre d’analyse XML du contenu de la révision (nécessite le modèle de contenu <code>$1</code>)",
+       "apihelp-parse-paramvalue-prop-parsewarnings": "Fournit les messages d'avertissement qui sont apparus lors de l'analyse de contenu.",
        "apihelp-parse-param-pst": "Faire une transformation avant enregistrement de l’entrée avant de l’analyser. Valide uniquement quand utilisé avec du texte.",
        "apihelp-parse-param-onlypst": "Faire une transformation avant enregistrement (PST) de l’entrée, mais ne pas l’analyser. Renvoie le même wikitexte, après que la PST a été appliquée. Valide uniquement quand utilisé avec <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Inclut les liens de langue fournis par les extensions (à utiliser avec <kbd>$1prop=langlinks</kbd>).",
        "apihelp-query+recentchanges-paramvalue-prop-timestamp": "Ajoute l’horodatage de la modification.",
        "apihelp-query+recentchanges-paramvalue-prop-title": "Ajoute le titre de la page modifiée.",
        "apihelp-query+recentchanges-paramvalue-prop-ids": "Ajoute l’ID de la page, l’ID des modifications récentes et l’ID de l’ancienne et la nouvelle révisions.",
-       "apihelp-query+recentchanges-paramvalue-prop-sizes": "Ajoute l’ancienne et la nouvelle tailles de la page en octets.",
+       "apihelp-query+recentchanges-paramvalue-prop-sizes": "Ajoute l’ancienne et la nouvelle taille de la page en octets.",
        "apihelp-query+recentchanges-paramvalue-prop-redirect": "Marque la modification si la page est une redirection.",
        "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Marque les modifications patrouillables comme patrouillées ou non.",
        "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Ajoute les informations du journal (Id du journal, type de trace, etc.) aux entrées du journal.",
index ec20f8a..0daf12f 100644 (file)
        "apihelp-delete-param-watch": "문서를 현재 사용자의 주시문서 목록에 추가합니다.",
        "apihelp-delete-param-unwatch": "문서를 현재 사용자의 주시문서 목록에서 제거합니다.",
        "apihelp-delete-example-simple": "<kbd>Main Page</kbd>를 삭제합니다.",
+       "apihelp-delete-example-reason": "<kbd>Preparing for move</kbd> 라는 이유로 <kbd>Main Page</kbd>를 삭제하기.",
        "apihelp-disabled-description": "이 모듈은 해제되었습니다.",
        "apihelp-edit-description": "문서를 만들고 편집합니다.",
+       "apihelp-edit-param-title": "편집할 문서의 제목. <var>$1pageid</var>과 같이 사용할 수 없습니다.",
        "apihelp-edit-param-section": "문단 번호입니다. <kbd>0</kbd>은 최상위 문단, <kbd>new</kbd>는 새 문단입니다.",
        "apihelp-edit-param-sectiontitle": "새 문단을 위한 제목.",
        "apihelp-edit-param-text": "문서 내용.",
        "apihelp-protect-example-protect": "문서 보호",
        "apihelp-purge-description": "주어진 제목을 위한 캐시를 새로 고침.",
        "apihelp-purge-param-forcelinkupdate": "링크 테이블을 업데이트합니다.",
+       "apihelp-purge-example-simple": "<kbd>Main Page</kbd>와 <kbd>API</kbd> 문서를 새로 고침.",
        "apihelp-query-param-prop": "조회된 페이지에 대해 가져올 속성입니다.",
        "apihelp-query-param-list": "가져올 목록입니다.",
        "apihelp-query-param-meta": "가져올 메타데이터입니다.",
        "apihelp-query+allusers-example-Y": "<kbd>Y</kbd>로 시작하는 사용자를 나열합니다.",
        "apihelp-query+authmanagerinfo-description": "현재의 인증 상태에 대한 정보를 검색합니다.",
        "apihelp-query+backlinks-param-namespace": "열거할 이름공간.",
+       "apihelp-query+backlinks-example-simple": "<kbd>Main Page</kbd>를 가리키는 링크를 보이기.",
+       "apihelp-query+backlinks-example-generator": "<kbd>Main Page</kbd>를 가리키는 문서의 정보를 보기.",
        "apihelp-query+blocks-description": "차단된 모든 사용자와 IP 주소를 나열합니다.",
        "apihelp-query+blocks-param-start": "나열을 시작할 타임스탬프",
        "apihelp-query+blocks-param-end": "나열을 끝낼 타임스탬프",
index c340d4a..7d5f7ea 100644 (file)
@@ -11,7 +11,8 @@
                        "Caçador de Palavras",
                        "LucyDiniz",
                        "Eduardo Addad de Oliveira",
-                       "Warley Felipe C."
+                       "Warley Felipe C.",
+                       "TheEduGobi"
                ]
        },
        "apihelp-main-param-action": "Qual ação executar.",
@@ -22,6 +23,7 @@
        "apihelp-main-param-requestid": "Qualquer valor dado aqui será incluído na resposta. Pode ser usado para distinguir requisições.",
        "apihelp-main-param-servedby": "Inclua o nome de host que atendeu a solicitação nos resultados.",
        "apihelp-main-param-curtimestamp": "Inclui a data atual no resultado.",
+       "apihelp-main-param-origin": "Ao acessar a API usando uma solicitação AJAX por domínio cruzado (CORS), defina isto como o domínio de origem. Isto deve estar incluso em toda solicitação ''pre-flight'', sendo portanto parte do URI da solicitação (ao invés do corpo do POST).\n\nPara solicitações autenticadas, isto deve corresponder a uma das origens no cabeçalho <code>Origin</code>, para que seja algo como <kbd>https://pt.wikipedia.org</kbd> ou <kbd>https://meta.wikimedia.org</kbd>. Se este parâmetro não corresponder ao cabeçalho <code>Origin</code>, uma resposta 403 será retornada. Se este parâmetro corresponder ao cabeçalho <code>Origin</code> e a origem for permitida (''whitelisted''), os cabeçalhos <code>Access-Control-Allow-Origin</code> e <code>Access-Control-Allow-Credentials</code> serão definidos.\n\nPara solicitações não autenticadas, especifique o valor <kbd>*</kbd>. Isto fará com que o cabeçalho <code>Access-Control-Allow-Origin</code> seja definido, porém o <code>Access-Control-Allow-Credentials</code> será <code>false</code> e todos os dados específicos para usuários tornar-se-ão restritos.",
        "apihelp-block-description": "Bloquear um usuário",
        "apihelp-block-param-user": "Nome de usuário, endereço IP ou faixa de IP para bloquear.",
        "apihelp-block-param-reason": "Razão do bloqueio.",
@@ -91,7 +93,7 @@
        "apihelp-feedcontributions-param-newonly": "Mostrar somente as edições que são criação de páginas.",
        "apihelp-feedcontributions-param-hideminor": "Ocultar edições menores.",
        "apihelp-feedcontributions-param-showsizediff": "Mostrar a diferença de tamanho entre as revisões.",
-       "apihelp-feedrecentchanges-description": "Retorna um feed de alterações recentes.",
+       "apihelp-feedrecentchanges-description": "Retorna um ''feed'' de mudanças recentes.",
        "apihelp-feedrecentchanges-param-feedformat": "O formato do feed.",
        "apihelp-feedrecentchanges-param-namespace": "Espaço nominal a partir do qual limitar resultados.",
        "apihelp-feedrecentchanges-param-invert": "Todos os espaços nominais, exceto o selecionado.",
        "apihelp-feedrecentchanges-param-hidecategorization": "Alterações de membros pertencentes à uma categoria.",
        "apihelp-feedrecentchanges-param-tagfilter": "Filtrar por tag.",
        "apihelp-feedrecentchanges-example-simple": "Mostrar as mudanças recentes.",
-       "apihelp-feedrecentchanges-example-30days": "Mostrar as alterações recentes por 30 dias.",
+       "apihelp-feedrecentchanges-example-30days": "Mostrar as mudanças recentes por 30 dias.",
        "apihelp-feedwatchlist-description": "Retornar um feed da lista de vigiados.",
        "apihelp-feedwatchlist-param-feedformat": "O formato do feed.",
        "apihelp-feedwatchlist-param-hours": "Lista páginas modificadas dentro dessa quantia de horas a partir de agora.",
index cca3a3c..6e70653 100644 (file)
        "apihelp-parse-paramvalue-prop-limitreportdata": "{{doc-apihelp-paramvalue|parse|prop|limitreportdata}}",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "{{doc-apihelp-paramvalue|parse|prop|limitreporthtml}}",
        "apihelp-parse-paramvalue-prop-parsetree": "{{doc-apihelp-paramvalue|parse|prop|parsetree|params=* $1 - Value of the constant CONTENT_MODEL_WIKITEXT|paramstart=2}}",
+       "apihelp-parse-paramvalue-prop-parsewarnings": "{{doc-apihelp-paramvalue|parse|prop|parsewarnings}}",
        "apihelp-parse-param-pst": "{{doc-apihelp-param|parse|pst}}",
        "apihelp-parse-param-onlypst": "{{doc-apihelp-param|parse|onlypst}}",
        "apihelp-parse-param-effectivelanglinks": "{{doc-apihelp-param|parse|effectivelanglinks}}",
index 1396458..fb6698f 100644 (file)
        "apihelp-query+protectedtitles-example-simple": "Lista skyddade titlar.",
        "apihelp-query+recentchanges-example-simple": "Lista de senaste ändringarna.",
        "apihelp-query+revisions-example-first5-not-localhost": "Hämta första 5 revideringarna av \"huvudsidan\" och som inte gjorts av anonym användare \"127.0.0.1\"",
+       "apihelp-query+siteinfo-paramvalue-prop-languagevariants": "Returnerar en lista över språkkoder som [[mw:LanguageConverter|LanguageConverter]] har aktiverat och de varianter som varje stöder.",
        "apihelp-query+siteinfo-example-simple": "Hämta information om webbplatsen.",
        "apihelp-query+stashimageinfo-description": "Returnerar filinformation för temporära filer.",
        "apihelp-query+stashimageinfo-param-filekey": "Nyckel som identifierar en tidigare uppladdning som lagrats temporärt.",
        "api-help-param-multi-separate": "Separera värden med <kbd>|</kbd> eller [[Special:ApiHelp/main#main/datatypes|alternativ]].",
        "apierror-articleexists": "Artikeln du försökte skapa har redan skapats.",
        "apierror-baddiff": "Diff kan inte hämtas. En eller båda sidversioner finns inte eller du har inte behörighet för att visa dem.",
+       "apierror-invalidoldimage": "Parametern <var>oldimage</var> har ett ogiltigt format.",
        "apierror-invalidsection": "Parametern <var>section</var> måste vara ett giltigt avsnitts-ID eller <kbd>new</kbd>.",
        "apierror-nosuchuserid": "Det finns ingen användare med ID $1.",
        "apierror-protect-invalidaction": "Ogiltig skyddstyp \"$1\".",
index 996f26e..78f16d3 100644 (file)
        "apihelp-parse-paramvalue-prop-limitreportdata": "Дає звіт по обмеженнях у структурованому вигляді. Не видає даних, якщо встановлено <var>$1disablelimitreport</var>.",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "Дає HTML-версію звіту по обмеженнях. Не видає даних, якщо встановлено <var>$1disablelimitreport</var>.",
        "apihelp-parse-paramvalue-prop-parsetree": "Синтаксичне дерево XML вмісту версії (передбачає модель вмісту <code>$1</code>)",
+       "apihelp-parse-paramvalue-prop-parsewarnings": "Виводить попередження, які з'явилися при обробці контенту.",
        "apihelp-parse-param-pst": "Зробіть трансформацію вхідних даних перед збереженням і аналізом. Дійсне лише при використанні з текстом.",
        "apihelp-parse-param-onlypst": "Зробіть трансформацію вхідних даних перед збереженням (PST), але не аналізуйте. Видає той самий вікітекст, після застосування PST. Дійсне лише у разі використання з <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Включає мовні посилання, додані розширеннями (для використання з <kbd>$1prop=langlinks</kbd>).",
index 731a9c0..93af817 100644 (file)
        "apihelp-parse-paramvalue-prop-limitreportdata": "以结构化的方式提供限制报告。如果<var>$1disablelimitreport</var>被设定则不提供数据。",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "提供限制报告的HTML版本。当<var>$1disablelimitreport</var>被设置时不会提供数据。",
        "apihelp-parse-paramvalue-prop-parsetree": "修订内容的XML解析树(需要内容模型<code>$1</code>)",
+       "apihelp-parse-paramvalue-prop-parsewarnings": "在解析内容时提供发生的警告",
        "apihelp-parse-param-pst": "在解析输入前,对输入做一次保存前变换处理。仅当使用文本时有效。",
        "apihelp-parse-param-onlypst": "在输入内容中执行预保存转换(PST),但不解析它。在PST被应用后返回相同的wiki文本。只当与<var>$1text</var>一起使用时有效。",
        "apihelp-parse-param-effectivelanglinks": "包含由扩展提供的语言链接(用于与<kbd>$1prop=langlinks</kbd>一起使用)。",
        "apiwarn-unclearnowtimestamp": "为时间戳参数<var>$1</var>传递“$2”已被弃用。如因某些原因您需要明确指定当前时间而不计算客户端,请使用<kbd>now</kbd>。",
        "apiwarn-unrecognizedvalues": "参数<var>$1</var>有无法识别的{{PLURAL:$3|值}}:$2。",
        "apiwarn-unsupportedarray": "参数<var>$1</var>使用未受支持的PHP数组语法。",
+       "apiwarn-urlparamwidth": "为了获得衍生自<var>$1urlwidth</var>/<var>$1urlheight</var>的宽度值($3),正在忽略<var>$1urlparam</var>的宽度值集($2)。",
        "apiwarn-validationfailed-badchars": "关键词中的字符无效(只允许<code>a-z</code>、<code>A-Z</code>、<code>0-9</code>、<code>_</code>和<code>-</code>)。",
        "apiwarn-validationfailed-badpref": "不是有效的偏好。",
        "apiwarn-validationfailed-cannotset": "不能通过此模块设置。",
index 5d48c03..14baeeb 100644 (file)
@@ -238,6 +238,7 @@ class MessageBlobStore implements LoggerAwareInterface {
                }
 
                $json = FormatJson::encode( (object)$messages );
+               // @codeCoverageIgnoreStart
                if ( $json === false ) {
                        $this->logger->warning( 'Failed to encode message blob for {module} ({lang})', [
                                'module' => $module->getName(),
@@ -245,6 +246,7 @@ class MessageBlobStore implements LoggerAwareInterface {
                        ] );
                        $json = '{}';
                }
+               // codeCoverageIgnoreEnd
                return $json;
        }
 }
index 7cd489a..70e1d9a 100644 (file)
@@ -191,11 +191,16 @@ class MessageCache {
                                // either.
                                $po = ParserOptions::newFromAnon();
                                $po->setEditSection( false );
+                               $po->setAllowUnsafeRawHtml( false );
                                return $po;
                        }
 
                        $this->mParserOptions = new ParserOptions;
                        $this->mParserOptions->setEditSection( false );
+                       // Messages may take parameters that could come
+                       // from malicious sources. As a precaution, disable
+                       // the <html> parser tag when parsing messages.
+                       $this->mParserOptions->setAllowUnsafeRawHtml( false );
                }
 
                return $this->mParserOptions;
index d0c4b77..4117a11 100644 (file)
@@ -97,11 +97,6 @@ class ChangesListBooleanFilter extends ChangesListFilter {
         *  to true.  It does not need to be set if the exact same filter is simply visible
         *  on both.
         * $filterDefinition['default'] bool Default
-        * $filterDefinition['isAllowedCallable'] callable Callable taking two parameters,
-        *  the class name of the special page and an IContextSource, and returning true
-        *  if and only if the current user is permitted to use this filter on the current
-        *  wiki.  If it returns false, it will both hide the UI (in all UIs) and prevent
-        *  the DB query modification from taking effect. (optional, defaults to allowed)
         * $filterDefinition['priority'] int Priority integer.  Higher value means higher
         *  up in the group's filter list.
         * $filterDefinition['queryCallable'] callable Callable accepting parameters, used
@@ -166,17 +161,16 @@ class ChangesListBooleanFilter extends ChangesListFilter {
        /**
         * @inheritdoc
         */
-       public function displaysOnUnstructuredUi( ChangesListSpecialPage $specialPage ) {
-               return $this->showHide &&
-                       $this->isAllowed( $specialPage );
+       public function displaysOnUnstructuredUi() {
+               return !!$this->showHide;
        }
 
        /**
         * @inheritdoc
         */
-       public function isFeatureAvailableOnStructuredUi( ChangesListSpecialPage $specialPage ) {
+       public function isFeatureAvailableOnStructuredUi() {
                return $this->isReplacedInStructuredUi ||
-                       parent::isFeatureAvailableOnStructuredUi( $specialPage );
+                       parent::isFeatureAvailableOnStructuredUi();
        }
 
        /**
index 22e797d..b3a16a8 100644 (file)
@@ -73,13 +73,6 @@ abstract class ChangesListFilter {
         */
        protected $description;
 
-       /**
-        * Callable used to check whether this filter is allowed to take effect
-        *
-        * @var callable $isAllowedCallable
-        */
-       protected $isAllowedCallable;
-
        /**
         * List of conflicting groups
         *
@@ -139,11 +132,6 @@ abstract class ChangesListFilter {
         * $filterDefinition['label'] string i18n key of label for structured UI.
         * $filterDefinition['description'] string i18n key of description for structured
         *  UI.
-        * $filterDefinition['isAllowedCallable'] callable Callable taking two parameters,
-        *  the class name of the special page and an IContextSource, and returning true
-        *  if and only if the current user is permitted to use this filter on the current
-        *  wiki.  If it returns false, it will both hide the UI (in all UIs) and prevent
-        *  the DB query modification from taking effect. (optional, defaults to allowed)
         * $filterDefinition['priority'] int Priority integer.  Higher value means higher
         *  up in the group's filter list.
         */
@@ -179,10 +167,6 @@ abstract class ChangesListFilter {
                        $this->description = $filterDefinition['description'];
                }
 
-               if ( isset( $filterDefinition['isAllowedCallable'] ) ) {
-                       $this->isAllowedCallable = $filterDefinition['isAllowedCallable'];
-               }
-
                $this->priority = $filterDefinition['priority'];
 
                $this->group->registerFilter( $this );
@@ -311,20 +295,18 @@ abstract class ChangesListFilter {
        /**
         * Checks whether the filter should display on the unstructured UI
         *
-        * @param ChangesListSpecialPage $specialPage Current special page
         * @return bool Whether to display
         */
-       abstract public function displaysOnUnstructuredUi( ChangesListSpecialPage $specialPage );
+       abstract public function displaysOnUnstructuredUi();
 
        /**
         * Checks whether the filter should display on the structured UI
         * This refers to the exact filter.  See also isFeatureAvailableOnStructuredUi.
         *
-        * @param ChangesListSpecialPage $specialPage Current special page
         * @return bool Whether to display
         */
-       public function displaysOnStructuredUi( ChangesListSpecialPage $specialPage ) {
-               return $this->label !== null && $this->isAllowed( $specialPage );
+       public function displaysOnStructuredUi() {
+               return $this->label !== null;
        }
 
        /**
@@ -333,8 +315,8 @@ abstract class ChangesListFilter {
         *
         * This can either be the exact filter, or a new filter that replaces it.
         */
-       public function isFeatureAvailableOnStructuredUi( ChangesListSpecialPage $specialPage ) {
-               return $this->displaysOnStructuredUi( $specialPage );
+       public function isFeatureAvailableOnStructuredUi() {
+               return $this->displaysOnStructuredUi();
        }
 
        /**
@@ -344,24 +326,6 @@ abstract class ChangesListFilter {
                return $this->priority;
        }
 
-       /**
-        * Checks whether the filter is allowed for the current context
-        *
-        * @param ChangesListSpecialPage $specialPage Current special page
-        * @return bool Whether it is allowed
-        */
-       public function isAllowed( ChangesListSpecialPage $specialPage ) {
-               if ( $this->isAllowedCallable === null ) {
-                       return true;
-               } else {
-                       return call_user_func(
-                               $this->isAllowedCallable,
-                               get_class( $specialPage ),
-                               $specialPage->getContext()
-                       );
-               }
-       }
-
        /**
         * Gets the CSS class
         *
index d2ad204..4ff5520 100644 (file)
@@ -332,12 +332,11 @@ abstract class ChangesListFilterGroup {
        /**
         * Gets the JS data in the format required by the front-end of the structured UI
         *
-        * @param ChangesListSpecialPage $specialPage
         * @return array|null Associative array, or null if there are no filters that
         *  display in the structured UI.  messageKeys is a special top-level value, with
         *  the value being an array of the message keys to send to the client.
         */
-       public function getJsData( ChangesListSpecialPage $specialPage ) {
+       public function getJsData() {
                $output = [
                        'name' => $this->name,
                        'type' => $this->type,
@@ -367,7 +366,7 @@ abstract class ChangesListFilterGroup {
                } );
 
                foreach ( $this->filters as $filterName => $filter ) {
-                       if ( $filter->displaysOnStructuredUi( $specialPage ) ) {
+                       if ( $filter->displaysOnStructuredUi() ) {
                                $filterData = $filter->getJsData();
                                $output['messageKeys'] = array_merge(
                                        $output['messageKeys'],
index b6a8774..1c977b9 100644 (file)
@@ -11,7 +11,7 @@ class ChangesListStringOptionsFilter extends ChangesListFilter {
        /**
         * @inheritdoc
         */
-       public function displaysOnUnstructuredUi( ChangesListSpecialPage $specialPage ) {
+       public function displaysOnUnstructuredUi() {
                return false;
        }
 }
index 86ae33f..723ef39 100644 (file)
@@ -187,9 +187,7 @@ class ChangesListStringOptionsFilterGroup extends ChangesListFilterGroup {
 
                $allowedFilterNames = [];
                foreach ( $this->filters as $filter ) {
-                       if ( $filter->isAllowed( $specialPage ) ) {
-                               $allowedFilterNames[] = $filter->getName();
-                       }
+                       $allowedFilterNames[] = $filter->getName();
                }
 
                if ( $value === self::ALL ) {
@@ -234,8 +232,8 @@ class ChangesListStringOptionsFilterGroup extends ChangesListFilterGroup {
        /**
         * @inheritdoc
         */
-       public function getJsData( ChangesListSpecialPage $specialPage ) {
-               $output = parent::getJsData( $specialPage );
+       public function getJsData() {
+               $output = parent::getJsData();
 
                $output['separator'] = self::SEPARATOR;
                $output['default'] = $this->getDefault();
index f03fe6a..0a2b808 100644 (file)
@@ -446,6 +446,8 @@ abstract class Installer {
                $this->parserTitle = Title::newFromText( 'Installer' );
                $this->parserOptions = new ParserOptions( $wgUser ); // language will be wrong :(
                $this->parserOptions->setEditSection( false );
+               // Don't try to access DB before user language is initialised
+               $this->setParserLanguage( Language::factory( 'en' ) );
        }
 
        /**
@@ -674,7 +676,7 @@ abstract class Installer {
                try {
                        $out = $wgParser->parse( $text, $this->parserTitle, $this->parserOptions, $lineStart );
                        $html = $out->getText();
-               } catch ( DBAccessError $e ) {
+               } catch ( MediaWiki\Services\ServiceDisabledException $e ) {
                        $html = '<!--DB access attempted during parse-->  ' . htmlspecialchars( $text );
 
                        if ( !empty( $this->debug ) ) {
index 9aa9572..62a9267 100644 (file)
        "config-type-mssql": "Microsoft SQL Server",
        "config-support-info": "Skoret eo ar reizhiadoù diaz titouroù da-heul gant MediaWiki :\n\n$1\n\nMa ne welit ket amañ dindan ar reizhiad diaz titouroù a fell deoc'h ober ganti, heuilhit an titouroù a-us (s.o. al liammoù) evit gweredekaat ar skorañ.",
        "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] eo an dibab kentañ evit MediaWiki hag an hini skoret ar gwellañ. Mont a ra MediaWiki en-dro gant [{{int:version-db-mariadb-url}} MariaDB] ha [{{int:version-db-percona-url}} Percona Server] ivez, kenglotus o-daou gant MySQL. ([http://www.php.net/manual/en/mysqli.installation.php Penaos kempunañ PHP gant skor MySQL])",
-       "config-dbsupport-postgres": "* Ur reizhiad diaz titouroù brudet ha digor eo $1. Gallout a ra ober evit MySQL ([http://www.php.net/manual/en/pgsql.installation.php Penaos kempunañ PHP gant skor PostgreSQL]). Gallout a ra bezañ un nebeud drein bihan enni ha n'eo ket erbedet he implijout en un endro produiñ.",
-       "config-dbsupport-sqlite": "* $1 zo ur reizhiad diaz titouroù skañv skoret eus ar c'hentañ. ([http://www.php.net/manual/en/pdo.installation.php Penaos kempunañ PHP gant skor SQLite], implijout a ra PDO)",
-       "config-dbsupport-oracle": "* $1 zo un diaz titouroù kenwerzhel. ([http://www.php.net/manual/en/oci8.installation.php Penaos kempunañ PHP gant skor OCI8])",
+       "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] zo anezhi ur reizhiad diaz roadennoù frank a wirioù brudet-mat a c'haller ober gantañ e plas MySQL. ([http://www.php.net/manual/en/pgsql.installation.php Penaos kempunañ PHP gant skor PostgreSQL])",
+       "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] zo anezhi ur reizhiad diaz roadennoù skañv skoret eus ar c'hentañ. ([http://www.php.net/manual/en/pdo.installation.php Penaos kempunañ PHP gant skor SQLite], implijout a ra PDO)",
+       "config-dbsupport-oracle": "* Un embregerezh kenwerzhel diaz roadennoù eo [{{int:version-db-oracle-url}} Oracle]. ([http://www.php.net/manual/en/oci8.installation.php Penaos kempunañ PHP gant skor OCI8])",
+       "config-dbsupport-mssql": "* Un embregerezh kenwerzhel diaz roadennoù evit Windows eo [{{int:version-db-mssql-url}} Microsoft SQL Server]. ([http://www.php.net/manual/en/sqlsrv.installation.php Penaos kempunañ PHP gant skor SQLSRV])",
        "config-header-mysql": "Arventennoù MySQL",
        "config-header-postgres": "Arventennoù PostgreSQL",
        "config-header-sqlite": "Arventennoù SQLite",
        "config-missing-db-name": "Ret eo deoc'h merkañ un dalvoudenn evit \"{{int:config-db-name}}\".",
        "config-missing-db-host": "Ret eo deoc'h merkañ un dalvoudenn evit \"{{int:config-db-host}}\"",
        "config-missing-db-server-oracle": "Ret eo deoc'h merkañ un dalvoudenn evit \"{{int:config-db-host-oracle}}\".",
-       "config-invalid-db-server-oracle": "Direizh eo anv TNS an diaz titouroù \"$1\".\nOber hepken gant lizherennoù ASCII (a-z, A-Z), sifroù (0-9), arouezennoù islinennañ (_) ha pikoù (.).",
+       "config-invalid-db-server-oracle": "Direizh eo anv TNS an diaz roadennoù \"$1\".\nOber gant an neudennad \"TNS Name\" pe c'hoazh gant \"Easy Connect ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Hentennoù envel Oracle]).",
        "config-invalid-db-name": "Direizh eo anv an diaz titouroù \"$1\".\nOber hepken gant lizherennoù ASCII (a-z, A-Z), sifroù (0-9), arouezennoù islinennañ (_) ha tiredoù (-).",
        "config-invalid-db-prefix": "Direizh eo rakger an diaz titouroù \"$1\".\nOber hepken gant lizherennoù ASCII (a-z, A-Z), sifroù (0-9), arouezennoù islinennañ (_) ha tiredoù (-).",
        "config-connection-error": "$1.\n\nGwiriit anv an ostiz, an anv implijer, ar ger-tremen ha klaskit en-dro.",
        "config-help": "skoazell",
        "config-help-tooltip": "klikañ evit astenn",
        "config-nofile": "N'eus ket bet gallet kavout ar restr \"$1\". Daoust ha dilamet eo bet ?",
-       "mainpagetext": "'''Meziant MediaWiki staliet.'''",
+       "mainpagetext": "<strong>Staliet eo bet MediaWiki.</strong>",
        "mainpagedocfooter": "Sellit ouzh [https://meta.wikimedia.org/wiki/Help:Contents Sturlevr an implijerien] evit gouzout hiroc'h war an doare da implijout ar meziant wiki.\n\n== Kregiñ ganti ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Roll an arventennoù kefluniañ]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAG MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Roll ar c'haozeadennoù diwar-benn dasparzhoù MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Lec'hiañ MediaWiki en ho yezh"
 }
index fbfd899..49ddd14 100644 (file)
@@ -1951,24 +1951,13 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
        }
 
        /**
-        * Get the name of an index in a given table.
+        * Allows for index remapping in queries where this is not consistent across DBMS
         *
         * @param string $index
         * @return string
         */
        protected function indexName( $index ) {
-               // Backwards-compatibility hack
-               $renamed = [
-                       'ar_usertext_timestamp' => 'usertext_timestamp',
-                       'un_user_id' => 'user_id',
-                       'un_user_ip' => 'user_ip',
-               ];
-
-               if ( isset( $renamed[$index] ) ) {
-                       return $renamed[$index];
-               } else {
-                       return $index;
-               }
+               return $index;
        }
 
        public function addQuotes( $s ) {
index e900027..6725090 100644 (file)
@@ -1335,4 +1335,38 @@ abstract class DatabaseMysqlBase extends Database {
        public function isView( $name, $prefix = null ) {
                return in_array( $name, $this->listViews( $prefix ) );
        }
+
+       /**
+        * Allows for index remapping in queries where this is not consistent across DBMS
+        *
+        * @param string $index
+        * @return string
+        */
+       protected function indexName( $index ) {
+               /**
+                * When SQLite indexes were introduced in r45764, it was noted that
+                * SQLite requires index names to be unique within the whole database,
+                * not just within a schema. As discussed in CR r45819, to avoid the
+                * need for a schema change on existing installations, the indexes
+                * were implicitly mapped from the new names to the old names.
+                *
+                * This mapping can be removed if DB patches are introduced to alter
+                * the relevant tables in existing installations. Note that because
+                * this index mapping applies to table creation, even new installations
+                * of MySQL have the old names (except for installations created during
+                * a period where this mapping was inappropriately removed, see
+                * T154872).
+                */
+               $renamed = [
+                       'ar_usertext_timestamp' => 'usertext_timestamp',
+                       'un_user_id' => 'user_id',
+                       'un_user_ip' => 'user_ip',
+               ];
+
+               if ( isset( $renamed[$index] ) ) {
+                       return $renamed[$index];
+               } else {
+                       return $index;
+               }
+       }
 }
index 2a5deb6..090ce8e 100644 (file)
@@ -430,16 +430,6 @@ class DatabaseSqlite extends Database {
                return str_replace( '"', '', parent::tableName( $name, $format ) );
        }
 
-       /**
-        * Index names have DB scope
-        *
-        * @param string $index
-        * @return string
-        */
-       protected function indexName( $index ) {
-               return $index;
-       }
-
        /**
         * This must be called after nextSequenceVal
         *
index f93b1b5..b7ebfc9 100644 (file)
@@ -97,7 +97,7 @@ class IPTC {
                                case '2#025': /* keywords */
                                        $data['Keywords'] = self::convIPTC( $val, $c );
                                        break;
-                               case '2#101': /* Country (shown)*/
+                               case '2#101': /* Country (shown) */
                                        $data['CountryDest'] = self::convIPTC( $val, $c );
                                        break;
                                case '2#095': /* state/province (shown) */
@@ -115,7 +115,7 @@ class IPTC {
                                case '2#040': /* special instructions */
                                        $data['SpecialInstructions'] = self::convIPTC( $val, $c );
                                        break;
-                               case '2#105': /* headline*/
+                               case '2#105': /* headline */
                                        $data['Headline'] = self::convIPTC( $val, $c );
                                        break;
                                case '2#110': /* credit */
index cf9033b..3370e5b 100644 (file)
@@ -246,8 +246,14 @@ class ObjectCache {
                global $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType;
                $candidates = [ $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType ];
                foreach ( $candidates as $candidate ) {
+                       $cache = false;
                        if ( $candidate !== CACHE_NONE && $candidate !== CACHE_ANYTHING ) {
-                               return self::getInstance( $candidate );
+                               $cache = self::getInstance( $candidate );
+                               // CACHE_ACCEL might default to nothing if no APCu
+                               // See includes/ServiceWiring.php
+                               if ( !( $cache instanceof EmptyBagOStuff ) ) {
+                                       return $cache;
+                               }
                        }
                }
 
index 6067649..ee0ff22 100644 (file)
@@ -1133,7 +1133,7 @@ class Article implements Page {
                        || $title->getNamespace() == NS_USER_TALK
                ) {
                        $rootPart = explode( '/', $title->getText() )[0];
-                       $user = User::newFromName( $rootPart, false /* allow IP users*/ );
+                       $user = User::newFromName( $rootPart, false /* allow IP users */ );
                        $ip = User::isIP( $rootPart );
                        $block = Block::newFromTarget( $user, $user );
 
index f2f5781..7044e6a 100644 (file)
@@ -576,36 +576,12 @@ class WikiPage implements Page, IDBAccessObject {
         * @return Revision|null
         */
        public function getOldestRevision() {
-
                // Try using the replica DB first, then try the master
-               $continue = 2;
-               $db = wfGetDB( DB_REPLICA );
-               $revSelectFields = Revision::selectFields();
-
-               $row = null;
-               while ( $continue ) {
-                       $row = $db->selectRow(
-                               [ 'revision' ],
-                               $revSelectFields,
-                               [
-                                       'rev_page' => $this->getId()
-                               ],
-                               __METHOD__,
-                               [
-                                       'ORDER BY' => 'rev_timestamp ASC',
-                                       'IGNORE INDEX' => 'rev_timestamp'
-                               ]
-                       );
-
-                       if ( $row ) {
-                               $continue = 0;
-                       } else {
-                               $db = wfGetDB( DB_MASTER );
-                               $continue--;
-                       }
+               $rev = $this->mTitle->getFirstRevision();
+               if ( !$rev ) {
+                       $rev = $this->mTitle->getFirstRevision( Title::GAID_FOR_UPDATE );
                }
-
-               return $row ? Revision::newFromRow( $row ) : null;
+               return $rev;
        }
 
        /**
index c943b7c..438603a 100644 (file)
@@ -79,12 +79,25 @@ class CoreTagHooks {
         * @param array $attributes
         * @param Parser $parser
         * @throws MWException
-        * @return array
+        * @return array|string Output of tag hook
         */
        public static function html( $content, $attributes, $parser ) {
                global $wgRawHtml;
                if ( $wgRawHtml ) {
-                       return [ $content, 'markerType' => 'nowiki' ];
+                       if ( $parser->getOptions()->getAllowUnsafeRawHtml() ) {
+                               return [ $content, 'markerType' => 'nowiki' ];
+                       } else {
+                               // In a system message where raw html is
+                               // not allowed (but it is allowed in other
+                               // contexts).
+                               return Html::rawElement(
+                                       'span',
+                                       [ 'class' => 'error' ],
+                                       // Using ->text() not ->parse() as
+                                       // a paranoia measure against a loop.
+                                       wfMessage( 'rawhtml-notallowed' )->escaped()
+                               );
+                       }
                } else {
                        throw new MWException( '<html> extension tag encountered unexpectedly' );
                }
index 7be8281..2cdd8c7 100644 (file)
@@ -243,6 +243,21 @@ class ParserOptions {
         */
        private $redirectTarget = null;
 
+       /**
+        * If the wiki is configured to allow raw html ($wgRawHtml = true)
+        * is it allowed in the specific case of parsing this page.
+        *
+        * This is meant to disable unsafe parser tags in cases where
+        * a malicious user may control the input to the parser.
+        *
+        * @note This is expected to be true for normal pages even if the
+        *  wiki has $wgRawHtml disabled in general. The setting only
+        *  signifies that raw html would be unsafe in the current context
+        *  provided that raw html is allowed at all.
+        * @var boolean
+        */
+       private $allowUnsafeRawHtml = true;
+
        public function getInterwikiMagic() {
                return $this->mInterwikiMagic;
        }
@@ -457,6 +472,15 @@ class ParserOptions {
        public function getMagicRFCLinks() {
                return $this->mMagicRFCLinks;
        }
+
+       /**
+        * @since 1.29
+        * @return bool
+        */
+       public function getAllowUnsafeRawHtml() {
+               return $this->allowUnsafeRawHtml;
+       }
+
        public function setInterwikiMagic( $x ) {
                return wfSetVar( $this->mInterwikiMagic, $x );
        }
@@ -596,6 +620,15 @@ class ParserOptions {
                return wfSetVar( $this->mIsPrintable, $x );
        }
 
+       /**
+        * @param bool|null Value to set or null to get current value
+        * @return bool Current value for allowUnsafeRawHtml
+        * @since 1.29
+        */
+       public function setAllowUnsafeRawHtml( $x ) {
+               return wfSetVar( $this->allowUnsafeRawHtml, $x );
+       }
+
        /**
         * Set the redirect target.
         *
index 48e4a0d..04b2f72 100644 (file)
@@ -342,7 +342,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
 
        /**
         * @param ResourceLoaderContext $context
-        * @return string
+        * @return string JavaScript code
         */
        public function getScript( ResourceLoaderContext $context ) {
                global $IP;
index 6632045..b9dc098 100644 (file)
@@ -37,7 +37,7 @@ class ResourceLoaderUserDefaultsModule extends ResourceLoaderModule {
 
        /**
         * @param ResourceLoaderContext $context
-        * @return string
+        * @return string JavaScript code
         */
        public function getScript( ResourceLoaderContext $context ) {
                return Xml::encodeJsCall(
index b3b3f16..0c332cf 100644 (file)
@@ -48,7 +48,7 @@ class ResourceLoaderUserOptionsModule extends ResourceLoaderModule {
 
        /**
         * @param ResourceLoaderContext $context
-        * @return string
+        * @return string JavaScript code
         */
        public function getScript( ResourceLoaderContext $context ) {
                return Xml::encodeJsCall( 'mw.user.options.set',
index cea1f39..bfa7326 100644 (file)
@@ -57,7 +57,7 @@ class ResourceLoaderUserTokensModule extends ResourceLoaderModule {
         * Add FILTER_NOMIN annotation to prevent needless minification and caching (T84960).
         *
         * @param ResourceLoaderContext $context
-        * @return string
+        * @return string JavaScript code
         */
        public function getScript( ResourceLoaderContext $context ) {
                return Xml::encodeJsCall(
index 92095f7..3eac5df 100644 (file)
@@ -148,7 +148,7 @@ class ResourceLoaderWikiModule extends ResourceLoaderModule {
        protected function getContent( $titleText ) {
                $title = Title::newFromText( $titleText );
                if ( !$title ) {
-                       return null;
+                       return null; // Bad title
                }
 
                // If the page is a redirect, follow the redirect.
@@ -156,7 +156,7 @@ class ResourceLoaderWikiModule extends ResourceLoaderModule {
                        $content = $this->getContentObj( $title );
                        $title = $content ? $content->getUltimateRedirectTarget() : null;
                        if ( !$title ) {
-                               return null;
+                               return null; // Dead redirect
                        }
                }
 
@@ -166,12 +166,12 @@ class ResourceLoaderWikiModule extends ResourceLoaderModule {
                } elseif ( $handler->isSupportedFormat( CONTENT_FORMAT_JAVASCRIPT ) ) {
                        $format = CONTENT_FORMAT_JAVASCRIPT;
                } else {
-                       return null;
+                       return null; // Bad content model
                }
 
                $content = $this->getContentObj( $title );
                if ( !$content ) {
-                       return null;
+                       return null; // No content found
                }
 
                return $content->serialize( $format );
@@ -198,7 +198,7 @@ class ResourceLoaderWikiModule extends ResourceLoaderModule {
 
        /**
         * @param ResourceLoaderContext $context
-        * @return string
+        * @return string JavaScript code
         */
        public function getScript( ResourceLoaderContext $context ) {
                $scripts = '';
index 2ece5aa..ad9a248 100644 (file)
@@ -59,6 +59,13 @@ abstract class ChangesListSpecialPage extends SpecialPage {
         */
        private $filterGroupDefinitions;
 
+       // Same format as filterGroupDefinitions, but for a single group (reviewStatus)
+       // that is registered conditionally.
+       private $reviewStatusFilterGroupDefinition;
+
+       // Single filter registered conditionally
+       private $hideCategorizationFilterDefinition;
+
        /**
         * Filter groups, and their contained filters
         * This is an associative array (with group name as key) of ChangesListFilterGroup objects.
@@ -245,57 +252,13 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                ]
                        ],
 
-                       [
-                               'name' => 'reviewStatus',
-                               'title' => 'rcfilters-filtergroup-reviewstatus',
-                               'class' => ChangesListBooleanFilterGroup::class,
-                               'filters' => [
-                                       [
-                                               'name' => 'hidepatrolled',
-                                               'label' => 'rcfilters-filter-patrolled-label',
-                                               'description' => 'rcfilters-filter-patrolled-description',
-                                               // rcshowhidepatr-show, rcshowhidepatr-hide
-                                               // wlshowhidepatr
-                                               'showHideSuffix' => 'showhidepatr',
-                                               'default' => false,
-                                               'isAllowedCallable' => function ( $pageClassName, $context ) {
-                                                       return $context->getUser()->useRCPatrol();
-                                               },
-                                               'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
-                                                       $conds[] = 'rc_patrolled = 0';
-                                               },
-                                               'cssClassSuffix' => 'patrolled',
-                                               'isRowApplicableCallable' => function ( $ctx, $rc ) {
-                                                       return $rc->getAttribute( 'rc_patrolled' );
-                                               },
-                                       ],
-                                       [
-                                               'name' => 'hideunpatrolled',
-                                               'label' => 'rcfilters-filter-unpatrolled-label',
-                                               'description' => 'rcfilters-filter-unpatrolled-description',
-                                               'default' => false,
-                                               'isAllowedCallable' => function ( $pageClassName, $context ) {
-                                                       return $context->getUser()->useRCPatrol();
-                                               },
-                                               'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
-                                                       $conds[] = 'rc_patrolled = 1';
-                                               },
-                                               'cssClassSuffix' => 'unpatrolled',
-                                               'isRowApplicableCallable' => function ( $ctx, $rc ) {
-                                                       return !$rc->getAttribute( 'rc_patrolled' );
-                                               },
-                                       ],
-                               ],
-                       ],
+                       // reviewStatus (conditional)
 
                        [
                                'name' => 'significance',
                                'title' => 'rcfilters-filtergroup-significance',
                                'class' => ChangesListBooleanFilterGroup::class,
+                               'priority' => -6,
                                'filters' => [
                                        [
                                                'name' => 'hideminor',
@@ -344,6 +307,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'label' => 'rcfilters-filter-pageedits-label',
                                                'description' => 'rcfilters-filter-pageedits-description',
                                                'default' => false,
+                                               'priority' => -2,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
                                                        &$query_options, &$join_conds ) {
 
@@ -359,6 +323,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'label' => 'rcfilters-filter-newpages-label',
                                                'description' => 'rcfilters-filter-newpages-description',
                                                'default' => false,
+                                               'priority' => -3,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
                                                        &$query_options, &$join_conds ) {
 
@@ -369,44 +334,91 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                        return $rc->getAttribute( 'rc_source' ) === RecentChange::SRC_NEW;
                                                },
                                        ],
+
+                                       // hidecategorization
+
                                        [
-                                               'name' => 'hidecategorization',
-                                               'label' => 'rcfilters-filter-categorization-label',
-                                               'description' => 'rcfilters-filter-categorization-description',
-                                               // rcshowhidecategorization-show, rcshowhidecategorization-hide.
-                                               // wlshowhidecategorization
-                                               'showHideSuffix' => 'showhidecategorization',
-                                               'isAllowedCallable' => function ( $pageClassName, $context ) {
-                                                       return $context->getConfig()->get( 'RCWatchCategoryMembership' );
+                                               'name' => 'hidelog',
+                                               'label' => 'rcfilters-filter-logactions-label',
+                                               'description' => 'rcfilters-filter-logactions-description',
+                                               'default' => false,
+                                               'priority' => -5,
+                                               'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
+                                                       &$query_options, &$join_conds ) {
+
+                                                       $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_LOG );
                                                },
+                                               'cssClassSuffix' => 'src-mw-log',
+                                               'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                                                       return $rc->getAttribute( 'rc_source' ) === RecentChange::SRC_LOG;
+                                               }
+                                       ],
+                               ],
+                       ],
+               ];
+
+               $this->reviewStatusFilterGroupDefinition = [
+                       [
+                               'name' => 'reviewStatus',
+                               'title' => 'rcfilters-filtergroup-reviewstatus',
+                               'class' => ChangesListBooleanFilterGroup::class,
+                               'priority' => -5,
+                               'filters' => [
+                                       [
+                                               'name' => 'hidepatrolled',
+                                               'label' => 'rcfilters-filter-patrolled-label',
+                                               'description' => 'rcfilters-filter-patrolled-description',
+                                               // rcshowhidepatr-show, rcshowhidepatr-hide
+                                               // wlshowhidepatr
+                                               'showHideSuffix' => 'showhidepatr',
                                                'default' => false,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
                                                        &$query_options, &$join_conds ) {
 
-                                                       $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_CATEGORIZE );
+                                                       $conds[] = 'rc_patrolled = 0';
                                                },
-                                               'cssClassSuffix' => 'src-mw-categorize',
+                                               'cssClassSuffix' => 'patrolled',
                                                'isRowApplicableCallable' => function ( $ctx, $rc ) {
-                                                       return $rc->getAttribute( 'rc_source' ) === RecentChange::SRC_CATEGORIZE;
+                                                                                    return $rc->getAttribute( 'rc_patrolled' );
                                                },
                                        ],
                                        [
-                                               'name' => 'hidelog',
-                                               'label' => 'rcfilters-filter-logactions-label',
-                                               'description' => 'rcfilters-filter-logactions-description',
+                                               'name' => 'hideunpatrolled',
+                                               'label' => 'rcfilters-filter-unpatrolled-label',
+                                               'description' => 'rcfilters-filter-unpatrolled-description',
                                                'default' => false,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
                                                        &$query_options, &$join_conds ) {
 
-                                                       $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_LOG );
+                                                       $conds[] = 'rc_patrolled = 1';
                                                },
-                                               'cssClassSuffix' => 'src-mw-log',
+                                               'cssClassSuffix' => 'unpatrolled',
                                                'isRowApplicableCallable' => function ( $ctx, $rc ) {
-                                                       return $rc->getAttribute( 'rc_source' ) === RecentChange::SRC_LOG;
-                                               }
+                                                                                    return !$rc->getAttribute( 'rc_patrolled' );
+                                               },
                                        ],
                                ],
-                       ],
+                       ]
+               ];
+
+               $this->hideCategorizationFilterDefinition = [
+                       'name' => 'hidecategorization',
+                       'label' => 'rcfilters-filter-categorization-label',
+                       'description' => 'rcfilters-filter-categorization-description',
+                       // rcshowhidecategorization-show, rcshowhidecategorization-hide.
+                       // wlshowhidecategorization
+                       'showHideSuffix' => 'showhidecategorization',
+                       'default' => false,
+                       'priority' => -4,
+                       'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
+                               &$query_options, &$join_conds ) {
+
+                               $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_CATEGORIZE );
+                       },
+                       'cssClassSuffix' => 'src-mw-categorize',
+                       'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                               return $rc->getAttribute( 'rc_source' ) === RecentChange::SRC_CATEGORIZE;
+                       },
                ];
        }
 
@@ -503,7 +515,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
        }
 
        /**
-        * Register all filters and their groups, plus conflicts
+        * Register all filters and their groups (including those from hooks), plus handle
+        * conflicts and defaults.
         *
         * You might want to customize these in the same method, in subclasses.  You can
         * call getFilterGroup to access a group, and (on the group) getFilter to access a
@@ -513,6 +526,27 @@ abstract class ChangesListSpecialPage extends SpecialPage {
        protected function registerFilters() {
                $this->registerFiltersFromDefinitions( $this->filterGroupDefinitions );
 
+               // Make sure this is not being transcluded (we don't want to show this
+               // information to all users just because the user that saves the edit can
+               // patrol)
+               if ( !$this->including() && $this->getUser()->useRCPatrol() ) {
+                       $this->registerFiltersFromDefinitions( $this->reviewStatusFilterGroupDefinition );
+               }
+
+               $changeTypeGroup = $this->getFilterGroup( 'changeType' );
+
+               if ( $this->getConfig()->get( 'RCWatchCategoryMembership' ) ) {
+                       $transformedHideCategorizationDef = $this->transformFilterDefinition(
+                               $this->hideCategorizationFilterDefinition
+                       );
+
+                       $transformedHideCategorizationDef['group'] = $changeTypeGroup;
+
+                       $hideCategorization = new ChangesListBooleanFilter(
+                               $transformedHideCategorizationDef
+                       );
+               }
+
                Hooks::run( 'ChangesListSpecialPageStructuredFilters', [ $this ] );
 
                $unstructuredGroupDefinition =
@@ -536,7 +570,6 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                        'rcfilters-filter-unregistered-conflicts-user-experience-level'
                );
 
-               $changeTypeGroup = $this->getFilterGroup( 'changeType' );
                $categoryFilter = $changeTypeGroup->getFilter( 'hidecategorization' );
                $logactionsFilter = $changeTypeGroup->getFilter( 'hidelog' );
                $pagecreationFilter = $changeTypeGroup->getFilter( 'hidenewpages' );
@@ -544,12 +577,15 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                $significanceTypeGroup = $this->getFilterGroup( 'significance' );
                $hideMinorFilter = $significanceTypeGroup->getFilter( 'hideminor' );
 
-               $hideMinorFilter->conflictsWith(
-                       $categoryFilter,
-                       'rcfilters-hideminor-conflicts-typeofchange-global',
-                       'rcfilters-hideminor-conflicts-typeofchange',
-                       'rcfilters-typeofchange-conflicts-hideminor'
-               );
+               // categoryFilter is conditional; see registerFilters
+               if ( $categoryFilter !== null ) {
+                       $hideMinorFilter->conflictsWith(
+                               $categoryFilter,
+                               'rcfilters-hideminor-conflicts-typeofchange-global',
+                               'rcfilters-hideminor-conflicts-typeofchange',
+                               'rcfilters-typeofchange-conflicts-hideminor'
+                       );
+               }
                $hideMinorFilter->conflictsWith(
                        $logactionsFilter,
                        'rcfilters-hideminor-conflicts-typeofchange-global',
@@ -564,23 +600,46 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                );
        }
 
+       /**
+        * Transforms filter definition to prepare it for constructor.
+        *
+        * See overrides of this method as well.
+        *
+        * @param array $filterDefinition Original filter definition
+        *
+        * @return array Transformed definition
+        */
+       protected function transformFilterDefinition( array $filterDefinition ) {
+               return $filterDefinition;
+       }
+
        /**
         * Register filters from a definition object
         *
         * Array specifying groups and their filters; see Filter and
         * ChangesListFilterGroup constructors.
         *
-        * There is light processing to simplify core maintenance.  See overrides
-        * of this method as well.
+        * There is light processing to simplify core maintenance.
         */
        protected function registerFiltersFromDefinitions( array $definition ) {
-               $priority = -1;
+               $autoFillPriority = -1;
                foreach ( $definition as $groupDefinition ) {
-                       $groupDefinition['priority'] = $priority;
-                       $priority--;
+                       if ( !isset( $groupDefinition['priority'] ) ) {
+                               $groupDefinition['priority'] = $autoFillPriority;
+                       } else {
+                               // If it's explicitly specified, start over the auto-fill
+                               $autoFillPriority = $groupDefinition['priority'];
+                       }
+
+                       $autoFillPriority--;
 
                        $className = $groupDefinition['class'];
                        unset( $groupDefinition['class'] );
+
+                       foreach ( $groupDefinition['filters'] as &$filterDefinition ) {
+                               $filterDefinition = $this->transformFilterDefinition( $filterDefinition );
+                       }
+
                        $this->registerFilterGroup( new $className( $groupDefinition ) );
                }
        }
@@ -846,7 +905,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                        $query_options, $join_conds, $opts[$filterGroup->getName()] );
                        } else {
                                foreach ( $filterGroup->getFilters() as $filter ) {
-                                       if ( $opts[$filter->getName()] && $filter->isAllowed( $this ) ) {
+                                       if ( $opts[$filter->getName()] ) {
                                                $filter->modifyQuery( $dbr, $this, $tables, $fields, $conds,
                                                        $query_options, $join_conds );
                                        }
index 3e7971a..ae0887d 100644 (file)
@@ -78,9 +78,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
 
                        $out->addHTML(
                                ResourceLoader::makeInlineScript(
-                                       Xml::encodeJsCall( 'mw.messages.set', [
-                                               $messages
-                                       ] )
+                                       ResourceLoader::makeMessageSetScript( $messages )
                                )
                        );
 
@@ -91,16 +89,12 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
        /**
         * @inheritdoc
         */
-       protected function registerFiltersFromDefinitions( array $definition ) {
-               foreach ( $definition as $groupName => &$groupDefinition ) {
-                       foreach ( $groupDefinition['filters'] as &$filterDefinition ) {
-                               if ( isset( $filterDefinition['showHideSuffix'] ) ) {
-                                       $filterDefinition['showHide'] = 'rc' . $filterDefinition['showHideSuffix'];
-                               }
-                       }
+       protected function transformFilterDefinition( array $filterDefinition ) {
+               if ( isset( $filterDefinition['showHideSuffix'] ) ) {
+                       $filterDefinition['showHide'] = 'rc' . $filterDefinition['showHideSuffix'];
                }
 
-               parent::registerFiltersFromDefinitions( $definition );
+               return $filterDefinition;
        }
 
        /**
@@ -120,12 +114,18 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $hideBots->setDefault( true );
 
                $reviewStatus = $this->getFilterGroup( 'reviewStatus' );
-               $hidePatrolled = $reviewStatus->getFilter( 'hidepatrolled' );
-               $hidePatrolled->setDefault( $user->getBoolOption( 'hidepatrolled' ) );
+               if ( $reviewStatus !== null ) {
+                       // Conditional on feature being available and rights
+                       $hidePatrolled = $reviewStatus->getFilter( 'hidepatrolled' );
+                       $hidePatrolled->setDefault( $user->getBoolOption( 'hidepatrolled' ) );
+               }
 
                $changeType = $this->getFilterGroup( 'changeType' );
                $hideCategorization = $changeType->getFilter( 'hidecategorization' );
-               $hideCategorization->setDefault( $user->getBoolOption( 'hidecategorization' ) );
+               if ( $hideCategorization !== null ) {
+                       // Conditional on feature being available
+                       $hideCategorization->setDefault( $user->getBoolOption( 'hidecategorization' ) );
+               }
        }
 
        /**
index 9066148..365736f 100644 (file)
@@ -108,16 +108,12 @@ class SpecialWatchlist extends ChangesListSpecialPage {
        /**
         * @inheritdoc
         */
-       protected function registerFiltersFromDefinitions( array $definition ) {
-               foreach ( $definition as $groupName => &$groupDefinition ) {
-                       foreach ( $groupDefinition['filters'] as &$filterDefinition ) {
-                               if ( isset( $filterDefinition['showHideSuffix'] ) ) {
-                                       $filterDefinition['showHide'] = 'wl' . $filterDefinition['showHideSuffix'];
-                               }
-                       }
+       protected function transformFilterDefinition( array $filterDefinition ) {
+               if ( isset( $filterDefinition['showHideSuffix'] ) ) {
+                         $filterDefinition['showHide'] = 'wl' . $filterDefinition['showHideSuffix'];
                }
 
-               parent::registerFiltersFromDefinitions( $definition );
+               return $filterDefinition;
        }
 
        /**
@@ -143,8 +139,11 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                $hideLiu->setDefault( $user->getBoolOption( 'watchlisthideliu' ) );
 
                $reviewStatus = $this->getFilterGroup( 'reviewStatus' );
-               $hidePatrolled = $reviewStatus->getFilter( 'hidepatrolled' );
-               $hidePatrolled->setDefault( $user->getBoolOption( 'watchlisthidepatrolled' ) );
+               if ( $reviewStatus !== null ) {
+                       // Conditional on feature being available and rights
+                       $hidePatrolled = $reviewStatus->getFilter( 'hidepatrolled' );
+                       $hidePatrolled->setDefault( $user->getBoolOption( 'watchlisthidepatrolled' ) );
+               }
 
                $authorship = $this->getFilterGroup( 'authorship' );
                $hideMyself = $authorship->getFilter( 'hidemyself' );
@@ -152,7 +151,10 @@ class SpecialWatchlist extends ChangesListSpecialPage {
 
                $changeType = $this->getFilterGroup( 'changeType' );
                $hideCategorization = $changeType->getFilter( 'hidecategorization' );
-               $hideCategorization->setDefault( $user->getBoolOption( 'watchlisthidecategorization' ) );
+               if ( $hideCategorization !== null ) {
+                       // Conditional on feature being available
+                       $hideCategorization->setDefault( $user->getBoolOption( 'watchlisthidecategorization' ) );
+               }
        }
 
        /**
index b1b8c73..1911c79 100644 (file)
@@ -131,7 +131,7 @@ class InterwikiSearchResultSetWidget implements SearchResultSetWidget {
                        : "";
 
                if ( isset( $this->customCaptions[$iwPrefix] ) ) {
-                       /* customCaptions composed by loadCustomCaptions() with pre-escaped content.*/
+                       /* customCaptions composed by loadCustomCaptions() with pre-escaped content. */
                        $caption = $this->customCaptions[$iwPrefix];
                } else {
                        $interwiki = $this->iwLookup->fetch( $iwPrefix );
index b4a66a0..51c69e6 100644 (file)
        "post-expand-template-argument-warning": "'''تحذير:''' هذه الصفحة تحتوي على عامل قالب واحد على الأقل له حجم تمدد كبير جدا.\nهذه العوامل تم حذفها.",
        "post-expand-template-argument-category": "تجاوزات معطيات القوالب",
        "parser-template-loop-warning": "تم كشف حلقة قالب: [[$1]]",
+       "template-loop-category": "الصفحات بحلقات قالب",
+       "template-loop-category-desc": "الصفحة تحتوي على حلقة قالب، أي أن القالب يستدعي نفسه.",
        "parser-template-recursion-depth-warning": "تم تجاوز حد عمق فرد القوالب ($1)",
        "language-converter-depth-warning": "تم تخطي حد عمق محول اللغة ($1)",
        "node-count-exceeded-category": "تجاوزات تعداد العقد",
        "newimages-summary": "هذه الصفحة الخاصة تعرض آخر الملفات المرفوعة.",
        "newimages-legend": "المرشح",
        "newimages-label": "اسم الملف (أو جزء منه):",
+       "newimages-user": "عنوان الأيبي أو اسم المستخدم",
        "newimages-showbots": "أظهر التحميلات بواسطة البوتات",
        "newimages-hidepatrolled": "أخف المرفوعات المنظورة",
        "noimages": "لا شيء للعرض.",
index 46efabb..9de4469 100644 (file)
        "post-expand-template-argument-warning": "تحذير: الصفحة  دى فيها عامل قالب واحد على الأقل ليه حجم تمدد كبير قوي.\nالعوامل دى اتمسحت.",
        "post-expand-template-argument-category": "صفحات فيها مناقشات القالب المحذوفة",
        "parser-template-loop-warning": "لووب القالب المحدد: [[$1]]",
-       "template-loop-category": "الصفحات التي تحتوي على حلقات نموذجية",
-       "template-loop-category-desc": "تحتوي الصفحة على حلقة قالب، أي. قالب يسمى نفسه بشكل متكرر.",
        "parser-template-recursion-depth-warning": "حد عمق الريكيرشيون بتاع القالب اتعدى  ($1)",
        "language-converter-depth-warning": "حد عمق محول اللغه اتعدى ($1)",
        "undo-success": "ممكن ترجع فى التعديل.\nلو سمحت تشوف المقارنة اللى تحت علشان تتأكد من إن هو دا اللى إنت عايز تعمله ،وبعدين احفظ التغييرات اللى تحت علشان ترجع فى التعديل.",
index 6bc308e..6c90b1f 100644 (file)
        "login": "Posi",
        "logout": "Piskeapikenakan",
        "userlogout": "Piskeapikenakan",
+       "userlogin-noaccount": " Nama takon ki mockinesinihikan?",
+       "userlogin-joinproject": "Pe natcipicta {{ohwe itipiwin}}",
        "createaccount": "Masinahotiso",
        "userlogin-resetpassword-link": "Ki onikan kipitakesinihikan?",
+       "userlogin-helplink2": "Witcihewin kata pitakeapikecinaniwok",
        "createacct-emailrequired": "Pamikicikwepitcikan matcetcicihikan",
        "createacct-emailoptional": "Pamikicikwepitcikan matcetcicihikan (kir kotc)",
        "createacct-email-ph": "Pitakesinaha ki pamikicikwepitcikan matcetcicihikan",
        "botpasswords-label-cancel": "Ponipita",
        "botpasswords-label-delete": "Wepina",
        "resetpass-submit-cancel": "Ponipita",
+       "passwordreset": "Ka ocehikaniin itewin koski masinaha",
        "passwordreset-username": "Icinikasowin:",
        "passwordreset-email": "Pamikicikwepitcikan matcetcicihikan:",
        "bold_sample": "Atisokesinahikan e makatewasinatek",
        "templatesused": "{{PLURAL:$1|tapapitcikan ka apatak |tapapitcikan ka apatak}} nta paskickwemakanik:",
        "template-protected": "(nakatweritcikatew)",
        "template-semiprotected": "(apita nakatoweritakon)",
+       "moveddeleted-notice": "Paskickwemakan ka ki wepinikatek.\nOhwe wapatcikan nitc ici nokon  paskickwemakanik ka ki wepinikateki acit ka ki atcipitcikateki .",
        "content-model-javascript": "JavaScript",
        "viewpagelogs": "Kinawapta kekwan kaki isparik ota masinhikanik",
        "revisionasof": "Kiwe wapata $1",
        "historyaction-submit": "Wapata",
        "dellogpage": " Nesitc ka wepinikatek kanaweritcikan",
        "rollbacklink": "e maninikatek",
+       "protectlogpage": "Nanakatisiwina wapatcikan",
        "restriction-edit": "Meckotcita",
        "undeleteviewlink": "tapwatcike",
        "undelete-search-submit": "Nantokaskeritcikatek",
        "tooltip-save": "Kinokepita ka meckotcisinihaman",
        "tooltip-preview": "Mikwetc pitaman e kanawapataman kaki meckotcitain, e pwamici 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-summary": "Acta e arimotaman masinihikan apicic",
        "simpleantispam-label": "Ntokiskeritcike piciriwe masinihikan \n\nNte nota <strong>nama kekwan</strong> masinaha ota!",
        "pageinfo-contentpage-yes": "Ehe",
        "pageinfo-protect-cascading-yes": "Ehe",
        "confirm-markpatrolled-button": "OK",
+       "nextdiff": "Tec meckotcisinihikan",
        "show-big-image": "E otciparik masinahikaniwoc",
        "show-big-image-preview": "E irikweckwemikisitc$1",
        "show-big-image-size": "$1 x $2 pixels",
        "saturday-at": "mari kicikaw $1",
        "sunday-at": "manactakaniwon $1",
        "metadata": "E ici tipatcitcikatek",
+       "metadata-fields": "Nohwe e aitotwakaniwitc masinasowin nta kata ici actew paskickwemakanik ka ici tipatcimonaniwok ickwa atciwonikateke nta kitci tipatcimoniwocik. Minawatc kotakahi kata katcictakaniwona.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-orientation": "Itactamictew",
        "exif-datetime": "Apitc ka meckotcitakaniwok",
        "exif-make": "Ka ki ocitatatc masinapiskihikaniw",
index fa43219..3a9d7c4 100644 (file)
        "login": "گیریش",
        "login-security": "کیملیگینیزی تائید ائدین",
        "nav-login-createaccount": "گیریش / حساب یارات",
-       "userlogin": "گیریش / حساب یارات",
-       "userloginnocreate": "گیریش",
        "logout": "چیخیش",
        "userlogout": "چیخیش",
        "notloggedin": "گیرمه‌میسینیز",
        "userlogin-noaccount": "حسابینیز یوخدورمو؟",
        "userlogin-joinproject": "{{SITENAME}}-ه قوشولون",
-       "nologin": "حسابینیز یوخدومو؟ $1.",
-       "nologinlink": "حساب یارات",
        "createaccount": "حساب یارات",
-       "gotaccount": "اؤنجه‌دن حسابینیز وارمی؟ $1.",
-       "gotaccountlink": "گیریش",
-       "userlogin-resetlink": "گیریش بیلگیلرینیزی اونوتموسونوز؟",
        "userlogin-resetpassword-link": "رمزینیزی اونوتموسوز مو؟",
        "userlogin-helplink2": "گیریش ایله کؤمک",
        "userlogin-loggedin": "سیر حال حاضیردا {{GENDER:$1|$1}} عونوانیندا گیریش ائدیب سیز.\nآشاغیداکی فورمودان بیر آیری ایشلدن عونوانیندا گیریش اوچون ایشلدین.",
        "createacct-another-email-ph": "ایمیل آدرسینیزی یازین",
        "createaccountmail": "بیر گئچیجی راست‌گله رمز ایشلت و اونو آشاغیدا بللندیرن ایمیل آدرسینه گؤندر",
        "createacct-realname": "دوغرو آد (ایستگه باغلی)",
-       "createaccountreason": "نَدَن‌لیک:",
        "createacct-reason": "سبب",
        "createacct-reason-ph": "ندن سیز باشقا حساب یارادیرسینیز",
        "createacct-reason-help": "حساب یاراتماق لیستینده گؤستریلن مساژ",
        "savearticle": "صفحه‌نی ذخیره ائت",
        "savechanges": "دَییشیکلیکلری ذخیره ائت",
        "publishpage": "صفحه‌نی یاییملا",
-       "publishchanges": "دَییشیک‌لیک‌لری یاییملا",
+       "publishchanges": "دَییشیک‌لیکلری یای",
        "preview": "اؤن‌گؤستریش",
        "showpreview": "سیناق گؤستریش",
        "showdiff": "دَییشیکلیکلری گؤستر",
        "log-name-managetags": "اِتیکت ایداره گئچمیشی",
        "log-name-tag": "اِتیکت ژورنالی",
        "rightsnone": "(هئچ)",
-       "revdelete-summary": "دَییشدیرمه قیساسی",
        "feedback-adding": "صحیفه‌یه گئری-بیلدیریم آرتیریلیر...",
        "feedback-back": "دالی",
        "feedback-bugcheck": "گؤزل! فقط لوطفاً باخین او [$1 تانینمیش خطالار]دان اولماسین.",
index 4630658..9925369 100644 (file)
        "watchthis": "Күҙәтеү исемлегенә",
        "savearticle": "Яҙҙырып ҡуйырға",
        "savechanges": "Яҙҙырып ҡуйырға",
-       "publishpage": "Ð\91иÑ\82Ñ\82е Ð±Ð°Ò«Ñ\82Ñ\8bÑ\80ырға",
+       "publishpage": "ЯÒ\99Ò\99Ñ\8bÑ\80Ñ\8bп Ò¡Ñ\83йырға",
        "publishchanges": "Яҙҙырып ҡуйырға",
        "preview": "Ҡарап сығыу",
        "showpreview": "Ҡарап сығырға",
index 7217f40..2c410bc 100644 (file)
        "post-expand-template-argument-category": "Старонкі, у якіх прапушчаныя парамэтры шаблёнаў",
        "parser-template-loop-warning": "Выяўлены цыкль у шаблёнах: [[$1]]",
        "template-loop-category": "Старонкі з цыклямі шаблёнаў",
+       "template-loop-category-desc": "Старонка ўтрымлівае цыкль шаблёну, г. зн., шаблён уключае сам сябе рэкурсіўна.",
        "parser-template-recursion-depth-warning": "Перавышаны ліміт глыбіні рэкурсіі шаблёну ($1)",
        "language-converter-depth-warning": "Перавышанае абмежаваньне глыбіні канвэртару варыянтаў мовы ($1)",
        "node-count-exceeded-category": "Старонкі зь перавышанай колькасьцю вузлоў",
        "newimages-summary": "Гэтая спэцыяльная старонка паказвае нядаўна загружаныя файлы.",
        "newimages-legend": "Фільтар",
        "newimages-label": "Назва файла (альбо яе частка):",
+       "newimages-user": "IP-адрас ці імя ўдзельніка",
        "newimages-showbots": "Паказаць загружаныя робатамі",
        "newimages-hidepatrolled": "Схаваць патруляваныя загрузкі",
        "noimages": "Выявы адсутнічаюць.",
        "authmanager-email-label": "Электронная пошта",
        "authmanager-email-help": "Адрас электроннай пошты",
        "authmanager-realname-label": "Сапраўднае імя",
+       "authmanager-realname-help": "Сапраўднае імя ўдзельніка",
        "authmanager-provider-temporarypassword": "Часовы пароль",
        "changecredentials": "Зьмена ўліковых зьвестак",
        "removecredentials": "Выдаленьне ўліковых зьвестак",
index acc2b37..d076f51 100644 (file)
        "default-skin-not-found-no-skins": "Упс! Прадвызначаная вокладка для вашай вікі (<code>$wgDefaultSkin</code>), <code>$1</code>, недаступна.\n\nВы не ўстанавілі вокладкі.\n\n; Калі вы толькі што ўстанавілі ці абнавілі MediaWiki:\n: Магчыма, вы ўстанавілі з git, ці наўпрост з зыходнага коду, выкарыстаўшы іншы метад. Гэта нармальна. MediaWiki 1.24 і навейшыя не ўключаюць вокладкі ў асноўнае сховішча. Паспрабуйце ўстанавіць некалькі вокладак з [https://www.mediawiki.org/wiki/Category:All_skins каталога вокладак mediawiki.org], такім чынам:\n:* Узяўшы [https://www.mediawiki.org/wiki/Download tarball-інсталятар], які ўтрымлівае некалькі вокладак і прыставак. Вы можаце скапіяваць і ўставіць каталог <code>skins/</code> адтуль.\n:* Зрабіўшы клон аднаго з сховішчаў <code>mediawiki/skins/*</code> праз git у каталог <code>skins/</code> вашай інсталяцыі MediaWiki.\n: Калі вы распрацоўшчык MediaWiki, гэта не павінна адбіцца на вашым git-сховішчы. Гл. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя: Настройка вокладак] дзеля інфармацыі па ўключэнні вокладак і выбары прадвызначэння.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (уключана)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>выключана</strong>)",
+       "mediastatistics-table-extensions": "Магчымыя прыстаўкі",
        "mediastatistics-table-count": "Колькасць файлаў",
        "mediastatistics-table-totalbytes": "Агульны памер",
        "mediastatistics-header-unknown": "Невядомыя",
index 8d98643..7fa8402 100644 (file)
        "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|এই বিষয়শ্রেণীতে কেবলমাত্র নিচের উপবিষয়শ্রেণীটি আছে।|এই বিষয়শ্রেণীতে অন্তর্ভুক্ত মোট $2টি উপবিষয়শ্রেণীর মধ্যে {{PLURAL:$1|টি উপবিষয়শ্রেণী|$1টি উপবিষয়শ্রেণী}} নিচে দেখানো হয়েছে।}}",
-       "category-subcat-count-limited": "à¦\8fà¦\87 à¦¬à¦¿à¦·à¦¯à¦¼à¦¶à§\8dরà§\87ণà§\80তà§\87 à¦¨à¦¿à¦\9aà§\87র {{PLURAL:$1|à¦\9fি à¦\89পবিষয়শà§\8dরà§\87ণà§\80|$1à¦\9fি à¦\89পবিষয়শà§\8dরà§\87ণà§\80 à¦\86à¦\9bà§\87}}।",
-       "category-article-count": "{{PLURAL:$2|এই বিষয়শ্রেণীতে কেবল নিচের পাতাটি আছে।|এই বিষয়শ্রেণীতে অন্তর্ভুক্ত মোট $2টি পাতার মধ্যে {{PLURAL:$1|টি পাতা|$1টি পাতা}} নিচে দেখানো হল।}}",
-       "category-article-count-limited": "à¦\8fà¦\87 {{PLURAL:$1|পাতাà¦\9fি|$1 à¦ªà¦¾à¦¤à¦¾à¦\97à§\81লà§\8b}} à¦\8f বিষয়শ্রেণীতে রয়েছে।",
-       "category-file-count": "{{PLURAL:$2|এই বিষয়শ্রেণীতে কেবল নিচের পাতাটি আছে।|এই বিষয়শ্রেণীতে অন্তর্ভুক্ত মোট $2টি পাতার মধ্যে {{PLURAL:$1|টি পাতা|$1টি পাতা}} নিচে দেখানো হলো।}}",
+       "category-subcat-count": "{{PLURAL:$2|এই বিষয়শ্রেণীতে কেবলমাত্র নিচের উপবিষয়শ্রেণীটি আছে।|এই বিষয়শ্রেণীতে অন্তর্ভুক্ত মোট $2টি উপবিষয়শ্রেণীর মধ্যে {{PLURAL:$1|$1টি উপবিষয়শ্রেণী}} নিচে দেখানো হয়েছে।}}",
+       "category-subcat-count-limited": "à¦\8fà¦\87 à¦¬à¦¿à¦·à¦¯à¦¼à¦¶à§\8dরà§\87ণà§\80তà§\87 à¦¨à¦¿à¦\9aà§\87র {{PLURAL:$1|à¦\89পবিষয়শà§\8dরà§\87ণà§\80|$1à¦\9fি à¦\89পবিষয়শà§\8dরà§\87ণà§\80}} à¦\86à¦\9bà§\87।",
+       "category-article-count": "{{PLURAL:$2|এই বিষয়শ্রেণীতে কেবল নিচের পাতাটি আছে।|এই বিষয়শ্রেণীতে অন্তর্ভুক্ত মোট $2টি পাতার মধ্যে {{PLURAL:$1|$1টি পাতা}} নিচে দেখানো হল।}}",
+       "category-article-count-limited": "নিà¦\9aà§\87র {{PLURAL:$1|পাতাà¦\9fি|$1 à¦ªà¦¾à¦¤à¦¾à¦\97à§\81লà§\8b}} à¦\8fà¦\87 বিষয়শ্রেণীতে রয়েছে।",
+       "category-file-count": "{{PLURAL:$2|এই বিষয়শ্রেণীতে কেবল নিচের পাতাটি আছে।|এই বিষয়শ্রেণীতে অন্তর্ভুক্ত মোট $2টি পাতার মধ্যে {{PLURAL:$1|$1টি পাতা}} নিচে দেখানো হলো।}}",
        "category-file-count-limited": "নিচের {{PLURAL:$1|ফাইলটি|$1 ফাইলগুলো}} এই বিষয়শ্রেণীতে রয়েছে।",
        "listingcontinuesabbrev": "আরও আছে",
        "index-category": "নির্ঘণ্ট পাতা",
        "printableversion": "ছাপার যোগ্য সংস্করণ",
        "permalink": "স্থায়ী সংযোগ",
        "print": "মুদ্রণ",
-       "view": "দà§\87à¦\96াà¦\93",
+       "view": "দà§\87à¦\96à§\81ন",
        "view-foreign": "$1-এ দেখুন",
        "edit": "সম্পাদনা",
        "edit-local": "স্থানীয় বিবরণ সম্পাদনা করুন",
-       "create": "তৈরি",
+       "create": "তৈরি করুন",
        "create-local": "স্থানীয় বিবরণ যোগ করুন",
        "editthispage": "এই পাতাটি সম্পাদনা করুন",
-       "create-this-page": "পাতাà¦\9fি à¦¤à§\88রি à¦\95রà§\8b",
+       "create-this-page": "à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦¤à§\88রি à¦\95রà§\81ন",
        "delete": "অপসারণ",
-       "deletethispage": "à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦®à§\81à¦\9bà§\87 à¦«à§\87লুন",
-       "undeletethispage": "পাতাà¦\9fি à¦ªà§\81নরà§\81দà§\8dধার à¦\95রà§\8b",
+       "deletethispage": "à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦\85পসারণ à¦\95রুন",
+       "undeletethispage": "পাতাà¦\9fি à¦ªà§\81নরà§\81দà§\8dধার à¦\95রà§\81ন",
        "undelete_short": "{{PLURAL:$1|১টি সম্পাদনা|$1টি সম্পাদনা}} পুনঃস্থাপন করুন",
-       "viewdeleted_short": "{{PLURAL:$1|à¦\8fà¦\95à¦\9fি à¦\85পসারিত à¦¸à¦®à§\8dপাদনা|$1à¦\9fি à¦\85পসারিত à¦¸à¦®à§\8dপাদনা}} à¦¦à§\87à¦\96াà¦\93",
+       "viewdeleted_short": "{{PLURAL:$1|à¦\8fà¦\95à¦\9fি à¦\85পসারিত à¦¸à¦®à§\8dপাদনা|$1à¦\9fি à¦\85পসারিত à¦¸à¦®à§\8dপাদনা}} à¦¦à§\87à¦\96à§\81ন",
        "protect": "সুরক্ষা",
        "protect_change": "পরিবর্তন করুন",
-       "protectthispage": "à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦\95à§\87 à¦¸à§\81রà¦\95à§\8dষিত à¦\95রà§\8b",
+       "protectthispage": "à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦¸à§\81রà¦\95à§\8dষিত à¦\95রà§\81ন",
        "unprotect": "সুরক্ষা পরিবর্তন",
        "unprotectthispage": "এই পাতার সুরক্ষা পরিবর্তন করুন",
        "newpage": "নতুন পাতা",
        "tool-link-userrights": "{{GENDER:$1|ব্যবহারকারী}} দল পরিবর্তন করুন",
        "tool-link-userrights-readonly": "{{GENDER:$1|ব্যবহারকারী}} দল দেখুন",
        "tool-link-emailuser": "এই {{GENDER:$1|ব্যবহারকারী}}কে ইমেইল পাঠান",
-       "userpage": "বà§\8dযাবহারà¦\95ারà§\80র à¦ªà¦¾à¦¤à¦¾ à¦¦à§\87à¦\96à§\81ন",
+       "userpage": "ব্যবহারকারীর পাতা দেখুন",
        "projectpage": "প্রকল্প পাতাটি দেখুন",
        "imagepage": "ফাইল পাতা দেখুন",
        "mediawikipage": "বার্তার পাতা দেখুন",
        "redirectpagesub": "পুনর্নির্দেশ পাতা",
        "redirectto": "পুননির্দেশিত হয়েছে:",
        "lastmodifiedat": "এ পাতায় শেষ পরিবর্তন হয়েছিল $2টার সময়, $1 তারিখে।",
-       "viewcount": "এ পাতাটি {{PLURAL:$1|বার|$1 বার}} দেখা হয়েছে।",
+       "viewcount": "এই পাতাটি {{PLURAL:$1|একবার|$1 বার}} দেখা হয়েছে।",
        "protectedpage": "সুরক্ষিত পাতা",
        "jumpto": "সরাসরি যাও:",
        "jumptonavigation": "পরিভ্রমণ",
        "youhavenewmessagesmulti": "আপনার $1টি নতুন বার্তা এসেছে",
        "editsection": "সম্পাদনা",
        "editold": "সম্পাদনা",
-       "viewsourceold": "à¦\89à§\8eস à¦¦à§\87à¦\96াà¦\93",
+       "viewsourceold": "à¦\89à§\8eস à¦¦à§\87à¦\96à§\81ন",
        "editlink": "সম্পাদনা",
        "viewsourcelink": "উৎস দেখুন",
        "editsectionhint": "অনুচ্ছেদ সম্পাদনা: $1",
        "exception-nologin": "প্রবেশ করেন নি",
        "exception-nologin-text": "এই কাজ করা বা পাতাটি দেখার জন্য অনুগ্রহ করে প্রবেশ করুন।",
        "exception-nologin-text-manual": "অনুগ্রহ করে এই পাতা দেখতে অথবা পরিবর্তন করতে $1 করুন।",
-       "virus-badscanner": "ভুল কনফিগারেশন: অজ্ঞাত ভাইরাস স্কেনার: ''$1''",
+       "virus-badscanner": "ভুল কনফিগারেশন: অজ্ঞাত ভাইরাস স্কেনার: <em>$1</em>",
        "virus-scanfailed": "স্ক্যান করা যাচ্ছে না (কোড $1)",
        "virus-unknownscanner": "অজানা এন্টিভাইরাস:",
        "logouttext": "'''আপনি এখন আপনার অ্যাকাউন্ট থেকে প্রস্থান করেছেন।'''\n\nনোট করুন যে কিছু পাতায় আপনাকে এখনও প্রবেশ অবস্থায় দেখাবে, যতক্ষণ না আপনি ব্রাউজার ক্যাশ পরিষ্কার করছেন।",
        "resetpass_forbidden": "পাসওয়ার্ড পরিবর্তন করা সম্ভব নয়",
        "resetpass_forbidden-reason": "পাসওয়ার্ড পরিবর্তন করা যাবে না: $1",
        "resetpass-no-info": "এই পাতাটিতে সরাসরি প্রবেশাধিকার পেতে আপনাকে অবশ্যই অ্যাকাউন্টে প্রবেশ করতে হবে।",
-       "resetpass-submit-loggedin": "পাসওয়ার্ড পরিবর্তন",
+       "resetpass-submit-loggedin": "পাসওয়ার্ড পরিবর্তন করুন",
        "resetpass-submit-cancel": "বাতিল",
        "resetpass-wrong-oldpass": "ভুল অস্থায়ী অথবা বর্তমান পাসওয়ার্ড।\nসম্ভবতঃ আপনি ইতোমধ্যেই আপনার পাসওয়ার্ডটি পরিবর্তন করেছেন অথবা একটি নতুন অস্থায়ী পাসওয়ার্ডের জন্য অনুরোধ করেছেন।",
        "resetpass-recycled": "অনুগ্রহ করে বিদ্যমান পাসওয়ার্ডের পরিবর্তে নতুন একটি পাসওয়ার্ড নির্ধারণ করুন।",
        "subject-preview": "বিষয়ের প্রাকদর্শন:",
        "previewerrortext": "আপনার পরিবর্তনগুলি প্রাকদর্শন করার চেষ্টা করার সময় একটি ত্রুটি ঘটেছে।",
        "blockedtitle": "ব্যবহারকারীকে বাধা দেয়া হয়েছে",
-       "blockedtext": "<strong>আপনার ব্যবহারকারী নাম বা আইপি ঠিকানাটিকে সম্পাদনায় বাধাদান করা হয়েছে।</strong>\n\n$1 এই বাধাটি প্রদান করেছেন। বাধার কারণ হিসেবে বলা হয়েছে:<em>$2</em>।\n\n* বাধা শুরুর সময়:$8\n* বাধা উঠিয়ে নেয়ার সময়: $6\n* যাকে বাধাদান করা হয়েছে: $7\n\nআপনি $1 অথবা [[{{MediaWiki:Grouppage-sysop}}|প্রশাসকদের]] কারও সাথে এই বাধা সংক্রান্ত বিষয়ে আলোচনা করতে পারেন।\n\nআপনি \"(ব্যবহারকারীকে) ইমেইল করুন\" সুবিধাটি ব্যবহার করতে পারবেন না। তবে [[Special:Preferences|আপনার পছন্দ তালিকাতে]] যদি একটি বৈধ ইমেইল ঠিকানা নির্দিষ্ট করা হয়ে থাকে এবং সুবিধাটি ব্যবহারে যদি আপনাকে বাধা না দেওয়া হ<strong>য়ে থাকে, তবে আপনি সুবিধাটি ব্যবহার করতে পারবেন।\n\nআপনার বর্তমান আইপি ঠিকানা $3, এবং আপনার বাধা নং হল #$5।\n\nদয়া করে আপনার যেকোন জিজ্ঞাসাতে উপরের সমস্ত বিবরণ অন্তর্ভুক্ত করুন।",
+       "blockedtext": "<strong>আপনার ব্যবহারকারী নাম বা আইপি ঠিকানাটিকে সম্পাদনায় বাধাদান করা হয়েছে।</strong>\n\n$1 এই বাধাটি প্রদান করেছেন। বাধার কারণ হিসেবে বলা হয়েছে:<em>$2</em>।\n\n* বাধা শুরুর সময়:$8\n* বাধা উঠিয়ে নেয়ার সময়: $6\n* যাকে বাধাদান করা হয়েছে: $7\n\nআপনি $1 অথবা [[{{MediaWiki:Grouppage-sysop}}|প্রশাসকদের]] কারও সাথে এই বাধা সংক্রান্ত বিষয়ে আলোচনা করতে পারেন।\n\nআপনি \"(ব্যবহারকারীকে) ইমেইল করুন\" সুবিধাটি ব্যবহার করতে পারবেন না। তবে [[Special:Preferences|আপনার পছন্দ তালিকাতে]] যদি একটি বৈধ ইমেইল ঠিকানা নির্দিষ্ট করা হয়ে থাকে এবং সুবিধাটি ব্যবহারে যদি আপনাকে বাধা না দেওয়া হয়ে থাকে, তবে আপনি সুবিধাটি ব্যবহার করতে পারবেন।\n\nআপনার বর্তমান আইপি ঠিকানা হল $3, এবং আপনার বাধা নং হল #$5।\n\nদয়া করে আপনার যেকোন জিজ্ঞাসাতে উপরের সমস্ত বিবরণ অন্তর্ভুক্ত করুন।",
        "autoblockedtext": "আপনার আইপি ঠিকানাটিকে স্বয়ংক্রিয়ভাবে সম্পাদনায় বাধাদান করা হয়েছে কারণ এমন আরেকজন ব্যবহারকারী এটি ব্যবহার করেছেন, যাকে $1 বাধা দিয়েছেন।\nযে কারণে বাধা দেওয়া হয়েছে সেটি হল:\n\n:<em>$2</em>\n\n* বাধা শুরুর সময়: $8\n* বাধা শেষের সময়: $6\n* যাকে বাধাদান করা হয়েছে: $7\n\nআপনি $1-এর সাথে কিংবা অন্য যেকোন [[{{MediaWiki:Grouppage-sysop}}|প্রশাসকের]] সাথে যোগাযোগ করে এই বাধা সংক্রান্ত বিষয়ে আলোচনা করতে পারেন।\n\nলক্ষ্য করুন, যদি আপনি \"এই ব্যবহারকারীকে ই-মেইল করুন\" সুবিধাটি ব্যবহার করতে চান, তবে [[Special:Preferences|আপনার পছন্দ তালিকাতে]] যদি একটি বৈধ ইমেইল ঠিকানা নির্দিষ্ট  থাকতে হবে এবং আপনার সেটি ব্যবহারে কোন বাধা থাকতে পারবে না।\n\nআপনার বর্তমান আইপি ঠিকানা হচ্ছে $3, এবং বাধা নং হল #$5।\n\nদয়া করে আপনার যেকোন জিজ্ঞাসাতে উপরের সমস্ত বিবরণ অন্তর্ভুক্ত করুন।",
        "systemblockedtext": "আপনার ব্যবহারকারী নাম অথবা আইপি ঠিকানাটিকে স্বয়ংক্রিয়ভাবে মিডিয়াউইকি দ্বারা বাধাদান করা হয়েছে। যে কারণটি দেওয়া হয়েছে, সেটি হল:\n\n:<em>$2</em>\n\n* বাধা শুরুর সময়: $8\n* বাধা উঠিয়ে নেয়ার সময়: $6\n* যাকে বাধাদান করা হয়েছে: $7\n\nআপনার বর্তমান আইপি ঠিকানাটি হল $3।\nদয়া করে আপনার যেকোন জিজ্ঞাসাতে উপরের সমস্ত বিবরণ অন্তর্ভুক্ত করুন।",
        "blockednoreason": "কোন কারণ দেওয়া হয়নি",
        "missing-revision": "\"{{FULLPAGENAME}}\" এর #$1তম সংস্করণটি প্রদর্শন সম্ভব নয়।\n\nসাধারণত মুছে ফেলা হয়েছে এমন পাতার মেয়াদ উত্তীর্ণ ইতিহাস পাতার লিংক ওপেন করার কারণে এটি হতে পারে। \n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অপসারণ লগে] বিস্তারিত তথ্য জানা যাবে।",
        "userpage-userdoesnotexist": "\"<nowiki>$1</nowiki>\" নামের কোন ব্যবহারকারী অ্যাকাউন্ট নিবন্ধিত হয়নি। অনুগ্রহ করে পরীক্ষা করে দেখুন আপনি এই পাতাটি সৃষ্টি/সম্পাদনা করতে চান কি না।",
        "userpage-userdoesnotexist-view": "ব্যবহারকারী অ্যাকাউন্ট \"$1\" অনিবন্ধিত।",
-       "blocked-notice-logextract": "à¦\8fà¦\87 à¦¬à§\8dযবহারà¦\95ারà§\80 à¦¬à¦°à§\8dতমানà§\87 à¦¬à§\8dলà¦\95 à¦°à¦¯à¦¼à§\87à¦\9bà§\87।\nরà§\87ফারà§\87নà§\8dসà§\87র à¦\9cনà§\8dয à¦¸à¦¾à¦®à§\8dপà§\8dরতিà¦\95 à¦¬à§\8dলà¦\95 à¦²à¦\97 à¦­à§\81à¦\95à§\8dতি নিচে দেওয়া হল:",
+       "blocked-notice-logextract": "à¦\8fà¦\87 à¦¬à§\8dযবহারà¦\95ারà§\80 à¦¬à¦°à§\8dতমানà§\87 à¦\85বরà§\81দà§\8dধ à¦°à¦¯à¦¼à§\87à¦\9bà§\87ন।\nসà§\82তà§\8dরà§\87র à¦\9cনà§\8dয à¦¸à¦¾à¦®à§\8dপà§\8dরতিà¦\95 à¦¬à¦¾à¦§à¦¾à¦¦à¦¾à¦¨ à¦²à¦\97à§\87র à¦­à§\81à¦\95à§\8dতিà¦\9fি নিচে দেওয়া হল:",
        "clearyourcache": "<strong>লক্ষ্য করুন:</strong> সংরক্ষণের পর, পরিবর্তনগুলো দেখতে আপনাকে আপনার ব্রাউজারের ক্যাশে পরিষ্কার করার প্রয়োজন হতে পারে।\n* <strong>ফায়ারফক্স / সাফারি:</strong> <em>Shift</em> ধরে রাখা অবস্থায়<em>পুনঃলোড করুন</em>-এ ক্লিক করুন, অথবা <em>Ctrl-F5</em> বা <em>Ctrl-R</em> (ম্যাক-এ <em>⌘-R</em>) চাপুন\n* <strong>গুগল ক্রোম:</strong> <em>Ctrl-Shift-R</em> (ম্যাক-এ <em>⌘-Shift-R</em>) চাপুন\n* <strong>ইন্টারনেট এক্সপ্লোরার:</strong> <em>Ctrl</em> ধরে রাখা অবস্থায় <em>Refresh</em>-এ ক্লিক করুন, অথবা <em>Ctrl-F5</em> চাপুন\n* <strong>অপেরা:</strong> <em>মেনু → ব্যবস্থাপনাসমূহ</em>-এ যান (ম্যাকে <em>অপেরা → পছন্দসমূহ</em>) এবং এরপর <em>গোপনীয়তা ও সুরক্ষা → ব্রাউজিং-এর তথ্য পরিষ্কার করুন → ক্যাশে করা ছবি ও ফাইলগুলি</em>।",
        "usercssyoucanpreview": "'''পরামর্শ:''' \"{{int:showpreview}}\" বোতাম ব্যবহার করে সংরক্ষণের আগে আপনার নতুন CSS পরীক্ষা করুন।",
        "userjsyoucanpreview": "'''পরামর্শ:''' \"{{int:showpreview}}\" বোতাম ব্যবহার করে সংরক্ষণের আগে আপনার নতুন JavaScript পরীক্ষা করুন।",
        "recreate-moveddeleted-warn": "'''সতর্কীকরণ: আপনি এমন একটি পাতা পুনরায় তৈরি করছেন যা পূর্বে অপসারণ করা হয়েছিল।'''\n\nআপনি পাতাটি সম্পাদনা চালিয়ে যাওয়া ঠিক হবে কিনা, তা বিবেচনা করুন।\nআপনার সুবিধার্থে পাতাটির অপলুপ্তি লগ এখানে দেয়া হলো:",
        "moveddeleted-notice": "এই পাতাটি অপসারণ করা হয়েছে।\nসূত্র হিসেবে নিচে এ পাতার অবলুপ্তি লগ দেওয়া হলো।",
        "moveddeleted-notice-recent": "দুঃখিত, এই পাতাটি সাম্প্রতি অপসারিত হয়েছে (সর্বশেষ ২৪ ঘণ্টায়)।\nসূত্র হিসেবে নিচে এই পাতা অপসারণ ও স্থানান্তর লগ দেয়া হয়েছে।",
-       "log-fulllog": "সমà§\8dপà§\82রà§\8dণ à¦²à¦\97 à¦¦à§\87à¦\96াà¦\93",
+       "log-fulllog": "সমà§\8dপà§\82রà§\8dণ à¦²à¦\97 à¦¦à§\87à¦\96à§\81ন",
        "edit-hook-aborted": "হূক দ্বারা সম্পাদনা পরিত্যক্ত হয়েছে।\nএর কোন ব্যাখ্যা নাই।",
        "edit-gone-missing": "পাতাটি হালনাগাদ হয়নি।\nসম্ভবতঃ পাতাটি মুছে ফেলা হয়েছে।",
        "edit-conflict": "সম্পাদনা সংঘাত।",
        "edit-no-change": "আপনার সম্পাদনাটি উপেক্ষা করা হয়েছে, কারণ লেখাতে কোনো পরিবর্তন করা হয়নি।",
-       "postedit-confirmation-created": "পাতাটি তৈরি হয়েছে।",
+       "postedit-confirmation-created": "পাতাà¦\9fি à¦¤à§\88রি à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87।",
        "postedit-confirmation-restored": "পাতাটি পুনরুদ্ধার করা হয়েছে।",
        "postedit-confirmation-saved": "আপনার সম্পাদনা সংরক্ষিত হয়েছে।",
        "edit-already-exists": "নতুন পাতা সৃষ্টি করা যায়নি।\nপাতাটি ইতিমধ্যেই বিদ্যমান।",
        "parser-template-loop-warning": "টেমপ্লেট লুপ সনাক্ত হয়েছে: [[$1]]",
        "template-loop-category": "টেমপ্লেট লুপসহ পাতা",
        "template-loop-category-desc": "এই পাতায় একটি টেমপ্লেট লুপ আছে, অর্থাৎ এটি এমন একটি টেমপ্লেট যা নিজেকেই পুনরাবৃত্তভাবে আহ্বান করে।",
-       "parser-template-recursion-depth-warning": "à¦\9fà§\87মপà§\8dলà§\87à¦\9f à¦ªà§\81নরাবà§\83তà§\8dতি (রিà¦\95ারà§\8dশন) à¦¡à§\87পথà§\8dâ\80\8c সীমা অতক্রম করেছে ($1)",
-       "language-converter-depth-warning": "ভাষা à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦¡à§\87পথà§\8dâ\80\8c সীমা অতক্রম করেছে ($1)",
+       "parser-template-recursion-depth-warning": "à¦\9fà§\87মপà§\8dলà§\87à¦\9f à¦ªà§\81নরাবà§\83তà§\8dতি (রিà¦\95ারà§\8dশন) à¦\97ভà§\80রতা সীমা অতক্রম করেছে ($1)",
+       "language-converter-depth-warning": "ভাষা à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦\97ভà§\80রতা সীমা অতক্রম করেছে ($1)",
        "node-count-exceeded-category": "যে সকল পাতার নোড কাউন্ট সীমানা পার হয়েছে",
        "node-count-exceeded-category-desc": "পাতার সর্বোচ্চ নোড কাউন্ট সীমানা অতিক্রম করেছে।",
        "node-count-exceeded-warning": "পাতাটি নোড কাউন্ট সীমানা পার করেছে",
        "expansion-depth-exceeded-warning": "পাতাটি এক্সেপশন সীমানা অতিক্রম করেছে",
        "parser-unstrip-loop-warning": "ত্রুটিপূর্ণ লুপ খুঁজে পাওয়া গিয়েছে",
        "parser-unstrip-recursion-limit": "লুপ রিকারশন সীমানা অতিক্রম করেছে ($1)",
-       "converter-manual-rule-error": "ভাষা à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦°à§\81লে ত্রুটি পাওয়া গিয়েছে",
+       "converter-manual-rule-error": "মà§\8dযানà§\81য়াল à¦­à¦¾à¦·à¦¾ à¦°à§\82পানà§\8dতর à¦¨à¦¿à¦¯à¦¼à¦®ে ত্রুটি পাওয়া গিয়েছে",
        "undo-success": "সম্পাদনাটি বাতিল করা যাবে। অনুগ্রহ করে নিচের তুলনাটি পরীক্ষা করে দেখুন ও নিশ্চিত করুন যে এটাই আপনি করতে চান, এবং তারপর নিচের সম্পাদনাগুলি সংরক্ষণ করে সম্পাদনাটির বাতিল প্রক্রিয়া সমাপ্ত করুন।",
        "undo-failure": "এ সম্পাদনা মধ্যবর্তী সম্পাদনাসমূহের কারণে পূর্বাবস্থায় ফিরিয়ে নেওয়া যাবে না।",
        "undo-norev": "সম্পাদনাটি বাতিল করা যাচ্ছেনা কারণ এটি আর নেই বা মুছে ফেলা হয়েছে।",
        "currentrev-asof": "$1 তারিখে সম্পাদিত সর্বশেষ সংস্করণ",
        "revisionasof": "$1 তারিখে সংশোধিত সংস্করণ",
        "revision-info": "{{GENDER:$6|$2}} কর্তৃক $1 তারিখে সংশোধিত সংস্করণ$7",
-       "previousrevision": "←পুর্বের সংস্করণ",
-       "nextrevision": "পরবর্তী সংস্করণ→",
+       "previousrevision": "← পূর্বের সংস্করণ",
+       "nextrevision": "পরবর্তী সংস্করণ →",
        "currentrevisionlink": "সর্বশেষ সংস্করণ",
        "cur": "বর্তমান",
        "next": "পরবর্তী",
        "action-autocreateaccount": "স্বয়ংক্রিয়ভাবে এই বাহ্যিক ব্যবহারকারী অ্যাকাউন্ট তৈরি করার",
        "action-history": "এই পাতার ইতিহাস দেখার",
        "action-minoredit": "এই সম্পাদনাটি অনুল্লেখ্য হিসেবে চিহ্নিত করার",
-       "action-move": "পাতাà¦\9fি à¦¸à¦°à¦¿à¦¯à¦¼à§\87 à¦«à§\87লà§\81ন",
-       "action-move-subpages": "পাতাà¦\9fি à¦\8fবà¦\82 à¦\8fর à¦\89পপাতাà¦\97à§\81লà§\8b à¦¸à¦°à¦¿à¦¯à¦¼à§\87 à¦«à§\87লà§\81ন",
+       "action-move": "à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦¸à§\8dথানানà§\8dতর à¦\95রার",
+       "action-move-subpages": "à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦\8fবà¦\82 à¦\8fর à¦\89পপাতাà¦\97à§\81লি à¦¸à§\8dথানানà§\8dতর à¦\95রার",
        "action-move-rootuserpages": "root ব্যবহারকারীর পাতাগুলো সরিয়ে ফেলুন",
-       "action-move-categorypages": "বিষয়শ্রেণী পাতা স্থানান্তর করা",
+       "action-move-categorypages": "বিষয়শ্রেণীর পাতা স্থানান্তর করার",
        "action-movefile": "এই ফাইল স্থানান্তর করার",
        "action-upload": "এই ফাইল আপলোড করার",
-       "action-reupload": "বিদà§\8dযমান à¦«à¦¾à¦\87ল à¦ªà§\8dরতিসà§\8dথাপন à¦\95রà§\8b",
+       "action-reupload": "à¦\8fà¦\87 à¦¬à¦¿à¦¦à§\8dযমান à¦«à¦¾à¦\87ল à¦ªà§\8dরতিসà§\8dথাপন à¦\95রার",
        "action-reupload-shared": "শেয়ার্ড রিপোজিটরীতে এই ফাইলটি হালনাগাদ করার",
-       "action-upload_by_url": "à¦\95à§\8bন à¦\87à¦\89à¦\86রà¦\8fল à¦¥à§\87à¦\95à§\87 à¦«à¦¾à¦\87লà¦\9fি à¦\86পলà§\8bড à¦\95রà§\8b",
-       "action-writeapi": "রাà¦\87à¦\9f à¦\8fপিà¦\86à¦\87 à¦¬à§\8dযবহার à¦\95রà§\81ন",
-       "action-delete": "পাতাà¦\9fি à¦®à§\81à¦\9bà§\87 à¦«à§\87লà§\8b",
+       "action-upload_by_url": "à¦\8fà¦\95à¦\9fি à¦\87à¦\89à¦\86রà¦\8fল à¦¥à§\87à¦\95à§\87 à¦\8fà¦\87 à¦«à¦¾à¦\87লà¦\9fি à¦\86পলà§\8bড à¦\95রার",
+       "action-writeapi": "à¦\8fপিà¦\86à¦\87 à¦²à§\87à¦\96া à¦¬à§\8dযবহার à¦\95রার",
+       "action-delete": "à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦\85পসারণ à¦\95রার",
        "action-deleterevision": "সংশোধনটি মুছে ফেলার",
        "action-deletelogentry": "লগের ভুক্তি অপসারণ করার",
        "action-deletedhistory": "পাতার অপসারিত ইতিহাস দেখার",
        "action-deletedtext": "অপসারিত সংশোধনের লেখা দেখার",
-       "action-browsearchive": "অপসারিত পাতায় অনুসন্ধান করুন",
+       "action-browsearchive": "অপসারিত পাতা অনুসন্ধান করার",
        "action-undelete": "পাতাটি পুনরুদ্ধার করার",
        "action-suppressrevision": "লুকানো সংস্করণগুলো পর্যালোচনা এবং পুনঃস্থাপন করার",
        "action-suppressionlog": "এই ব্যক্তিগত লগ দেখার",
        "action-protect": "এই পাতার সুরক্ষার মাত্রা পরিবর্তন করার",
        "action-rollback": "একটি নির্দিষ্ট পাতার সর্বশেষ ব্যবহারকারীর সম্পদনা পূর্বাবস্থায় ফিরিয়ে আনুন",
        "action-import": "অন্য উইকি থেকে পাতা আমদানি করার",
-       "action-importupload": "ফাà¦\87ল à¦\86পলà§\8bড à¦¥à§\87à¦\95à§\87 à¦ªà¦¾à¦¤à¦¾ à¦\86মদানà§\80 à¦\95রà§\8b",
-       "action-patrol": "à¦\85নà§\8dযদà§\87র à¦¸à¦®à§\8dপাদনা à¦ªà¦°à§\80à¦\95à§\8dষিত à¦¬à¦²à§\87 à¦\9aিহà§\8dনিত à¦\95রà§\8b",
+       "action-importupload": "ফাà¦\87ল à¦\86পলà§\8bড à¦¥à§\87à¦\95à§\87 à¦ªà¦¾à¦¤à¦¾ à¦\86মদানি à¦\95রার",
+       "action-patrol": "à¦\85নà§\8dযদà§\87র à¦¸à¦®à§\8dপাদনা à¦ªà¦°à§\80à¦\95à§\8dষিত à¦¬à¦²à§\87 à¦\9aিহà§\8dনিত à¦\95রার",
        "action-autopatrol": "পরীক্ষিত বলে চিহ্নিত কি আপনি সম্পাদনা করেছেন",
-       "action-unwatchedpages": "নà¦\9cরতালিà¦\95া à¦¬à¦¹à¦¿à¦°à§\8dভà§\82ত à¦ªà¦¾à¦¤à¦¾à¦\97à§\81লির à¦¤à¦¾à¦²à¦¿à¦\95া à¦¦à§\87à¦\96াà¦\93",
+       "action-unwatchedpages": "নà¦\9cরতালিà¦\95া à¦¬à¦¹à¦¿à¦°à§\8dভà§\82ত à¦ªà¦¾à¦¤à¦¾à¦\97à§\81লির à¦¤à¦¾à¦²à¦¿à¦\95া à¦¦à§\87à¦\96ার",
        "action-mergehistory": "এই পাতার ইতিহাস একত্রিত করার",
-       "action-userrights": "সà¦\95ল à¦¬à§\8dযবহারà¦\95ারà§\80র à¦\85ধিà¦\95ার à¦¸à¦®à§\8dপাদনা à¦\95রà§\81ন",
-       "action-userrights-interwiki": "অন্যান্য উইকির ব্যবহারকারীদের অধিকারসমূহ সম্পাদনা করুন",
-       "action-siteadmin": "ডাটাবেজ অবরুদ্ধ করা অথবা খোলা",
+       "action-userrights": "সà¦\95ল à¦¬à§\8dযবহারà¦\95ারà§\80র à¦\85ধিà¦\95ার à¦¸à¦®à§\8dপাদনা à¦\95রার",
+       "action-userrights-interwiki": "অন্য উইকিতে ব্যবহারকারীদের অধিকার সম্পাদনা করার",
+       "action-siteadmin": "ডাটাবেজ অবরুদ্ধ করার অথবা খোলার",
        "action-sendemail": "ই-মেইল পাঠাও",
        "action-editmyoptions": "নিজের পছন্দসমূহ সম্পাদনা করার",
        "action-editmywatchlist": "আপনার নজরতালিকা পরিবর্তন করুন",
        "recentchanges-submit": "দেখাও",
        "rcfilters-activefilters": "সক্রিয় ফিল্টার",
        "rcfilters-restore-default-filters": "পূর্বনির্ধারিত ছাঁকনি পুনরুদ্ধার করুন",
-       "rcfilters-clear-all-filters": "সমসà§\8dত à¦\9bাà¦\81à¦\95নি à¦\89ঠিয়à§\87 à¦¦à¦¿ন",
+       "rcfilters-clear-all-filters": "সব à¦\9bাà¦\81à¦\95নি à¦ªà¦°à¦¿à¦·à§\8dà¦\95ার à¦\95রà§\81ন",
        "rcfilters-search-placeholder": "সাম্প্রতিক পরিবর্তনসমূহ ছাঁকুন (ব্রাউজ বা টাইপ করা শুরু করুন)",
        "rcfilters-invalid-filter": "অকার্যকর ছাঁকনি",
        "rcfilters-empty-filter": "কোনো সক্রিয় ফিল্টার নেই। সমস্ত অবদান দেখানো হয়েছে।",
        "rcfilters-filter-registered-description": "প্রবেশকৃত সম্পাদকবৃন্দ।",
        "rcfilters-filter-unregistered-label": "অনিবন্ধিত",
        "rcfilters-filter-unregistered-description": "যেসব সম্পাদক অ্যাকাউন্টে প্রবেশ করেননি।",
-       "rcfilters-filter-unregistered-conflicts-user-experience-level": "এই ছাঁকনিটির সাথে নিম্নোক্ত ব্যবহারকারী অভিজ্ঞতা{{PLURAL:$2|ছাঁকনিটির|ছাঁকনিগুলির}} সংঘর্ষ আছে; যা কেবলমাত্র নিবন্ধিত ব্যবহারকারীদের খুঁজে বের করে: $1",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "এই ছাঁকনিটির সাথে নিম্নোক্ত ব্যবহারকারী অভিজ্ঞতা {{PLURAL:$2|ছাঁকনিটির|ছাঁকনিগুলির}} সংঘর্ষ আছে; যা কেবলমাত্র নিবন্ধিত ব্যবহারকারীদের খুঁজে বের করে: $1",
        "rcfilters-filtergroup-authorship": "কার দ্বারা সম্পাদিত",
        "rcfilters-filter-editsbyself-label": "আপনার নিজস্ব সম্পাদনা",
        "rcfilters-filter-editsbyself-description": "আপনার সম্পাদনাগুলি।",
        "ipbcreateaccount": "অ্যাকাউন্ট সৃষ্টিতে বাধা দেওয়া হোক",
        "ipbemailban": "ব্যবহারকারীকে ই-মেইল পাঠাতে বাধা দেওয়া হোক",
        "ipbenableautoblock": "এই ব্যবহারকারীর ব্যবহার করা সর্বশেষ আইপি ঠিকানা, এবং পরবর্তী যেসব আইপি ঠিকানা থেকে সম্পাদনার চেষ্টা করা হবে, সেগুলিকেও স্বয়ংক্রিয়ভাবে বাধা দেয়া হোক",
-       "ipbsubmit": "à¦\8fà¦\87 à¦¬à§\8dযবহারà¦\95ারà§\80à¦\95à§\87 à¦¬à¦¾à¦§à¦¾ à¦¦à§\87য়া à¦¹à§\8bà¦\95",
+       "ipbsubmit": "à¦\8fà¦\87 à¦¬à§\8dযবহারà¦\95ারà§\80à¦\95à§\87 à¦¬à¦¾à¦§à¦¾ à¦¦à¦¿à¦¨",
        "ipbother": "অন্য সময়:",
        "ipboptions": "২ ঘণ্টা:2 hours,১ দিন:1 day,৩ দিন:3 days,১ সপ্তাহ:1 week,২ সপ্তাহ:2 weeks,১ মাস:1 month,৩ মাস:3 months,৬ মাস:6 months,১ বছর:1 year,অসীম:infinite",
        "ipbhidename": "সম্পাদনা ও তালিকা থেকে ব্যবহারকারী নাম লুকিয়ে রাখা হোক",
        "ipbwatchuser": "এই ব্যবহাকারীর পাতা এবং আলাপের পাতা নজরতালিকায় রাখো",
        "ipb-disableusertalk": "এই ব্যবহারকারীকে বাধাদানকৃত অবস্থায় নিজের আলাপ পাতায় সম্পাদনা করা থেকে বিরত রাখো",
-       "ipb-change-block": "à¦\8fà¦\87 à¦\8fà¦\95à¦\87 à¦¸à§\87à¦\9fিà¦\82সসহ à¦¬à§\8dযবহারà¦\95ারà§\80à¦\95à§\87 à¦\86বারà¦\93 à¦¬à¦¾à¦§à¦¾ à¦ªà§\8dরদান à¦\95রà§\8b",
+       "ipb-change-block": "à¦\8fà¦\95à¦\87 à¦¸à§\87à¦\9fিà¦\82সসহ à¦¬à§\8dযবহারà¦\95ারà§\80à¦\95à§\87 à¦ªà§\81নà¦\83বাধা à¦¦à¦¿à¦¨",
        "ipb-confirm": "বাধা নিশ্চিতকরণ",
        "badipaddress": "আইপি (IP) ঠিকানাটি অগ্রহনযোগ্য",
        "blockipsuccesssub": "বাধা সফল",
        "locknoconfirm": "আপনি নিশ্চিতকরণ বাক্সে টিক দেননি।",
        "lockdbsuccesssub": "ডাটাবেজ সফলভাবে অবরুদ্ধ করে দেওয়া হয়েছে",
        "unlockdbsuccesssub": "ডাটাবেজ খুলে দেওয়া হয়েছে",
-       "lockdbsuccesstext": "ডাটাবেজ অবরুদ্ধ করা হয়েছে\n<br />আপনার রক্ষণাবেক্ষণ সম্পন্ন হবার পর [[Special:UnlockDB|ডাটাবেজ খুলে দিতে]] ভুলবেন না।",
+       "lockdbsuccesstext": "ডাটাবেজ অবরুদ্ধ করা হয়েছে।<br />\nআপনার রক্ষণাবেক্ষণ সম্পন্ন হবার পর [[Special:UnlockDB|ডাটাবেজ খুলে দিতে]] ভুলবেন না।",
        "unlockdbsuccesstext": "ডাটাবেজ খুলে দেওয়া হয়েছে।",
        "lockfilenotwritable": "ডাটাবেজ অবরোধনির্দেশক ফাইলটি লিখনযোগ্য নয়। ডাটাবেজ অবরুদ্ধ করতে বা খুলতে চাইলে ফাইলটিকে ওয়েব সার্ভার কর্তৃক লিখনযোগ্য হতে হবে।",
        "databaselocked": "ডাটাবেজটি ইতিমধ্যেই অবরুদ্ধ।",
        "import-interwiki-sourcewiki": "উত্স উইকি:",
        "import-interwiki-sourcepage": "উৎস পাতা:",
        "import-interwiki-history": "এই পাতার ইতিহাসের সমস্ত সংস্করণের প্রতিলিপি করা হোক",
-       "import-interwiki-templates": "সà¦\95ল à¦\9fà§\87মà§\8dপলà§\87à¦\9f à¦\85নà§\8dতরà§\8dভà§\81à¦\95à§\8dত",
+       "import-interwiki-templates": "সà¦\95ল à¦\9fà§\87মপà§\8dলà§\87à¦\9f à¦\85নà§\8dতরà§\8dভà§\81à¦\95à§\8dত à¦\95রà§\81ন",
        "import-interwiki-submit": "আমদানি",
        "import-mapping-default": "পূর্বনির্ধারিত অবস্থানে আমদানি করুন",
        "import-mapping-namespace": "একটি নামস্থানে আমদানি করুন:",
        "newimages-summary": "এই বিশেষ পাতা সর্বশেষ আপলোডকৃত ফাইল দেখাবে।",
        "newimages-legend": "ছাঁকনি",
        "newimages-label": "ফাইলের নাম (অথবা এর কোন অংশ):",
+       "newimages-user": "আইপি ঠিকানা বা ব্যবহারকারী নাম",
        "newimages-showbots": "বটের আপলোড গুলো দেখাও।",
        "newimages-hidepatrolled": "টহলকৃত আপলোড লুকানো হোক",
        "noimages": "দেখার মত কিছু নেই।",
        "timezone-utc": "ইউটিসি",
        "timezone-local": "স্থানীয়",
        "duplicate-defaultsort": "<strong>সতর্কীকরণ:</strong> পূর্বনির্ধারিত সাজানোর চাবি \"$2\" পূর্বের পূর্বনির্ধারিত সাজানোর চাবি \"$1\" কে অগ্রাহ্য করে।",
-       "duplicate-displaytitle": "<strong>সতরà§\8dà¦\95à§\80à¦\95রণ:</strong> à¦ªà§\8dরদরà§\8dশন à¦¶à¦¿à¦°à§\8bনাম \"$2\" à¦\86à¦\97à§\87র à¦ªà§\8dরদরà§\8dশন à¦¶à¦¿à¦°à§\8bনাম \"$1\" à¦\85à¦\97à§\8dরাহà§\8dয করবে।",
+       "duplicate-displaytitle": "<strong>সতরà§\8dà¦\95à§\80à¦\95রণ:</strong> à¦ªà§\8dরদরà§\8dশন à¦¶à¦¿à¦°à§\8bনাম \"$2\" à¦\86à¦\97à§\87র à¦ªà§\8dরদরà§\8dশন à¦¶à¦¿à¦°à§\8bনাম \"$1\" à¦\95à§\87 à¦ªà§\8dরতিসà§\8dথাপিত করবে।",
        "restricted-displaytitle": "<strong>সতর্কবার্তা:</strong> প্রদর্শন শিরোনাম \"$1\" উপেক্ষা করা হয়েছে যেহেতু এটি পাতার আসল শিরোনামের সাথে সমতুল্য নয়।",
        "invalid-indicator-name": "<strong>ত্রুটি:</strong> পাতার অবস্থা নির্দেশক <code>name</code> অ্যাট্রিবিউট খালি হতে পারবে না।",
        "version": "সংস্করণ",
        "logentry-import-interwiki": "$1 অন্য একটি উইকিতে থেকে $3 {{GENDER:$2|আমদানি করেছে}}",
        "logentry-import-interwiki-details": "$1 $5 থেকে $3 {{GENDER:$2|আমদানি করেছেন}} ($4টি {{PLURAL:$4|সংশোধন}})",
        "logentry-merge-merge": "$1 $4-এ $3 {{GENDER:$2|একত্রীকরণ করেছেন}} ($5 তারিখের সংশোধন পর্যন্ত)",
-       "logentry-move-move": "$1 ব্যবহারকারী $3 পাতাটিকে $4 শিরোনামে {{GENDER:$2|স্থানান্তর}} করেছেন",
-       "logentry-move-move-noredirect": "$1 ব্যবহারকারী $3 পাতাটিকে $4 শিরোনামে কোনো পুনর্নির্দেশনা ছাড়াই {{GENDER:$2|স্থানান্তর}} করেছেন",
-       "logentry-move-move_redir": "$1 ব্যবহারকারী $3 পাতাটিকে $4 শিরোনামে পুনির্নির্দেশনার মাধ্যমে {{GENDER:$2|স্থানান্তর}} করেছেন",
-       "logentry-move-move_redir-noredirect": "$1 ব্যবহারকারী $3 পাতাটিকে $4 শিরোনামে পুনর্নির্দেশনা ছাড়াই {{GENDER:$2|স্থানান্তর}} করেছেন",
+       "logentry-move-move": "$1 $3 কে $4 শিরোনামে {{GENDER:$2|স্থানান্তর}} করেছেন",
+       "logentry-move-move-noredirect": "$1 $3 পাতাটিকে $4 শিরোনামে কোনো পুনর্নির্দেশনা ছাড়াই {{GENDER:$2|স্থানান্তর}} করেছেন",
+       "logentry-move-move_redir": "$1 $3 পাতাটিকে $4 শিরোনামে পুনির্নির্দেশনার মাধ্যমে {{GENDER:$2|স্থানান্তর}} করেছেন",
+       "logentry-move-move_redir-noredirect": "$1 $3 পাতাটিকে $4 শিরোনামে পুনর্নির্দেশনা ছাড়াই {{GENDER:$2|স্থানান্তর}} করেছেন",
        "logentry-patrol-patrol": "$1 ব্যবহারকারী $3 পাতার $4 নম্বর সংস্করণ পরীক্ষিত বলে {{GENDER:$2|চিহ্নিত}} করেছেন",
        "logentry-patrol-patrol-auto": "$1 ব্যবহারকারী স্বয়ংক্রিয়ভাবে $3 পাতার $4 নম্বর সংস্করণ পরীক্ষিত বলে {{GENDER:$2|চিহ্নিত}} করেছেন",
        "logentry-newusers-newusers": "$1 ব্যবহারকারী অ্যাকাউন্টটি {{GENDER:$2|তৈরি করা}} হয়েছে",
        "restrictionsfield-label": "অনুমোদিত আইপি পরিসীমা:",
        "restrictionsfield-help": "লাইন প্রতি একটি আইপি ঠিকানা বা CIDR পরিসীমা। সবকিছু সক্রিয় করতে ব্যবহার করুন: :<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "সংশোধন $1",
-       "pageid": "পাতার আইডি $1"
+       "pageid": "পাতার আইডি $1",
+       "rawhtml-notallowed": "&lt;html&gt; ট্যাগ স্বাভাবিক পৃষ্ঠাগুলির বাহিরে ব্যবহার করা যাবে না।"
 }
index 4e28666..e0ab301 100644 (file)
        "newimages-summary": "Diskouez a ra ar bajenn dibar-mañ roll ar restroù diwezhañ bet enporzhiet.",
        "newimages-legend": "Sil",
        "newimages-label": "Anv ar restr (pe darn anezhi) :",
+       "newimages-user": "Chomlec'h IP pe anv implijer",
        "newimages-showbots": "Diskouez an ezporzhiadennoù graet gant robotoù",
        "newimages-hidepatrolled": "Kuzhat ar enporzhiadennoù gwiriet",
        "noimages": "Netra da welet.",
        "restrictionsfield-label": "Lijorennoù IP aotreet :",
        "restrictionsfield-help": "Ur chomlec'h IP pe un esaouenn CIDR dre linenn. Evit gweredekaat pep tra, ober gant <pre>0.0.0.0/0\n::/0</pre>",
        "revid": "Adweladenn $1",
-       "pageid": "ID ar bajenn $1"
+       "pageid": "ID ar bajenn $1",
+       "rawhtml-notallowed": "N'hall an tikedennoù &lt;html&gt; bezañ implijet nemet er pajennoù normal."
 }
index 968d024..cc9a2c1 100644 (file)
@@ -24,7 +24,8 @@
                        "Srdjan m",
                        "Semso98",
                        "Matma Rex",
-                       "Сербијана"
+                       "Сербијана",
+                       "Asmen"
                ]
        },
        "tog-underline": "Podvuci veze:",
        "hebrew-calendar-m6": "Adar",
        "hebrew-calendar-m6a": "Adar I",
        "hebrew-calendar-m6b": "Adar II",
-       "hebrew-calendar-m7": "Nisan",
+       "hebrew-calendar-m7": "Nisane",
        "hebrew-calendar-m8": "Iyar",
        "hebrew-calendar-m9": "Sivan",
        "hebrew-calendar-m10": "Tamuz",
index fb4b3c3..0ccc4ed 100644 (file)
        "changepassword-success": "S'ha canviat la vostra contrasenya!",
        "changepassword-throttled": "Heu realitzat massa intents d'inici de sessió.\nEspereu $1 abans de tornar-ho a provar.",
        "botpasswords": "Contrasenyes de bot",
+       "botpasswords-summary": "Les <em>contrasenyes de bot</em> permeten accedir a un compte d'usuari a través de l'API sense utilitzar les credencials de sessió principals del compte. Els permisos d'usuari disponibles quan s'ha iniciat una sessió amb una contrasenya de bot poden estar restringits.\n\nSi no sabeu perquè ho hauríeu de menester, segurament no us cal. Ningú mai no us hauria de demanar que genereu una contrasenya o l'hi doneu.",
        "botpasswords-disabled": "S'han inhabilitat les contrasenyes dels bots",
        "botpasswords-no-central-id": "Per a utilitzar contrasenyes de bots heu d'haver iniciat una sessió en un compte centralitzat.",
        "botpasswords-existing": "Contrasenyes de bot existents",
        "post-expand-template-argument-warning": "Avís: Aquesta pàgina conté com a mínim un argument de plantilla que té una mida d'expansió massa gran.\nSe n'han omès els arguments.",
        "post-expand-template-argument-category": "Pàgines que contenen arguments de plantilla que s'han omès",
        "parser-template-loop-warning": "S'ha detectat un bucle de plantilla: [[$1]]",
+       "template-loop-category": "Pàgines amb bucles de plantilla",
        "parser-template-recursion-depth-warning": "S'ha excedit el límit de recursivitat de plantilles ($1)",
        "language-converter-depth-warning": "S'ha excedit el límit de profunditat del convertidor d'idiomes ($1)",
        "node-count-exceeded-category": "Pàgines on s'ha excedit el recompte de nodes",
        "newimages-summary": "Aquesta pàgina especial mostra els darrers fitxers carregats.",
        "newimages-legend": "Nom del fitxer",
        "newimages-label": "Nom de fitxer (o part d'ell):",
+       "newimages-user": "Adreça IP o nom d'usuari",
        "newimages-showbots": "Mostra les càrregues dels bots",
        "newimages-hidepatrolled": "Amaga les càrregues patrullades",
        "noimages": "Res per veure.",
        "mediastatistics": "Estadístiques dels multimèdia",
        "mediastatistics-summary": "Les estadístiques sobre els tipus de fitxers pujats. Això només inclou la versió més recent d'un fitxer. S'exclouen les versions antigues o eliminades dels fitxers.",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%)",
+       "mediastatistics-allbytes": "Mida de fitxer total de tots els fitxers {{PLURAL:$1|$1 byte|$1 bytes}} ($2).",
        "mediastatistics-table-mimetype": "Tipus MIME",
        "mediastatistics-table-extensions": "Extensions possibles",
        "mediastatistics-table-count": "Nombre de fitxers",
        "log-action-filter-block-reblock": "Bloca la modificació",
        "log-action-filter-block-unblock": "Desbloca",
        "log-action-filter-contentmodel-change": "Canvi del model de contingut",
+       "log-action-filter-contentmodel-new": "Creació de pàgina amb un model de contingut no per defecte",
        "log-action-filter-delete-delete": "Supressió de pàgines",
        "log-action-filter-delete-delete_redir": "Sobreescriptura de la redirecció",
        "log-action-filter-delete-restore": "Restauració de pàgines",
        "log-action-filter-delete-event": "Registre de supressió",
        "log-action-filter-delete-revision": "Supressió de revisions",
+       "log-action-filter-import-interwiki": "Importació de Transwiki",
        "log-action-filter-import-upload": "Importació mitjançant càrrega d'XML",
        "log-action-filter-managetags-create": "Creació de l'etiqueta",
        "log-action-filter-managetags-delete": "Supressió de l'etiqueta",
        "log-action-filter-managetags-activate": "Activació de l'etiqueta",
        "log-action-filter-managetags-deactivate": "Desactivació d'etiquetes",
+       "log-action-filter-move-move": "Reanomena sense sobreescriure les redireccions",
+       "log-action-filter-move-move_redir": "Reanomena sobreescrivint les redireccions",
        "log-action-filter-newusers-create": "Creació per usuari anònim",
        "log-action-filter-newusers-create2": "Creació per usuari registrat",
        "log-action-filter-newusers-autocreate": "Creació automàtica",
+       "log-action-filter-newusers-byemail": "Creació amb una contrasenya enviada per correu electrònic",
        "log-action-filter-patrol-patrol": "Patrullatge manual",
        "log-action-filter-patrol-autopatrol": "Patrullatge automàtic",
        "log-action-filter-protect-protect": "Protecció",
        "authmanager-create-from-login": "Per crear un compte, ompliu els camps.",
        "authmanager-authplugin-setpass-failed-title": "El canvi de contrasenya ha fallat",
        "authmanager-authplugin-setpass-bad-domain": "Domini invàlid.",
+       "authmanager-autocreate-noperm": "No es permet la creació automàtica de comptes.",
        "authmanager-userdoesnotexist": "El compte d'usuari «$1» no està registrat.",
        "authmanager-username-help": "Nom d'usuari per a l'autenticació.",
        "authmanager-password-help": "Contrasenya per a l'autenticació.",
        "authmanager-provider-temporarypassword": "Contrasenya temporal",
        "authprovider-confirmlink-request-label": "Comptes que caldrien enllaçar-se",
        "authprovider-confirmlink-success-line": "$1: s'ha enllaçat satisfactòriament.",
+       "authprovider-confirmlink-failed": "L'enllaçament de comptes no ha funcionat satisfactòriament: $1",
        "authprovider-resetpass-skip-label": "Omet",
        "authprovider-resetpass-skip-help": "Omet el restabliment de contrasenya.",
        "specialpage-securitylevel-not-allowed-title": "No permès",
index bc2b03a..a5f7bc0 100644 (file)
        "recentchanges-noresult": "Билгал йинчу хенахь цхьа хийцамаш бина бац.",
        "recentchanges-feed-description": "Тергам бе тӀаьххьара вики хийцаман хӀокху ларца.",
        "recentchanges-label-newpage": "Оцу нисдарца кхоьллина керла агӀо.",
-       "recentchanges-label-minor": "Ð¥Ó\80аÑ\80а Ð¿Ð°Ð¹Ð´Ð° боцу хийцам бу",
+       "recentchanges-label-minor": "Ð¥Ó\80аÑ\80а Ð»Ð°Ð´Ð°Ð¼ боцу хийцам бу",
        "recentchanges-label-bot": "ХӀара нисдар бото дина",
        "recentchanges-label-unpatrolled": "ХӀара нисдар хӀинца цхьано патрулировать дина дац",
        "recentchanges-label-plusminus": "байташкахь барам хийцар",
index 3e1aa18..176b2b7 100644 (file)
        "externaldberror": "Сайткъа киргенде бир хата олды. Бу тыш эсабынъызны денъиштирмек акъкъынъыз олмагъанындан себеп мейдангъа келип ола.",
        "login": "Кириш",
        "nav-login-createaccount": "Кириш / Къайд олув",
-       "userlogin": "Кириш / Къайд олув",
-       "userloginnocreate": "Кириш",
        "logout": "Чыкъыш",
        "userlogout": "Чыкъыш",
        "notloggedin": "Системагъа кирмединъиз.",
        "userlogin-noaccount": "Аккаунтынъыз ёкъмы?",
        "userlogin-joinproject": "{{SITENAME}} лейхасына къошулынъыз",
-       "nologin": "Даа эсап ачмадынъызмы? '''$1'''.",
-       "nologinlink": "Къайд ол",
        "createaccount": "Къайд олув",
-       "gotaccount": "Даа эвель сайтта къайд олгъан эдинъизми? '''$1'''.",
-       "gotaccountlink": "Системагъа киринъиз",
-       "userlogin-resetlink": "Кириш малюматыны унуттынъызмы?",
        "createacct-emailrequired": "E-mail adresi",
        "createacct-emailoptional": "E-mail адреси (меджбурий дегиль)",
        "createacct-email-ph": "E-mail адресинъизни язынъыз",
        "createacct-another-email-ph": "E-mail адресинъизни язынъыз",
        "createaccountmail": "Автоматик оларакъ мейдангъа кетирильген мувакъкъат бир пароль къуллана билир ве бу парольни бильдирильген e-mail адресине ёллай билирсинъиз",
        "createacct-realname": "Акъикъий адынъыз (меджбурий дегиль)",
-       "createaccountreason": "Себеп:",
        "createacct-reason": "Себеп",
        "createacct-reason-ph": "Башкъа бир эсап язысы неден себеп яратасынъыз",
        "createacct-submit": "Эсап язынъызны яратынъыз",
        "watchthis": "Саифени козет",
        "savearticle": "Саифени сакъла",
        "savechanges": "Денъиштирмелерни сакъла",
+       "publishpage": "Саифени ярат",
+       "publishchanges": "Денъиштиргенлеримни сакъла",
        "preview": "Бакъып чыкъув",
        "showpreview": "Бакъып чыкъ",
        "showdiff": "Денъиштирмелерни косьтер",
index 3054c1b..0f463ba 100644 (file)
        "externaldberror": "Saytqa kirgende bir hata oldı. Bu tış esabıñıznı deñiştirmek aqqıñız olmağanından sebep meydanğa kelip ola.",
        "login": "Kiriş",
        "nav-login-createaccount": "Kiriş / Qayd oluv",
-       "userlogin": "Kiriş / Qayd oluv",
-       "userloginnocreate": "Kiriş",
        "logout": "Çıqış",
        "userlogout": "Çıqış",
        "notloggedin": "Sistemağa kirmediñiz.",
        "userlogin-noaccount": "Akkauntıñız yoqmı?",
        "userlogin-joinproject": "{{SITENAME}} leyhasına qoşulıñız",
-       "nologin": "Daa esap açmadıñızmı? '''$1'''.",
-       "nologinlink": "Qayd ol",
        "createaccount": "Qayd oluv",
-       "gotaccount": "Daa evel saytta qayd olğan ediñizmi? '''$1'''.",
-       "gotaccountlink": "Sistemağa kiriñiz",
-       "userlogin-resetlink": "Kiriş malümatını unuttıñızmı?",
        "createacct-emailrequired": "E-mail adresi",
        "createacct-emailoptional": "E-mail adresi (mecburiy degil)",
        "createacct-email-ph": "E-mail adresiñizni yazıñız",
        "createacct-another-email-ph": "E-mail adresiñizni yazıñız",
        "createaccountmail": "Avtomatik olaraq meydanğa ketirilgen muvaqqat bir parol qullana bilir ve bu parolni bildirilgen e-mail adresine yollay bilirsiñiz",
        "createacct-realname": "Aqiqiy adıñız (mecburiy degil)",
-       "createaccountreason": "Sebep:",
        "createacct-reason": "Sebep",
        "createacct-reason-ph": "Başqa bir esap yazısı neden sebep yaratasıñız",
        "createacct-submit": "Esap yazıñıznı yaratıñız",
        "watchthis": "Saifeni közet",
        "savearticle": "Saifeni saqla",
        "savechanges": "Deñiştirmelerni saqla",
+       "publishpage": "Saifeni yarat",
+       "publishchanges": "Deñiştirgenlerimni saqla",
        "preview": "Baqıp çıquv",
        "showpreview": "Baqıp çıq",
        "showdiff": "Deñiştirmelerni köster",
index 93640a7..dec6dea 100644 (file)
@@ -34,7 +34,8 @@
                        "Dvorapa",
                        "Walter Klosse",
                        "Martin Urbanec",
-                       "Marek Pavlica"
+                       "Marek Pavlica",
+                       "Asmen"
                ]
        },
        "tog-underline": "Podtrhávat odkazy:",
        "newimages-summary": "Na této speciální stránce se zobrazují poslední načtené soubory.",
        "newimages-legend": "Filtr",
        "newimages-label": "Název souboru (nebo jeho část):",
+       "newimages-user": "IP adresa nebo uživatelské jméno",
        "newimages-showbots": "Zobrazit soubory načtené roboty",
        "newimages-hidepatrolled": "Skrýt prověřená načtení souborů",
        "noimages": "Není co zobrazit.",
        "hebrew-calendar-m6": "adar",
        "hebrew-calendar-m6a": "adar I",
        "hebrew-calendar-m6b": "adar II",
-       "hebrew-calendar-m7": "nisan",
+       "hebrew-calendar-m7": "Nisan",
        "hebrew-calendar-m8": "ijar",
        "hebrew-calendar-m9": "sivan",
        "hebrew-calendar-m10": "tamuz",
        "restrictionsfield-label": "Povolené rozsahy IP adres:",
        "restrictionsfield-help": "Jedna IP adresa nebo CIDR rozsah na řádek. Všechno povolíte pomocí:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "revize $1",
-       "pageid": "Stránka s ID $1"
+       "pageid": "Stránka s ID $1",
+       "rawhtml-notallowed": "Značky &lt;html&gt; nelze používat mimo běžné stránky."
 }
index 571b764..d74b569 100644 (file)
        "restrictionsfield-label": "Erlaubte IP-Adressbereiche:",
        "restrictionsfield-help": "Eine IP-Adresse oder ein CIDR-Bereich pro Zeile. Um alles zu aktivieren, verwende:\n<pre>\n0.0.0.0/0\n::/0\n</pre>",
        "revid": "Version $1",
-       "pageid": "Seitenkennung $1"
+       "pageid": "Seitenkennung $1",
+       "rawhtml-notallowed": "&lt;html&gt;-Tags können nicht außerhalb von normalen Seiten verwendet werden."
 }
index fa5b0c1..9d77f90 100644 (file)
        "january": "Çele",
        "february": "Sıbat",
        "march": "Adar",
-       "april": "Lisan",
+       "april": "Nisane",
        "may_long": "Gulan",
        "june": "Heziran",
        "july": "Temuz",
        "january-gen": "Çele",
        "february-gen": "Sıbat",
        "march-gen": "Adar",
-       "april-gen": "Lisan",
+       "april-gen": "Nisane",
        "may-gen": "Gulan",
        "june-gen": "Heziran",
        "july-gen": "Temuz",
        "january-date": "$1 Çele",
        "february-date": "$1 Sıbat",
        "march-date": "$1 Adar",
-       "april-date": "$1 Lisan",
+       "april-date": "$1 Nisane",
        "may-date": "$1 Gulan",
        "june-date": "$1 Heziran",
        "july-date": "$1 Temuze",
        "and": "&#32;u",
        "qbfind": "Bıvin",
        "qbbrowse": "Çım ra viyarne",
-       "qbedit": "Bıvurne",
+       "qbedit": "Bıvırne",
        "qbpageoptions": "Na perrer",
        "qbmyoptions": "Perrê mı",
        "faq": "PVP",
        "undelete_short": "{{PLURAL:$1|Yew vırnayışi|$1 Vırnayışan}} mestere",
        "viewdeleted_short": "{{PLURAL:$1|Jew vurnayış esternayi|$1 Vurnayışanê esternayan}} bımotne",
        "protect": "Bıstarnê",
-       "protect_change": "bıvurne",
+       "protect_change": "bıvırne",
        "protectthispage": "Ena perre şeveknê",
        "unprotect": "Starnayışi bıvurne",
        "unprotectthispage": "Şeveknayışê ena perre bıvırne",
        "newmessageslinkplural": "{{PLURAL:$1|yew mesaco newe|999=mesacê newey}}",
        "newmessagesdifflinkplural": "{{PLURAL:$1|vurnayışo peyên|999=vurnayışê peyêni}}",
        "youhavenewmessagesmulti": "$1 mesaco newe esto",
-       "editsection": "bıvurne",
+       "editsection": "bıvırne",
        "editold": "bıvurne",
        "viewsourceold": "çımey cı bıvinê",
-       "editlink": "bıvurne",
+       "editlink": "bıvırne",
        "viewsourcelink": "çımey bıvêne",
        "editsectionhint": "Leteyo ke bıvuriyo: $1",
        "toc": "Zerreki",
        "watchthis": "Şıma bewnê ena perre",
        "savearticle": "Perre qeyd ke",
        "savechanges": "Vırnayışan qeyd kerê",
-       "publishpage": "Perer bıhesırne",
-       "publishchanges": "Vurnayışa vıla ke",
+       "publishpage": "Riperri bare ke",
+       "publishchanges": "Vırnayışan qeyd ke",
        "preview": "Verqayt",
        "showpreview": "Verasayışi bımocne",
        "showdiff": "Vurnayışan bımotne",
        "double-redirect-fixer": "Fixerî redirek bike",
        "brokenredirects": "Serşıkıtışê xırabeyi",
        "brokenredirectstext": "Redireksiyonê ey ki pelanê hama çiniyeno ra link dano:",
-       "brokenredirects-edit": "bıvurne",
+       "brokenredirects-edit": "bıvırne",
        "brokenredirects-delete": "bestere",
        "withoutinterwiki": "Perrê ke zıwananê binan rê gıreyê cı çıni yo",
        "withoutinterwiki-summary": "Enê pelî ke versiyonê ziwanî binî ra link nidano.",
        "changecontentmodel-title-label": "Sernameyê pele",
        "changecontentmodel-model-label": "Modelê zerrekiyo newe",
        "changecontentmodel-reason-label": "Sebeb:",
-       "changecontentmodel-submit": "Bıvurne",
+       "changecontentmodel-submit": "Bıvırne",
        "log-name-contentmodel": "Qeydê vurnayışanê modelê zerreki",
        "logentry-contentmodel-change-revertlink": "peyser biya",
        "logentry-contentmodel-change-revert": "peyser biya",
        "tooltip-ca-nstab-category": "Pela kategoriye bıvêne",
        "tooltip-minoredit": "Ney vırnayışo werdi nışan bıkerê",
        "tooltip-save": "Vurnayışanê xo qeyd ke",
-       "tooltip-publish": "Vurnayışê xo vıla kı",
+       "tooltip-publish": "Vırnayışê xo aşkera ke",
        "tooltip-preview": "Vurnayışanê xo çım ra bıviyarnê. Qeydkerdış ra ver bıgurê cı!",
        "tooltip-diff": "Kamci vırnayışê ke şıma nuştey sero kerdê, inan bıvênê.",
        "tooltip-compareselectedversions": "Ena per de ferqê rewziyonan de dı weçinaya bıvinê",
        "hebrew-calendar-m6": "Adar",
        "hebrew-calendar-m6a": "Adar I",
        "hebrew-calendar-m6b": "Adar II",
-       "hebrew-calendar-m7": "Nisan",
+       "hebrew-calendar-m7": "Nisane",
        "hebrew-calendar-m8": "Iyar",
        "hebrew-calendar-m9": "Sivan",
        "hebrew-calendar-m10": "Tamuz",
        "hebrew-calendar-m6-gen": "Adar",
        "hebrew-calendar-m6a-gen": "Adar I",
        "hebrew-calendar-m6b-gen": "Adar II",
-       "hebrew-calendar-m7-gen": "Nisan",
+       "hebrew-calendar-m7-gen": "Nisane",
        "hebrew-calendar-m8-gen": "Iyar",
        "hebrew-calendar-m9-gen": "Sivan",
        "hebrew-calendar-m10-gen": "Tamuz",
index cb1e286..b4faa3a 100644 (file)
        "login": "प्रवेश (लगईन)",
        "login-security": "तमरो पहिचान जाचँ गर",
        "nav-login-createaccount": "प्रवेश गर्ने/नयाँ खाता बनाउन्या",
-       "userlogin": "प्रवेश गर्ने / नयाँ खाता बनाउन्या",
-       "userloginnocreate": "प्रवेश",
        "logout": "बाहिर निस्कन्या",
        "userlogout": "बाहिर निस्कन्या",
        "notloggedin": "प्रवेश (लग ईन) नगरिएको",
        "userlogin-noaccount": "के खाता छैन ?",
        "userlogin-joinproject": "{{SITENAME}} मी खाता खोल ।",
-       "nologin": "तमरो खाता छैन? $1।",
-       "nologinlink": "नयाँ खाता खोल",
        "createaccount": "खाता खोल",
-       "gotaccount": "तमरो खाता छनोई छ? $1।",
-       "gotaccountlink": "प्रवेश",
-       "userlogin-resetlink": "प्रवेश सम्बन्धी विवरणहरू बिसरया भयो?",
        "userlogin-resetpassword-link": "पासवर्ड भुलिगया?",
        "userlogin-helplink2": "प्रवेश गद्दलाई सहयोग",
        "userlogin-loggedin": "तमी {{GENDER:$1|$1}}को रूपमी प्रवेश (लग इन) भइ सक्यौ ।\nअर्को प्रयोगकर्ताको रूपमी प्रवेश (लग इन) गर्न तलको फारम प्रयोग गर ।",
        "createacct-email-ph": "तमरो इमेल ठेगाना भरऽ",
        "createacct-another-email-ph": "इमेल ठेगाना भर",
        "createacct-realname": "वास्तविक नाम (ऐच्छिक)",
-       "createaccountreason": "कारण:",
        "createacct-reason": "कारण",
        "createacct-reason-ph": "क्याई तम नयाँ खाता खोल्ला छौ?",
        "createacct-submit": "तमरो खाता बनाऽ",
        "newimages": "नौला फाइलहरूको ग्यालरी",
        "imagelisttext": " '''$1''' {{PLURAL:$1|फाइल|फाइलहरू}} को निम्न सुची ,क्रमवद्ध $2.",
        "newimages-summary": "यै खास पानाले अन्तिम अपलोड गर्याका फाइलहरू धेकाउँन्छ ।",
+       "newimages-user": "आइपी(IP) ठेगाना या प्रयोगकर्ता नाउँ",
        "days": "{{PLURAL:$1|$1 दिन|$1 दिनहरू}}",
        "metadata": "मेटाडेटा",
        "metadata-help": "यै फाइलमि अतिरिक्त जानकारीहरू छन्, यैलाई बणुउन सम्भवतः डिजिटल क्यामरा और स्क्यानर प्रयोग गरियाको हुनसकन्छ । यदि यै फाइललाई खास अवस्थाबठे फेरबदल गरियाको हो भण्या यै फाइलले  सब्बै विवरण प्रतिबिम्बित गद्द सक्यानाइथी ।",
index 219c204..ff0286c 100644 (file)
@@ -49,7 +49,8 @@
                        "Nemo bis",
                        "Αντιγόνη",
                        "Matma Rex",
-                       "Ανώνυμος Βικιπαιδιστής"
+                       "Ανώνυμος Βικιπαιδιστής",
+                       "GR"
                ]
        },
        "tog-underline": "Υπογράμμιση συνδέσμων:",
        "rcfilters-invalid-filter": "Μη έγκυρο φίλτρο",
        "rcfilters-empty-filter": "Χωρίς ενεργά φίλτρα. Εμφανίζονται όλες οι συνεισφορές.",
        "rcfilters-filterlist-title": "Φίλτρα",
+       "rcfilters-filterlist-whatsthis": "Τι είναι αυτό;",
        "rcfilters-filterlist-noresults": "Δεν βρέθηκαν φίλτρα",
+       "rcfilters-noresults-conflict": "Δε βρέθηκαν αποτελέσματα γιατί τα κριτήρια αναζήτησης είναι σε διένεξη.",
        "rcfilters-filtergroup-registration": "Επωνυμία χρηστών",
        "rcfilters-filter-registered-label": "Εγγεγραμμένοι",
        "rcfilters-filter-registered-description": "Συνδεδεμένοι συντάκτες.",
        "rcfilters-filter-editsbyother-label": "Επεξεργασίες από άλλους",
        "rcfilters-filter-editsbyother-description": "Επεξεργασίες που δημιουργήθηκαν από άλλους χρήστες (όχι εσάς).",
        "rcfilters-filtergroup-userExpLevel": "Επίπεδο εμπειρίας (για εγγεγραμμένους χρήστες μόνο)",
-       "rcfilters-filter-userExpLevel-newcomer-label": "Νεοφερμένοι",
-       "rcfilters-filter-userExpLevel-newcomer-description": "Λιγότερες από 10 επεξεργασίες και 4 ημέρες δραστηριότητας.",
-       "rcfilters-filter-userExpLevel-learner-label": "Μαθητευόμενοι",
-       "rcfilters-filter-userExpLevel-learner-description": "Περισσότερες ημέρες δραστηριότητας και επεξεργασίες από τους «νεοφερμένους» αλλά λιγότερες από τους «έμπειρους χρήστες».",
-       "rcfilters-filter-userExpLevel-experienced-label": "Έμπειροι χρήστες",
-       "rcfilters-filter-userExpLevel-experienced-description": "Περισσότερες από 30 ημέρες δραστηριότητας και 500 αλλαγές.",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Νεοφερμένοι",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Λιγότερες από 10 επεξεργασίες και 4 ημέρες δραστηριότητας.",
+       "rcfilters-filter-user-experience-level-learner-label": "Μαθητευόμενοι",
+       "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-filter-bots-label": "Ρομπότ",
        "rcfilters-filter-bots-description": "Επεξεργασίες που έγιναν από αυτοματοποιημένα εργαλεία.",
        "newimages-summary": "Αυτή η ειδική σελίδα δείχνει τα πιο πρόσφατα ανεβασμένα αρχεία.",
        "newimages-legend": "Φίλτρο",
        "newimages-label": "Όνομα αρχείου (ή μέρος αυτού):",
+       "newimages-user": "Διεύθυνση IP ή όνομα χρήστη",
        "newimages-showbots": "Εμφάνιση αρχείων ανεβασμένων από ρομπότ",
        "newimages-hidepatrolled": "Απόκρυψη ελεγμένων αρχείων.",
        "noimages": "Δεν υπάρχουν εικόνες.",
index 1cd4391..e87b6fb 100644 (file)
        "restrictionsfield-label": "Allowed IP ranges:",
        "restrictionsfield-help": "One IP address or CIDR range per line. To enable everything, use:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "revision $1",
-       "pageid": "page ID $1"
+       "pageid": "page ID $1",
+       "rawhtml-notallowed": "&lt;html&gt; tags cannot be used outside of normal pages."
 }
index 6b8fe3c..3db6915 100644 (file)
        "post-expand-template-argument-warning": "Aviso: Esta página contiene al menos un parámetro de plantilla con un tamaño de expansión demasiado grande.\nSe han descartado esos parámetros.",
        "post-expand-template-argument-category": "Páginas que contienen plantillas con parámetros descartados",
        "parser-template-loop-warning": "Se ha detectado un bucle de plantilla: [[$1]]",
+       "template-loop-category": "Páginas con bucles de plantillas",
+       "template-loop-category-desc": "Esta página contiene un bucle de plantillas, es decir, una plantilla que se llama a sí misma recursivamente.",
        "parser-template-recursion-depth-warning": "Se ha superado el límite de profundidad de la recursividad de plantillas ($1)",
        "language-converter-depth-warning": "Se ha superado el límite de profundidad del convertidor de idioma ($1)",
        "node-count-exceeded-category": "Páginas que sobrepasan la cantidad de nodos",
        "newimages-summary": "Esta página especial muestra una galería de los últimos archivos subidos.",
        "newimages-legend": "Filtro",
        "newimages-label": "Nombre del archivo (o una parte):",
+       "newimages-user": "Dirección IP o nombre de usuario",
        "newimages-showbots": "Mostrar cargas de bots",
        "newimages-hidepatrolled": "Ocultar las subidas verificadas",
        "noimages": "No hay nada que ver.",
        "logentry-newusers-autocreate": "Se ha {{GENDER:$2|creado}} automáticamente la cuenta de {{GENDER:$4|usuario|usuaria}} $1",
        "logentry-protect-move_prot": "$1 {{GENDER:$2|trasladó}} las preferencias de protección de $4 a $3",
        "logentry-protect-unprotect": "$1 {{GENDER:$2|eliminó}} la protección de $3",
-       "logentry-protect-protect": "$1 {{GENDER:$2|protegió}} $3 $4",
-       "logentry-protect-protect-cascade": "$1 {{GENDER:$2|protegió}} a $3 $4 [en cascada]",
+       "logentry-protect-protect": "$1 {{GENDER:$2|protegió}} la página $3 $4",
+       "logentry-protect-protect-cascade": "$1 {{GENDER:$2|protegió}} la página $3 $4 [en cascada]",
        "logentry-protect-modify": "$1 {{GENDER:$2|cambió}} el nivel de protección de $3 $4",
        "logentry-protect-modify-cascade": "$1 {{GENDER:$2|cambió}} el nivel de protección de $3 $4 [en cascada]",
        "logentry-rights-rights": "$1 {{GENDER:$2|modificó}} los grupos a los que pertenece {{GENDER:$6|$3}}: de $4 a $5",
index 2c8fecf..9daa40e 100644 (file)
        "right-createpage": "Luua lehekülgi (mis pole aruteluleheküljed)",
        "right-createtalk": "Luua arutelulehekülgi",
        "right-createaccount": "Luua uusi kasutajakontosid",
+       "right-autocreateaccount": "Automaatselt välise kasutajakontoga sisse logida",
        "right-minoredit": "Märkida muudatusi pisimuudatusteks",
        "right-move": "Teisaldada lehekülgi",
        "right-move-subpages": "Teisaldada lehekülgi koos nende alamlehtedega",
        "action-createpage": "seda lehekülge luua",
        "action-createtalk": "seda arutelulehekülge luua",
        "action-createaccount": "seda kasutajakontot luua",
+       "action-autocreateaccount": "välise kasutajakontoga automaatselt sisse logida",
        "action-history": "vaadata selle lehekülje ajalugu",
        "action-minoredit": "seda muudatust pisimuudatuseks märkida",
        "action-move": "seda lehekülge teisaldada",
        "newimages-summary": "Sellel erilehel on viimati üles laaditud failid.",
        "newimages-legend": "Filter",
        "newimages-label": "Failinimi (või selle osa):",
+       "newimages-user": "IP-aadress või kasutajanimi",
        "newimages-showbots": "Näita robotite üles laaditud faile",
        "newimages-hidepatrolled": "Peida kontrollitud failid",
        "noimages": "Uusi pilte ei ole.",
        "authform-wrongtoken": "Vale luba",
        "specialpage-securitylevel-not-allowed-title": "Pole lubatud",
        "specialpage-securitylevel-not-allowed": "Kahjuks ei lubata sul seda lehekülge kasutada, kuna sinu identiteeti ei õnnestunud tõestada.",
+       "authpage-cannot-login": "Sisselogimisega ei õnnestu alustada.",
+       "authpage-cannot-login-continue": "Sisselogimisega ei õnnestu jätkata. Suure tõenäosusega on sinu seansi ajalõpp möödunud.",
+       "authpage-cannot-create": "Konto loomisega ei õnnestu alustada.",
+       "authpage-cannot-create-continue": "Konto loomisega ei õnnestu jätkata. Suure tõenäosusega on sinu seansi ajalõpp möödunud.",
+       "authpage-cannot-link": "Konto linkimisega ei õnnestu alustada.",
+       "authpage-cannot-link-continue": "Konto linkimisega ei õnnestu jätkata. Suure tõenäosusega on sinu seansi ajalõpp möödunud.",
        "changecredentials": "Autentimisandmete muutmine",
        "changecredentials-submit": "Muuda autentimisandmed",
        "changecredentials-success": "Sinu autentimisandmed on muudetud.",
        "removecredentials-success": "Sinu autentimisandmed on eemaldatud.",
        "credentialsform-provider": "Andmete tüüp:",
        "credentialsform-account": "Konto nimi:",
+       "authenticationdatachange-ignored": "Autentimisandmete muutmine jäi rahuldamata. Võimalik, et ühtegi pakkujat polnud häälestatud.",
        "userjsispublic": "Pea silmas, et JavaScripti alamleheküljed ei tohiks sisaldada konfidentsiaalseid andmeid, kuna neid näevad teised kasutajad.",
        "usercssispublic": "Palun pane tähele: CSS-alamleheküljel ei peaks olema konfidentsiaalseid andmeid, kuna teised kasutajad näevad seda.",
        "restrictionsfield-badip": "Vigane IP-aadress või -aadressivahemik: $1",
index 0110430..1f2a034 100644 (file)
        "post-expand-template-argument-category": "Pages contenant des paramètres de modèle non évalués",
        "parser-template-loop-warning": "Modèle en boucle détecté : [[$1]]",
        "template-loop-category": "Pages avec des boucles de modèle",
-       "template-loop-category-desc": "La page contient une boucle de modèle, c.à.d. un modèle qui s’appelle lui-même récursivement.",
+       "template-loop-category-desc": "La page contient une boucle dans le modèle, c.à.d. un modèle qui s’appelle lui-même récursivement.",
        "parser-template-recursion-depth-warning": "Limite de profondeur des appels récursifs de modèles dépassée ($1)",
        "language-converter-depth-warning": "Limite de profondeur du convertisseur de langue dépassée ($1)",
        "node-count-exceeded-category": "Pages dépassant le nombre de nœuds maximal",
        "userrights-expiry-options": "1 jour:1 day,1 semaine:1 week,1 mois:1 month,3 mois:3 montghs,6 mois:6 month,1 an:1 year",
        "userrights-invalid-expiry": "La date d'expiration pour le groupe « $1 » n'est pas valide.",
        "userrights-expiry-in-past": "La date d'expiration pour le groupe « $1 » est dépassée.",
-       "userrights-cannot-shorten-expiry": "Vous ne pouvez pas rallonger la durée d'expiration du groupe « $1 ». Seuls les utilisateurs disposant de l'autorisation d'ajouter et de supprimer ce groupe peuvent rallonger les durées d'expiration.",
+       "userrights-cannot-shorten-expiry": "Vous ne pouvez pas raccourcir la durée d'expiration du groupe « $1 ». Seuls les utilisateurs disposant de l'autorisation d'ajouter et de supprimer ce groupe peuvent raccourcir les durées d'expiration.",
        "userrights-conflict": "Conflit de modification des droits utilisateur ! Veuillez relire et confirmer vos modifications.",
        "group": "Groupe :",
        "group-user": "Utilisateurs",
        "newimages-summary": "Cette page spéciale affiche les derniers fichiers importés.",
        "newimages-legend": "Filtre",
        "newimages-label": "Nom du fichier (ou une partie de celui-ci) :",
+       "newimages-user": "Adresse IP ou nom d'utilisateur",
        "newimages-showbots": "Afficher les imports faits par des robots",
        "newimages-hidepatrolled": "Masquer les téléchargements patrouillés",
        "noimages": "Aucune image à afficher.",
        "restrictionsfield-label": "Plages IP autorisées :",
        "restrictionsfield-help": "Une adresse IP ou une plage CIDR par ligne. Pour tout activer, utiliser <pre>0.0.0.0/0\n::/0</pre>",
        "revid": "version $1",
-       "pageid": "ID de page $1"
+       "pageid": "ID de page $1",
+       "rawhtml-notallowed": "Les balises &lt;html&gt; ne peuvent pas être utilisées en dehors des pages normales."
 }
index 280b124..db9be6f 100644 (file)
        "userjsyoucanpreview": "'''Tip:''' Brük di „{{int:showpreview}}“-knoop, am din nei JavaScript föör det seekrin tu testin.",
        "usercsspreview": "'''Seenk diaram, dat det bluas en föörskau faan din CSS as.'''\n'''Det as noch ei seekert wurden!'''",
        "userjspreview": "'''Seenk diaram, dat det bluas en föörskau faan din JavaScript as.'''\n'''Det as noch ei seekert wurden!'''",
-       "sitecsspreview": "'''Påås aw dåt dü jüdeer CSS bloot forbekiikest.'''\n'''Dåt as nuch ai spiikerd!'''",
-       "sitejspreview": "'''Påås aw dåt dü jüdeer JavaScript code bloot forbekiikest.'''\n'''Dåt as nuch ai spiikerd!'''",
+       "sitecsspreview": "<strong>Paase üüb! Det as bluas en föörskau faan't CSS. Det as noch ei seekert wurden!</strong>",
+       "sitejspreview": "<strong>Paase üüb! Det as bluas en föörskau faan di JavaScript code. Det as noch ei seekert wurden!</strong>",
        "userinvalidcssjstitle": "''Paase üüb:''' Skak \"$1\" jaft at ei.\nSeenk diaram, dat faan en brüker iinracht .css- an .js-sidjen mä en letjen buksteew began skel. Bispal:\n''{{ns:user}}:Münsterkjarl/vector.css'' uunsteed faan ''{{ns:user}}:Münsterkjarl/Vector.css''.",
        "updated": "(Feranert)",
        "note": "'''Paase üüb:'''",
index d09d131..8856b37 100644 (file)
        "newimages-summary": "Esta páxina especial mostra os últimos ficheiros cargados.",
        "newimages-legend": "Filtro",
        "newimages-label": "Nome do ficheiro (ou parte del):",
+       "newimages-user": "Enderezo IP ou nome de usuario",
        "newimages-showbots": "Mostrar as cargas feitas por bots",
        "newimages-hidepatrolled": "Agochar as subidas patrulladas",
        "noimages": "Non hai imaxes que mostrar.",
index 864b0d7..1168639 100644 (file)
        "newimages-summary": "דף מיוחד זה מציג את הקבצים האחרונים שהועלו.",
        "newimages-legend": "מסנן",
        "newimages-label": "שם הקובץ (או חלק ממנו):",
+       "newimages-user": "כתובת IP או שם משתמש",
        "newimages-showbots": "הצגת העלאות שבוצעו על־ידי בוטים",
        "newimages-hidepatrolled": "הסתרת העלאות בדוקות",
        "noimages": "אין קבצים.",
        "restrictionsfield-label": "טווחי כתובות IP מותרים:",
        "restrictionsfield-help": "כתובת IP אחת או טווח CIDR אחד בשורה. כדי לאפשר את הכול, ניתן להשתמש ב:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "גרסה $1",
-       "pageid": "מזהה דף $1"
+       "pageid": "מזהה דף $1",
+       "rawhtml-notallowed": "לא ניתן להשתמש בתגיות &lt;html&gt; מחוץ לדפים רגילים."
 }
index 3b7230d..6079b67 100644 (file)
@@ -79,7 +79,8 @@
                        "Susant purohit",
                        "Jayprakash12345",
                        "Dr. Shikha Jaggi",
-                       "Shyamal"
+                       "Shyamal",
+                       "SatyamMishra"
                ]
        },
        "tog-underline": "कड़ियाँ अधोरेखन:",
        "rcfilters-filter-editsbyself-description": "आपके द्वारा संपादित",
        "rcfilters-filter-editsbyother-label": "दूसरों के द्वारा संपादित",
        "rcfilters-filter-editsbyother-description": "अन्य उपयोगकर्ताओं द्वारा बनाई गए संपादन (आपके द्वारा नहीं)",
-       "rcfilters-filtergroup-userExpLevel": "अनुभव स्तर (केवल पंजीकृत सदस्यों के लिए)",
+       "rcfilters-filtergroup-userExpLevel": "अनुभव स्तर (केवल पंजीकृत सदस्यों के लिए)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "अनुभव फ़िल्टर केवल पंजीकृत उपयोगकर्ता पाते हैं इसलिए यह फ़िल्टर \"अपंजीकृत\" फ़िल्टर के साथ संघर्ष करता है।",
        "rcfilters-filter-user-experience-level-newcomer-label": "अपरिचित",
        "rcfilters-filter-user-experience-level-newcomer-description": "4 दिनों की गतिविधि और 10 सम्पादन से कम।",
        "sp-contributions-newbies": "सिर्फ़ नये सदस्यों के योगदान दर्शायें",
        "sp-contributions-newbies-sub": "नये सदस्योंके लिये",
        "sp-contributions-newbies-title": "नए सदस्यों द्वारा योगदान",
-       "sp-contributions-blocklog": "बà¥\8dलà¥\89à¤\95 सूची",
+       "sp-contributions-blocklog": "à¤\85वरà¥\8bध सूची",
        "sp-contributions-suppresslog": "छुपाए गए उपयोगकर्ता के योगदान",
        "sp-contributions-deleted": "हटाए गए सदस्य योगदान",
        "sp-contributions-uploads": "अपलोड",
        "createaccountblock": "खाते निर्माण को रोक दिया हैं",
        "emailblock": "ईमेल अवरोधित",
        "blocklist-nousertalk": "अपना वार्ता पृष्ठ भी संपादित नहीं कर सकेंगे",
-       "ipblocklist-empty": "बà¥\8dलà¥\89à¤\95 सूची खाली हैं।",
+       "ipblocklist-empty": "à¤\85वरà¥\8bध सूची खाली हैं।",
        "ipblocklist-no-results": "पूछे गये आईपी एड्रेस / सदस्यनाम पर ब्लॉक नहीं हैं।",
        "blocklink": "अवरोधित करें",
        "unblocklink": "अवरोध हटाएँ",
        "contribslink": "योगदान",
        "emaillink": "ई-मेल भेजें",
        "autoblocker": "आपका आइ॰पी पता स्वतः अवरुद्ध है, चूँकि इसे हाल ही में \"[[User:$1|$1]]\" द्वारा प्रयोग किया गया है।\n$1 को अवरोधित करने का कारण है: \"$2\"",
-       "blocklogpage": "बà¥\8dलà¥\89à¤\95 सूची",
+       "blocklogpage": "à¤\85वरà¥\8bध सूची",
        "blocklog-showlog": "इस प्रयोक्ता को पहले भी अवरोधित किया जा चुका है। \nसन्दर्भ के लिए अवरोधन अभिलेख नीचे दिया गया है:",
        "blocklog-showsuppresslog": "यह प्रयोक्ता पहले भी अवरोधित किया जा चुका है।\nयह दबाया गया लॉग सन्दर्भ के लिए उपलब्ध कया गया है:",
        "blocklogentry": "\"[[$1]]\" को $2 $3 तक बदलाव करने से रोक दिया गया है।",
        "tooltip-t-recentchangeslinked": "यहाँ जुड़े हुए सभी पन्नों में हुए हाल के बदलाव",
        "tooltip-feed-rss": "इस पृष्ठ की आरएसएस फ़ीड",
        "tooltip-feed-atom": "इस पृष्ठ की अणु फ़ीड",
-       "tooltip-t-contributions": "{{GENDER:$1|à¤\87स à¤¸à¤¦à¤¸à¥\8dय}} à¤\95à¥\87 à¤¯à¥\8bà¤\97दाà¤\93ं की सूची",
+       "tooltip-t-contributions": "{{GENDER:$1|à¤\87स à¤¸à¤¦à¤¸à¥\8dय}} à¤\95à¥\87 à¤¯à¥\8bà¤\97दानà¥\8bं की सूची",
        "tooltip-t-emailuser": "{{GENDER:$1|इस सदस्य}} को इमेल भेजें",
        "tooltip-t-info": "इस पृष्ठ के बारे में अधिक जानकारी",
        "tooltip-t-upload": "फ़ाइल अपलोड करें",
        "revdelete-uname-unhid": "सदस्यनाम फिर सार्वजनिक किया गया",
        "revdelete-restricted": "प्रबंधकोंको प्रतिबंधित किया",
        "revdelete-unrestricted": "प्रबंधकोंके प्रबंधन हटायें",
-       "logentry-block-block": "$1 {{GENDER:$2|प्रतिबंधित}}{{GENDER:$4|$3}} जिसमें समय समाप्ति की अवधि है $5 $6",
+       "logentry-block-block": "$1 ने {{GENDER:$4|$3}} को $5 के लिए {{GENDER:$2|अवरोधित}} कर दिया। $6",
        "logentry-block-unblock": "$1 {{GENDER:$2|प्रतिबंधित}} {{GENDER:$4|$3}}",
-       "logentry-block-reblock": "$1 {{GENDER:$2|changed}} प्रतिबंध सेटिंग {{GENDER:$4|$3}} के लिए जिसमें  समय समाप्ति की अवधि है $5 $6",
-       "logentry-suppress-block": "$1 {{GENDER:$2|प्रतिबंधित}} {{GENDER:$4|$3}} जिसमें समय समाप्ति की अवधि है $5 $6",
-       "logentry-suppress-reblock": "$1 {{GENDER:$2|बदल दिया गया}} प्रतिबंध सेटिंग {{GENDER:$4|$3}} के लिए जिसमें समय समाप्ति की अवधि है $5 $6",
+       "logentry-block-reblock": "$1 ने {{GENDER:$4|$3}} के अवरोध में {{GENDER:$2|बदलाव}} कर दिया और यह अवरोध $5 रहेगा। $6",
+       "logentry-suppress-block": "$1 ने {{GENDER:$4|$3}} को $5 के लिए {{GENDER:$2|अवरोधित}} कर दिया। $6",
+       "logentry-suppress-reblock": "$1 ने {{GENDER:$4|$3}} के अवरोध में {{GENDER:$2|बदलाव}} कर दिया और यह अवरोध $5 रहेगा। $6",
        "logentry-import-upload": "$1 {{GENDER:$2|आयात किया गया}} $3 फ़ाइल अपलोड के माध्यम से",
        "logentry-import-upload-details": "$1 ने फ़ाइल अपलोड द्वारा $3 को {{GENDER:$2|आयात}} किया ($4 {{PLURAL:$4|अवतरण|अवतरण}})",
        "logentry-import-interwiki": "$1 {{GENDER:$2|आयात किया गया}} $3 किसी और विकि से",
        "feedback-thanks": "धन्यवाद! आपकी प्रतिक्रिया पृष्ठ में नियुक्त किया गया है \"[ $2  $1 ]\"।",
        "feedback-thanks-title": "धन्यवाद!",
        "feedback-useragent": "सदस्य कर्ता:",
-       "searchsuggest-search": "खोजें {{SITENAME}}",
+       "searchsuggest-search": "{{SITENAME}} में खोजें",
        "searchsuggest-containing": "...से युक्त",
        "api-error-badtoken": "आंतरिक त्रुटि: बुरी टोकन।",
        "api-error-emptypage": "नए खाली पृष्ठ बनाने की अनुमति नहीं है।",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "कुकी-आधारित सत्र",
        "sessionprovider-nocookies": "हो सकता है कि कुकी निष्क्रिय है। कृपया देखें कि और सक्रिय करें।",
        "randomrootpage": "अविशिष्ट मूल पृष्ठ",
-       "log-action-filter-block": "पà¥\8dरतिबà¤\82ध के प्रकार:",
+       "log-action-filter-block": "à¤\85वरà¥\8bध के प्रकार:",
        "log-action-filter-delete": "हटाने के प्रकार:",
        "log-action-filter-import": "आयात के प्रकार:",
        "log-action-filter-move": "स्थानांतरण के प्रकार:",
        "log-action-filter-all": "सभी",
        "log-action-filter-block-block": "अवरोध",
        "log-action-filter-block-reblock": "अवरोध परिवर्तन",
-       "log-action-filter-block-unblock": "अवरोधरहित",
+       "log-action-filter-block-unblock": "अवरोध हटाना",
        "log-action-filter-delete-delete": "पृष्ठ हटाना",
        "log-action-filter-delete-restore": "पृष्ठ न हटाना",
        "log-action-filter-delete-event": "पृष्ठ हटाने का लॉग",
index a24bed7..c90633e 100644 (file)
        "htmlform-time-invalid": "Unesena vrijednost nije prepoznati format vremena. Pokušajte koristiti format HH:MM:SS.",
        "htmlform-datetime-toohigh": "Uneseni datum i vrijeme su veći od $1",
        "logentry-delete-delete": "$1 je {{GENDER:$2|obrisao|obrisala}} stranicu $3",
-       "logentry-delete-delete_redir": "$1 je premještanjem {{GENDER:$2|pobrisao|pobrisala}} preusmjeravanje $3",
+       "logentry-delete-delete_redir": "$1 premještanjem je {{GENDER:$2|pobrisao|pobrisala}} preusmjeravanje $3",
        "logentry-delete-restore": "$1 je {{GENDER:$2|vratio|vratila}} stranicu $3",
        "logentry-delete-event": "$1 je {{GENDER:$2|promijenio|promijenila}} vidljivost {{PLURAL:$5|zapisa u evidenciji|$5 zapisa u evidenciji}} na $3: $4",
        "logentry-delete-revision": "$1 je {{GENDER:$2|promijenio|promijenila}} vidljivost {{PLURAL:$5|uređivanja|$5 uređivanja}} na stranici $3: $4",
index f8dfc24..db6aa34 100644 (file)
        "login": "Aperir session",
        "login-security": "Verifica tu identitate",
        "nav-login-createaccount": "Aperir session / crear conto",
-       "userlogin": "Aperir session / crear conto",
-       "userloginnocreate": "Aperir session",
        "logout": "Clauder session",
        "userlogout": "Clauder session",
        "notloggedin": "Tu non ha aperite un session",
        "userlogin-noaccount": "Non ha un conto?",
        "userlogin-joinproject": "Crear un conto in {{SITENAME}}",
-       "nologin": "Tu non ha un conto? $1.",
-       "nologinlink": "Crear un conto",
        "createaccount": "Crear conto",
-       "gotaccount": "Tu jam ha un conto? '''$1'''.",
-       "gotaccountlink": "Aperir session",
-       "userlogin-resetlink": "Datos de authentication oblidate?",
        "userlogin-resetpassword-link": "Contrasigno oblidate?",
        "userlogin-helplink2": "Adjuta al accesso",
        "userlogin-loggedin": "Tu ha jam aperite session como {{GENDER:$1|$1}}.\nUsa le formulario sequente pro aperir session como altere usator.",
        "createaccountmail": "Usar un contrasigno aleatori temporari e inviar lo al adresse de e-mail specificate",
        "createaccountmail-help": "Pro crear un conto pro un altere persona sin cognoscer le contrasigno.",
        "createacct-realname": "Nomine real (optional)",
-       "createaccountreason": "Motivo:",
        "createacct-reason": "Motivo",
        "createacct-reason-ph": "Proque crea tu un altere conto?",
        "createacct-reason-help": "Message pro le registro de creation de contos",
        "post-expand-template-argument-warning": "'''Attention:''' Iste pagina contine al minus un parametro de patrono que ha un grandor de expansion excessive.\nIste parametros ha essite omittite.",
        "post-expand-template-argument-category": "Paginas que omitte alcun parametros de patrono",
        "parser-template-loop-warning": "Recursion infinite detegite in patrono: [[$1]]",
+       "template-loop-category": "Paginas con buclas de patrono",
+       "template-loop-category-desc": "Le pagina contine un bucla in un patrono, i.e. un patrono que se appella recursivemente.",
        "parser-template-recursion-depth-warning": "Limite de recursion del patrono excedite ($1)",
        "language-converter-depth-warning": "Limite de profunditate del conversor de lingua excedite ($1)",
        "node-count-exceeded-category": "Paginas in que le numero de nodos excede le limite",
        "page_first": "prime",
        "page_last": "ultime",
        "histlegend": "Pro comparar duo versiones: marca lor circulos correspondente, e preme <code>Enter</code> o clicca le button in basso.<br />\nLegenda: '''({{int:cur}})''' = comparar con le version actual,\n'''({{int:last}})''' = comparar con le version precedente, '''{{int:minoreditletter}}''' = modification minor.",
-       "history-fieldset-title": "Examinar historia",
-       "history-show-deleted": "Delite solmente",
+       "history-fieldset-title": "Cercar versiones",
+       "history-show-deleted": "Solmente versiones delite",
        "histfirst": "le plus ancian",
        "histlast": "le plus nove",
        "historysize": "({{PLURAL:$1|1 byte|$1 bytes}})",
        "prefs-help-prefershttps": "Iste preferentia habera effecto a partir de tu proxime session.",
        "prefswarning-warning": "To ha facite modificationes in tu preferentias que non ha ancora essite confirmate. Si tu quita iste pagina sin cliccar sur \"$1\", tu preferentias non essera cambiate.",
        "prefs-tabs-navigation-hint": "Consilio: Tu pote usar le claves de sagitta sinistre e dextre pro navigar inter le schedas in le lista.",
-       "userrights": "Gestion de derectos de usator",
+       "userrights": "Derectos de usator",
        "userrights-lookup-user": "Selige un usator",
        "userrights-user-editname": "Entra un nomine de usator:",
        "editusergroup": "Cargar gruppos de usator",
        "userrights-expiry-options": "1 die:1 day,1 septimana:1 week,1 mense:1 month,3 menses:3 months,6 menses:6 months,1 anno:1 year",
        "userrights-invalid-expiry": "Le hora de expiration pro le gruppo \"$1\" es invalide.",
        "userrights-expiry-in-past": "Le hora de expiration pro le gruppo \"$1\" es in le passato.",
+       "userrights-cannot-shorten-expiry": "Tu non pote accurtar le tempore de expiration del gruppo \"$1\". Solmente usatores con le permission de adder e remover iste gruppo pote accurtar tempores de expiration.",
        "userrights-conflict": "Conflicto inter cambiamentos de derectos de usator! Per favor revide e confirma tu cambiamentos.",
        "group": "Gruppo:",
        "group-user": "Usatores",
        "rcfilters-invalid-filter": "Filtro non valide",
        "rcfilters-empty-filter": "Nulle filtro active. Tote le contributiones es monstrate.",
        "rcfilters-filterlist-title": "Filtros",
+       "rcfilters-filterlist-whatsthis": "Que es isto?",
+       "rcfilters-filterlist-feedbacklink": "Da nos tu opinion sur le nove filtros (in beta)",
+       "rcfilters-highlightbutton-title": "Accentuar resultatos",
+       "rcfilters-highlightmenu-title": "Selige un color",
+       "rcfilters-highlightmenu-help": "Selige un color pro accentuar iste proprietate",
        "rcfilters-filterlist-noresults": "Nulle filtro trovate",
+       "rcfilters-noresults-conflict": "Nulle resultato trovate perque le criterios de recerca es in conflicto",
+       "rcfilters-state-message-subset": "Iste filtro non ha effecto perque su resultatos es includite in illos del sequente {{PLURAL:$2|filtro|filtros}} plus comprehensive (essaya accentuar pro poter distinguer lo): $1",
+       "rcfilters-state-message-fullcoverage": "Seliger tote le filtros in un gruppo equivale seliger nulle, dunque iste filtro non ha effecto. Le gruppo include: $1",
        "rcfilters-filtergroup-registration": "Registration del usator",
        "rcfilters-filter-registered-label": "Registrate",
        "rcfilters-filter-registered-description": "Redactores que ha aperite session.",
        "rcfilters-filter-unregistered-label": "Non registrate",
        "rcfilters-filter-unregistered-description": "Redactores que non ha aperite session.",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Iste filtro es in conflicto con le sequente {{PLURAL:$2|filtro|filtros}} de Experientia, le {{PLURAL:$2|qual|quales}} trova solmente usatores registrate: $1",
        "rcfilters-filtergroup-authorship": "Autor del modificationes",
        "rcfilters-filter-editsbyself-label": "Tu proprie modificationes",
        "rcfilters-filter-editsbyself-description": "Modificationes per te.",
        "rcfilters-filter-editsbyother-label": "Modificationes per alteres",
        "rcfilters-filter-editsbyother-description": "Modificationes create per altere usatores (non te).",
        "rcfilters-filtergroup-userExpLevel": "Nivello de experientia (solmente pro usatores registrate)",
-       "rcfilters-filter-userExpLevel-newcomer-label": "Novicios",
-       "rcfilters-filter-userExpLevel-newcomer-description": "Minus de 10 modificationes e 4 dies de activitate.",
-       "rcfilters-filter-userExpLevel-learner-label": "Apprentisses",
-       "rcfilters-filter-userExpLevel-learner-description": "Plus dies de activitate e modificationes que \"Novicios\" ma minus que \"Usatores con experientia\".",
-       "rcfilters-filter-userExpLevel-experienced-label": "Usatores con experientia",
-       "rcfilters-filter-userExpLevel-experienced-description": "Plus de 30 dies de activitate e 500 modificationes.",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filtros de Experientia trova solmente usatores registrate. Iste filtro es dunque in conflicto con le filtro \"Non registrate\".",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Novicios",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Minus de 10 modificationes e 4 dies de activitate.",
+       "rcfilters-filter-user-experience-level-learner-label": "Apprentisses",
+       "rcfilters-filter-user-experience-level-learner-description": "Plus dies de activitate e modificationes que \"Novicios\" ma minus que \"Usatores con experientia\".",
+       "rcfilters-filter-user-experience-level-experienced-label": "Usatores con experientia",
+       "rcfilters-filter-user-experience-level-experienced-description": "Plus de 30 dies de activitate e 500 modificationes.",
        "rcfilters-filtergroup-automated": "Contributiones automatisate",
        "rcfilters-filter-bots-label": "Robot",
        "rcfilters-filter-bots-description": "Modificationes facite per instrumentos automatisate.",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|actualisava}} etiquettas sur le version $4 del pagina $3 ({{PLURAL:$7|addeva}} $6; {{PLURAL:$9|removeva}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|actualisava}} etiquettas sur le entrata de registro $5 del pagina $3 ({{PLURAL:$7|addeva}} $6; {{PLURAL:$9|removeva}} $8)",
        "rightsnone": "(nulle)",
-       "revdelete-summary": "summario del modification",
        "rightslogentry-temporary-group": "$1 (temporari, usque a $2)",
        "feedback-adding": "Le responsa es addite al pagina...",
        "feedback-back": "Retornar",
index fcec7be..d2487dd 100644 (file)
@@ -24,7 +24,8 @@
                        "Matma Rex",
                        "Xð",
                        "Sveinki",
-                       "Nemo bis"
+                       "Nemo bis",
+                       "Asmen"
                ]
        },
        "tog-underline": "Undirstrika tengla:",
        "externaldberror": "Uppfærsla mistókst. Annaðhvort varð villa í gagnasafninu eða að þér sé óheimilt að uppfæra aðra aðganga.",
        "login": "Innskrá",
        "nav-login-createaccount": "Innskrá / Búa til aðgang",
-       "userlogin": "Innskrá / Búa til aðgang",
-       "userloginnocreate": "Innskrá",
        "logout": "Útskráning",
        "userlogout": "Útskrá",
        "notloggedin": "Ekki innskráð(ur)",
        "userlogin-noaccount": "Áttu ekki aðgang?",
        "userlogin-joinproject": "Sameina {{SITENAME}}",
-       "nologin": "Ekki með aðgang? $1.",
-       "nologinlink": "Stofnaðu aðgang",
        "createaccount": "Nýskrá",
-       "gotaccount": "Nú þegar með notandanafn? '''$1'''.",
-       "gotaccountlink": "Skráðu þig inn",
-       "userlogin-resetlink": "Gleymdir þú notendaupplýsingunum þínum?",
        "userlogin-resetpassword-link": "Gleymdiru lykilorðinu þínu?",
        "userlogin-helplink2": "Hjálp við innskráningu",
        "userlogin-loggedin": "Þú ert búin(n) að skrá þig inn sem {{GENDER:$1|$1}}.\nNotaðu eyðablaðið fyrir neðan til að skrá þig inn sem annar notandi.",
        "createacct-another-email-ph": "Skrifaðu netfang",
        "createaccountmail": "Nota handahófsvalið bráðabirgðalykilorð og senda það á netfangið sem er tilgreint hér fyrir neðan",
        "createacct-realname": "Raunverulegt nafn (valfrjálst)",
-       "createaccountreason": "Ástæða:",
        "createacct-reason": "Ástæða",
        "createacct-reason-ph": "Afhverju ertu að búa til annan aðgang",
        "createacct-submit": "Búa til aðganginn",
        "hebrew-calendar-m6": "Adar",
        "hebrew-calendar-m6a": "Adar I",
        "hebrew-calendar-m6b": "Adar II",
-       "hebrew-calendar-m7": "Nisan",
+       "hebrew-calendar-m7": "Nisane",
        "hebrew-calendar-m8": "Iyar",
        "hebrew-calendar-m9": "Sivan",
        "hebrew-calendar-m10": "Tamuz",
        "hebrew-calendar-m6-gen": "Adar",
        "hebrew-calendar-m6a-gen": "Adar I",
        "hebrew-calendar-m6b-gen": "Adar II",
-       "hebrew-calendar-m7-gen": "Nisan",
+       "hebrew-calendar-m7-gen": "Nisane",
        "hebrew-calendar-m8-gen": "Iyar",
        "hebrew-calendar-m9-gen": "Sivan",
        "hebrew-calendar-m10-gen": "Tamuz",
        "log-name-managetags": "Breytingaskrá yfir sýsl með merki",
        "logentry-managetags-create": "$1 {{GENDER:$2|bjó til}} merkið \"$4\"",
        "rightsnone": "(engum)",
-       "revdelete-summary": "breytingarágrip",
        "feedback-adding": "Bæti umsögn á síðuna...",
        "feedback-back": "Til baka",
        "feedback-bugcheck": "Frábært! Athugaðu hvort þessi villa hafi verið [$1 tilkynnt áður].",
index 1fcdedb..5600743 100644 (file)
        "post-expand-template-argument-warning": "'''Attenzione:''' questa pagina contiene uno o più argomenti di template troppo grandi per essere espansi. Tali argomenti verranno omessi.",
        "post-expand-template-argument-category": "Pagine contenenti template con parametri omessi",
        "parser-template-loop-warning": "Rilevato loop del template: [[$1]]",
+       "template-loop-category": "Pagine con template che richiamano sé stessi",
+       "template-loop-category-desc": "La pagina contiene un template che richiama sé stesso, cioè un template in cui è incluso lo stesso template.",
        "parser-template-recursion-depth-warning": "È stato raggiunto il limite di ricorsione nel template ($1)",
        "language-converter-depth-warning": "Limite di profondità del convertitore di lingua superato ($1)",
        "node-count-exceeded-category": "Pagine dove viene superato il numero di nodi",
        "userrights-expiry-existing": "Scadenza attuale: $2, $3",
        "userrights-expiry-othertime": "Altra durata:",
        "userrights-expiry-options": "1 giorno:1 day,1 settimana:1 week,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 anno:1 year",
+       "userrights-invalid-expiry": "La scadenza per il gruppo \"$1\" non è valida",
+       "userrights-expiry-in-past": "La scadenza per il gruppo \"$1\" è già passata.",
+       "userrights-cannot-shorten-expiry": "Non puoi anticipare la scadenza del gruppo \"$1\". Soltanto gli utenti con il permesso di aggiungere e rimuovere questo gruppo possono anticiparne la scadenza.",
        "userrights-conflict": "Conflitto di modifica dei diritti utente! Controlla e conferma le tue modifiche.",
        "group": "Gruppo:",
        "group-user": "Utenti",
        "newimages-summary": "Questa pagina speciale mostra i file caricati più di recente.",
        "newimages-legend": "Filtra",
        "newimages-label": "Nome file (o una parte di esso):",
+       "newimages-user": "Indirizzo IP o nome utente",
        "newimages-showbots": "Mostra caricamenti di bot",
        "newimages-hidepatrolled": "Nascondi caricamenti verificati",
        "noimages": "Non c'è nulla da vedere.",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|ha aggiornato}} le etichette della versione $4 della pagina $3 ({{PLURAL:$7|aggiunta|aggiunte}} $6; {{PLURAL:$9|rimossa|rimosse}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|ha aggiornato}} le etichette della voce di registro $5 di pagina $3 ({{PLURAL:$7|aggiunta|aggiunte}} $6; {{PLURAL:$9|rimossa|rimosse}} $8)",
        "rightsnone": "(nessuno)",
+       "rightslogentry-temporary-group": "$1 (temporaneo, fino a $2)",
        "feedback-adding": "Inserimento del feedback nella pagina...",
        "feedback-back": "Indietro",
        "feedback-bugcheck": "Ottimo! Verifica che non sia già fra i [$1 bug conosciuti].",
        "restrictionsfield-label": "Intervalli IP consentiti:",
        "restrictionsfield-help": "Un indirizzo IP o intervallo CIDR per linea. Per consentire tutto, utilizza:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "versione $1",
-       "pageid": "ID della pagina $1"
+       "pageid": "ID della pagina $1",
+       "rawhtml-notallowed": "I tag &lt;html&gt; non possono essere utilizzati al di fuori delle normali pagine."
 }
index 44f0535..e1472af 100644 (file)
        "createaccount": "Gawé akun",
        "userlogin-resetpassword-link": "Lali tembung wadining sampéyan?",
        "userlogin-helplink2": "Tulungi mlebu",
-       "userlogin-loggedin": "Sampeyan sampun mlebet log dadi {{GENDER:$1|$1}}.\nGunakna formulir ing ngisor iki kanggo mlebet log dadi panganggo liyane.",
+       "userlogin-loggedin": "Panjenengan wis mlebu log minangka {{GENDER:$1|$1}}.\nAnggonen formulir ngisor iki saperlu mlebu log minangka panganggo liya.",
        "userlogin-createanother": "Gawé akun liya",
        "createacct-emailrequired": "Alamat layang èlèktronik",
        "createacct-emailoptional": "Alamat layang èlèktronik (manasuka)",
        "createaccountmail": "Nganggoa sandi sauntara sembarang lan kirimna liwat layang e-mail ing ngisor iki",
        "createacct-realname": "Jeneng asli (manasuka)",
        "createacct-reason": "Alesan",
-       "createacct-reason-ph": "Kenapa sampeyan nggawe akun liyane",
+       "createacct-reason-ph": "Alesané panjenengan nggawé akun liya",
        "createacct-submit": "Gawé akun sampéyan",
        "createacct-another-submit": "Gawé akun",
        "createacct-continue-submit": "Banjuraké gawé akun",
        "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 panjenengan diblokir saka panyuntingan, mulané panjenengan ora olèh nganggo fungsi pèngetan tembung sandhi kanggo ''mencegah penyalahgunaan''.",
-       "eauthentsent": "Sawijining layang élèktronik (e-mail) kanggo ndhedhes (konfirmasi) wis dikirim menyang alamat layang élèktronik sampeyan. \n\nSadhurunge layang élèktronik liyane dikirim menyang akun kuwi, sampeyan kudu melu parentah ing layang kuwi, kanggo mastikne yen alamat layang kuwi bener-bener dhuweke sampeyan.",
+       "eauthentsent": "Layang-èl konfirmasi wis dikirim nyang alamat layang-èl sing diisèkaké. Sadurungé ana layang-èl liyané sing dikirim nyang akun iku, panjenengan kudu nuruti arahan ana ing layang-èl iku saperlu ngonfirmasi yèn akun iku pancèn duwèké panjenengan.",
        "throttled-mailpassword": "Layang kanggo mbalèkaké tembung sandhi wis dikirim sasuwené ing {{PLURAL:$1|jam|$1 jam}}.\nKanggo nyegah ananing tumindhak culika, namung sak layang kanggo mbalèkaké tembung sandhi sing bakal dikirim sasuwéné ing {{PLURAL:$1|jam|$1 jam}}.",
        "mailerror": "Cacad nalika ngirim layang: $1",
        "acct_creation_throttle_hit": "Tamu ing wiki iki kanthi alamat IP sing padha karo panjenengan wis gawé {{PLURAL:$1|1 akun|$1 akun}} ing sadina pungkasan, nganti cacah maksimum sing diidinaké.\nAmarga saka kuwi., tamu kanthi alamat IP iki ora bisa gawé akun manèh kanggo sauntara iki.",
        "login-abort-generic": "Sampéyan ora bisa mlebu - Kawurungan",
        "loginlanguagelabel": "Basa: $1",
        "suspicious-userlogout": "Panjaluk panjenengan supaya metu ditolak amarga katoné panjlajah internt utawa proksi panyinggah.",
-       "createacct-another-realname-tip": "Jeneng asli ora kudu dilebokake.\n\nYen sampeyan milih nglebokake jeneng asli, jeneng kuwi bakal dinggo ngwenehi atribusi kanggo karya-karyane.",
+       "createacct-another-realname-tip": "Jeneng asli ora kudu diisi.\nYèn diisi, jeneng asliné panjenengan bakal kanggo atribusi awit karyané panjenengan.",
        "pt-login": "Mlebu log",
        "pt-login-button": "Mlebu",
        "pt-login-continue-button": "Banjuraké mlebu",
        "edit-conflict": "Cengkah besutan",
        "edit-no-change": "Suntingan panjenengan dilirwakaké amerga panjenengan ora nglakoni pangowahan apa-apa ing tèks.",
        "postedit-confirmation-created": "Kaca wis kagawé.",
-       "postedit-confirmation-saved": "Besutan sampeyan wis kasimpen.",
+       "postedit-confirmation-saved": "Besutané panjenengan wis kasimpen.",
        "edit-already-exists": "Ora bisa nggawé kaca anyar.\nAmerga wis ana.",
        "defaultmessagetext": "Tèks layang gawan",
        "content-failed-to-parse": "Gagal menjabarkan konten $2 untuk model $1: $3",
        "gender-female": "Dhèwèké mbesut kaca wiki",
        "prefs-help-gender": "Opsional: Dipigunakaké kanggo panyebutan jinis kelamin sing bener déning piranti alus.\nInformasi iki bakal kabuka kanggo publik.",
        "email": "Layangtronik",
-       "prefs-help-realname": "Jeneng asli manasuka.\nMenawa diisi, iku bakal kanggo ngatribusi sampéyan awit karyaning sampéyan.",
+       "prefs-help-realname": "Jeneng asli ora kudu diisi.\nYèn diisi, jeneng asliné panjenengan bakal kanggo atribusi awit karyané panjenengan.",
        "prefs-help-email": "Alamat layang èlèktronik sipaté mung pilihan, nanging dibutuhaké kanggo nyetèl ulang tembung sandhi yèn Sampéyan lali.",
        "prefs-help-email-others": "Sampéyan uga bisa milih kanggo ngidinaké wong liya ngubungi Sampéyan liwat layang èlèktronik sing ana ing kaca panganggo utawa kaca guneman.\nAlamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi Sampéyan.",
        "prefs-help-email-required": "Alamat layang-e dibutuhaké.",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (uga deleng [[Special:NewPages|pratélaning kaca-kaca anyar]])",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Tuduhaké",
+       "rcfilters-activefilters": "Saringan murub",
+       "rcfilters-restore-default-filters": "Pulihaké saringan gawan",
+       "rcfilters-search-placeholder": "Saring owah-owahan anyar (lurua utawa wiwita ngetik)",
+       "rcfilters-invalid-filter": "Saringan ora sah",
+       "rcfilters-filterlist-title": "Saringan",
+       "rcfilters-filterlist-feedbacklink": "Wènèhi saran ngenani saringan (béta) singa anyar",
+       "rcfilters-filterlist-noresults": "Saringan ora katemu",
        "rcnotefrom": "Ing ngisor iki owah-owahan wiwit <strong>$2</strong> (kapacak nganti <strong>$1</strong> owah-owahan).",
        "rclistfrom": "Tuduhaké owah-owahan anyar kawit $2, $3",
        "rcshowhideminor": "$1 besutan cilik",
        "actioncomplete": "Kasil diayahi",
        "actionfailed": "Tindakan gagal",
        "deletedtext": "\"$1\" wis dibusak. \nDelenga $2 minangka cathetan ngenani sing pungkasan kabusak.",
-       "dellogpage": "Log busak",
+       "dellogpage": "log busak",
        "dellogpagetext": "Ing ngisor iki kapacak log pambusakan kaca sing anyar dhéwé.",
        "deletionlog": "log busak",
        "reverted": "Dibalèkaké ing revisi sadurungé",
        "movepage-page-moved": "Kaca $1 wis dipindhah menyang $2.",
        "movepage-page-unmoved": "Kaca $1 ora bisa dialihaké menyang $2.",
        "movepage-max-pages": "Paling akèh $1 {{PLURAL:$1|kaca|kaca}} wis dialihaké lan ora ana manèh sing bakal dialihaké sacara otomatis.",
-       "movelogpage": "Log alih",
+       "movelogpage": "log alih",
        "movelogpagetext": "Ing ngisor iki kapacak log pangalihan kaca.",
        "movesubpage": "{{PLURAL:$1|Anak-kaca|Anak-kaca}}",
        "movesubpagetext": "Kaca iki nduwèni $1 {{PLURAL:$1|anak-kaca|anak-kaca}} kaya kapacak ing ngisor.",
index 1b03b32..b05a9b6 100644 (file)
@@ -26,7 +26,7 @@
        "tog-watchdefault": "Pel u dosyê ke mı vurnê lista mına şêrkerdişi ke",
        "tog-watchmoves": "Pel u dosyê ke mı kırısnê lista mına şêrkerdişi ke",
        "tog-watchdeletion": "Pel u dosyê ke mı esterıtê, lista mına şêrkerdişi ke",
-       "tog-minordefault": "Vurnayisunê ho pêrune ‘vurnayiso qızkek’ nisan bıde",
+       "tog-minordefault": "Vırnayışanê xo pêrıne ‘vırnayışo qıckek’ nışan bıde",
        "tog-previewontop": "Verqayti pela nustene ser de bıasne",
        "tog-previewonfirst": "Vurnayiso verên de verqayti tım bıasne",
        "tog-enotifwatchlistpages": "Zû pele ya ki dosyawa ke lista mına şêrkerdişi de vurnê mı rê e-poste bırusne",
        "editsection": "bıvurne",
        "editold": "bıvurne",
        "viewsourceold": "çımey bıvêne",
-       "editlink": "bıvurne",
+       "editlink": "bıvırne",
        "viewsourcelink": "çıme bıvêne",
        "editsectionhint": "Qısımi bıvurne: $1",
        "toc": "Tedeestey",
        "externaldberror": "Cıfeteliyaisê naskerdene de ya xeta esta ya ki tebera vırastena hesabê sıma rê destur çino.",
        "login": "Cı kuye",
        "nav-login-createaccount": "Cı kuye / hesab vıraze",
-       "userlogin": "Cı kuye / hesab vıraze",
-       "userloginnocreate": "Cı kuye",
        "logout": "Veciye",
        "userlogout": "Veciye",
        "notloggedin": "Cı nêkota",
-       "nologin": "Hesabê sıma çino? '''$1'''.",
-       "nologinlink": "Jü hesab rake",
        "createaccount": "Hesab vıraze",
-       "gotaccount": "Hesabê sıma ke esto? '''$1'''.",
-       "gotaccountlink": "Cı kuye",
-       "userlogin-resetlink": "Melumatê cıkewtışi xo vira kerdê?",
        "createaccountmail": "e-poste sera",
-       "createaccountreason": "Sebeb:",
        "badretype": "Parola sıma nêvêrena.",
        "userexists": "No namê karberi guretiyo.\nKerem ke, namêna weçine.",
        "loginerror": "Xeta cıkotene",
        "compare-page1": "Pele 1",
        "compare-page2": "Pele 2",
        "rightsnone": "(qet jü)",
-       "revdelete-summary": "xulasa vurnaene",
        "feedback-cancel": "Bıtexelne"
 }
index 01f4ca5..7cfa046 100644 (file)
        "watchthis": "តាមដាន​ទំព័រនេះ",
        "savearticle": "រក្សាទំព័រទុក",
        "savechanges": "រក្សាទុកបន្លាស់ប្ដូរ",
+       "publishpage": "ផ្សព្វផ្សាយទំព័រ",
+       "publishchanges": "ផ្សព្វផ្សាយការផ្លាស់ប្តូរ",
        "preview": "មើលជាមុន",
        "showpreview": "បង្ហាញ​ការមើលជាមុន",
        "showdiff": "បង្ហាញ​បន្លាស់ប្ដូរ",
index 2442f52..b62a93d 100644 (file)
@@ -65,7 +65,8 @@
                        "Matma Rex",
                        "Tursetic",
                        "Jerrykim306",
-                       "Sukjong0406"
+                       "Sukjong0406",
+                       "Garam"
                ]
        },
        "tog-underline": "링크에 밑줄:",
        "yourrealname": "실명:",
        "yourlanguage": "언어:",
        "yourvariant": "언어 변종:",
-       "prefs-help-variant": "이 위키 내용을 볼 때 사용할 언어 변종이나 철자 체계를 선택하세요.",
+       "prefs-help-variant": "이 위키 내용을 표시하기 위해 사용할 언어 변종이나 철자 체계를 선택하세요.",
        "yournick": "새 서명:",
        "prefs-help-signature": "토론 문서에 글을 쓴 후에는 마지막에 서명을 해야 합니다.  “<nowiki>~~~~</nowiki>” 기호를 추가하면 서명과 글 작성 시각이 자동으로 입력됩니다.",
        "badsig": "서명이 잘못되었습니다.\nHTML 태그를 확인하세요.",
        "upload_directory_read_only": "파일 저장 디렉터리($1)에 쓰기 권한이 없습니다.",
        "uploaderror": "올리기 오류",
        "upload-recreate-warning": "<strong>경고: 해당 이름으로 된 파일이 삭제되었거나 이동되었습니다.</strong>\n\n편의를 위해 이 문서에 대한 삭제와 이동 기록을 다음과 같이 제공합니다:",
-       "uploadtext": "파일을 올리기 위해서는 아래의 양식을 채워주세요.\n[[Special:FileList|파일 목록]]에서 이전에 올라온 파일을 검색할 수 있습니다. [[Special:Log/upload|올리기 기록]]에는 파일이 올라온 기록이 남습니다. 삭제 기록은 [[Special:Log/delete|삭제 기록]]에서 볼 수 있습니다.\n\n문서에 파일을 넣으려면 아래 방법 중 하나를 사용하세요.\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' 파일의 온전한 모양을 사용하고자 할 때\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200픽셀|섬네일|왼쪽|설명]]</nowiki></code>''' 파일의 너비를 200픽셀로 하고 왼쪽 정렬하며 '설명' 이라는 주석을 파일 밑에 달 때\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' 파일을 직접 보여주지 않고 파일로 바로 링크할 때",
+       "uploadtext": "파일을 올리기 위해서는 아래의 양식을 채워주세요.\n[[Special:FileList|파일 목록]]에서 이전에 올라온 파일을 검색할 수 있습니다. [[Special:Log/upload|올리기 기록]]에는 파일이 올라온 기록이 남습니다. 삭제 기록은 [[Special:Log/delete|삭제 기록]]에서 볼 수 있습니다.\n\n문서에 파일을 넣으려면 아래 방법 중 하나를 사용하세요.\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> 파일의 온전한 모양을 사용하고자 할 때\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200픽셀|섬네일|왼쪽|설명]]</nowiki></code></strong> 파일의 너비를 200픽셀로 하고 왼쪽 정렬하며 '설명' 이라는 주석을 파일 밑에 달 때\n* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> 파일을 직접 표시하지 않고 파일로 바로 링크할 때",
        "upload-permitted": "허용된 파일 {{PLURAL:$2|형식}}: $1",
        "upload-preferred": "권장 파일 {{PLURAL:$2|형식}}: $1",
        "upload-prohibited": "금지된 파일 {{PLURAL:$2|형식}}: $1",
        "log": "기록 목록",
        "logeventslist-submit": "보기",
        "all-logs-page": "모든 공개 기록",
-       "alllogstext": "{{SITENAME}}ì\97\90ì\84\9cì\9d\98 ê¸°ë¡\9dì\9d´ ëª¨ë\91\90 ë\82\98ì\99\80 ì\9e\88ì\8aµë\8b\88ë\8b¤.\n기ë¡\9d ì¢\85ë¥\98, ì\82¬ì\9a©ì\9e\90 ì\9d´ë¦\84, ë¬¸ì\84\9c ì\9d´ë¦\84ì\9d\84 ì\84 í\83\9dí\95´서 볼 수 있습니다. (대소문자를 구별합니다.)",
+       "alllogstext": "{{SITENAME}}ì\9d\98 ì\82¬ì\9a©í\95  ì\88\98 ì\9e\88ë\8a\94 ê¸°ë¡\9dì\9d´ ëª¨ë\91\90 í\91\9cì\8b\9cë\90\98ì\96´ ì\9e\88ì\8aµë\8b\88ë\8b¤.\n기ë¡\9d ì¢\85ë¥\98, ì\82¬ì\9a©ì\9e\90 ì\9d´ë¦\84, ì\98\81í\96¥ì\9d\84 ë°\9bë\8a\94 ë¬¸ì\84\9cì\9d\84 ì\84 í\83\9dí\95´ì\84\9c ë²\94ì\9c\84를 ì¢\81í\98\80서 볼 수 있습니다. (대소문자를 구별합니다.)",
        "logempty": "일치하는 항목이 없습니다.",
        "log-title-wildcard": "다음 글로 시작하는 제목 검색",
        "showhideselectedlogentries": "선택한 기록 항목 보이기/숨기기",
        "newimages-summary": "이 특수 문서는 최근에 올라온 파일을 나열하고 있습니다.",
        "newimages-legend": "필터",
        "newimages-label": "파일 이름 (또는 그 일부분):",
+       "newimages-user": "IP 주소 또는 사용자 이름",
        "newimages-showbots": "봇이 올린 것 보기",
        "newimages-hidepatrolled": "점검한 업로드 숨기기",
        "noimages": "그림이 없습니다.",
        "metadata-help": "이 파일은 카메라나 스캐너가 파일을 만들거나 디지털화하는 데 사용하기위해 기록한 부가 정보를 포함하고 있습니다.\n프로그램에서 파일을 편집한 경우, 새로 저장한 파일에 일부 부가 정보가 빠질 수 있습니다.",
        "metadata-expand": "자세한 정보 보이기",
        "metadata-collapse": "자세한 정보 숨기기",
-       "metadata-fields": "파일 메타데이터 표가 접혀 있을 때, 이 메시지에 올라와 있는 다음 속성값만이 기본적으로 보이게 됩니다.\n나머지 값은 자동적으로 숨겨집니다.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "그림 메타데이터 표가 접혀 있을 때, 이 메시지에 나열되어 있는 다음 메타데이터 필드가 그림 문서 표시에 포함됩니다.\n나머지는 기본적으로 숨겨집니다.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "너비",
        "exif-imagelength": "높이",
        "exif-bitspersample": "픽셀당 비트 수",
        "authprovider-confirmlink-request-label": "연결할 계정",
        "authprovider-confirmlink-success-line": "$1: 연결을 성공했습니다.",
        "authprovider-confirmlink-failed": "계정 연결을 완전히 성공하지 못했습니다: $1",
-       "authprovider-confirmlink-ok-help": "연결 실패 메시지를 보여준 뒤에도 계속합니다.",
+       "authprovider-confirmlink-ok-help": "연결 실패 메시지를 표시한 뒤에도 계속합니다.",
        "authprovider-resetpass-skip-label": "건너뛰기",
        "authprovider-resetpass-skip-help": "비밀번호 재설정을 건너뜁니다.",
        "authform-nosession-login": "인증은 성공했으나 사용자의 브라우저가 로그인 상태를 저장하지 못했습니다.\n\n$1",
index 6afca3d..6ea2658 100644 (file)
        "userlogin-remembermypassword": "Pijä miut kirjuttautunuona",
        "login": "Kirjauvu šiämeh",
        "nav-login-createaccount": "Kirjauvu šiämeh / rekisteriyvy",
-       "userlogin": "Kirjauvu šiämeh / rekisteriyvy",
-       "userloginnocreate": "Kirjauvu šiämeh",
        "logout": "Kirjauvu pois",
        "userlogout": "Kirjauvu pois",
        "userlogin-noaccount": "Eikö šiula vielä ole käyttäjätunnušta?",
        "userlogin-joinproject": "Liity {{SITENAME}}",
        "createaccount": "Luaji käyttäjätili",
-       "gotaccountlink": "Kirjauvu šiämeh",
        "userlogin-resetpassword-link": "Unohitko šalašanan?",
        "userlogin-helplink2": "Apu kirjuttautumiseh",
        "createacct-emailoptional": "Šähköpoštiošoiteh (ei tarviče välttämättä kirjuttua)",
        "createacct-email-ph": "Kirjuta oma šähköpoštiošoiteh",
-       "createaccountreason": "Šyy:",
        "createacct-reason": "Šyy",
        "createacct-submit": "Luaji oma käyttäjätunnuš",
        "createacct-benefit-heading": "{{SITENAME}} on šiun kaltasien ihmisien luatima.",
        "searchprofile-everything-tooltip": "Eči kaikilta šivuloilta (niise pakinoista)",
        "searchprofile-advanced-tooltip": "Eči miärätyistä nimitiloista",
        "search-result-size": "$1 ({{PLURAL:$2|1 šana|$2 šanua}})",
-       "search-redirect": "(šiirretty $1)",
+       "search-redirect": "(šiirretty šivulta $1)",
        "search-section": "(alaluku $1)",
        "search-suggest": "Tarkotitko: $1",
        "searchall": "kaikki",
        "logentry-move-move": "$1 {{GENDER:$2|šiirretty}} šivu $3 kohtah $4",
        "logentry-newusers-create": "Käyttäjätunnuš $1 {{GENDER:$2|oli luotu}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|päivitetty}} $3",
-       "searchsuggest-search": "Eči"
+       "searchsuggest-search": "Eči {{SITENAME}}"
 }
index ae8a516..9706c1a 100644 (file)
        "newimages-summary": "Dës Spezialsäit weist eng Lëscht mat de Fichieren déi als lescht eropgeluede goufen.",
        "newimages-legend": "Filter",
        "newimages-label": "Numm vum Fichier (oder en Deel dovun):",
+       "newimages-user": "IP-Adress oder Benotzernumm",
        "newimages-showbots": "Vu Botten eropgeluede Fichiere weisen",
        "newimages-hidepatrolled": "Nogekuckt Fichiere verstoppen",
        "noimages": "Keng Biller fonnt.",
index 5ca5204..d8b344d 100644 (file)
        "watchthis": "Stebėti šį puslapį",
        "savearticle": "Išsaugoti puslapį",
        "savechanges": "Išsaugoti pakeitimus",
-       "publishpage": "Skelbti puslapį",
-       "publishchanges": "Skelbti pakeitimus",
+       "publishpage": "Išsaugoti puslapį",
+       "publishchanges": "Išsaugoti pakeitimus",
        "preview": "Peržiūra",
        "showpreview": "Rodyti peržiūrą",
        "showdiff": "Rodyti skirtumus",
        "contentmodelediterror": "Jūs negalite redaguoti šios versijos, nes jos turinio modelis yra <code>$1</code>, kuris skiriasi nuo dabartinio puslapio turinio modelio, kuris yra <code>$2</code>.",
        "recreate-moveddeleted-warn": "'''Dėmesio: Jūs atkuriate puslapį, kuris anksčiau buvo ištrintas.'''\n\nTurėtumėte nuspręsti, ar reikėtų toliau redaguoti šį puslapį.\nJūsų patogumui čia pateikiamas šio puslapio šalinimų ir perkėlimų sąrašas:",
        "moveddeleted-notice": "Šis puslapis buvo ištrintas.\nŽemiau pateikiamas puslapio šalinimų ir pervadinimų sąrašas.",
-       "moveddeleted-notice-recent": "Atsiprašome, šis puslapis nesenai buvo ištrintas (per pastarąsias 24 valandas). Puslapio ištrynimo ir perkėlimo istorija yra pateikiama žemiau kaip nuoroda.",
+       "moveddeleted-notice-recent": "Atsiprašome, šis puslapis neseniai buvo ištrintas (per pastarąsias 24 valandas). Žemiau pateikiama detali puslapio ištrynimo ir perkėlimo istorija.",
        "log-fulllog": "Rodyti visą istoriją",
        "edit-hook-aborted": "Keitimas nutrauktas užlūžimo.\nTam nėra paaiškinimo.",
        "edit-gone-missing": "Negalima atnaujinti puslapio.\nGreičiausiai jis yra ištrintas.",
index 7c87e4d..854d077 100644 (file)
        "newimages-summary": "Оваа службена страница ги покажува скоро подигнатите податотеки.",
        "newimages-legend": "Филтрирај",
        "newimages-label": "Име на податотека (или дел од името):",
+       "newimages-user": "IP-адреса или корисничко име",
        "newimages-showbots": "Прикажувај подигања од ботови",
        "newimages-hidepatrolled": "Сокриј испатролриани подигања",
        "noimages": "Нема ништо.",
        "restrictionsfield-label": "Допуштени IP-опсези:",
        "restrictionsfield-help": "Една IP-адреса или CIDR-опсег по ред. За да овозможите сè, користете<br /><code>0.0.0.0/0</code><br /><code>::/0</code>",
        "revid": "преработка $1",
-       "pageid": "назнака на страницата $1"
+       "pageid": "назнака на страницата $1",
+       "rawhtml-notallowed": "&lt;html&gt;-ознаките не може да се користат вон нормалните страници."
 }
index 7289450..2ba8bb1 100644 (file)
        "newimages-summary": "Op deze speciale pagina worden de meest recent toegevoegde bestanden weergegeven.",
        "newimages-legend": "Bestandsnaam",
        "newimages-label": "Bestandsnaam (of deel daarvan):",
+       "newimages-user": "IP-adres of gebruikersnaam",
        "newimages-showbots": "Uploads door bots weergeven",
        "newimages-hidepatrolled": "Gecontroleerde uploads verbergen",
        "noimages": "Er is niets te zien.",
        "restrictionsfield-label": "Toegestane IP-ranges:",
        "restrictionsfield-help": "Een IP-adres of CIDR bereik per lijn. Om alles toe te staan, gebruik:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "versie $1",
-       "pageid": "Pagina-ID $1"
+       "pageid": "Pagina-ID $1",
+       "rawhtml-notallowed": "&lt;html&gt; tags kunnen alleen op normale pagina's geplaatst worden."
 }
index 19e7e17..4e9ef18 100644 (file)
        "login": "ଲଗ-ଇନ (Log in)",
        "login-security": "ଆପଣଙ୍କ ପରିଚୟ ଯାଞ୍ଚ କରନ୍ତୁ",
        "nav-login-createaccount": "ଲଗ ଇନ /ନୂଆ ଖାତା ଖୋଲନ୍ତୁ",
-       "userlogin": "ଲଗ ଇନ /ନୂଆ ଖାତା ଖୋଲନ୍ତୁ",
-       "userloginnocreate": "ଲଗ-ଇନ (Log in)",
        "logout": "ଲଗଆଉଟ",
        "userlogout": "ଲଗ ଆଉଟ",
        "notloggedin": "ଲଗ‌‌ ଇନ କରିନାହାନ୍ତି",
        "userlogin-noaccount": "ଖାତାଟିଏ ନାହିଁ?",
        "userlogin-joinproject": "{{SITENAME}}ରେ ଯୋଗଦିଅନ୍ତୁ",
-       "nologin": "ଖାତାଟିଏ ନାହିଁ? $1।",
-       "nologinlink": "ନୂଆ ଖାତାଟିଏ ଖୋଲନ୍ତୁ",
        "createaccount": "ନୂଆ ଖାତାଟିଏ ଖୋଲନ୍ତୁ",
-       "gotaccount": "ଆଗରୁ ଖାତାଟିଏ ଅଛି କି? $1.",
-       "gotaccountlink": "ଲଗ ଇନ (Log in)",
-       "userlogin-resetlink": "ଲଗଇନ ତଥ୍ୟ ସବୁ ଭୁଲିଗେଲେକି?",
        "userlogin-resetpassword-link": "ପାସୱାର୍ଡ଼ ମନେପଡୁନାହିଁ?",
        "userlogin-helplink2": "ଲଗ ଇନ ପାଇଁ ସହଯୋଗ କରନ୍ତୁ",
        "userlogin-loggedin": "ଆପଣ {{GENDER:$1|$1}} ନାମରେ ଲଗ ଇନ କରିଛନ୍ତି । ତଳ ଫର୍ମଟି ବ୍ୟବହାର କରି ଆଉ ଜଣେ ସଭ୍ୟ ଭାବେ ଲଗ ଇନ କରନ୍ତୁ ।",
        "createaccountmail": "ଏକ ଅସ୍ଥାୟୀ ପାସୱାର୍ଡ଼ ବ୍ୟବହାର କରନ୍ତୁ ଏବଂ ଏହାକୁ ତଳେ ଦିଆଯାଇଥିବା ଇ-ମେଲ ଠିକଣାକୁ ପଠାଇଦିଅନ୍ତୁ",
        "createaccountmail-help": "ପାସୱାର୍ଡ ନ ଜାଣି ମଧ୍ୟ ଆଉ ଜଣେ ବ୍ୟକ୍ତି ଙ୍କ ପାଇଁ ଖାତା ଖୋଲିବାକୁ ବ୍ୟବହାର କରାଯାଇପାରିବ।",
        "createacct-realname": "ପ୍ରକୃତ ନାମ (ଇଚ୍ଛାଧୀନ)",
-       "createaccountreason": "କାରଣ:",
        "createacct-reason": "କାରଣ",
        "createacct-reason-ph": "ଆପଣ ଅନ୍ୟଏକ ଖାତା କାହିଁକି ତିଆରି କରୁଛନ୍ତି",
        "createacct-reason-help": "ଖାତା ଖୋଲିବା ଲଗ ରେ ବାର୍ତା ଦେଖାଯାଇଛି",
        "nimagelinks": "$1 ଟି {{PLURAL:$1|ପୃଷ୍ଠା|ପୃଷ୍ଠା}}ରେ ବ୍ୟବହାର କରାଯାଇଅଛି",
        "ntransclusions": "$1ଟି {{PLURAL:$1|ପୃଷ୍ଠା|ପୃଷ୍ଠା}}ରେ ବ୍ୟବହାର କରାଯାଇଅଛି",
        "specialpage-empty": "ଏହି ଅନୁରୋଧ ପାଇଁ କିଛି ଫଳାଫଳ ମିଳିଲା ନାହିଁ ।",
-       "lonelypages": "à¬\85ନାଥ ପୃଷ୍ଠା ସବୁ",
+       "lonelypages": "à¬\8fà¬\95ାà¬\95à­\80 ପୃଷ୍ଠା ସବୁ",
        "lonelypagestext": "ତଲାଲିଖିତ ପୃଷ୍ଠାମାନ {{SITENAME}}ରେ ଥିବା ବାକି ପୃଷ୍ଠାମାନଙ୍କ ସହ ଯୋଡ଼ାଯାଇନାହିଁ ବା କେବଳ ସେଥିରେ ବ୍ୟବହାର କରାଯାଇନାହିଁ ।",
        "uncategorizedpages": "ଶ୍ରେଣୀହୀନ ପୃଷ୍ଠାସମୂହ",
        "uncategorizedcategories": "ଶ୍ରେଣୀହୀନ ଶ୍ରେଣୀସମୂହ",
        "prefixindex-strip": "ତାଲିକାରୁ ନାମ ଆଗରୁ ଲାଗୁଥିବା ଶବ୍ଦ ହଟାନ୍ତୁ",
        "shortpages": "ଛୋଟ ପୃଷ୍ଠାସମୂହ",
        "longpages": "ଲମ୍ବା ପୃଷ୍ଠା",
-       "deadendpages": "à¬\86à¬\97à¬\95à­\81 à¬¯à¬¾à¬\87ପାରà­\81ନଥିବା ପୃଷ୍ଠା",
+       "deadendpages": "à¬\85ନà­\8dà­\9f à¬ªà­\83ଷà­\8dଠା à¬¸à¬\99à­\8dà¬\97à­\87 à¬¯à­\8bଡ଼ା à¬¹à­\87à¬\87ନଥିବା ପୃଷ୍ଠା",
        "deadendpagestext": "ଏହି ପୃଷ୍ଠାସବୁ {{SITENAME}}ର ବାକି ପୃଷ୍ଠାମାନଙ୍କ ସଙ୍ଗେ ଯୋଡ଼ା ହୋଇ ନାହାନ୍ତି ।",
        "protectedpages": "କିଳାଯାଇଥିବା ପୃଷ୍ଠାମାନ",
        "protectedpages-indef": "କେବଳ ଆସିମୀତ କାଳ ପାଇଁ କିଳିବା",
        "logentry-upload-revert": "$1, $3 {{GENDER:$2|ଅପଲୋଡ଼ କଲେ}}",
        "log-name-tag": "ଟାଗ ଲଗ",
        "rightsnone": "(କିଛି ନାହିଁ)",
-       "revdelete-summary": "ସାରକଥା ସମ୍ପାଦନା",
        "feedback-adding": "ପୃଷ୍ଠାରେ ମତାମତ ଦେଉଛି...",
        "feedback-back": "ପଛକୁ ଯିବେ",
        "feedback-bugcheck": "ବହୁତ ଭଲ ! ଖାଲି ଦେଖିଦିଅନ୍ତୁ ଯେ ଏହା ଆଗରୁ ଥିବା [$1 known bugs] ମଧ୍ୟରୁ ନୁହେଁ ତ ।",
index 64a046e..6733566 100644 (file)
        "post-expand-template-argument-warning": "Uwaga – strona zawiera co najmniej jeden argument szablonu, który po rozwinięciu jest zbyt duży.\nArgument ten będzie pominięty.",
        "post-expand-template-argument-category": "Strony, w których użyto szablon z pominięciem argumentów",
        "parser-template-loop-warning": "Wykryto pętlę w szablonie [[$1]]",
+       "template-loop-category": "Strony z pętlami szablonów",
        "template-loop-category-desc": "Strona zawiera pętlę szablonów, czyli szablon, który wywołuje sam siebie rekursywnie.",
        "parser-template-recursion-depth-warning": "Przekroczno limit głębokości rekurencji szablonu ($1)",
        "language-converter-depth-warning": "Przekroczono ograniczenie ($1) głębokości zagnieżdżenia konwersji językowej",
        "newimages-summary": "Na tej stronie specjalnej prezentowane są ostatnio przesłane pliki.",
        "newimages-legend": "Filtruj",
        "newimages-label": "Nazwa pliku (lub jej fragment):",
+       "newimages-user": "Adres IP lub nazwa użytkownika",
        "newimages-showbots": "Pokaż pliki przesłane przez boty",
        "newimages-hidepatrolled": "Ukryj sprawdzone pliki",
        "noimages": "Brak plików do pokazania.",
        "restrictionsfield-label": "Dozwolone zakresy adresów IP:",
        "restrictionsfield-help": "Jeden adres IP lub zakres CIDR w wierszu. Aby zaznaczyć wszystkie, użyj:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "wersja $1",
-       "pageid": "ID strony: $1"
+       "pageid": "ID strony: $1",
+       "rawhtml-notallowed": "Znaczniki &lt;html&gt; nie mogą być stosowane poza zwykłymi stronami."
 }
index 2250b88..1d0e54a 100644 (file)
                        "!Silent",
                        "Joao Xavier",
                        "Nahime2015",
-                       "Alex Great"
+                       "Alex Great",
+                       "EVinente"
                ]
        },
        "tog-underline": "Sublinhar links:",
        "login": "Autenticar-se",
        "login-security": "Verificar sua identidade",
        "nav-login-createaccount": "Entrar / criar conta",
-       "userlogin": "Entrar / criar conta",
-       "userloginnocreate": "Entrar",
        "logout": "Sair",
        "userlogout": "Sair",
        "notloggedin": "Não autenticado(a)",
        "userlogin-noaccount": "Não possui uma conta?",
        "userlogin-joinproject": "Junte-se ao projeto {{SITENAME}}",
-       "nologin": "Não possui uma conta? $1.",
-       "nologinlink": "Criar uma conta",
        "createaccount": "Criar conta",
-       "gotaccount": "Já possui uma conta? '''$1'''.",
-       "gotaccountlink": "Autenticar-se",
-       "userlogin-resetlink": "Esqueceu-se do seu nome de usuário ou da senha?",
        "userlogin-resetpassword-link": "Esqueceu sua senha?",
        "userlogin-helplink2": "Ajuda com o login",
        "userlogin-loggedin": "Você já está conectado como {{GENDER:$1|$1}}.\nUse o formulário abaixo para iniciar sessão como outro usuário.",
        "createaccountmail": "Usar uma senha aleatória e temporária que será enviada ao endereço de e-mail especificado a seguir",
        "createaccountmail-help": "Pode ser utilizado para criar uma conta para outra pessoa sem saber a senha.",
        "createacct-realname": "Nome real (opcional)",
-       "createaccountreason": "Motivo:",
        "createacct-reason": "Motivo",
        "createacct-reason-ph": "Por que você está criando outra conta",
        "createacct-reason-help": "Mensagem mostrada no registro de criação de conta",
        "rcfilters-activefilters": "Filtros ativos",
        "rcfilters-restore-default-filters": "Restaurar filtros padrão",
        "rcfilters-clear-all-filters": "Limpar todos os filtros",
-       "rcfilters-search-placeholder": "Filtrar alterações recentes (procurar ou começar a digitar)",
+       "rcfilters-search-placeholder": "Filtrar mudanças recentes (procurar ou começar a digitar)",
        "rcfilters-invalid-filter": "Filtro inválido",
        "rcfilters-empty-filter": "Nenhum filtro ativo. Todas as contribuições são mostradas.",
        "rcfilters-filterlist-title": "Filtros",
        "rcfilters-filter-editsbyother-label": "Edições de outros",
        "rcfilters-filter-editsbyother-description": "Edições criadas por outros usuários (não você.)",
        "rcfilters-filtergroup-userExpLevel": "Nível de experiência (apenas para usuário registados)",
-       "rcfilters-filter-userExpLevel-newcomer-label": "Recém-chegados",
-       "rcfilters-filter-userExpLevel-newcomer-description": "Menos de 10 edições e 4 dias de atividade.",
-       "rcfilters-filter-userExpLevel-learner-label": "Aprendizes",
-       "rcfilters-filter-userExpLevel-learner-description": "Mais dias de atividade e edições do que \"Novatos\", mas menos do que \"Usuários experientes\".",
-       "rcfilters-filter-userExpLevel-experienced-label": "Usuários experientes",
-       "rcfilters-filter-userExpLevel-experienced-description": "Mais de 30 dias de atividade e 500 edições.",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Recém-chegados",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Menos de 10 edições e 4 dias de atividade.",
+       "rcfilters-filter-user-experience-level-learner-label": "Aprendizes",
+       "rcfilters-filter-user-experience-level-learner-description": "Mais dias de atividade e edições do que \"Novatos\", mas menos do que \"Usuários experientes\".",
+       "rcfilters-filter-user-experience-level-experienced-label": "Usuários experientes",
+       "rcfilters-filter-user-experience-level-experienced-description": "Mais de 30 dias de atividade e 500 edições.",
        "rcfilters-filtergroup-automated": "Contribuições automatizadas",
        "rcfilters-filter-bots-label": "Robô",
        "rcfilters-filter-bots-description": "Edições feitas por ferramentas automatizadas.",
        "rcshowhidecategorization": "$1 categorização de páginas",
        "rcshowhidecategorization-show": "Exibir",
        "rcshowhidecategorization-hide": "Esconder",
-       "rclinks": "Exibir as $1 alterações recentes feitas nos últimos $2 dias<br />$3",
+       "rclinks": "Exibir as $1 mudanças recentes feitas nos últimos $2 dias<br />$3",
        "diff": "dif",
        "hist": "his",
        "hide": "Ocultar",
        "newimages-summary": "Esta página especial mostra os arquivos mais recentemente enviados",
        "newimages-legend": "Filtrar",
        "newimages-label": "Nome de arquivo (ou parte dele):",
+       "newimages-user": "Endereço IP ou nome do usuário:",
        "newimages-showbots": "Mostrar uploads realizados por robôs",
        "newimages-hidepatrolled": "Ocultar os carregamentos patrulhados.",
        "noimages": "Nada para ver.",
        "autosumm-newblank": "Criar página em branco",
        "size-kilobytes": "$1 kB",
        "bitrate-kilobits": "$1&nbsp;kb/s",
-       "lag-warn-normal": "É possível que as alterações que sejam mais recentes do que $1 {{PLURAL:$1|segundo|segundos}} não sejam exibidas nesta lista.",
-       "lag-warn-high": "Devido a sérios problemas de latência no servidor do banco de dados, as alterações mais recentes que $1 {{PLURAL:$1|segundo|segundos}} poderão não ser exibidas nesta lista.",
+       "lag-warn-normal": "É possível que as mudanças que sejam mais recentes do que $1 {{PLURAL:$1|segundo|segundos}} não sejam exibidas nesta lista.",
+       "lag-warn-high": "Devido a sérios problemas de latência no servidor do banco de dados, as mudanças mais recentes que $1 {{PLURAL:$1|segundo|segundos}} poderão não ser exibidas nesta lista.",
        "watchlistedit-normal-title": "Editar lista de páginas vigiadas",
        "watchlistedit-normal-legend": "Remover títulos da lista de páginas vigiadas",
        "watchlistedit-normal-explain": "Os títulos das páginas de sua lista de vigiadas são exibidos abaixo.\nPara remover um título, marque a caixa ao lado do mesmo e clique \"{{int:Watchlistedit-normal-submit}}\".\nVocê pode também [[Special:EditWatchlist/raw|editar a lista de páginas vigiadas em forma de texto]].",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|atualizou}} etiquetas em revisão $4 da página $3 ({{PLURAL:$7|adicionou}} $6; {{PLURAL:$9|removeu}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|atualizou}} etiquetas na entrada de registro $5 da página $3 ({{PLURAL:$7|adicionou}} $6; {{PLURAL:$9|removeu}} $8)",
        "rightsnone": "(nenhum)",
-       "revdelete-summary": "resumo da edição",
        "rightslogentry-temporary-group": "$1 (temporário, até $2)",
        "feedback-adding": "Adicionando os comentários na página...",
        "feedback-back": "Voltar",
index 2793992..8905262 100644 (file)
        "page_first": "primeira",
        "page_last": "última",
        "histlegend": "Seleção de diferenças: use os botões de opção para marcar as versões que deseja comparar.\nPressione 'Enter' ou clique o botão \"{{int:compareselectedversions}}\".<br />\nLegenda: '''({{int:cur}})''' = diferenças para a versão atual,\n'''({{int:last}})''' = diferenças para a versão anterior,\n'''{{int:minoreditletter}}''' = edição menor",
-       "history-fieldset-title": "Navegar pelo histórico",
-       "history-show-deleted": "Somente eliminadas",
+       "history-fieldset-title": "Pesquisar revisões",
+       "history-show-deleted": "Somente revisões eliminadas",
        "histfirst": "Mais antigas",
        "histlast": "Mais novas",
        "historysize": "({{PLURAL:$1|1 byte|$1 bytes}})",
        "prefs-help-prefershttps": "Esta preferência terá efeito no seu próximo início de sessão.",
        "prefswarning-warning": "Fez alterações às suas preferências que não foram gravadas ainda.\nSe abandonar esta página sem clicar em \"$1\", as suas preferências não serão atualizadas.",
        "prefs-tabs-navigation-hint": "Dica: Pode usar as setas direita e esquerda do teclado para navegar entre os separadores.",
-       "userrights": "Gestão de privilégios {{GENDER:{{BASEPAGENAME}}|do utilizador|da utilizadora|de utilizador(a)}}",
+       "userrights": "Privilégios de utilizador",
        "userrights-lookup-user": "Selecionar um utilizador",
        "userrights-user-editname": "Introduza um nome de utilizador(a):",
        "editusergroup": "Carregar grupos do utilizador",
        "rcfilters-invalid-filter": "Filtro inválido",
        "rcfilters-empty-filter": "Não há filtros ativos. São mostradas todas as contribuições.",
        "rcfilters-filterlist-title": "Filtros",
+       "rcfilters-filterlist-whatsthis": "O que é isto?",
        "rcfilters-filterlist-feedbacklink": "Dê-nos a sua opinião sobre os novos filtros (beta)",
        "rcfilters-highlightbutton-title": "Realçar resultados",
        "rcfilters-highlightmenu-title": "Selecionar uma cor",
+       "rcfilters-highlightmenu-help": "Selecione uma cor para realçar esta propriedade",
        "rcfilters-filterlist-noresults": "Não foram encontrados filtros",
+       "rcfilters-noresults-conflict": "Não foram encontrados resultados porque os critérios de pesquisa estão em conflito",
        "rcfilters-filtergroup-registration": "Registo de utilizador",
        "rcfilters-filter-registered-label": "Registado",
        "rcfilters-filter-registered-description": "Editores autenticados.",
        "rcfilters-filter-bots-description": "Edições efectuadas por ferramentas automatizadas.",
        "rcfilters-filter-humans-label": "Ser humano (não robô)",
        "rcfilters-filter-humans-description": "Edições efectuadas por editores humanos.",
+       "rcfilters-filtergroup-reviewstatus": "Estado da revisão",
+       "rcfilters-filter-patrolled-label": "Patrulhadas",
+       "rcfilters-filter-patrolled-description": "Edições marcadas como patrulhadas.",
+       "rcfilters-filter-unpatrolled-label": "Não patrulhadas",
+       "rcfilters-filter-unpatrolled-description": "Edições não marcadas como patrulhadas.",
        "rcfilters-filtergroup-significance": "Significado",
        "rcfilters-filter-minor-label": "Edições menores",
        "rcfilters-filter-minor-description": "Edições marcadas pelo autor como menores.",
        "newimages-summary": "Esta página especial mostra os ficheiros mais recentemente enviados.",
        "newimages-legend": "Filtrar",
        "newimages-label": "Nome de ficheiro (ou parte dele):",
+       "newimages-user": "Endereço IP ou nome do utilizador",
        "newimages-showbots": "Mostrar carregamentos feitos por robôs",
        "newimages-hidepatrolled": "Ocultar carregamentos patrulhados",
        "noimages": "Nada para ver.",
index d1e6f08..f244431 100644 (file)
        "restrictionsfield-label": "Field label shown for restriction fields (e.g. on Special:BotPassword).",
        "restrictionsfield-help": "Placeholder text displayed in restriction fields (e.g. on Special:BotPassword).",
        "revid": "Used to format a revision ID number in text. Parameters:\n* $1 - Revision ID number.\n{{Identical|Revision}}",
-       "pageid": "Used to format a page ID number in text. Parameters:\n* $1 - Page ID number."
+       "pageid": "Used to format a page ID number in text. Parameters:\n* $1 - Page ID number.",
+       "rawhtml-notallowed": "Error message given when $wgRawHtml = true; is set and a user uses an &lt;html&gt; tag in a system message or somewhere other than a normal page."
 }
index c9e2ed9..3e799da 100644 (file)
        "newimages-summary": "На этой служебной странице показаны недавно загруженные файлы.",
        "newimages-legend": "Фильтр",
        "newimages-label": "Имя файла (или его часть):",
+       "newimages-user": "IP-адрес или имя участника",
        "newimages-showbots": "Показать загрузки ботов",
        "newimages-hidepatrolled": "Скрыть отпатрулированные загрузки",
        "noimages": "Изображения отсутствуют.",
index 9fe4e51..36d0d24 100644 (file)
        "newimages-summary": "Ta posebna stran prikazuje najnovejše naložene datoteke.",
        "newimages-legend": "Filter",
        "newimages-label": "Ime datoteke (ali njen del):",
+       "newimages-user": "IP-naslov ali uporabniško ime",
        "newimages-showbots": "Prikaži nalaganja botov",
        "newimages-hidepatrolled": "Skrij nadzorovana nalaganja",
        "noimages": "Nič ni videti.",
        "restrictionsfield-label": "Dovoljeni IP-obsegi:",
        "restrictionsfield-help": "En IP-naslov ali CIDR-območje na vrstico. Da omogočite vse, uporabite:\n<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "redakcija $1",
-       "pageid": "ID strani $1"
+       "pageid": "ID strani $1",
+       "rawhtml-notallowed": "Oznak &lt;html&gt; ni možno uporabljati izven normalnih strani."
 }
index 9268049..be9d072 100644 (file)
@@ -31,7 +31,8 @@
                        "Liridon",
                        "Ammartivari",
                        "Kosovastar",
-                       "Matma Rex"
+                       "Matma Rex",
+                       "Arianit"
                ]
        },
        "tog-underline": "Nënvizimi i lidhjes:",
@@ -75,7 +76,7 @@
        "tog-diffonly": "Mos trego përmbajtjen e faqes nën diff-e",
        "tog-showhiddencats": "Trego kategoritë e fshehura",
        "tog-norollbackdiff": "Mos trego ndrysh pas kryerjes së një rikthkimi",
-       "tog-useeditwarning": "Më paralajmëro kur unë lë një redaktim faqeje me ndryshime të paruajtura",
+       "tog-useeditwarning": "Më paralajmëro kur lë një redaktim faqeje me ndryshime të paruajtura",
        "tog-prefershttps": "Gjithmonë përdorni një lidhje të sigurt kur të kyçur",
        "underline-always": "Gjithmonë",
        "underline-never": "Asnjëherë",
        "mypreferencesprotected": "Ti nuk ke leje për të ndryshuar preferencat e tua.",
        "ns-specialprotected": "Faqet speciale nuk mund të redaktohen.",
        "titleprotected": "Ky titull është mbrojtur nga [[User:$1|$1]] dhe nuk mund të krijohet.\nArsyeja e dhënë është <em>$2</em>.",
-       "filereadonlyerror": "Nuk është në gjendje që të ndryshojë skedarin \"$1\" sepse depoja e skedarit \"$2\" është në formën vetëm-lexim.\n\nAdministratori i cili e mbylli atë e dha këtë shpjegim: \"$3\".",
+       "filereadonlyerror": "Nuk është në gjendje që të ndryshojë skedarin \"$1\" sepse depoja e skedarit \"$2\" është në formën vetëm-lexim.\n\nAdministratori sistemit i cili e mbylli atë e dha këtë shpjegim: \"$3\".",
        "invalidtitle-knownnamespace": "Titull jo i vlefshëm me hapësirën \"$2\" dhe teksti \"$3\"",
        "invalidtitle-unknownnamespace": "Titull jo i vlefshëm me numrin e panjohur të hapësirës së emrit $1 dhe tekstit \"$2\"",
        "exception-nologin": "I paqasur",
        "login": "Hyni",
        "login-security": "Verifiko identitetin tuaj",
        "nav-login-createaccount": "Hyni ose hapni një llogari",
-       "userlogin": "Hyni / hapni llogari",
-       "userloginnocreate": "Hyni",
        "logout": "Dalje",
        "userlogout": "Dalje",
        "notloggedin": "Nuk keni hyrë brenda",
        "userlogin-noaccount": "Nuk keni një llogari?",
        "userlogin-joinproject": "Bashkohu me ne në {{SITENAME}}",
-       "nologin": "Nuk keni një llogari? '''$1'''.",
-       "nologinlink": "Hapeni",
        "createaccount": "Hap një llogari",
-       "gotaccount": "Keni një llogari? '''$1'''.",
-       "gotaccountlink": "Identifikohuni",
-       "userlogin-resetlink": "Ke harruar të dhënat e tua të identifikimit?",
        "userlogin-resetpassword-link": "Keni harruar fjalëkalimin?",
        "userlogin-helplink2": "Ndihmë rreth identifikimit",
        "userlogin-loggedin": "Ju tashmë jeni i regjistruar si {{GENDER:$1|$1}}.\nPërdore formularin më poshtë për të hyrë si një përdorues tjetër.",
        "createacct-another-email-ph": "Vendos adresën e postës elektronike",
        "createaccountmail": "Përdorni një fjalëkalim të përkohshëm të rastit dhe  dërgojeni atë në adresën e specifikuar te email",
        "createacct-realname": "Emri i vërtetë (me dëshirë)",
-       "createaccountreason": "Arsyeja:",
        "createacct-reason": "Arsyeja",
        "createacct-reason-ph": "Pse ju jeni duke krijuar një llogari tjetër",
        "createacct-submit": "Krijoni llogarinë tuaj",
        "noemail": "Regjistri nuk ka adresë për përdoruesin \"$1\".",
        "noemailcreate": "Ju duhet të sigurojë një adresë e e-mailit të saktë.",
        "passwordsent": "Një fjalëkalim i ri është dërguar tek adresa e regjistruar për \"$1\". Provojeni përsëri hyrjen mbasi ta keni marrë fjalëkalimin.",
-       "blocked-mailpassword": "IP adresa juaj është bllokuar , si e tillë nuk lejohet të përdor funksionin pë rikthim të fjalkalimit , në mënyrë që të parandalohet abuzimi.",
+       "blocked-mailpassword": "Adresa IP e juaj është bllokuar për redaktim. Për të parandaluar abuzimin, nuk lejohet të përdoret funksioni pë rikthim të fjalëkalimit nga kjo adresë IP.",
        "eauthentsent": "Një email konfirmimi është dërguar në adresën e caktuar  të e-mailit.\nParase te dergohen emaile të tjerë  në llogarinë tuaj, duhet të ndiqni udhëzimet në email, për të konfirmuar se llogaria është  vërtetë e juaja.",
        "throttled-mailpassword": "Një kujtesë e fjalëkalimit është dërguar gjatë {{PLURAL:$1|orës|$1 orëve}} të kaluara. Për t'u mbrojtur nga abuzime vetëm një kujtesë dërgohet çdo {{PLURAL:$1|orë|$1 orë}}.",
        "mailerror": "Gabim duke dërguar postën: $1",
-       "acct_creation_throttle_hit": "Nuk lejoheni të krijoni më llogari pasi keni krijuar {{PLURAL:$1|1|$1}}.",
+       "acct_creation_throttle_hit": "Vizitorët në këtë wiki duke përdorur adresën tuaj IP kanë krijuar {{PLURAL:$1|1 llogari|$1 llogari}} në $2 e fundit, që është maksimumi i lejuar në këtë periudhë kohore.\nSi rezultat, vizitorët duke përdorur këtë adresë IP nuk mund të krijojnë llogari tjetër në këtë moment.",
        "emailauthenticated": "Adresa juaj është vërtetuar më $2 $3.",
        "emailnotauthenticated": "Adresa juaj email nuk është  konfirmuar ende.\nAsnjë email nuk do të dërgohet për ndonjë nga karakteristikat e mëposhtme.",
        "noemailprefs": "Detyrohet një adresë email-i për të përdorur këtë mjet.",
        "createaccount-title": "Hapja e llogarive për {{SITENAME}}",
        "createaccount-text": "Dikush ka përdorur adresën tuaj për të hapur një llogari tek {{SITENAME}} ($4) të quajtur \"$2\" me fjalëkalimin \"$3\".\nDuhet të hyni brenda dhe të ndërroni fjalëkalimin tani nëse ky person jeni ju. Përndryshe shpërfilleni këtë mesazh.",
        "login-throttled": "Keni bërë shumë tentime të njëpasnjëshme në fjalëkalimin e kësaj llogarie. Ju lutemi prisni para se te tentoni përsëri.",
-       "login-abort-generic": "login juaj ishte i pasuksesshëm - Ndërpre",
+       "login-abort-generic": "Regjistrimi juaj ishte i pasuksesshëm - U ndërpre",
        "login-migrated-generic": "Llogaria juaj ka emigruar, dhe emri juaj nuk ekzistojnë më në këtë wiki.",
        "loginlanguagelabel": "Gjuha: $1",
        "suspicious-userlogout": "Kërkesa juaj për të shkëputet u mohua sepse duket sikur është dërguar nga një shfletues të thyer ose caching proxy.",
        "resetpass-no-info": "Duhet të jeni i kyçur që të keni qasje direkte në këtë faqe.",
        "resetpass-submit-loggedin": "Ndrysho fjalëkalimin",
        "resetpass-submit-cancel": "Anulo",
-       "resetpass-wrong-oldpass": "Fjalëkalimi momental ose i përkohshëm nuk është i vlefshëm. Ndoshta tanimë me sukses keni ndërruar fjalëkalimin, ose keni kërkuar fjalëkalim të përkohshëm.",
+       "resetpass-wrong-oldpass": "Fjalëkalimi momental ose i përkohshëm nuk është i vlefshëm. \nNdoshta tanimë me sukses keni ndërruar fjalëkalimin, ose keni kërkuar fjalëkalim të përkohshëm.",
        "resetpass-recycled": "Ju lutemi rivendosni fjalëkalimin tuaj për diçka tjetër përveç fjalëkalimin tuaj të tanishme.",
        "resetpass-temp-emailed": "Ju keni hyrë në me një koditë përkohshme të dërguar me email .\nPër të përfundojë logging in, ju duhet të vendosni një fjalëkalim të ri këtu:",
        "resetpass-temp-password": "Fjalëkalimi i përkohshëm:",
        "resetpass-abort-generic": "Ndryshimi i fjalëkalimi  dështoi nga një zgjerim.",
        "resetpass-expired": "Fjalëkalimin tuaj ka skaduar. Ju lutem vendosni një fjalëkalim të ri për të hyr.",
        "resetpass-expired-soft": "Fjalëkalimi juaj ka skaduar dhe duhet të rivendoset. Ju lutem zgjidhni një fjalëkalim të ri tani, ose klikoni \"{{int:authprovider-resetpass-skip-label}}\" për ta rivendosur më vonë.",
-       "resetpass-validity-soft": "Fjalëkalimi juaj ka skaduar dhe duhet të rivendoset. Ju lutem zgjidhni një fjalëkalim të ri tani, ose klikoni \"{{int:authprovider-resetpass-skip-label}}\" për ta rivendosur më vonë.",
+       "resetpass-validity-soft": "Fjalëkalimi juaj ka skaduar:$1\n\nJu lutem zgjidhni një fjalëkalim të ri tani, ose klikoni \"{{int:authprovider-resetpass-skip-label}}\" për ta rivendosur më vonë.",
        "passwordreset": "Ndrysho fjalkalimin",
        "passwordreset-text-one": "Plotësoni këtë formular për të marrë një fjalëkalim të përkohshëm nëpërmjet postës elektronike.",
        "passwordreset-text-many": "{{PLURAL:$1|Mbush një nga fushat për të marrë një fjalëkalim të përkohshëm nëpërmjet postës elektronike.}}",
        "passwordreset-emailelement": "Emri i përdoruesit: \n$1\n\nFjalëkalimi i përkohshëm: \n$2",
        "passwordreset-emailsentemail": "Nëse kjo është një adresë emaili e regjistruar për llogarinë tuaj, atëherë një email për rivendosjen e fjalëkalimit do të dërgohet.",
        "changeemail": "Ndrysho ose hiq postën elektronike",
-       "changeemail-header": "Ndrysho llogarinë e adresës së postës elektronike",
+       "changeemail-header": "Plotësoni këtë formular për të ndryshuar adresën tuaj të postës elektronike. Nëse do të donit për të hequr ndërlidhjen e ndonjë adrese email nga llogaria juaj, lëreni bosh adresën e re të email-it kur të dorëzoni formularin.",
        "changeemail-no-info": "Ju duhet të identifikoheni në mënyrë që të keni të drejtë hyrjeje në këtë faqe.",
        "changeemail-oldemail": "Adresa aktuale e emailit:",
        "changeemail-newemail": "Adresa e re e emailit:",
        "sig_tip": "Firma juaj me gjithë kohë",
        "hr_tip": "vijë horizontale (përdoreni rallë)",
        "summary": "Përmbledhje:",
-       "subject": "Subjekt/titull:",
+       "subject": "Subjekt:",
        "minoredit": "Ky është një redaktim i vogël",
        "watchthis": "Vëzhgoje këtë faqe",
        "savearticle": "Kryej ndryshimet",
        "anonpreviewwarning": "\"Ju nuk jeni identifikuar. Ruajtja e ndryshimeve do të bëjë që adresa juaj IP të regjistrohet në historikun e redaktimeve të kësaj faqeje.\"",
        "missingsummary": "'''Vërejtje:''' Ju nuk keni lënë shënim për redaktimet e kryera.\nNëse klikoni \"{{int:savearticle}}\" përsëri, redaktimet tuaja do të ruhen pa shënim.",
        "missingcommenttext": "Ju lutemi bëni një koment më poshtë.",
-       "missingcommentheader": "'''Kujdes:''' Ju nuk keni dhënë një titull për këtë koment.\nNëse kryeni ndryshimet redaktimi juaj do të ruhet pa titull.",
-       "summary-preview": "Shqyrto përmbledhjen:",
-       "subject-preview": "Shqyrto titullin/subjektin:",
+       "missingcommentheader": "<strong>Kujdes:</strong>'''Nuk keni dhënë një titull për këtë koment.\nNëse klikoni \"{{int:savearticle}}\" prapë, redaktimi juaj do të ruhet pa titull.",
+       "summary-preview": "Parapamje e përmbledhjes së redaktimit:",
+       "subject-preview": "Parapamje e subjektit:",
        "blockedtitle": "Përdoruesi është bllokuar",
        "blockedtext": "'''Llogaria juaj ose adresa e IP është bllokuar'''\n\nBllokimi u bë nga $1 dhe arsyeja e dhënë ishte '''$2'''.\n\n*Fillimi i bllokimit: $8\n*Skadimi i bllokimit: $6\n*I bllokuari i shënjestruar: $7\n\nMund të kontaktoni $1 ose një nga [[{{MediaWiki:Grouppage-sysop}}|administruesit]] e tjerë për të diskutuar bllokimin.\n\nVini re se nuk mund t'i dërgoni email përdoruesit nëse nuk keni një adresë të saktë të dhënë tek [[Special:Preferences|parapëlqimet e përdoruesit]] ose nëse kjo është një nga mundësitë që ju është bllokuar.\n\nAdresa e IP-së që keni është $3 dhe numri i identifikimit të bllokimit është #$5. Përfshini këto dy të dhëna në çdo ankesë.",
        "autoblockedtext": "IP adresa juaj është bllokuar automatikisht sepse ishte përdorur nga një përdorues tjetër i cili ishte bllokuar nga $1.\nArsyeja e dhënë për këtë është:\n\n:''$2''\n\n* Fillimi i bllokimit: $8\n* Kalimi i kohës së bllokimit: $6\n* Zgjatja e bllokimit: $7\n\nJu mund të kontaktoni $1 ose një tjetër [[{{MediaWiki:Grouppage-sysop}}|administrues]] për ta diskutuar bllokimin.\n\nVini re : që nuk mund ta përdorni mundësinë \"dërgo porosi elektronike\" përveç nëse keni një postë elektronike të vlefshme të regjistruar në [[Special:Preferences|preferencat tuaja]] dhe nuk jeni bllokuar nga përdorimi i saj.\n\nIP adresa juaj e tanishme është $3 dhe ID e bllokimit është #$5.\nJu lutemi përfshini këto detaje në të gjitha kërkesat që i bëni.",
        "page_first": "I parë",
        "page_last": "Së fundmi",
        "histlegend": "Legjenda: <strong>({{int:cur}})</strong> = ndryshimet me versionin e tanishëm, <strong>({{int:last}})</strong> = ndryshimet me versionin e parardhshëm, <strong>{{int:minoreditletter}}</strong> = redaktim i vogël.",
-       "history-fieldset-title": "Shfleto historikun",
-       "history-show-deleted": "Vetëm versionet të grisur",
+       "history-fieldset-title": "Kërko versionin",
+       "history-show-deleted": "Vetëm versionet e grisura",
        "histfirst": "më të vjetër",
        "histlast": "më të rinj",
        "historysize": "({{PLURAL:$1|1 B|$1 B}})",
        "revdelete-confirm": "Ju lutem konfirmoni që keni ndër mënd ta bëni këtë, që i kuptoni pasojat, dhe që ju po veproni në përputhje me [[{{MediaWiki:Policy-url}}|politiken]].",
        "revdelete-suppress-text": "Shuarje duhet'''vetëm'''të përdoret për rastet e mëposhtme: \n * Potencialisht e informacionit shpifës \n * Informacion i pa kriter personal \n *: Adresat në shtëpi''dhe numrat e telefonit, numrat e sigurimeve shoqërore, etj''",
        "revdelete-legend": "Vendosni kufizimet për versionin:",
-       "revdelete-hide-text": "Fshihe tekstin e versionit",
+       "revdelete-hide-text": "Teksti i versionit",
        "revdelete-hide-image": "Fshih përmbajtjen skedës",
-       "revdelete-hide-name": "Fshihe veprimin dhe shënjestrën",
-       "revdelete-hide-comment": "fshih komentin e redaktimit",
+       "revdelete-hide-name": "Fshihe cakun dhe parametrat",
+       "revdelete-hide-comment": "Përmbledhje e redaktimit",
        "revdelete-hide-user": "Nofta e redaktuesit/Adresa IP",
        "revdelete-hide-restricted": "Ndalo të dhëna nga administrues si dhe të tjerë",
        "revdelete-radio-same": "(Mos ndryshoni)",
        "revdelete-unsuppress": "Hiq kufizimet nga versionet e restauruara",
        "revdelete-log": "Arsyeja:",
        "revdelete-submit": "Aplikoni tek {{PLURAL:$1|revision|versionet}} e zgjedhura",
-       "revdelete-success": "'''Dukshmëria e versioneve u vendos me sukses.'''",
+       "revdelete-success": "'''Dukshmëria e versioneve u freskua.'''",
        "revdelete-failure": "' ' 'Dukshmëria e rivizionit nuk mund të përditëohet\"\n$1",
-       "logdelete-success": "'''Dukshmëria e regjistrave u vendos me sukses.'''",
+       "logdelete-success": "U vendos dukshmëria e regjistrave.",
        "logdelete-failure": "'''Dukshmëria nuk u vendos:'''\n$1",
        "revdel-restore": "Ndrysho dukshmërinë",
        "pagehist": "Historiku i faqes",
        "logentry-rights-autopromote": "$1 është {{GENDER:$2|promovuar}} automatikisht nga $4 në $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|ngarkoi}} $3",
        "rightsnone": "(asgjë)",
-       "revdelete-summary": "përmbledhja redaktimit",
        "feedback-adding": "Duke shtuar përshtypjen te faqja...",
        "feedback-bugcheck": "Shumë mirë! Thjesht kontrolloni që nuk është një nga [$1 problemet e njohura].",
        "feedback-bugnew": "E kontrollova. Raporto një problem të ri",
index ba66d17..07d10c1 100644 (file)
@@ -23,7 +23,8 @@
                        "Сербијана",
                        "Xð",
                        "Matma Rex",
-                       "Mega Aleksandar"
+                       "Mega Aleksandar",
+                       "Asmen"
                ]
        },
        "tog-underline": "Podvlačenje veza:",
        "hebrew-calendar-m6": "Adar",
        "hebrew-calendar-m6a": "Adar I",
        "hebrew-calendar-m6b": "Adar II",
-       "hebrew-calendar-m7": "Nisan",
+       "hebrew-calendar-m7": "Nisane",
        "hebrew-calendar-m8": "Ijar",
        "hebrew-calendar-m9": "Sivan",
        "hebrew-calendar-m10": "Tamuz",
        "hebrew-calendar-m6-gen": "Adar",
        "hebrew-calendar-m6a-gen": "Adar I",
        "hebrew-calendar-m6b-gen": "Adar II",
-       "hebrew-calendar-m7-gen": "Nisan",
+       "hebrew-calendar-m7-gen": "Nisane",
        "hebrew-calendar-m8-gen": "Ijar",
        "hebrew-calendar-m9-gen": "Sivan",
        "hebrew-calendar-m10-gen": "Tamuz",
index 2f24898..29de95c 100644 (file)
        "post-expand-template-argument-warning": "Varning: Sidan innehåller en eller flera mallparametrar som blir för långa när de expanderas.\nDessa parametrar har uteslutits.",
        "post-expand-template-argument-category": "Sidor med uteslutna mallparametrar",
        "parser-template-loop-warning": "Mall-loop upptäckt: [[$1]]",
+       "template-loop-category": "Sidor med loopade mallar",
+       "template-loop-category-desc": "Sidan innehåller en loopad mall, d.v.s. en mall som anropar sig själv rekursivt.",
        "parser-template-recursion-depth-warning": "Gräns för mallrekursionsdjup överskriden ($1)",
        "language-converter-depth-warning": "Gräns för språkkonverteringsdjup överskriden ($1)",
        "node-count-exceeded-category": "Sidor där antalet noder har överskridits",
        "newimages-summary": "Den här specialsidan visar de senast uppladdade filerna.",
        "newimages-legend": "Filter",
        "newimages-label": "Filnamn (eller en del av det):",
+       "newimages-user": "IP-adress eller användarnamn",
        "newimages-showbots": "Visa uppladdningar av botar",
        "newimages-hidepatrolled": "Dölj patrullerade uppladdningar",
        "noimages": "Ingenting att se.",
        "restrictionsfield-label": "Tillåtna IP-intervall:",
        "restrictionsfield-help": "En IP-adress eller CIDR-intervall per rad. För att aktivera allting, använd<br /><code>0.0.0.0/0</code><br /><code>::/0</code>",
        "revid": "sidversion $1",
-       "pageid": "sid-ID $1"
+       "pageid": "sid-ID $1",
+       "rawhtml-notallowed": "&lt;html&gt;-taggar kan inte användas utanför normala sidor."
 }
index 043ab43..8c16c16 100644 (file)
@@ -18,7 +18,8 @@
                        "Macofe",
                        "Matma Rex",
                        "Stranger195",
-                       "Emem.calist"
+                       "Emem.calist",
+                       "Asmen"
                ]
        },
        "tog-underline": "Pagsasalungguhit ng link:",
        "hebrew-calendar-m6": "Adar",
        "hebrew-calendar-m6a": "Adar I",
        "hebrew-calendar-m6b": "Adar II",
-       "hebrew-calendar-m7": "Nisan",
+       "hebrew-calendar-m7": "Nisane",
        "hebrew-calendar-m8": "Iyar",
        "hebrew-calendar-m9": "Sivan",
        "hebrew-calendar-m10": "Tamuz",
        "hebrew-calendar-m6-gen": "Adar",
        "hebrew-calendar-m6a-gen": "Adar I",
        "hebrew-calendar-m6b-gen": "Adar II",
-       "hebrew-calendar-m7-gen": "Nisan",
+       "hebrew-calendar-m7-gen": "Nisane",
        "hebrew-calendar-m8-gen": "Iyar",
        "hebrew-calendar-m9-gen": "Sivan",
        "hebrew-calendar-m10-gen": "Tamuz",
index 7b0a85f..df2eb94 100644 (file)
                        "Superyetkin",
                        "Alikaan",
                        "By erdo can",
-                       "1917 Ekim Devrimi"
+                       "1917 Ekim Devrimi",
+                       "Asmen"
                ]
        },
        "tog-underline": "Bağlantıların altını çizme:",
        "tog-hideminor": "Son değişiklikler sayfasında küçük düzenlemeleri gizle",
-       "tog-hidepatrolled": "Son değişikliklerdeki devriyenin gördüğü düzenlemeleri gizle",
+       "tog-hidepatrolled": "Son değişiklikler sayfasında devriyenin gördüğü düzenlemeleri gizle",
        "tog-newpageshidepatrolled": "Yeni sayfalar listesinde devriyenin gördüğü sayfaları gizle",
        "tog-hidecategorization": "Sayfa kategorilendirmesini gizle",
        "tog-extendwatchlist": "İzleme listesini sadece en son değil, tüm değişiklikleri gösterecek şekilde genişlet",
        "tog-watchdeletion": "Sildiğim sayfaları ve dosyaları izleme listeme ekle",
        "tog-watchuploads": "Yüklediğim yeni dosyaları izleme listeme ekle",
        "tog-watchrollback": "Eski hâline getirdiğim sayfaları izleme listeme ekle",
-       "tog-minordefault": "Varsayılan olarak, bütün düzenlemeleri küçük düzenleme olarak işaretle",
-       "tog-previewontop": "Ön izlemeyi, düzenleme kutusunun öncesinde göster",
-       "tog-previewonfirst": "İlk düzenlemede ön izlemeyi göster",
+       "tog-minordefault": "Tüm düzenlemeleri varsayılan olarak küçük düzenleme olarak işaretle",
+       "tog-previewontop": "Düzenleme kutusu öncesinde önizleme göster",
+       "tog-previewonfirst": "İlk düzenlemede önizleme göster",
        "tog-enotifwatchlistpages": "İzleme listemdeki bir sayfa veya dosya değiştirilirse bana e-posta gönder",
        "tog-enotifusertalkpages": "Kullanıcı mesaj sayfamda değişiklik olduğunda bana e-posta gönder",
-       "tog-enotifminoredits": "Sayfalardaki ve dosyalardaki küçük değişikliklerde de bana e-posta gönder",
-       "tog-enotifrevealaddr": "Bildirim postalarında benim eposta adresimi açıkça göster",
+       "tog-enotifminoredits": "Sayfalardaki ve dosyalardaki küçük düzenlemelerde de bana e-posta gönder",
+       "tog-enotifrevealaddr": "Bildirim e-postalarında e-posta adresimi açıkça göster",
        "tog-shownumberswatching": "İzleyen kullanıcı sayısını göster",
        "tog-oldsig": "Mevcut imzanız:",
-       "tog-fancysig": "İmzaya vikimetin muamelesi yap (otomatik bir bağlantı olmadan)",
-       "tog-uselivepreview": "Canlı ön izlemeyi kullan",
-       "tog-forceeditsummary": "Özeti boş bıraktığımda beni uyar",
-       "tog-watchlisthideown": "İzleme listemde benim değişkliklerimi gizle",
-       "tog-watchlisthidebots": "İzleme listemde bot değişikliklerini gizle",
-       "tog-watchlisthideminor": "İzleme listemde küçük değişiklikleri gizle",
-       "tog-watchlisthideliu": "İzleme listemde, kayıtlı kullanıcılar tarafından yapılan değişiklikleri gizle",
-       "tog-watchlistreloadautomatically": "Filtre değiştiğinde izleme listesini otomatik yenile (JavaScript gerekir)",
-       "tog-watchlisthideanons": "İzleme listemde, anonim kullanıcılar tarafından yapılan değişiklikleri gizle",
-       "tog-watchlisthidepatrolled": "İzleme listesinde, devriye görmüş değişiklikleri gizle",
+       "tog-fancysig": "İmzayı viki metni olarak (otomatik bağlantı olmadan) işle",
+       "tog-uselivepreview": "Canlı önizleme kullan",
+       "tog-forceeditsummary": "Boş bir düzenleme özeti girdiğimde bana sor",
+       "tog-watchlisthideown": "Düzenlemelerimi izleme listesinde gizle",
+       "tog-watchlisthidebots": "Bot düzenlemelerini izleme listesinde gizle",
+       "tog-watchlisthideminor": "Küçük düzenlemeleri izleme listesinde gizle",
+       "tog-watchlisthideliu": "Oturum açmış kullanıcıların düzenlemelerini izleme listesinde gizle",
+       "tog-watchlistreloadautomatically": "Her süzgeç değişikliği olduğunda izleme listesini otomatik olarak yeniden yükle (JavaScript gerekir)",
+       "tog-watchlisthideanons": "Anonim kullanıcıların düzenlemelerini izleme listesinde gizle",
+       "tog-watchlisthidepatrolled": "Devriyenin gördüğü düzenlemeleri izleme listesinde gizle",
        "tog-watchlisthidecategorization": "Sayfa kategorilendirmesini gizle",
-       "tog-ccmeonemails": "Diğer kullanıcılara gönderdiğim e-postaların bir kopyasını bana da gönder",
-       "tog-diffonly": "Sayfa içeriğini, sürüm farklarının altında gösterme",
+       "tog-ccmeonemails": "Diğer kullanıcılara gönderdiğim e-postaların kopyalarını bana gönder",
+       "tog-diffonly": "Farkların altında sayfa içeriğini gösterme",
        "tog-showhiddencats": "Gizli kategorileri göster",
-       "tog-norollbackdiff": "Geri döndürme uygulandıktan sonra farkları gösterme",
-       "tog-useeditwarning": "Yaptığım değişiklikleri kaydetmeden sayfayı kapatırken beni uyar",
-       "tog-prefershttps": "Oturum açarken her zaman güvenli bağlantı kullanın",
-       "underline-always": "Daima",
-       "underline-never": "Asla",
-       "underline-default": "Tema ya da tarayıcı varsayılanı",
-       "editfont-style": "Düzenleme alanının yazı tipi:",
+       "tog-norollbackdiff": "Eski hâline getirdikten sonra farkı gösterme",
+       "tog-useeditwarning": "Bir düzenleme sayfasından değişiklikleri kaydetmeden ayrılırken beni uyar",
+       "tog-prefershttps": "Oturum açıkken her zaman güvenli bir bağlantı kullan",
+       "underline-always": "Her zaman",
+       "underline-never": "Hiçbir zaman",
+       "underline-default": "Görünüm ya da tarayıcı varsayılanı",
+       "editfont-style": "Düzenleme alanının yazı tipi biçemi:",
        "editfont-default": "Tarayıcı varsayılanı",
-       "editfont-monospace": "Sabit aralıklı yazı tipi",
-       "editfont-sansserif": "Çıkıntısız (Sans-serif) yazı tipi",
-       "editfont-serif": "Çıkıntılı (serif) yazı tipi",
+       "editfont-monospace": "Tek aralıklı yazı tipi",
+       "editfont-sansserif": "Sans-serif yazı tipi",
+       "editfont-serif": "Serif yazı tipi",
        "sunday": "Pazar",
        "monday": "Pazartesi",
        "tuesday": "Salı",
        "january": "Ocak",
        "february": "Şubat",
        "march": "Mart",
-       "april": "Nisan",
+       "april": "Nisane",
        "may_long": "Mayıs",
        "june": "Haziran",
        "july": "Temmuz",
        "january-gen": "Ocak",
        "february-gen": "Şubat",
        "march-gen": "Mart",
-       "april-gen": "Nisan",
+       "april-gen": "Nisane",
        "may-gen": "Mayıs",
        "june-gen": "Haziran",
        "july-gen": "Temmuz",
        "january-date": "$1 Ocak",
        "february-date": "$1 Şubat",
        "march-date": "$1 Mart",
-       "april-date": "$1 Nisan",
+       "april-date": "$1 Nisane",
        "may-date": "$1 Mayıs",
        "june-date": "$1 Haziran",
        "july-date": "$1 Temmuz",
        "december-date": "$1 Aralık",
        "period-am": "ÖÖ",
        "period-pm": "ÖS",
-       "pagecategories": "{{PLURAL:$1|Kategori|Kategoriler}}",
+       "pagecategories": "$1 kategori",
        "category_header": "\"$1\" kategorisindeki sayfalar",
        "subcategories": "Alt kategoriler",
-       "category-media-header": "\"$1\" kategorisindeki dosyalar",
-       "category-empty": "<em>Bu kategoride henüz herhangi bir sayfa ya da dosya bulunmamaktadır.</em>",
-       "hidden-categories": "{{PLURAL:$1|Gizli kategori|Gizli kategoriler}}",
+       "category-media-header": "\"$1\" kategorisindeki ortamlar",
+       "category-empty": "<em>Şu anda bu kategoride herhangi bir sayfa ya da Ortam bulunmuyor.</em>",
+       "hidden-categories": "$1 gizli kategori",
        "hidden-category-category": "Gizli kategoriler",
-       "category-subcat-count": "{{PLURAL:$2|Bu kategori sadece aşağıdaki alt kategoriyi içermektedir.|Bu kategoride aşağıdaki {{PLURAL:$1|alt kategori|$1 alt kategori}} dahil $2 alt kategori vardır.}}",
-       "category-subcat-count-limited": "Bu kategori aşağıdaki {{PLURAL:$1|alt kategoriye|$1 alt kategoriye}} sahiptir.",
+       "category-subcat-count": "{{PLURAL:$2|Bu kategori sadece aşağıdaki alt kategoriyi içermektedir.|Bu kategoride aşağıdaki $1 alt kategori dâhil toplam $2 alt kategori vardır.}}",
+       "category-subcat-count-limited": "Bu kategori aşağıdaki $1 alt kategoriye sahiptir.",
        "category-article-count": "{{PLURAL:$2|Bu kategori sadece aşağıdaki sayfayı içermektedir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|sayfa|$1 sayfa}} bu kategoridedir.}}",
        "category-article-count-limited": "Bu kategoride {{PLURAL:$1|sayfa|$1 sayfa}} bulunmaktadır.",
        "category-file-count": "{{PLURAL:$2|Bu kategori sadece aşağıdaki dosyayı içerir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|dosya|$1 dosya}} bu kategoridedir.}}",
        "category-file-count-limited": "Aşağıdaki {{PLURAL:$1|dosya|$1 dosya}} bu kategoridedir.",
-       "listingcontinuesabbrev": "(devam)",
+       "listingcontinuesabbrev": "devam",
        "index-category": "Dizinlenmiş sayfalar",
        "noindex-category": "Dizinlenmemiş sayfalar",
        "broken-file-category": "Bozuk dosya bağlantıları içeren sayfalar",
        "categoryviewer-pagedlinks": "($1) ($2)",
        "about": "Hakkında",
        "article": "İçerik sayfası",
-       "newwindow": "(yeni bir pencerede açılır)",
+       "newwindow": "(yeni pencerede açılır)",
        "cancel": "İptal",
        "moredotdotdot": "Dahası...",
        "morenotlisted": "Bu liste eksik olabilir.",
        "navigation": "Gezinti",
        "and": "&#32;ve",
        "qbfind": "Bul",
-       "qbbrowse": "Tara",
-       "qbedit": "Değiştir",
+       "qbbrowse": "Gözat",
+       "qbedit": "Düzenle",
        "qbpageoptions": "Bu sayfa",
        "qbmyoptions": "Sayfalarım",
        "faq": "SSS",
        "templatepage": "Şablon sayfasını görüntüle",
        "viewhelppage": "Yardım sayfasına görüntüle",
        "categorypage": "Kategori sayfasını görüntüle",
-       "viewtalkpage": "Tartışma sayfasını görüntüle",
+       "viewtalkpage": "Tartışmayı gör",
        "otherlanguages": "Diğer dillerde",
        "redirectedfrom": "($1 sayfasından yönlendirildi)",
        "redirectpagesub": "Yönlendirme sayfası",
        "wrongpassword": "Parolayı yanlış girdiniz. Lütfen tekrar deneyiniz.",
        "wrongpasswordempty": "Boş parola girdiniz. Lütfen tekrar deneyiniz.",
        "passwordtooshort": "Parolalar en az {{PLURAL:$1|1 karakter|$1 karakter}} uzunluğunda olmalı.",
-       "passwordtoolong": "Parolalar en az {{PLURAL:$1|1 karakter|$1 karakter}} uzunluğunda olmalı.",
+       "passwordtoolong": "Parolalar $1 karakterden uzun olamaz.",
        "passwordtoopopular": "Sıklıkla seçilen parolalar kullanılamaz. Lütfen daha özgün bir parola belirleyin.",
-       "password-name-match": "Şifreniz kullanıcı adınızdan farklı olmalıdır.",
-       "password-login-forbidden": "Bu kullanıcı adı ve şifre kullanımı yasaklanmıştır",
+       "password-name-match": "Parolanız kullanıcı adınızdan farklı olmalıdır.",
+       "password-login-forbidden": "Bu kullanıcı adı ve parolanın kullanımı yasaklanmıştır.",
        "mailmypassword": "Parolayı sıfırla",
        "passwordremindertitle": "{{SITENAME}} için yeni geçici şifre",
        "passwordremindertext": "Birisi (muhtemelen siz, $1 IP adresinden) {{SITENAME}} ($4) için yeni bir parola gönderilmesi istedi. \"$2\" kullanıcısına geçici olarak \"$3\" parolası oluşturuldu. Eğer bu sizin isteğiniz ise, oturum açıp yeni bir parola oluşturmanız gerekmektedir. Geçici parolanızın süresi {{PLURAL:$5|1 gün|$5 gün}} içinde dolacaktır.\n\nParola değişimini siz istemediyseniz veya parolanızı hatırladıysanız ve artık parolanızı değiştirmek istemiyorsanız; bu mesajı önemsemeyerek eski parolanızı kullanmaya devam edebilirsiniz.",
        "noemail": "\"$1\" adlı kullanıcıya kayıtlı bir e-posta adresi yok.",
        "noemailcreate": "Geçerli bir e-posta adresi sağlamalısınız",
        "passwordsent": "\"$1\" adına kayıtlı e-posta adresine yeni bir parola gönderildi. Oturumu, lütfen, iletiyi aldıktan sonra açın.",
-       "blocked-mailpassword": "IP adresiniz düzenleme yapmaya engellenmiştir. Kötüye kullanımın önüne geçmek için söz konusu IP adresinden şifre kurtarmaya izin verilmemektedir.",
+       "blocked-mailpassword": "IP adresinizin düzenleme yapması engellenmiştir. Kötüye kullanımı önlemek için, bu IP adresinin parola kurtarmadan yararlanmasına izin verilmemektedir.",
        "eauthentsent": "Belirtilen e-posta adresine onay kodu içeren bir e-posta gönderildi.\nHesaba başka bir e-posta gönderilmeden önce, e-postadaki yönergeleri uygulayıp, hesabın gerçekten size ait olduğunu onaylamanız gerekir.",
        "throttled-mailpassword": "Bir parola sıfırlama e-postası son {{PLURAL:$1|bir saat|$1 saat}} içinde zaten gönderildi. Hizmeti kötüye kullanmayı önlemek için, her {{PLURAL:$1|bir saatte|$1 saatte}} sadece bir parola sıfırlama e-postası gönderilecektir.",
        "mailerror": "E-posta gönderim hatası: $1",
        "emaildisabled": "Bu siteden e-posta gönderemezsiniz.",
        "accountcreated": "Hesap açıldı",
        "accountcreatedtext": "[[{{ns:User}}:$1|$1]]([[{{ns:User talk}}:$1|msj]])   için kullanıcı hesabı oluşturuldu.",
-       "createaccount-title": "{{SITENAME}} için yeni kullanıcı hesabı oluşturulması",
+       "createaccount-title": "{{SITENAME}} için hesap oluşturma",
        "createaccount-text": "Birisi {{SITENAME}} sitesinde ($4) sizin e-posta adresinizi kullarak, şifresi \"$3\" olan, \"$2\" isimli bir hesap oluşturdu.\n\nSiteye giriş yapmalı ve parolanızı değiştirmelisiniz.\n\nEğer kullanıcı hesabını yanlışlıkla oluşturmuş iseniz, bu mesajı yoksayabilirsiniz.",
-       "login-throttled": "Çok fazla yeni oturum açma girişiminde bulundunuz.\nDevam etmeden önce $1 bekleyin.",
+       "login-throttled": "Yakın zamanda çok fazla oturum açma girişiminde bulundunuz.\nLütfen yeniden denemeden önce $1 süreyle bekleyin.",
        "login-abort-generic": "Giriş başarısız - Durduruldu",
        "login-migrated-generic": "Hesabınız aktarılmış ve kullanıcı adınız artık bu vikide yok.",
        "loginlanguagelabel": "Dil: $1",
        "createacct-another-realname-tip": "Gerçek adınız isteğe bağlıdır.\nEğer gerçek adınızı belirtirseniz, çalışmalarınıza atıfta bulunulması için de kullanılacaktır.",
        "pt-login": "Giriş yap",
        "pt-login-button": "Oturum aç",
-       "pt-login-continue-button": "Oturum açmaya devam edin",
+       "pt-login-continue-button": "Oturum açmaya devam et",
        "pt-createaccount": "Hesap oluştur",
        "pt-userlogout": "Oturumu kapat",
-       "php-mail-error-unknown": "PHP's mail() fonksiyonunda bilinmeyen hata",
+       "php-mail-error-unknown": "PHP'nin mail() işlevinde bilinmeyen hata.",
        "user-mail-no-addy": "Bir e-posta adresi olmadan e-posta göndermeye çalıştı.",
        "user-mail-no-body": "Boş veya geçerli olmayan bir şekilde e-posta gönderilmeye çalışıldı.",
        "changepassword": "Parolayı değiştir",
        "previousrevision": "← Önceki hâli",
        "nextrevision": "Sonraki hâli →",
        "currentrevisionlink": "En güncel hâli",
-       "cur": "fark",
+       "cur": "gün",
        "next": "sonraki",
        "last": "son",
        "page_first": "ilk",
        "prefs-help-prefershttps": "Bu tercih bir sonraki girişinizde etkili olacaktır.",
        "prefswarning-warning": "Henüz kaydedilmemiş değişiklikler yaptınız. \"$\"'e basmadığınız takdirde tercihleriniz güncellenmeyecektir.",
        "prefs-tabs-navigation-hint": "İpucu: Sekmeler listesindeki sekmeler arasında gezinmek için sağ ve sol ok tuşlarını kullanabilirsiniz.",
-       "userrights": "Kullanıcı hakları yönetimi",
+       "userrights": "Kullanıcı hakları",
        "userrights-lookup-user": "Bir kullanıcı seç",
        "userrights-user-editname": "Kullanıcı adı giriniz:",
        "editusergroup": "Kullanıcı gruplarını gör",
        "grant-viewmywatchlist": "İzleme listeni gör",
        "newuserlogpage": "Yeni kullanıcı kayıtları",
        "newuserlogpagetext": "En son kaydolan kullanıcı kayıtları.",
-       "rightslog": "Kullanıcı hakları kayıtları",
-       "rightslogtext": "Kullanıcı hakları değişiklikleri kayıtları.",
+       "rightslog": "Kullanıcı hakları günlüğü",
+       "rightslogtext": "Bu, kullanıcı hakları değişiklikleri için bir günlüktür.",
        "action-read": "bu sayfayı okumaya",
        "action-edit": "bu sayfayı değiştirmeye",
        "action-createpage": "sayfa oluşturmaya",
        "magiclink-tracking-isbn": "ISBN sihirli bağlantısını kullanan sayfalar",
        "specialloguserlabel": "Kullanıcı:",
        "speciallogtitlelabel": "Hedef (başlık ya da kullanıcı):",
-       "log": "Kayıtlar",
+       "log": "Günlükler",
        "logeventslist-submit": "Göster",
        "all-logs-page": "Tüm ortak günlükler",
        "alllogstext": "{{SITENAME}} için mevcut tüm günlüklerin birleşik gösterimi.\nGünlük tipini, kullanıcı adını (büyük-küçük harf duyarlı), ya da etkilenen sayfayı (yine büyük-küçük harf duyarlı) seçerek görünümü daraltabilirsiniz.",
        "undeletedfiles": "{{PLURAL:$1|1 dosya|$1 dosya}} geri getirildi.",
        "cannotundelete": "Silme başarısız oldu:\n$1",
        "undeletedpage": "'''$1 sayfası geri getirildi'''\n\nÖnceki silme ve geri getirme işlemleri için [[Special:Log/delete|silme kayıtları]]na bakınız.",
-       "undelete-header": "Daha önce silinmiş sayfaları görmek için bakınız: [[Special:Log/delete|silme kayıtları]].",
+       "undelete-header": "Yakın zamanda silinen sayfaları görmek için [[Special:Log/delete|silme günlüğü]]ne bakın.",
        "undelete-search-title": "Silinen sayfaları ara",
        "undelete-search-box": "Silinmiş sayfaları ara",
        "undelete-search-prefix": "Şununla başlayan sayfaları göster:",
        "sp-contributions-suppresslog": "kullanıcının silinen katkıları",
        "sp-contributions-deleted": "kullanıcının silinen katkıları",
        "sp-contributions-uploads": "yüklenenler",
-       "sp-contributions-logs": "kayıtlar",
+       "sp-contributions-logs": "günlükler",
        "sp-contributions-talk": "mesaj",
        "sp-contributions-userrights": "kullanıcı hakları yönetimi",
        "sp-contributions-blocked-notice": "Bu kullanıcı engellenmiştir. Referans için en son engellenme kaydı aşağıda belirtilmiştir:",
        "specialpages-group-maintenance": "Bakım raporları",
        "specialpages-group-other": "Diğer özel sayfalar",
        "specialpages-group-login": "Oturum aç / hesap edin",
-       "specialpages-group-changes": "Son değişiklikler ve kayıtlar",
+       "specialpages-group-changes": "Son değişiklikler ve günlükler",
        "specialpages-group-media": "Dosya raporları ve yüklemeler",
        "specialpages-group-users": "Kullanıcılar ve hakları",
        "specialpages-group-highuse": "Çok kullanılan sayfalar",
index f907c59..c16cf51 100644 (file)
        "login": "Керү",
        "login-security": "Шәхесегезне раслагыз",
        "nav-login-createaccount": "Керү / теркәлү",
-       "userlogin": "Керү / теркәлү",
-       "userloginnocreate": "Керү",
        "logout": "Чыгу",
        "userlogout": "Чыгу",
        "notloggedin": "Сез хисап язмагызга кермәгәнсез",
        "userlogin-noaccount": "Хисап язмагыз юкмы?",
        "userlogin-joinproject": "{{SITENAME}} проектына керү",
-       "nologin": "Кулланучы исемең юкмы? '''$1'''",
-       "nologinlink": "Хисап язмасы төзү",
        "createaccount": "Яңа кулланучыны теркәү",
-       "gotaccount": "Сез инде теркәлдегезме? '''$1'''.",
-       "gotaccountlink": "Керү",
-       "userlogin-resetlink": "Серсүзегезне оныттыгызмы?",
        "userlogin-resetpassword-link": "Серсүзне алыштырыргамы?",
        "userlogin-helplink2": "Керү буенча ярдәм",
        "userlogin-createanother": "Башка хисап язмасы төзү",
        "createacct-another-email-ph": "Электрон почта юлламагызны кертегез",
        "createaccountmail": "Очраклы рәвештә ясалган ваҡытлыча серсузне файдаланырга һәм аны минем электрон почтама җибәрергә",
        "createacct-realname": "Чын исем (мәҗбүри түгел)",
-       "createaccountreason": "Сәбәп:",
        "createacct-reason": "Сәбәп",
        "createacct-reason-ph": "Нигә сез яңа зисап язмасы төзисез",
        "createacct-submit": "Хисап язмасы төзү",
        "logentry-newusers-autocreate": "{{GENDER:$2|кулланучының}} автоматик рәвештә $1 хисап язмасы төзелде",
        "logentry-upload-upload": "$1 {{GENDER:$2|йөкләде}} $3",
        "rightsnone": "(юк)",
-       "revdelete-summary": "үзгәртүләр тасвирламасы",
        "feedback-adding": "Фикерне сәхифәгә өстәү ...",
        "feedback-back": "Артка",
        "feedback-bugnew": "Мин тикшердем. Яңа хата турында хәбәр итү",
index 9df7278..9566f63 100644 (file)
        "post-expand-template-argument-warning": "'''Увага:''' Ця сторінка містить принаймні один аргумент шаблону, який має надто великий розмір для розгортання.\nЦі аргументи були проігноровані.",
        "post-expand-template-argument-category": "Сторінки, які містять пропущені аргументи шаблонів",
        "parser-template-loop-warning": "Виявлена петля у шаблонах: [[$1]]",
+       "template-loop-category": "Сторінки з петлями шаблонів",
+       "template-loop-category-desc": "Ця сторінка містить петлю шаблонів, тобто шаблон, який рекурсивно викликає сам себе.",
        "parser-template-recursion-depth-warning": "Перевищене обмеження глибини рекурсії шаблону ($1)",
        "language-converter-depth-warning": "Перевищене обмеження глибини мовного конвертора ($1)",
        "node-count-exceeded-category": "Сторінки, на яких перевищено лічильник вузлів",
        "page_first": "перша",
        "page_last": "остання",
        "histlegend": "Вибір версії: Позначте у круглих віконцях версії для порівняння і натисніть «Enter» або кнопку внизу.\n\nПояснення: (поточн.) = відмінності від поточної версії,\n(ост.) = відмінності від попередньої версії, '''м''' = незначне редагування",
-       "history-fieldset-title": "Ð\9fеÑ\80еглÑ\8fнÑ\83Ñ\82и Ñ\96Ñ\81Ñ\82оÑ\80Ñ\96Ñ\8e",
-       "history-show-deleted": "ТÑ\96лÑ\8cки Ð²Ð¸Ð»Ñ\83Ñ\87енÑ\96",
+       "history-fieldset-title": "Ð\9fоÑ\88Ñ\83к Ð²ÐµÑ\80Ñ\81Ñ\96й",
+       "history-show-deleted": "Ð\9bиÑ\88е Ð²Ð¸Ð»Ñ\83Ñ\87енÑ\96 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97",
        "histfirst": "найдавніші",
        "histlast": "найновіші",
        "historysize": "($1 {{PLURAL:$1|байт|байти|байтів}})",
        "prefs-help-prefershttps": "Цей параметр набуде чинності при вашому наступному вході у систему.",
        "prefswarning-warning": "Ви внесли в свої налаштування зміни, які ще не були збережені.\nЯкщо ви залишите цю сторінку, не натиснувши \"$1\", налаштування не будуть оновлені.",
        "prefs-tabs-navigation-hint": "Порада: Ви можете використовувати клавіші стрілок вліво і вправо для переходу між вкладками в списку вкладок.",
-       "userrights": "Ð\9aеÑ\80Ñ\83ваннÑ\8f Ð¿Ñ\80авами користувачів",
+       "userrights": "Ð\9fÑ\80ава користувачів",
        "userrights-lookup-user": "Виберіть користувача",
        "userrights-user-editname": "Введіть ім'я користувача:",
        "editusergroup": "Завантажити групи користувачів",
        "rcfilters-invalid-filter": "Недійсний фільтр",
        "rcfilters-empty-filter": "Без фільтрів. Показано всі зміни.",
        "rcfilters-filterlist-title": "Фільтри",
+       "rcfilters-filterlist-whatsthis": "Що це?",
        "rcfilters-filterlist-feedbacklink": "Надайте відгук про нові (бета) фільтри",
        "rcfilters-highlightbutton-title": "Виділити результати",
        "rcfilters-highlightmenu-title": "Вибрати колір",
        "rcfilters-highlightmenu-help": "Вибрати колір, щоб виділити цю властивість",
        "rcfilters-filterlist-noresults": "Фільтри не знайдено",
+       "rcfilters-noresults-conflict": "Результатів не знайдено через конфлікт у пошукових критеріях",
+       "rcfilters-state-message-subset": "Цей фільтр не має впливу, оскільки його результати включені в результати {{PLURAL:$2|цього, ширшого, фільтра|цих, ширших, фільтрів}} (спробуйте увімкнути виділення, щоб вирізнити їх): $1",
+       "rcfilters-state-message-fullcoverage": "Вибір усіх фільтрів у групі — це все одно, що не вибирати жодного з них, тобто таке фільтрування не має впливу. Гупа містить: $1",
        "rcfilters-filtergroup-registration": "Реєстрація користувача",
        "rcfilters-filter-registered-label": "Зареєстровані",
        "rcfilters-filter-registered-description": "Користувачі, що увійшли в систему.",
        "rcfilters-filter-unregistered-label": "Незареєстровані",
        "rcfilters-filter-unregistered-description": "Користувачі, які не ввійшли в систему.",
-       "rcfilters-filter-unregistered-conflicts-user-experience-level": "ФÑ\96лÑ\8cÑ\82Ñ\80 Â«Ð\9dезаÑ\80еÑ\94Ñ\81Ñ\82Ñ\80ованÑ\96» Ð½ÐµÐ°ÐºÑ\82ивний, Ð¾Ñ\81кÑ\96лÑ\8cки Ð¹Ð¾Ð³Ð¾ Ð²Ð¿Ð»Ð¸Ð² Ð½Ñ\96велÑ\8eÑ\94Ñ\82Ñ\8cÑ\81Ñ\8f {{PLURAL:$2|таким фільтром|такими фільтрами}} досвіду, {{PLURAL:$2|який знаходить|які знаходять}} лише зареєстрованих користувачів: $1",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Цей Ñ\84Ñ\96лÑ\8cÑ\82Ñ\80 ÐºÐ¾Ð½Ñ\84лÑ\96кÑ\82Ñ\83Ñ\94 Ð· {{PLURAL:$2|таким фільтром|такими фільтрами}} досвіду, {{PLURAL:$2|який знаходить|які знаходять}} лише зареєстрованих користувачів: $1",
        "rcfilters-filtergroup-authorship": "Авторство редагувань",
        "rcfilters-filter-editsbyself-label": "Ваші власні редагування",
        "rcfilters-filter-editsbyself-description": "Редагування, зроблені Вами.",
        "rcfilters-filter-editsbyother-label": "Редагування, зроблені іншими",
        "rcfilters-filter-editsbyother-description": "Редагування, виконані іншими користувачами (не Вами).",
        "rcfilters-filtergroup-userExpLevel": "Рівень досвіду (тільки для зареєстрованих користувачів)",
-       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Цей Ñ\84Ñ\96лÑ\8cÑ\82Ñ\80 Ð½ÐµÐ°ÐºÑ\82ивний, Ð¾Ñ\81кÑ\96лÑ\8cки Ð²Ñ\96н Ð·Ð½Ð°Ñ\85одиÑ\82Ñ\8c Ð»Ð¸Ñ\88е Ð·Ð°Ñ\80еÑ\94Ñ\81Ñ\82Ñ\80ованиÑ\85 ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87Ñ\96в, Ñ\82ож Ñ\84Ñ\96лÑ\8cÑ\82Ñ\80 Â«Ð\9dезаÑ\80еÑ\94Ñ\81Ñ\82Ñ\80ованÑ\96» Ð½Ñ\96велÑ\8eÑ\94 Ð¹Ð¾Ð³Ð¾ Ð²Ð¿Ð»Ð¸Ð².",
-       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "ФÑ\96лÑ\8cÑ\82Ñ\80 Â«Ð\9dезаÑ\80еÑ\94Ñ\81Ñ\82Ñ\80ованÑ\96» Ð¿ÐµÑ\80ебÑ\83ваÑ\94 Ð² ÐºÐ¾Ð½Ñ\84лÑ\96кÑ\82Ñ\96 Ð· Ð¾Ð´Ð½Ð¸Ð¼ Ð°Ð±Ð¾ Ð±Ñ\96лÑ\8cÑ\88е Ñ\84Ñ\96лÑ\8cÑ\82Ñ\80Ñ\96в Ð´Ð¾Ñ\81вÑ\96дÑ\83. Ð¤Ñ\96лÑ\8cÑ\82Ñ\80и Ð´Ð¾Ñ\81вÑ\96дÑ\83 Ð·Ð½Ð°Ñ\85одÑ\8fÑ\82Ñ\8c Ð»Ð¸Ñ\88е Ð·Ð°Ñ\80еÑ\94Ñ\81Ñ\82Ñ\80ованиÑ\85 ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87Ñ\96в. Ð\9aонÑ\84лÑ\96кÑ\82нÑ\96 Ñ\84Ñ\96лÑ\8cÑ\82Ñ\80и Ð¿Ð¾Ð·Ð½Ð°Ñ\87енÑ\96 Ð²Ð¸Ñ\89е Ñ\8fк Ð½ÐµÐ°ÐºÑ\82ивнÑ\96.",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "ФÑ\96лÑ\8cÑ\82Ñ\80и Ð´Ð¾Ñ\81вÑ\96дÑ\83 Ð·Ð½Ð°Ñ\85одÑ\8fÑ\82Ñ\8c Ð»Ð¸Ñ\88е Ð·Ð°Ñ\80еÑ\94Ñ\81Ñ\82Ñ\80ованиÑ\85 ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87Ñ\96в, Ñ\82ож Ñ\86ей Ñ\84Ñ\96лÑ\8cÑ\82Ñ\80 ÐºÐ¾Ð½Ñ\84лÑ\96кÑ\82Ñ\83Ñ\94 Ð· Ñ\84Ñ\96лÑ\8cÑ\82Ñ\80ом Â«Ð\9dезаÑ\80еÑ\94Ñ\81Ñ\82Ñ\80ованÑ\96».",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "ФÑ\96лÑ\8cÑ\82Ñ\80 Â«Ð\9dезаÑ\80еÑ\94Ñ\81Ñ\82Ñ\80ованÑ\96» ÐºÐ¾Ð½Ñ\84лÑ\96кÑ\82Ñ\83Ñ\94 Ð· Ð¾Ð´Ð½Ð¸Ð¼ Ð°Ð±Ð¾ Ð±Ñ\96лÑ\8cÑ\88е Ñ\84Ñ\96лÑ\8cÑ\82Ñ\80ами Ð´Ð¾Ñ\81вÑ\96дÑ\83, Ñ\8fкÑ\96 Ð·Ð½Ð°Ñ\85одÑ\8fÑ\82Ñ\8c Ð»Ð¸Ñ\88е Ð·Ð°Ñ\80еÑ\94Ñ\81Ñ\82Ñ\80ованиÑ\85 ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87Ñ\96в. Ð\9aонÑ\84лÑ\96кÑ\82нÑ\96 Ñ\84Ñ\96лÑ\8cÑ\82Ñ\80и Ð¿Ð¾Ð·Ð½Ð°Ñ\87енÑ\96 Ð²Ð¸Ñ\89е Ð² Ð´Ñ\96лÑ\8fнÑ\86Ñ\96 Ð°ÐºÑ\82ивниÑ\85 Ñ\84Ñ\96лÑ\8cÑ\82Ñ\80Ñ\96в.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Новачки",
        "rcfilters-filter-user-experience-level-newcomer-description": "Менше ніж 10 редагувань і 4 дні активності.",
        "rcfilters-filter-user-experience-level-learner-label": "Учні",
        "rcfilters-filter-categorization-description": "Записи про додавання або вилучення сторінок з категорій.",
        "rcfilters-filter-logactions-label": "Журнальні дії",
        "rcfilters-filter-logactions-description": "Адміністративні дії, створення облікових записів, видалення сторінок, завантаження файлів тощо.",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "Фільтр «Незначні редагування» конфліктує з одним або більше фільтрів за типом змін, оскільки певні типи змін не можна позначити як «незначні». Конфліктні фільтри позначені в ділянці активних фільтрів угорі.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Певні типи змін не можна позначити як «незначні», тож цей фільтр конфліктує з такими фільтрами за типом змін: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Цей фільтр за типом змін конфліктує з фільтром «Незначні редагування». Певні типи змін не можна позначати як «незначні».",
        "rcnotefrom": "Нижче знаходяться {{PLURAL:$5|редагування}} з <strong>$3, $4</strong> (відображено до <strong>$1</strong>).",
        "rclistfrom": "Показати редагування починаючи з $3 $2.",
        "rcshowhideminor": "$1 незначні редагування",
        "newimages-summary": "Ця спеціальна сторінка показує останні завантажені файли.",
        "newimages-legend": "Фільтр",
        "newimages-label": "Назва файлу (або її частина):",
+       "newimages-user": "IP-адреса або ім'я користувача.",
        "newimages-showbots": "Показати завантаження ботами",
        "newimages-hidepatrolled": "Приховати відпатрульовані завантаження",
        "noimages": "Файли відсутні.",
        "restrictionsfield-label": "Дозволені діапазони IP-адрес:",
        "restrictionsfield-help": "Одна IP-адреса або CIDR-діапазон на рядок. Щоб увімкнути все, використайте:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "версія $1",
-       "pageid": "ID сторінки $1"
+       "pageid": "ID сторінки $1",
+       "rawhtml-notallowed": "Теги &lt;html&gt; не можна використовувати за межами звичайних сторінок."
 }
index ca65ea9..fbb751c 100644 (file)
@@ -34,7 +34,8 @@
                        "Quenhitran",
                        "Matma Rex",
                        "Xð",
-                       "Nguyên Lê"
+                       "Nguyên Lê",
+                       "Asmen"
                ]
        },
        "tog-underline": "Gạch chân liên kết:",
        "login": "Đăng nhập",
        "login-security": "Xác minh danh tính của bạn",
        "nav-login-createaccount": "Đăng nhập / Mở tài khoản",
-       "userlogin": "Đăng nhập / Mở tài khoản",
-       "userloginnocreate": "Đăng nhập",
        "logout": "Đăng xuất",
        "userlogout": "Đăng xuất",
        "notloggedin": "Chưa đăng nhập",
        "userlogin-noaccount": "Bạn chưa có tài khoản?",
        "userlogin-joinproject": "Tham gia {{SITENAME}}",
-       "nologin": "Bạn chưa có tài khoản ở đây? '''$1'''.",
-       "nologinlink": "Mở tài khoản mới",
        "createaccount": "Mở tài khoản",
-       "gotaccount": "Đã mở tài khoản rồi? '''$1'''.",
-       "gotaccountlink": "Đăng nhập",
-       "userlogin-resetlink": "Quên mất thông tin đăng nhập?",
        "userlogin-resetpassword-link": "Quên mật khẩu?",
        "userlogin-helplink2": "Trợ giúp đăng nhập",
        "userlogin-loggedin": "Bạn đã đăng nhập với tên {{GENDER:$1}}$1.\nHãy sử dụng biểu mẫu ở dưới để đăng nhập với tài khoản người dùng khác.",
        "createaccountmail": "Sử dụng mật khẩu ngẫu nhiên tạm và gửi nó cho địa chỉ thư điện tử được chỉ định",
        "createaccountmail-help": "Có thể sử dụng để tạo tài khoản cho người khác mà không được biết mật khẩu.",
        "createacct-realname": "Tên thật (tùy chọn)",
-       "createaccountreason": "Lý do:",
        "createacct-reason": "Lý do",
        "createacct-reason-ph": "Nhập lý do tạo một tài khoản khác",
        "createacct-reason-help": "Thông điệp xuất hiện trong nhật trình tạo tài khoản",
        "rcfilters-filter-editsbyother-label": "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-userExpLevel-newcomer-label": "Người mới đến",
-       "rcfilters-filter-userExpLevel-newcomer-description": "Chưa tới 10 sửa đổi và 4 ngày hoạt động.",
-       "rcfilters-filter-userExpLevel-learner-label": "Người đang tập",
-       "rcfilters-filter-userExpLevel-learner-description": "Nhiều ngày hoạt động và sửa đổi hơn “Người mới đến” mà ít hơn “Người có kinh nghiệm”.",
-       "rcfilters-filter-userExpLevel-experienced-label": "Người có kinh nghiệm",
-       "rcfilters-filter-userExpLevel-experienced-description": "Hơn 30 ngày hoạt động và 500 sửa đổi.",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Người mới đến",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Chưa tới 10 sửa đổi và 4 ngày hoạt động.",
+       "rcfilters-filter-user-experience-level-learner-label": "Người đang tập",
+       "rcfilters-filter-user-experience-level-learner-description": "Nhiều ngày hoạt động và sửa đổi hơn “Người mới đến” mà ít hơn “Người có kinh nghiệm”.",
+       "rcfilters-filter-user-experience-level-experienced-label": "Người có kinh nghiệm",
+       "rcfilters-filter-user-experience-level-experienced-description": "Hơn 30 ngày hoạt động và 500 sửa đổi.",
        "rcfilters-filtergroup-automated": "Đóng góp tự động",
        "rcfilters-filter-bots-label": "Bot",
        "rcfilters-filter-bots-description": "Các sửa đổi của công cụ tự động.",
        "hebrew-calendar-m6": "Adar",
        "hebrew-calendar-m6a": "Adar 1",
        "hebrew-calendar-m6b": "Adar 2",
-       "hebrew-calendar-m7": "Nisan",
+       "hebrew-calendar-m7": "Nisane",
        "hebrew-calendar-m8": "Iyar",
        "hebrew-calendar-m9": "Sivan",
        "hebrew-calendar-m10": "Tamuz",
        "logentry-tag-update-revision": "$1 {{GENDER:$2}}đã cập nhật thẻ của phiên bản $4 của trang $3 ({{PLURAL:$7}}đã thêm $6; {{PLURAL:$9}}loại bỏ $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2}}đã cập nhật thẻ của mục nhật trình $5 của trang $3 ({{PLURAL:$7}}đã thêm $6; {{PLURAL:$9}}loại bỏ $8)",
        "rightsnone": "(không có)",
-       "revdelete-summary": "tóm lược sửa đổi",
        "rightslogentry-temporary-group": "$1 (tạm thời cho đến $2)",
        "feedback-adding": "Đang thêm thông tin phản hồi vào trang…",
        "feedback-back": "Lùi",
index aeff357..f03e693 100644 (file)
        "newimages-summary": "本特殊页面展示最后上传的文件。",
        "newimages-legend": "过滤",
        "newimages-label": "文件名(或它的一部份):",
+       "newimages-user": "IP地址或用户名",
        "newimages-showbots": "显示机器人上传",
        "newimages-hidepatrolled": "隐藏已巡查的上传",
        "noimages": "无可查看文件。",
        "restrictionsfield-label": "允许的IP段:",
        "restrictionsfield-help": "每行一个IP地址或CIDR段。要启用任何地址或地址段,可使用:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "修订版本$1",
-       "pageid": "页面ID$1"
+       "pageid": "页面ID$1",
+       "rawhtml-notallowed": "&lt;html&gt;标签不能在一般页面以外使用。"
 }
index f6cb76f..eda13db 100644 (file)
        "post-expand-template-argument-warning": "<strong>警告:</strong>此頁面有一個以上的模板參數過長。\n過長的參數會被直接忽略。",
        "post-expand-template-argument-category": "模板參數有部份被忽略的頁面",
        "parser-template-loop-warning": "偵測到模板迴圈:[[$1]]",
+       "template-loop-category": "有樣板迴圈的頁面",
+       "template-loop-category-desc": "頁面含有樣板迴圈,即會自己不斷呼叫自己樣板。",
        "parser-template-recursion-depth-warning": "超出模板遞迴深度限制 ($1)",
        "language-converter-depth-warning": "已超出語言轉換器深度限制 ($1)",
        "node-count-exceeded-category": "節點數量超出限制的頁面",
        "newimages-summary": "此特殊頁面中顯示最新上傳的檔案。",
        "newimages-legend": "搜尋",
        "newimages-label": "檔案名稱 (或部份檔名):",
+       "newimages-user": "IP 位址或使用者名稱",
        "newimages-showbots": "顯示由機器人上傳的檔案",
        "newimages-hidepatrolled": "隱藏己巡查上傳",
        "noimages": "無任何圖片。",
        "restrictionsfield-label": "允許的 IP 範圍:",
        "restrictionsfield-help": "一個 IP 位址或 CIDR 範圍一行,要開啟所有範圍可使用:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "修訂 $1",
-       "pageid": "頁面 ID $1"
+       "pageid": "頁面 ID $1",
+       "rawhtml-notallowed": "&lt;html&gt; 標籤無法在一般頁面之外使用。"
 }
index 2c22395..762c5e7 100644 (file)
@@ -11,7 +11,7 @@
     "eslint": "3.12.2",
     "eslint-config-wikimedia": "0.3.0",
     "grunt": "1.0.1",
-    "grunt-banana-checker": "0.5.0",
+    "grunt-banana-checker": "0.6.0",
     "grunt-contrib-copy": "1.0.0",
     "grunt-contrib-watch": "1.0.0",
     "grunt-eslint": "19.0.0",
index f5f2a04..f390b56 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:29Z
+ * Date: 2017-03-30T20:34:37Z
  */
 ( function ( OO ) {
 
index d6b5dcb..624cc57 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:34Z
+ * Date: 2017-03-30T20:34:41Z
  */
 .oo-ui-element-hidden {
   display: none !important;
index 3929842..bff0f50 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:34Z
+ * Date: 2017-03-30T20:34:41Z
  */
 .oo-ui-element-hidden {
   display: none !important;
index e6029dd..44b21ab 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:29Z
+ * Date: 2017-03-30T20:34:37Z
  */
 ( function ( OO ) {
 
@@ -2300,22 +2300,9 @@ OO.ui.mixin.GroupElement.prototype.getItemsFromData = function ( data ) {
  * @chainable
  */
 OO.ui.mixin.GroupElement.prototype.addItems = function ( items, index ) {
-       var i, len, item,
-               itemElements = [];
-
        // Mixin method
        OO.EmitterList.prototype.addItems.call( this, items, index );
 
-       for ( i = 0, len = items.length; i < len; i++ ) {
-               item = items[ i ];
-
-               // Add the item
-               item.setElementGroup( this );
-               itemElements.push( item.$element.get( 0 ) );
-       }
-
-       this.insertItemElements( items, index );
-
        this.emit( 'change', this.getItems() );
        return this;
 };
@@ -2324,11 +2311,12 @@ OO.ui.mixin.GroupElement.prototype.addItems = function ( items, index ) {
  * @inheritdoc
  */
 OO.ui.mixin.GroupElement.prototype.moveItem = function ( items, newIndex ) {
+       // insertItemElements expects this.items to not have been modified yet, so call before the mixin
+       this.insertItemElements( items, newIndex );
+
        // Mixin method
        newIndex = OO.EmitterList.prototype.moveItem.call( this, items, newIndex );
 
-       this.insertItemElements( items, newIndex );
-
        return newIndex;
 };
 
@@ -2336,37 +2324,29 @@ OO.ui.mixin.GroupElement.prototype.moveItem = function ( items, newIndex ) {
  * @inheritdoc
  */
 OO.ui.mixin.GroupElement.prototype.insertItem = function ( item, index ) {
+       item.setElementGroup( this );
+       this.insertItemElements( item, index );
+
        // Mixin method
        index = OO.EmitterList.prototype.insertItem.call( this, item, index );
 
-       this.insertItemElements( item, index );
-
        return index;
 };
 
 /**
- * Insert element into the group
+ * Insert elements into the group
  *
- * @param {OO.ui.Element|OO.ui.Element[]} itemWidgets Items to insert
+ * @private
+ * @param {OO.ui.Element} itemWidget Item to insert
  * @param {number} index Insertion index
  */
-OO.ui.mixin.GroupElement.prototype.insertItemElements = function ( itemWidgets, index ) {
-       var i, len, item;
-
-       if ( !Array.isArray( itemWidgets ) ) {
-               itemWidgets = [ itemWidgets ];
-       }
-
-       for ( i = 0, len = itemWidgets.length; i < len; i++ ) {
-               item = itemWidgets[ i ];
-
-               if ( index === undefined || index < 0 || index >= this.items.length ) {
-                       this.$group.append( item.$element.get( 0 ) );
-               } else if ( index === 0 ) {
-                       this.$group.prepend( item.$element.get( 0 ) );
-               } else {
-                       this.items[ index ].$element.before( item.$element.get( 0 ) );
-               }
+OO.ui.mixin.GroupElement.prototype.insertItemElements = function ( itemWidget, index ) {
+       if ( index === undefined || index < 0 || index >= this.items.length ) {
+               this.$group.append( itemWidget.$element );
+       } else if ( index === 0 ) {
+               this.$group.prepend( itemWidget.$element );
+       } else {
+               this.items[ index ].$element.before( itemWidget.$element );
        }
 };
 
index 4d8061f..8538b6e 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:29Z
+ * Date: 2017-03-30T20:34:37Z
  */
 ( function ( OO ) {
 
index ddd17f5..983bc69 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:34Z
+ * Date: 2017-03-30T20:34:41Z
  */
 .oo-ui-popupTool .oo-ui-popupWidget-popup,
 .oo-ui-popupTool .oo-ui-popupWidget-anchor {
index 9248f7d..502b7b1 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:34Z
+ * Date: 2017-03-30T20:34:41Z
  */
 .oo-ui-tool.oo-ui-widget-enabled {
   -webkit-transition: background-color 100ms;
index 353a5b5..4cc0db1 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:29Z
+ * Date: 2017-03-30T20:34:37Z
  */
 ( function ( OO ) {
 
index 75e2180..a9b31da 100644 (file)
@@ -1,35 +1,35 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:34Z
+ * Date: 2017-03-30T20:34:41Z
  */
-.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle,
-.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle.oo-ui-widget {
+.oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ),
+.oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ).oo-ui-widget {
   cursor: move;
   cursor: url(images/grab.cur );
   cursor: -webkit-grab;
   cursor:    -moz-grab;
   cursor:         grab;
 }
-.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle:active {
+.oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ):active {
   cursor: url(images/grabbing.cur );
   cursor: -webkit-grabbing;
   cursor:    -moz-grabbing;
   cursor:         grabbing;
 }
-.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle.oo-ui-widget-disabled,
-.oo-ui-widget-disabled .oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle {
+.oo-ui-draggableElement-handle.oo-ui-widget-disabled,
+.oo-ui-widget-disabled .oo-ui-draggableElement-handle {
   cursor: default;
 }
-.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-placeholder {
+.oo-ui-draggableElement-placeholder {
   opacity: 0.2;
 }
-.oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable ) {
+.oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement {
   display: inline-block;
 }
 .oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous > .oo-ui-panelLayout-scrollable {
index 656a9be..8438a3d 100644 (file)
@@ -1,38 +1,38 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:34Z
+ * Date: 2017-03-30T20:34:41Z
  */
-.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle,
-.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle.oo-ui-widget {
+.oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ),
+.oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ).oo-ui-widget {
   cursor: move;
   cursor: url(images/grab.cur );
   cursor: -webkit-grab;
   cursor:    -moz-grab;
   cursor:         grab;
 }
-.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle:active {
+.oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ):active {
   cursor: url(images/grabbing.cur );
   cursor: -webkit-grabbing;
   cursor:    -moz-grabbing;
   cursor:         grabbing;
 }
-.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle.oo-ui-widget-disabled,
-.oo-ui-widget-disabled .oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle {
+.oo-ui-draggableElement-handle.oo-ui-widget-disabled,
+.oo-ui-widget-disabled .oo-ui-draggableElement-handle {
   cursor: default;
 }
-.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-placeholder {
+.oo-ui-draggableElement-placeholder {
   opacity: 0.2;
 }
-.oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable ) {
+.oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement {
   display: inline-block;
 }
-.oo-ui-draggableElement:not( .oo-ui-draggableElement-undraggable )-handle:focus {
+.oo-ui-draggableElement-handle:focus {
   border-radius: 2px;
   box-shadow: inset 0 0 0 1px #36c, 0 0 0 1px #36c;
   outline: 0;
index 6b5d3bd..3482256 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:29Z
+ * Date: 2017-03-30T20:34:37Z
  */
 ( function ( OO ) {
 
index e6d624d..4842a46 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:34Z
+ * Date: 2017-03-30T20:34:41Z
  */
 .oo-ui-actionWidget.oo-ui-pendingElement-pending {
   background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
index 300539d..beca510 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:34Z
+ * Date: 2017-03-30T20:34:41Z
  */
 .oo-ui-window {
   background: transparent;
index 2274591..1cbec34 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.20.1
+ * OOjs UI v0.20.2
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-03-28T22:19:29Z
+ * Date: 2017-03-30T20:34:37Z
  */
 ( function ( OO ) {
 
index 3fafe3c..64651fc 100644 (file)
@@ -1,12 +1,6 @@
 {
        "prefix": "oo-ui-icon",
        "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#FFFFFF",
-                       "global": true
-               }
-       },
        "images": {
                "add": { "file": "images/icons/add.svg" },
                "advanced": { "file": "images/icons/advanced.svg" },
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/add-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/add-invert.png
deleted file mode 100644 (file)
index 8deeddf..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/add-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/add-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/add-invert.svg
deleted file mode 100644 (file)
index a2d49a1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <g id="add">
-        <path id="plus" d="M13 6h-2v5H6v2h5v5h2v-5h5v-2h-5z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.png
deleted file mode 100644 (file)
index b009bff..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/advanced-invert.svg
deleted file mode 100644 (file)
index 2e06beb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <g id="settings">
-        <path id="gear" d="M20.87 13.476c.078-.482.13-.972.13-1.476s-.052-.994-.13-1.476l-2.464-.26a6.618 6.618 0 0 0-.648-1.57l1.558-1.923a8.97 8.97 0 0 0-2.086-2.08L15.3 6.246a6.543 6.543 0 0 0-1.57-.648l-.26-2.463C12.996 3.054 12.506 3 12 3s-.994.052-1.476.13l-.26 2.464c-.554.15-1.08.367-1.57.648L6.772 4.685A8.995 8.995 0 0 0 4.687 6.77L6.245 8.7c-.28.488-.5 1.015-.648 1.57l-2.463.26c-.08.48-.132.97-.132 1.475s.052.995.13 1.477l2.464.26c.15.554.367 1.08.648 1.57l-1.558 1.92a8.984 8.984 0 0 0 2.087 2.086l1.925-1.558c.488.28 1.015.5 1.57.648l.26 2.463c.48.078.97.13 1.475.13s.994-.052 1.476-.13l.26-2.464a6.67 6.67 0 0 0 1.57-.648l1.92 1.558a8.984 8.984 0 0 0 2.083-2.087l-1.555-1.93c.28-.487.5-1.014.647-1.57l2.463-.26zM12 15.998a3.998 3.998 0 1 1 0-7.996 3.998 3.998 0 0 1 0 7.996z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr-invert.png
deleted file mode 100644 (file)
index 084cbc7..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr-invert.svg
deleted file mode 100644 (file)
index 8098166..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M15 5H8c-1.1 0-2 .9-2 2v3h3v11l4-3 4 3V7c0-1.1-.9-2-2-2zM9 9H7V7c0-.6.4-1 1-1h1v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl-invert.png
deleted file mode 100644 (file)
index 125fb74..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl-invert.svg
deleted file mode 100644 (file)
index bc3ef4e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr-invert.png
deleted file mode 100644 (file)
index 027df2d..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr-invert.svg
deleted file mode 100644 (file)
index 792b4aa..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M3 6v11c0 1.7 1.3 3 3 3h15V6H3zm2.5 1C6.3 7 7 7.7 7 8.5S6.3 10 5.5 10 4 9.3 4 8.5 4.7 7 5.5 7zM20 19H6c-1.1 0-2-.9-2-2v-6h16v8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl-invert.png
deleted file mode 100644 (file)
index 51937b7..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl-invert.svg
deleted file mode 100644 (file)
index 079a62c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.png
deleted file mode 100644 (file)
index b7529a2..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/cancel-invert.svg
deleted file mode 100644 (file)
index a7c1dcd..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <g id="cancel">
-        <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/check-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/check-invert.png
deleted file mode 100644 (file)
index a5f25e7..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/check-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/check-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/check-invert.svg
deleted file mode 100644 (file)
index 68e6c3d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M7.105 13.473l1.422-1.423 1.9 1.902L15.237 7l1.66 1.148L10.634 17z" id="check"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/clear-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/clear-invert.png
deleted file mode 100644 (file)
index ec90ed9..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/clear-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/clear-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/clear-invert.svg
deleted file mode 100644 (file)
index 09df1d3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <g id="clear">
-        <path id="circle-with-cross" d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 11l-1 1-3-3-3 3-1-1 3-3-3-3 1-1 3 3 3-3 1 1-3 3 3 3z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.png
deleted file mode 100644 (file)
index fdd3e51..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.svg
deleted file mode 100644 (file)
index c11e11e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <g id="clock">
-        <path id="circle" d="M12 5a7 7 0 1 0 0 14 7 7 0 0 0 0-14zm0 1.25a5.75 5.75 0 0 1 0 11.5 5.75 5.75 0 0 1 0-11.5z"/>
-        <path id="hands" d="M15.605 14.08s-1.674-1.36-2.81-2.15c.504-1.683 1.194-4.605 1.194-4.605s-3.057 3.765-3.427 4.703c-.325.82 1.024 1.55 1.647 1.178 1.335.387 3.394.873 3.394.873z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/close-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/close-invert.png
deleted file mode 100644 (file)
index 05d6e22..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/close-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/close-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/close-invert.svg
deleted file mode 100644 (file)
index f100370..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-  <path d="M17.717 7.697l-1.414-1.414L12 10.586 7.697 6.283 6.283 7.697 10.586 12l-4.303 4.303 1.414 1.414L12 13.414l4.303 4.303 1.414-1.414L13.414 12z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.png
deleted file mode 100644 (file)
index 7d57d11..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/ellipsis-invert.svg
deleted file mode 100644 (file)
index b169c7b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.png
deleted file mode 100644 (file)
index f49ebeb..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.svg
deleted file mode 100644 (file)
index d32e478..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.png
deleted file mode 100644 (file)
index efba220..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.svg
deleted file mode 100644 (file)
index 14be7ff..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr-invert.png
deleted file mode 100644 (file)
index 2949648..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr-invert.svg
deleted file mode 100644 (file)
index d533779..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl-invert.png
deleted file mode 100644 (file)
index c0f155a..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl-invert.svg
deleted file mode 100644 (file)
index f99e338..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/heart-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/heart-invert.png
deleted file mode 100644 (file)
index 2070997..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/heart-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/heart-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/heart-invert.svg
deleted file mode 100644 (file)
index ab9e536..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M15 7c-2 0-3 2-3 2s-1-2-3-2c-2.5 0-4 2-4 4 0 4 5 5 7 8 2-3 7-4 7-8 0-2-1.5-4-4-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.png
deleted file mode 100644 (file)
index 35d8f22..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/help-ltr-invert.svg
deleted file mode 100644 (file)
index 68a64bd..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <g id="help">
-        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.92 9.916 9.92 5.48 0 9.92-4.44 9.92-9.913 0-5.477-4.44-9.915-9.913-9.915zm.002 18a8.084 8.084 0 1 1 0-16.168 8.084 8.084 0 0 1 0 16.168z"/>
-        <g id="question-mark">
-            <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
-            <path id="bottom" d="M11 16h2v2h-2z"/>
-        </g>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.png
deleted file mode 100644 (file)
index 9cb8cb2..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/help-rtl-invert.svg
deleted file mode 100644 (file)
index 2c16f5f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <g id="help">
-        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.92-9.916 9.92-5.48 0-9.92-4.44-9.92-9.913 0-5.477 4.44-9.915 9.913-9.915zm-.002 18a8.084 8.084 0 1 0 0-16.168 8.084 8.084 0 0 0 0 16.168z"/>
-        <g id="question-mark">
-            <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
-            <path id="bottom" d="M13 16h-2v2h2z"/>
-        </g>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/key-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/key-ltr-invert.png
deleted file mode 100644 (file)
index 265da14..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/key-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/key-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/key-ltr-invert.svg
deleted file mode 100644 (file)
index 454f6a9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M14.5 4C11.5 4 9 6.5 9 9.5c0 1 .3 1.9.7 2.8L4 18v2h4v-2h2v-2h2l1.2-1.2c.4.1.9.2 1.3.2 3 0 5.5-2.5 5.5-5.5S17.5 4 14.5 4zM16 9c-.8 0-1.5-.7-1.5-1.5S15.2 6 16 6s1.5.7 1.5 1.5S16.8 9 16 9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/key-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/key-rtl-invert.png
deleted file mode 100644 (file)
index a5f2904..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/key-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/key-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/key-rtl-invert.svg
deleted file mode 100644 (file)
index 6b7fd63..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr-invert.png
deleted file mode 100644 (file)
index d7d1a0b..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr-invert.svg
deleted file mode 100644 (file)
index d137db6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl-invert.png
deleted file mode 100644 (file)
index 1b0275e..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl-invert.svg
deleted file mode 100644 (file)
index 792025b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr-invert.png
deleted file mode 100644 (file)
index fb1bb0c..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr-invert.svg
deleted file mode 100644 (file)
index 14f148a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl-invert.png
deleted file mode 100644 (file)
index dcd2f15..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl-invert.svg
deleted file mode 100644 (file)
index e3ce38b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr-invert.png
deleted file mode 100644 (file)
index 5e432b0..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr-invert.svg
deleted file mode 100644 (file)
index f7a92e0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl-invert.png
deleted file mode 100644 (file)
index f9a742e..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl-invert.svg
deleted file mode 100644 (file)
index ef51a66..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr-invert.png
deleted file mode 100644 (file)
index ca07bcc..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr-invert.svg
deleted file mode 100644 (file)
index 1442004..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M18 8h-1V4H7v4H3v6c0 1.7 1.3 3 3 3h1v3h10v-3h4v-6c0-1.7-1.3-3-3-3zM8 5h8v3H8V5zm8 14H8v-6h8v6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl-invert.png
deleted file mode 100644 (file)
index 95ef54a..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl-invert.svg
deleted file mode 100644 (file)
index 0d1cd83..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.png
deleted file mode 100644 (file)
index 4b2913b..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/search-ltr-invert.svg
deleted file mode 100644 (file)
index 10490ea..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <g id="search">
-        <path id="magnifying-glass" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.png
deleted file mode 100644 (file)
index 0409aa4..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/search-rtl-invert.svg
deleted file mode 100644 (file)
index 81cab99..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <g id="search">
-        <path id="magnifying-glass" d="M13.5 4a6.5 6.5 0 1 1-2.844 12.344L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438A6.426 6.426 0 0 1 7 10.5 6.5 6.5 0 0 1 13.5 4zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.png
deleted file mode 100644 (file)
index 34c6afe..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/settings-invert.svg
deleted file mode 100644 (file)
index 0cda50c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <g id="settings">
-        <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/subtract-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/subtract-invert.png
deleted file mode 100644 (file)
index 4e58b70..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/subtract-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/subtract-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/subtract-invert.svg
deleted file mode 100644 (file)
index 9595ac6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-       <path d="M18 13H6v-2h12"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/sun-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/sun-ltr-invert.png
deleted file mode 100644 (file)
index 2bc944a..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/sun-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/sun-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/sun-ltr-invert.svg
deleted file mode 100644 (file)
index f533999..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9s-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4s.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4s-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9s.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8s.1-.6.3-.8z"/>
-    <circle cx="12" cy="11" r="4"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/sun-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/sun-rtl-invert.png
deleted file mode 100644 (file)
index 7ac54ff..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/sun-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/sun-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/sun-rtl-invert.svg
deleted file mode 100644 (file)
index 0e19566..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/>
-    <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-ltr-invert.png
deleted file mode 100644 (file)
index 7018968..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-ltr-invert.svg
deleted file mode 100644 (file)
index a6d466a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-rtl-invert.png
deleted file mode 100644 (file)
index 28008b5..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-rtl-invert.svg
deleted file mode 100644 (file)
index 61a2866..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF">
-    <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/>
-</g></svg>
index 7c4dbb1..7b2d711 100644 (file)
@@ -459,4 +459,4 @@ html > body.rtl .mw-body ul#filetoc {
        display: block;
 }
 
-/* RTL specific CSS ends here **/
+/** RTL specific CSS ends here **/
index b3ed88c..67460ad 100644 (file)
@@ -10,7 +10,7 @@
  * - Add mw.libs.jpegmeta wrapper.
  */
 
-( function () {
+( function ( mw ) {
        /*
        Copyright (c) 2009 Ben Leslie
        
                return new JpegMeta.JpegFile( fileReaderResult, fileName );
        };
 
-}() );
+}( mediaWiki ) );
index ec5b429..ee18979 100644 (file)
@@ -125,13 +125,17 @@ figure[typeof~='mw:Image/Frame'] {
 }
 
 figure[typeof~='mw:Image/Thumb'] > *:first-child > img,
-figure[typeof~='mw:Image/Frame'] > *:first-child > img,
-.mw-image-border > *:first-child > img {
+figure[typeof~='mw:Image/Frame'] > *:first-child > img {
        border: 1px solid #c8ccd1;
        margin: 3px;
        background: #fff;
 }
 
+/* Same as img.thumbborder in content.css */
+.mw-image-border > *:first-child > img {
+       border: 1px solid #eaecf0;
+}
+
 /* Hide the caption for frameless and plain floated images */
 figure[typeof~='mw:Image/Frameless'] > figcaption,
 figure[typeof~='mw:Image'] > figcaption {
index 0b0f912..d5e1c48 100644 (file)
@@ -148,7 +148,7 @@ to resemble a traditional dictionary definition */
        left: 0;
        text-align: center;
        color: #fff;
-       text-shadow: 0 0 10px rgba( 0, 0, 0, 0.4 ); /* improves legibility on white background*/
+       text-shadow: 0 0 10px rgba( 0, 0, 0, 0.4 ); /* improves legibility on white background */
        font-size: 0.8em;
        padding: 5px;
        background-color: rgba( 0, 0, 0, 0.5 );
@@ -183,7 +183,7 @@ to resemble a traditional dictionary definition */
 
        #mw-interwiki-results {
                width: 30%;
-               display: inline-block; /* used to align iw sidebar with the top of the main search results*/
+               display: inline-block; /* used to align iw sidebar with the top of the main search results */
                margin-left: 10%;
        }
        .searchresults .mw-search-createlink,
index 9da6c83..4a48f46 100644 (file)
@@ -29,7 +29,7 @@
        font-size: 0.8em;
 }
 
-/* Put some space under template's header, which may contain CAPTCHA HTML.*/
+/* Put some space under template's header, which may contain CAPTCHA HTML. */
 section.mw-form-header {
        margin-bottom: 10px;
 }
index 3583e5e..51508ab 100644 (file)
 
                if ( config.missing ) {
                        this.$label.addClass( 'new' );
+               } else if ( config.redirect ) {
+                       this.$label.addClass( 'mw-redirect' );
+               } else if ( config.disambiguation ) {
+                       this.$label.addClass( 'mw-disambig' );
                }
 
                if ( config.imageUrl ) {
index 78634f6..67e2ebb 100644 (file)
                 * This function returns the styleSheet object for convience (due to cross-browsers
                 * difference as to where it is located).
                 *
-                *     var sheet = mw.util.addCSS( '.foobar { display: none; }' );
+                *     var sheet = util.addCSS( '.foobar { display: none; }' );
                 *     $( foo ).click( function () {
                 *         // Toggle the sheet on and off
                 *         sheet.disabled = !sheet.disabled;
                 * (e.g. `document.getElementById( 'foobar' )`) or a jQuery-selector
                 * (e.g. `'#foobar'`) for that item.
                 *
-                *     mw.util.addPortletLink(
+                *     util.addPortletLink(
                 *         'p-tb', 'https://www.mediawiki.org/',
                 *         'mediawiki.org', 't-mworg', 'Go to mediawiki.org', 'm', '#t-print'
                 *     );
                 *
-                *     var node = mw.util.addPortletLink(
+                *     var node = util.addPortletLink(
                 *         'p-tb',
                 *         new mw.Title( 'Special:Example' ).getUrl(),
                 *         'Example'
        }, 'Use mw.notify instead.' );
 
        mw.util = util;
+       module.exports = util;
 
 }( mediaWiki, jQuery ) );
index 8aba831..bafb86a 100644 (file)
@@ -1,42 +1,44 @@
-/* global moment, mw */
+/* global mediaWiki, moment */
 
-// HACK: Overwrite moment's i18n with MediaWiki's for the current language so that
-// wgTranslateNumerals is respected.
-moment.updateLocale( moment.locale(), {
-       preparse: function ( s ) {
-               var i,
-                       table = mw.language.getDigitTransformTable();
-               if ( mw.config.get( 'wgTranslateNumerals' ) ) {
-                       for ( i = 0; i < 10; i++ ) {
-                               if ( table[ i ] !== undefined ) {
-                                       s = s.replace( new RegExp( mw.RegExp.escape( table[ i ] ), 'g' ), i );
+( function ( mw ) {
+       // HACK: Overwrite moment's i18n with MediaWiki's for the current language so that
+       // wgTranslateNumerals is respected.
+       moment.updateLocale( moment.locale(), {
+               preparse: function ( s ) {
+                       var i,
+                               table = mw.language.getDigitTransformTable();
+                       if ( mw.config.get( 'wgTranslateNumerals' ) ) {
+                               for ( i = 0; i < 10; i++ ) {
+                                       if ( table[ i ] !== undefined ) {
+                                               s = s.replace( new RegExp( mw.RegExp.escape( table[ i ] ), 'g' ), i );
+                                       }
                                }
                        }
-               }
-               // HACK: momentjs replaces commas in some languages, which is the only other use of preparse
-               // aside from digit transformation. We can only override preparse, not extend it, so we
-               // have to replicate the comma replacement functionality here.
-               if ( [ 'ar', 'ar-sa', 'fa' ].indexOf( mw.config.get( 'wgUserLanguage' ) ) !== -1 ) {
-                       s = s.replace( /،/g, ',' );
-               }
-               return s;
-       },
-       postformat: function ( s ) {
-               var i,
-                       table = mw.language.getDigitTransformTable();
-               if ( mw.config.get( 'wgTranslateNumerals' ) ) {
-                       for ( i = 0; i < 10; i++ ) {
-                               if ( table[ i ] !== undefined ) {
-                                       s = s.replace( new RegExp( i, 'g' ), table[ i ] );
+                       // HACK: momentjs replaces commas in some languages, which is the only other use of preparse
+                       // aside from digit transformation. We can only override preparse, not extend it, so we
+                       // have to replicate the comma replacement functionality here.
+                       if ( [ 'ar', 'ar-sa', 'fa' ].indexOf( mw.config.get( 'wgUserLanguage' ) ) !== -1 ) {
+                               s = s.replace( /،/g, ',' );
+                       }
+                       return s;
+               },
+               postformat: function ( s ) {
+                       var i,
+                               table = mw.language.getDigitTransformTable();
+                       if ( mw.config.get( 'wgTranslateNumerals' ) ) {
+                               for ( i = 0; i < 10; i++ ) {
+                                       if ( table[ i ] !== undefined ) {
+                                               s = s.replace( new RegExp( i, 'g' ), table[ i ] );
+                                       }
                                }
                        }
+                       // HACK: momentjs replaces commas in some languages, which is the only other use of postformat
+                       // aside from digit transformation. We can only override postformat, not extend it, so we
+                       // have to replicate the comma replacement functionality here.
+                       if ( [ 'ar', 'ar-sa', 'fa' ].indexOf( mw.config.get( 'wgUserLanguage' ) ) !== -1 ) {
+                               s = s.replace( /,/g, '،' );
+                       }
+                       return s;
                }
-               // HACK: momentjs replaces commas in some languages, which is the only other use of postformat
-               // aside from digit transformation. We can only override postformat, not extend it, so we
-               // have to replicate the comma replacement functionality here.
-               if ( [ 'ar', 'ar-sa', 'fa' ].indexOf( mw.config.get( 'wgUserLanguage' ) ) !== -1 ) {
-                       s = s.replace( /,/g, '،' );
-               }
-               return s;
-       }
-} );
+       } );
+}( mediaWiki ) );
index 5ce0b34..784c29c 100644 (file)
@@ -93,7 +93,7 @@ class DbTestPreviewer extends TestRecorder {
                                        $before = 'n';
                                } elseif ( $prevResults[$test] == 1 ) {
                                        $before = 'p';
-                               } else /* if ( $prevResults[$test] == 0 )*/ {
+                               } else /* if ( $prevResults[$test] == 0 ) */ {
                                        $before = 'f';
                                }
 
@@ -101,7 +101,7 @@ class DbTestPreviewer extends TestRecorder {
                                        $after = 'n';
                                } elseif ( $this->results[$test] == 1 ) {
                                        $after = 'p';
-                               } else /*if ( $this->results[$test] == 0 ) */ {
+                               } else /* if ( $this->results[$test] == 0 ) */ {
                                        $after = 'f';
                                }
 
index 3a31351..7bf2ce2 100644 (file)
@@ -9962,9 +9962,10 @@ Magic Words LOCAL (UTC)
 Magic Word: {{FULLPAGENAME}}
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{FULLPAGENAME}}
-!! html
+!! html/*
 <p>User:Ævar Arnfjörð Bjarmason
 </p>
 !! end
@@ -9973,9 +9974,10 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{FULLPAGENAMEE}}
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{FULLPAGENAMEE}}
-!! html
+!! html/*
 <p>User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
 </p>
 !! end
@@ -9984,9 +9986,10 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{TALKSPACE}}
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{TALKSPACE}}
-!! html
+!! html/*
 <p>User talk
 </p>
 !! end
@@ -9995,9 +9998,10 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{TALKSPACE}}, same namespace
 !! options
 title=[[User talk:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{TALKSPACE}}
-!! html
+!! html/*
 <p>User talk
 </p>
 !! end
@@ -10006,9 +10010,10 @@ title=[[User talk:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{TALKSPACE}}, main namespace
 !! options
 title=[[Parser Test]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{TALKSPACE}}
-!! html
+!! html/*
 <p>Talk
 </p>
 !! end
@@ -10017,9 +10022,10 @@ title=[[Parser Test]]
 Magic Word: {{TALKSPACEE}}
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{TALKSPACEE}}
-!! html
+!! html/*
 <p>User_talk
 </p>
 !! end
@@ -10028,9 +10034,10 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{SUBJECTSPACE}}
 !! options
 title=[[User talk:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{SUBJECTSPACE}}
-!! html
+!! html/*
 <p>User
 </p>
 !! end
@@ -10039,9 +10046,10 @@ title=[[User talk:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{SUBJECTSPACE}}, same namespace
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{SUBJECTSPACE}}
-!! html
+!! html/*
 <p>User
 </p>
 !! end
@@ -10050,9 +10058,10 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{SUBJECTSPACE}}, main namespace
 !! options
 title=[[Parser Test]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{SUBJECTSPACE}}
-!! html
+!! html/*
 
 !! end
 
@@ -10060,9 +10069,10 @@ title=[[Parser Test]]
 Magic Word: {{SUBJECTSPACEE}}
 !! options
 title=[[User talk:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{SUBJECTSPACEE}}
-!! html
+!! html/*
 <p>User
 </p>
 !! end
@@ -10071,9 +10081,10 @@ title=[[User talk:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{NAMESPACE}}
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{NAMESPACE}}
-!! html
+!! html/*
 <p>User
 </p>
 !! end
@@ -10082,9 +10093,10 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{NAMESPACEE}}
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{NAMESPACEE}}
-!! html
+!! html/*
 <p>User
 </p>
 !! end
@@ -10093,9 +10105,10 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{NAMESPACENUMBER}}
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{NAMESPACENUMBER}}
-!! html
+!! html/*
 <p>2
 </p>
 !! end
@@ -10104,9 +10117,10 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{SUBPAGENAME}}
 !! options
 title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{SUBPAGENAME}}
-!! html
+!! html/*
 <p>sub ö
 </p>
 !! end
@@ -10115,9 +10129,10 @@ title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage
 Magic Word: {{SUBPAGENAMEE}}
 !! options
 title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{SUBPAGENAMEE}}
-!! html
+!! html/*
 <p>sub_%C3%B6
 </p>
 !! end
@@ -10126,9 +10141,10 @@ title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage
 Magic Word: {{ROOTPAGENAME}}
 !! options
 title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{ROOTPAGENAME}}
-!! html
+!! html/*
 <p>Ævar Arnfjörð Bjarmason
 </p>
 !! end
@@ -10137,9 +10153,10 @@ title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage
 Magic Word: {{ROOTPAGENAMEE}}
 !! options
 title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{ROOTPAGENAMEE}}
-!! html
+!! html/*
 <p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
 </p>
 !! end
@@ -10148,9 +10165,10 @@ title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage
 Magic Word: {{BASEPAGENAME}}
 !! options
 title=[[Ævar Arnfjörð Bjarmason/sub]] subpage
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{BASEPAGENAME}}
-!! html
+!! html/*
 <p>Ævar Arnfjörð Bjarmason
 </p>
 !! end
@@ -10159,9 +10177,10 @@ title=[[Ævar Arnfjörð Bjarmason/sub]] subpage
 Magic Word: {{BASEPAGENAMEE}}
 !! options
 title=[[Ævar Arnfjörð Bjarmason/sub]] subpage
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{BASEPAGENAMEE}}
-!! html
+!! html/*
 <p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
 </p>
 !! end
@@ -10170,9 +10189,10 @@ title=[[Ævar Arnfjörð Bjarmason/sub]] subpage
 Magic Word: {{TALKPAGENAME}}
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{TALKPAGENAME}}
-!! html
+!! html/*
 <p>User talk:Ævar Arnfjörð Bjarmason
 </p>
 !! end
@@ -10181,9 +10201,10 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{TALKPAGENAMEE}}
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{TALKPAGENAMEE}}
-!! html
+!! html/*
 <p>User_talk:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
 </p>
 !! end
@@ -10192,9 +10213,10 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{SUBJECTPAGENAME}}
 !! options
 title=[[User talk:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{SUBJECTPAGENAME}}
-!! html
+!! html/*
 <p>User:Ævar Arnfjörð Bjarmason
 </p>
 !! end
@@ -10203,18 +10225,21 @@ title=[[User talk:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{SUBJECTPAGENAMEE}}
 !! options
 title=[[User talk:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{SUBJECTPAGENAMEE}}
-!! html
+!! html/*
 <p>User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
 </p>
 !! end
 
 !! test
 Magic Word: {{NUMBEROFFILES}}
+!! options
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{NUMBEROFFILES}}
-!! html
+!! html/*
 <p>7
 </p>
 !! end
@@ -10223,9 +10248,10 @@ Magic Word: {{NUMBEROFFILES}}
 Magic Word: {{PAGENAME}}
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{PAGENAME}}
-!! html
+!! html/*
 <p>Ævar Arnfjörð Bjarmason
 </p>
 !! end
@@ -10234,6 +10260,7 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{PAGENAME}} with metacharacters
 !! options
 title=[['foo & bar = baz']]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 ''{{PAGENAME}}''
 !! html/php
@@ -10247,6 +10274,7 @@ title=[['foo & bar = baz']]
 Magic Word: {{PAGENAME}} with metacharacters (T28781)
 !! options
 title=[[*RFC 1234 http://example.com/]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{PAGENAME}}
 !! html/php
@@ -10260,9 +10288,10 @@ title=[[*RFC 1234 http://example.com/]]
 Magic Word: {{PAGENAMEE}}
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{PAGENAMEE}}
-!! html
+!! html/*
 <p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
 </p>
 !! end
@@ -10271,6 +10300,7 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
 Magic Word: {{PAGENAMEE}} with metacharacters (T28781)
 !! options
 title=[[*RFC 1234 http://example.com/]]
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{PAGENAMEE}}
 !! html/php
@@ -10282,53 +10312,65 @@ title=[[*RFC 1234 http://example.com/]]
 
 !! test
 Magic Word: {{REVISIONID}}
+!! options
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{REVISIONID}}
-!! html
+!! html/*
 <p>1337
 </p>
 !! end
 
 !! test
 Magic Word: {{SCRIPTPATH}}
+!! options
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{SCRIPTPATH}}
-!! html
+!! html/*
 
 !! end
 
 !! test
 Magic Word: {{STYLEPATH}}
+!! options
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{STYLEPATH}}
-!! html
+!! html/*
 <p>/skins
 </p>
 !! end
 
 !! test
 Magic Word: {{SERVER}}
+!! options
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{SERVER}}
-!! html
+!! html/*
 <p><a rel="nofollow" class="external free" href="http://example.org">http://example.org</a>
 </p>
 !! end
 
 !! test
 Magic Word: {{SERVERNAME}}
+!! options
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{SERVERNAME}}
-!! html
+!! html/*
 <p>example.org
 </p>
 !! end
 
 !! test
 Magic Word: {{SITENAME}}
+!! options
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{SITENAME}}
-!! html
+!! html/*
 <p>MediaWiki
 </p>
 !! end
@@ -10337,18 +10379,21 @@ Magic Word: {{SITENAME}}
 Magic Word: {{PAGELANGUAGE}}
 !! options
 language=fr
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{PAGELANGUAGE}}
-!! html
+!! html/*
 <p>fr
 </p>
 !! end
 
 !! test
 Magic Word: {{PAGELANGUAGE}} on a page with no explicitly set language
+!! options
+parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{PAGELANGUAGE}}
-!! html
+!! html/*
 <p>en
 </p>
 !! end
@@ -13745,7 +13790,7 @@ Manually-specified thumbnail image
 !! options
 thumbsize=220
 !! wikitext
-[[File:Foobar.jpg|thumb=Thumb.png|Title]]
+[[File:Foobar.jpg|thumbnail=Thumb.png|Title]]
 !! html/php
 <div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
 
@@ -19630,6 +19675,31 @@ File:Test.png
 </gallery>
 !! end
 
+!! test
+Gallery with class attribute
+!! options
+parsoid={
+  "nativeGallery": true
+}
+!! wikitext
+<gallery class="center">
+File:Foobar.jpg
+</gallery>
+!! html/php
+<ul class="gallery mw-gallery-traditional center">
+               <li class="gallerybox" style="width: 155px"><div style="width: 155px">
+                       <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
+                       <div class="gallerytext">
+                       </div>
+               </div></li>
+</ul>
+
+!! html/parsoid
+<ul class="gallery mw-gallery-traditional center" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{"class":"center"},"body":{}}'>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
+</ul>
+!! end
+
 !! test
 HTML Hex character encoding (spells the word "JavaScript")
 !! options
@@ -21810,7 +21880,7 @@ showindicators
 !! wikitext
 <indicator name=" "></indicator>
 <indicator></indicator>
-!! html
+!! html/php
 <p><span class="error"><strong>Error:</strong> Page status indicators' <code>name</code> attribute must not be empty.</span>
 <span class="error"><strong>Error:</strong> Page status indicators' <code>name</code> attribute must not be empty.</span>
 </p>
@@ -21823,7 +21893,7 @@ showindicators
 !! wikitext
 <indicator name="empty" />
 <indicator name="name"></indicator>
-!! html
+!! html/php
 empty=
 name=
 <p><br />
@@ -21850,7 +21920,7 @@ showindicators
 <indicator name="10">Two
 
 paragraphs</indicator>
-!! html
+!! html/php
 01=hello world
 02=<a href="/wiki/Main_Page" title="Main Page">Main Page</a>
 03=<img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg" width="25" height="3" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/38px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg 2x" />
@@ -22763,14 +22833,12 @@ parsoid={
 ## recognized as an extension tag w/o a native handler.
 !! test
 LST Sections: Newfangled approach
-!! options
-parsoid={ "suppressErrors": true }
 !! wikitext
 <section begin="2011-05-16" />
 <section end="2014-04-10 (MW 1.23wmf22)" />
 !! html/parsoid
-<p><span typeof="mw:Extension/section" about="#mwt1" data-parsoid='{"stx":"html","selfClose":true,"src":"&lt;section begin=\"2011-05-16\" />","tagWidths":[30,0]}'>&lt;section begin="2011-05-16" /></span>
-<span typeof="mw:Extension/section" about="#mwt2" data-parsoid='{"stx":"html","selfClose":true,"src":"&lt;section end=\"2014-04-10 (MW 1.23wmf22)\" />","tagWidths":[43,0]}'>&lt;section end="2014-04-10 (MW 1.23wmf22)" /></span></p>
+<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>
 !! end
 
 #--------- Test stripping of empty nodes in template content ----------
@@ -23797,7 +23865,8 @@ Links 4. ExtLinks: Escapes needed
 parsoid=html2wt
 !! html/parsoid
 <p><a rel="mw:ExtLink" href="http://google.com">[google]</a>
-<a rel="mw:ExtLink" href="http://google.com">google]</a></p>
+<a rel="mw:ExtLink" href="http://google.com">google]</a>
+<a rel="mw:ExtLink" href="http://google.com">goog] le</a></p>
 <p>[http://google.com]</p>
 <p>[http://google.com google]</p>
 <p>[<a rel="mw:ExtLink" href="http://google.com">http://google.com</a>]</p>
@@ -23805,6 +23874,7 @@ parsoid=html2wt
 !! wikitext
 [http://google.com <nowiki>[google]</nowiki>]
 [http://google.com <nowiki>google]</nowiki>]
+[http://google.com <nowiki>goog] le</nowiki>]
 
 <nowiki>[http://google.com]</nowiki>
 
@@ -23816,6 +23886,7 @@ parsoid=html2wt
 !! html/php
 <p><a rel="nofollow" class="external text" href="http://google.com">[google]</a>
 <a rel="nofollow" class="external text" href="http://google.com">google]</a>
+<a rel="nofollow" class="external text" href="http://google.com">goog] le</a>
 </p><p>[http://google.com]
 </p><p>[http://google.com google]
 </p><p>[<a rel="nofollow" class="external free" href="http://google.com">http://google.com</a>]
@@ -24159,7 +24230,7 @@ parsoid=html2wt
 !! test
 4. No escaping needed
 !! options
-options=html2wt
+parsoid=html2wt
 !! html/parsoid
 <p>'<span><i>bar</i></span>'
 '<span><b>bar</b></span>'
@@ -24296,7 +24367,7 @@ parsoid=html2wt
 !! test
 4. Leading whitespace in indent-pre suppressing contexts should not be escaped
 !! options
-options=html2wt
+parsoid=html2wt
 !! html/parsoid
  <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
 !! wikitext
@@ -26650,6 +26721,20 @@ parsoid= {
 # Tests spec'ing wikitext serialization norms |
 # --------------------------------------------
 
+!! test
+Serialize multi-line indent-pre starting with wikitext syntax
+!! options
+parsoid=html2wt
+!! html/parsoid
+<pre>* 1
+** 2
+* 3</pre>
+!! wikitext
+ * 1
+ ** 2
+ * 3
+!! end
+
 !! test
 1. Categories should always be serialized on their own line
 !! options
index 419ff00..bb7267a 100644 (file)
@@ -1768,51 +1768,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                $this->assertEmpty( $errors, implode( "\n", $errors ) );
        }
 
-       /**
-        * @param array $matcher
-        * @param string $actual
-        * @param bool $isHtml
-        *
-        * @return bool
-        */
-       private static function tagMatch( $matcher, $actual, $isHtml = true ) {
-               $dom = PHPUnit_Util_XML::load( $actual, $isHtml );
-               $tags = PHPUnit_Util_XML::findNodes( $dom, $matcher, $isHtml );
-               return count( $tags ) > 0 && $tags[0] instanceof DOMNode;
-       }
-
-       /**
-        * Note: we are overriding this method to remove the deprecated error
-        * @see https://phabricator.wikimedia.org/T71505
-        * @see https://github.com/sebastianbergmann/phpunit/issues/1292
-        * @deprecated
-        *
-        * @param array $matcher
-        * @param string $actual
-        * @param string $message
-        * @param bool $isHtml
-        */
-       public static function assertTag( $matcher, $actual, $message = '', $isHtml = true ) {
-               // trigger_error(__METHOD__ . ' is deprecated', E_USER_DEPRECATED);
-
-               self::assertTrue( self::tagMatch( $matcher, $actual, $isHtml ), $message );
-       }
-
-       /**
-        * @see MediaWikiTestCase::assertTag
-        * @deprecated
-        *
-        * @param array $matcher
-        * @param string $actual
-        * @param string $message
-        * @param bool $isHtml
-        */
-       public static function assertNotTag( $matcher, $actual, $message = '', $isHtml = true ) {
-               // trigger_error(__METHOD__ . ' is deprecated', E_USER_DEPRECATED);
-
-               self::assertFalse( self::tagMatch( $matcher, $actual, $isHtml ), $message );
-       }
-
        /**
         * Used as a marker to prevent wfResetOutputBuffers from breaking PHPUnit.
         * @return string
index e3713ab..9fe694d 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use MediaWiki\Session\SessionManager;
+
 class FauxRequestTest extends PHPUnit_Framework_TestCase {
        /**
         * @covers FauxRequest::__construct
@@ -17,6 +19,17 @@ class FauxRequestTest extends PHPUnit_Framework_TestCase {
                $req = new FauxRequest( [], false, 'x' );
        }
 
+       /**
+        * @covers FauxRequest::__construct
+        */
+       public function testConstructWithSession() {
+               $session = SessionManager::singleton()->getEmptySession( new FauxRequest( [] ) );
+               $this->assertInstanceOf(
+                       FauxRequest::class,
+                       new FauxRequest( [], false, $session )
+               );
+       }
+
        /**
         * @covers FauxRequest::getText
         */
index b7249e5..115a8cf 100644 (file)
@@ -41,6 +41,9 @@ class HtmlTest extends MediaWikiTestCase {
 
        /**
         * @covers Html::element
+        * @covers Html::rawElement
+        * @covers Html::openElement
+        * @covers Html::closeElement
         */
        public function testElementBasics() {
                $this->assertEquals(
@@ -302,6 +305,7 @@ class HtmlTest extends MediaWikiTestCase {
 
        /**
         * @covers Html::namespaceSelector
+        * @covers Html::namespaceSelectorOptions
         */
        public function testNamespaceSelector() {
                $this->assertEquals(
index 424218e..58087c1 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+use MediaWiki\MediaWikiServices;
 
 class MessageTest extends MediaWikiLangTestCase {
 
@@ -394,6 +395,22 @@ class MessageTest extends MediaWikiLangTestCase {
                $this->assertSame( 'example &amp;', $msg->escaped() );
        }
 
+       public function testRawHtmlInMsg() {
+               global $wgParserConf;
+               $this->setMwGlobals( 'wgRawHtml', true );
+               // We have to reset the core hook registration.
+               // to register the html hook
+               MessageCache::destroyInstance();
+               $this->setMwGlobals( 'wgParser',
+                       ObjectFactory::constructClassInstance( $wgParserConf['class'], [ $wgParserConf ] )
+               );
+
+               $msg = new RawMessage( '<html><script>alert("xss")</script></html>' );
+               $txt = '<span class="error">&lt;html&gt; tags cannot be' .
+                       ' used outside of normal pages.</span>';
+               $this->assertSame( $txt, $msg->parse() );
+       }
+
        /**
         * @covers Message::params
         * @covers Message::toString
index 5c0a5d9..922f7f1 100644 (file)
@@ -331,8 +331,6 @@ class ApiMainTest extends ApiTestCase {
        }
 
        public static function provideApiErrorFormatterCreation() {
-               global $wgContLang;
-
                return [
                        'Default (BC)' => [ [], [
                                'uselang' => 'ru',
@@ -382,9 +380,9 @@ class ApiMainTest extends ApiTestCase {
                        'uselang=content' => [
                                [ 'uselang' => 'content', 'errorformat' => 'plaintext' ],
                                [
-                                       'uselang' => $wgContLang->getCode(),
+                                       'uselang' => 'en',
                                        'class' => ApiErrorFormatter::class,
-                                       'lang' => $wgContLang->getCode(),
+                                       'lang' => 'en',
                                        'format' => 'plaintext',
                                        'usedb' => false,
                                ]
@@ -394,7 +392,7 @@ class ApiMainTest extends ApiTestCase {
                                [
                                        'uselang' => 'ru',
                                        'class' => ApiErrorFormatter::class,
-                                       'lang' => $wgContLang->getCode(),
+                                       'lang' => 'en',
                                        'format' => 'plaintext',
                                        'usedb' => false,
                                ]
index d98311f..a30702f 100644 (file)
@@ -45,13 +45,6 @@ class ChangesListBooleanFilterGroupTest extends MediaWikiTestCase {
 
                $group = new ChangesListBooleanFilterGroup( $definition );
 
-               $specialPage = $this->getMockBuilder( 'ChangesListSpecialPage' )
-                       ->setConstructorArgs( [
-                               'ChangesListSpecialPage',
-                               '',
-                       ] )
-                       ->getMockForAbstractClass();
-
                $this->assertArrayEquals(
                        [
                                'name' => 'some-group',
@@ -91,7 +84,7 @@ class ChangesListBooleanFilterGroupTest extends MediaWikiTestCase {
                                ],
                        ],
 
-                       $group->getJsData( $specialPage ),
+                       $group->getJsData(),
                        /** ordered= */ false,
                        /** named= */ true
                );
index 2c0c22d..000f017 100644 (file)
@@ -108,13 +108,6 @@ class ChangesListBooleanFilterTest extends MediaWikiTestCase {
        }
 
        public function testIsFeatureAvailableOnStructuredUi() {
-               $specialPage = $this->getMockBuilder( 'ChangesListSpecialPage' )
-                       ->setConstructorArgs( [
-                                       'ChangesListSpecialPage',
-                                       '',
-                               ] )
-                       ->getMockForAbstractClass();
-
                $groupA = new ChangesListBooleanFilterGroup( [
                        'name' => 'groupA',
                        'priority' => 1,
@@ -133,7 +126,7 @@ class ChangesListBooleanFilterTest extends MediaWikiTestCase {
 
                $this->assertEquals(
                        true,
-                       $foo->isFeatureAvailableOnStructuredUi( $specialPage ),
+                       $foo->isFeatureAvailableOnStructuredUi(),
                        'Same filter appears on both'
                );
 
@@ -148,7 +141,7 @@ class ChangesListBooleanFilterTest extends MediaWikiTestCase {
 
                $this->assertEquals(
                        false,
-                       $bar->isFeatureAvailableOnStructuredUi( $specialPage ),
+                       $bar->isFeatureAvailableOnStructuredUi(),
                        'Only on unstructured UI'
                );
 
@@ -163,7 +156,7 @@ class ChangesListBooleanFilterTest extends MediaWikiTestCase {
 
                $this->assertEquals(
                        true,
-                       $baz->isFeatureAvailableOnStructuredUi( $specialPage ),
+                       $baz->isFeatureAvailableOnStructuredUi(),
                        'Legacy filter does not appear directly in new UI, but equivalent ' .
                                'does and is marked with isReplacedInStructuredUi'
                );
index 019e257..dc868a8 100644 (file)
@@ -73,12 +73,6 @@ class ChangesListStringOptionsFilterGroupTest extends MediaWikiTestCase {
                        [
                                'name' => 'foo',
                        ],
-                       [
-                               'name' => 'bar',
-                               'isAllowedCallable' => function () {
-                                       return false;
-                               },
-                       ],
                        [
                                'name' => 'baz',
                        ],
@@ -141,25 +135,7 @@ class ChangesListStringOptionsFilterGroupTest extends MediaWikiTestCase {
        }
 
        public function provideNoOpModifyQuery() {
-               $isAllowedFalse = [
-                       'isAllowedCallable' => function () {
-                               return false;
-                       },
-               ];
-
-               $allDisallowedFilters = [
-                       [
-                               'name' => 'disallowed1',
-                       ] + $isAllowedFalse,
-
-                       [
-                               'name' => 'disallowed2',
-                       ] + $isAllowedFalse,
-
-                       [
-                               'name' => 'disallowed3',
-                       ] + $isAllowedFalse,
-               ];
+               $noFilters = [];
 
                $normalFilters = [
                        [
@@ -172,9 +148,9 @@ class ChangesListStringOptionsFilterGroupTest extends MediaWikiTestCase {
 
                return [
                        [
-                               $allDisallowedFilters,
+                               $noFilters,
                                'disallowed1;disallowed3',
-                               'The queryCallable should not be called if no filters are allowed',
+                               'The queryCallable should not be called if there are no filters',
                        ],
 
                        [
@@ -254,8 +230,6 @@ class ChangesListStringOptionsFilterGroupTest extends MediaWikiTestCase {
 
                $group = new ChangesListStringOptionsFilterGroup( $definition );
 
-               $specialPage = $this->getSpecialPage();
-
                $this->assertArrayEquals(
                        [
                                'name' => 'some-group',
@@ -294,7 +268,7 @@ class ChangesListStringOptionsFilterGroupTest extends MediaWikiTestCase {
                                        'foo-description',
                                ],
                        ],
-                       $group->getJsData( $specialPage ),
+                       $group->getJsData(),
                        /** ordered= */ false,
                        /** named= */ true
                );
index 4ff1eb8..97b4c08 100644 (file)
@@ -141,103 +141,69 @@ class RCCacheEntryFactoryTest extends MediaWikiLangTestCase {
                $this->assertEquals( 'prev', $cacheEntry->lastlink, 'pref link for delete log or rev' );
        }
 
+       private function assertValidHTML( $actual ) {
+               // Throws if invalid
+               $doc = PHPUnit_Util_XML::load( $actual, /* isHtml */ true );
+       }
+
        private function assertUserLinks( $user, $cacheEntry ) {
-               $this->assertTag(
-                       [
-                               'tag' => 'a',
-                               'attributes' => [
-                                       'class' => 'new mw-userlink'
-                               ],
-                               'content' => $user
-                       ],
+               $this->assertValidHTML( $cacheEntry->userlink );
+               $this->assertRegExp(
+                       '#^<a .*class="new mw-userlink".*><bdi>' . $user . '</bdi></a>#',
                        $cacheEntry->userlink,
                        'verify user link'
                );
 
-               $this->assertTag(
-                       [
-                               'tag' => 'span',
-                               'attributes' => [
-                                       'class' => 'mw-usertoollinks'
-                               ],
-                               'child' => [
-                                       'tag' => 'a',
-                                       'content' => 'talk',
-                               ]
-                       ],
+               $this->assertValidHTML( $cacheEntry->usertalklink );
+               $this->assertRegExp(
+                       '#^ <span class="mw-usertoollinks">\(.*<a .+>talk</a>.*\)</span>#',
                        $cacheEntry->usertalklink,
                        'verify user talk link'
                );
 
-               $this->assertTag(
-                       [
-                               'tag' => 'span',
-                               'attributes' => [
-                                       'class' => 'mw-usertoollinks'
-                               ],
-                               'child' => [
-                                       'tag' => 'a',
-                                       'content' => 'contribs',
-                               ]
-                       ],
+               $this->assertValidHTML( $cacheEntry->usertalklink );
+               $this->assertRegExp(
+                       '#^ <span class="mw-usertoollinks">\(.*<a .+>contribs</a>.*\)</span>$#',
                        $cacheEntry->usertalklink,
                        'verify user tool links'
                );
        }
 
        private function assertDeleteLogLink( $cacheEntry ) {
-               $this->assertTag(
-                       [
-                               'tag' => 'a',
-                               'attributes' => [
-                                       'href' => '/wiki/Special:Log/delete',
-                                       'title' => 'Special:Log/delete'
-                               ],
-                               'content' => 'Deletion log'
-                       ],
+               $this->assertEquals(
+                       '(<a href="/wiki/Special:Log/delete" title="Special:Log/delete">Deletion log</a>)',
                        $cacheEntry->link,
                        'verify deletion log link'
                );
+
+               $this->assertValidHTML( $cacheEntry->link );
        }
 
        private function assertRevDel( $cacheEntry ) {
-               $this->assertTag(
-                       [
-                               'tag' => 'span',
-                               'attributes' => [
-                                       'class' => 'history-deleted'
-                               ],
-                               'content' => '(username removed)'
-                       ],
+               $this->assertEquals(
+                       ' <span class="history-deleted">(username removed)</span>',
                        $cacheEntry->userlink,
                        'verify user link for change with deleted revision and user'
                );
+               $this->assertValidHTML( $cacheEntry->userlink );
        }
 
        private function assertTitleLink( $title, $cacheEntry ) {
-               $this->assertTag(
-                       [
-                               'tag' => 'a',
-                               'attributes' => [
-                                       'href' => '/wiki/' . $title,
-                                       'title' => $title
-                               ],
-                               'content' => $title
-                       ],
+               $this->assertEquals(
+                       '<a href="/wiki/' . $title . '" title="' . $title . '">' . $title . '</a>',
                        $cacheEntry->link,
                        'verify title link'
                );
+               $this->assertValidHTML( $cacheEntry->link );
        }
 
        private function assertQueryLink( $content, $params, $link ) {
-               $this->assertTag(
-                       [
-                               'tag' => 'a',
-                               'content' => $content
-                       ],
+               $this->assertRegExp(
+                       "#^<a .+>$content</a>$#",
                        $link,
-                       'assert query link element'
+                       'verify query link element'
                );
+               $this->assertValidHTML( $link );
 
                foreach ( $params as $key => $value ) {
                        $this->assertRegExp( '/' . $key . '=' . $value . '/', $link, "verify $key link params" );
index f8dda6f..3e0a61e 100644 (file)
@@ -26,20 +26,24 @@ class ObjectFactoryTest extends PHPUnit_Framework_TestCase {
        public function testClosureExpansionDisabled() {
                $obj = ObjectFactory::getObjectFromSpec( [
                        'class' => 'ObjectFactoryTestFixture',
-                       'args' => [ function() {
-                               return 'unwrapped';
-                       }, ],
+                       'args' => [
+                               function() {
+                                       return 'wrapped';
+                               },
+                               'unwrapped',
+                       ],
                        'calls' => [
                                'setter' => [ function() {
-                                       return 'unwrapped';
+                                       return 'wrapped';
                                }, ],
                        ],
                        'closure_expansion' => false,
                ] );
                $this->assertInstanceOf( 'Closure', $obj->args[0] );
-               $this->assertSame( 'unwrapped', $obj->args[0]() );
+               $this->assertSame( 'wrapped', $obj->args[0]() );
+               $this->assertSame( 'unwrapped', $obj->args[1] );
                $this->assertInstanceOf( 'Closure', $obj->setterArgs[0] );
-               $this->assertSame( 'unwrapped', $obj->setterArgs[0]() );
+               $this->assertSame( 'wrapped', $obj->setterArgs[0]() );
        }
 
        /**
@@ -49,20 +53,24 @@ class ObjectFactoryTest extends PHPUnit_Framework_TestCase {
        public function testClosureExpansionEnabled() {
                $obj = ObjectFactory::getObjectFromSpec( [
                        'class' => 'ObjectFactoryTestFixture',
-                       'args' => [ function() {
-                               return 'unwrapped';
-                       }, ],
+                       'args' => [
+                               function() {
+                                       return 'wrapped';
+                               },
+                               'unwrapped',
+                       ],
                        'calls' => [
                                'setter' => [ function() {
-                                       return 'unwrapped';
+                                       return 'wrapped';
                                }, ],
                        ],
                        'closure_expansion' => true,
                ] );
                $this->assertInternalType( 'string', $obj->args[0] );
-               $this->assertSame( 'unwrapped', $obj->args[0] );
+               $this->assertSame( 'wrapped', $obj->args[0] );
+               $this->assertSame( 'unwrapped', $obj->args[1] );
                $this->assertInternalType( 'string', $obj->setterArgs[0] );
-               $this->assertSame( 'unwrapped', $obj->setterArgs[0] );
+               $this->assertSame( 'wrapped', $obj->setterArgs[0] );
 
                $obj = ObjectFactory::getObjectFromSpec( [
                        'class' => 'ObjectFactoryTestFixture',
index c4db0cf..f44baeb 100644 (file)
@@ -5,6 +5,40 @@
  */
 class HashBagOStuffTest extends PHPUnit_Framework_TestCase {
 
+       /**
+        * @covers HashBagOStuff::__construct
+        */
+       public function testConstruct() {
+               $this->assertInstanceOf(
+                       HashBagOStuff::class,
+                       new HashBagOStuff()
+               );
+       }
+
+       /**
+        * @covers HashBagOStuff::__construct
+        * @expectedException InvalidArgumentException
+        */
+       public function testConstructBadZero() {
+               $cache = new HashBagOStuff( [ 'maxKeys' => 0 ] );
+       }
+
+       /**
+        * @covers HashBagOStuff::__construct
+        * @expectedException InvalidArgumentException
+        */
+       public function testConstructBadNeg() {
+               $cache = new HashBagOStuff( [ 'maxKeys' => -1 ] );
+       }
+
+       /**
+        * @covers HashBagOStuff::__construct
+        * @expectedException InvalidArgumentException
+        */
+       public function testConstructBadType() {
+               $cache = new HashBagOStuff( [ 'maxKeys' => 'x' ] );
+       }
+
        /**
         * @covers HashBagOStuff::delete
         */
@@ -56,7 +90,6 @@ class HashBagOStuffTest extends PHPUnit_Framework_TestCase {
        /**
         * Ensure maxKeys eviction prefers keeping new keys.
         *
-        * @covers HashBagOStuff::__construct
         * @covers HashBagOStuff::set
         */
        public function testEvictionAdd() {
@@ -76,7 +109,6 @@ class HashBagOStuffTest extends PHPUnit_Framework_TestCase {
         * Ensure maxKeys eviction prefers recently set keys
         * even if the keys pre-exist.
         *
-        * @covers HashBagOStuff::__construct
         * @covers HashBagOStuff::set
         */
        public function testEvictionSet() {
@@ -102,7 +134,6 @@ class HashBagOStuffTest extends PHPUnit_Framework_TestCase {
        /**
         * Ensure maxKeys eviction prefers recently retrieved keys (LRU).
         *
-        * @covers HashBagOStuff::__construct
         * @covers HashBagOStuff::doGet
         * @covers HashBagOStuff::hasKey
         */
diff --git a/tests/phpunit/includes/objectcache/ObjectCacheTest.php b/tests/phpunit/includes/objectcache/ObjectCacheTest.php
new file mode 100644 (file)
index 0000000..d132183
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+
+class ObjectCacheTest extends MediaWikiTestCase {
+
+       protected function setUp() {
+               // Parent calls ObjectCache::clear() among other things
+               parent::setUp();
+
+               $this->setCacheConfig();
+               $this->setMwGlobals( [
+                       'wgMainCacheType' => CACHE_NONE,
+                       'wgMessageCacheType' => CACHE_NONE,
+                       'wgParserCacheType' => CACHE_NONE,
+               ] );
+       }
+
+       private function setCacheConfig( $arr = [] ) {
+               $defaults = [
+                       CACHE_NONE => [ 'class' => 'EmptyBagOStuff' ],
+                       CACHE_DB => [ 'class' => 'SqlBagOStuff' ],
+                       CACHE_ANYTHING => [ 'factory' => 'ObjectCache::newAnything' ],
+                       // Mock ACCEL with 'hash' as being installed.
+                       // This makes tests deterministic regardless of APC.
+                       CACHE_ACCEL => [ 'class' => 'HashBagOStuff' ],
+                       'hash' => [ 'class' => 'HashBagOStuff' ],
+               ];
+               $this->setMwGlobals( 'wgObjectCaches', $arr + $defaults );
+       }
+
+       /** @covers ObjectCache::newAnything */
+       public function testNewAnythingNothing() {
+               $this->assertInstanceOf(
+                       SqlBagOStuff::class,
+                       ObjectCache::newAnything( [] ),
+                       'No available types. Fallback to DB'
+               );
+       }
+
+       /** @covers ObjectCache::newAnything */
+       public function testNewAnythingHash() {
+               $this->setMwGlobals( [
+                       'wgMainCacheType' => 'hash'
+               ] );
+
+               $this->assertInstanceOf(
+                       HashBagOStuff::class,
+                       ObjectCache::newAnything( [] ),
+                       'Use an available type (hash)'
+               );
+       }
+
+       /** @covers ObjectCache::newAnything */
+       public function testNewAnythingAccel() {
+               $this->setMwGlobals( [
+                       'wgMainCacheType' => CACHE_ACCEL
+               ] );
+
+               $this->assertInstanceOf(
+                       HashBagOStuff::class,
+                       ObjectCache::newAnything( [] ),
+                       'Use an available type (CACHE_ACCEL)'
+               );
+       }
+
+       /** @covers ObjectCache::newAnything */
+       public function txestNewAnythingNoAccel() {
+               $this->setMwGlobals( [
+                       'wgMainCacheType' => CACHE_ACCEL
+               ] );
+
+               $this->setCacheConfig( [
+                       // Mock APC not being installed (T160519, T147161)
+                       CACHE_ACCEL => [ 'class' => 'EmptyBagOStuff' ]
+               ] );
+
+               $this->assertInstanceOf(
+                       SqlBagOStuff::class,
+                       ObjectCache::newAnything( [] ),
+                       'Fallback to DB if available types fall back to Empty'
+               );
+       }
+}
index bf80845..29e1863 100644 (file)
@@ -44,6 +44,46 @@ class MessageBlobStoreTest extends PHPUnit_Framework_TestCase {
                return $module;
        }
 
+       /** @covers MessageBlobStore::setLogger */
+       public function testSetLogger() {
+               $blobStore = $this->makeBlobStore();
+               $this->assertSame( null, $blobStore->setLogger( new Psr\Log\NullLogger() ) );
+       }
+
+       /** @covers MessageBlobStore::getResourceLoader */
+       public function testGetResourceLoader() {
+               // Call protected method
+               $blobStore = TestingAccessWrapper::newFromObject( $this->makeBlobStore() );
+               $this->assertInstanceOf(
+                       ResourceLoader::class,
+                       $blobStore->getResourceLoader()
+               );
+       }
+
+       /** @covers MessageBlobStore::fetchMessage */
+       public function testFetchMessage() {
+               $module = $this->makeModule( [ 'mainpage' ] );
+               $rl = new ResourceLoader();
+               $rl->register( $module->getName(), $module );
+
+               $blobStore = $this->makeBlobStore( null, $rl );
+               $blob = $blobStore->getBlob( $module, 'en' );
+
+               $this->assertEquals( '{"mainpage":"Main Page"}', $blob, 'Generated blob' );
+       }
+
+       /** @covers MessageBlobStore::fetchMessage */
+       public function testFetchMessageFail() {
+               $module = $this->makeModule( [ 'i-dont-exist' ] );
+               $rl = new ResourceLoader();
+               $rl->register( $module->getName(), $module );
+
+               $blobStore = $this->makeBlobStore( null, $rl );
+               $blob = $blobStore->getBlob( $module, 'en' );
+
+               $this->assertEquals( '{"i-dont-exist":"\u29fci-dont-exist\u29fd"}', $blob, 'Generated blob' );
+       }
+
        public function testGetBlob() {
                $module = $this->makeModule( [ 'foo' ] );
                $rl = new ResourceLoader();
index 6751f4d..17861d8 100644 (file)
@@ -76,11 +76,11 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
                        'script' => "var a = 'this is';\n {\ninvalid"
                ] );
                $this->assertEquals(
-                       $module->getScript( $context ),
                        'mw.log.error(' .
                                '"JavaScript parse error: Parse error: Unexpected token; ' .
                                'token } expected in file \'input\' on line 3"' .
                        ');',
+                       $module->getScript( $context ),
                        'Replace invalid syntax with error logging'
                );
 
@@ -88,8 +88,8 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
                        'script' => "\n'valid';"
                ] );
                $this->assertEquals(
-                       $module->getScript( $context ),
                        "\n'valid';",
+                       $module->getScript( $context ),
                        'Leave valid scripts as-is'
                );
        }
@@ -120,13 +120,13 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
                                '../skins/Example/images/quux.png',
                ];
                $this->assertEquals(
-                       $getRelativePaths->invoke( null, $raw ),
                        $canonical,
+                       $getRelativePaths->invoke( null, $raw ),
                        'Insert placeholders'
                );
                $this->assertEquals(
-                       $expandRelativePaths->invoke( null, $canonical ),
                        $raw,
+                       $expandRelativePaths->invoke( null, $canonical ),
                        'Substitute placeholders'
                );
        }
index 5cab8e2..2d0d958 100644 (file)
@@ -218,6 +218,113 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase {
                $this->assertEquals( $expected, $module->getTitleInfo( $context ), 'Title info' );
        }
 
+       /**
+        * @covers ResourceLoaderWikiModule::preloadTitleInfo
+        */
+       public function testGetPreloadedBadTitle() {
+               // Mock values
+               $pages = [
+                       // Covers else branch for invalid page name
+                       '[x]' => [ 'type' => 'styles' ],
+               ];
+               $titleInfo = [];
+
+               // Set up objects
+               $module = $this->getMockBuilder( 'TestResourceLoaderWikiModule' )
+                       ->setMethods( [ 'getPages' ] ) ->getMock();
+               $module->method( 'getPages' )->willReturn( $pages );
+               $module::$returnFetchTitleInfo = $titleInfo;
+               $rl = new EmptyResourceLoader();
+               $rl->register( 'testmodule', $module );
+               $context = new ResourceLoaderContext( $rl, new FauxRequest() );
+
+               // Act
+               TestResourceLoaderWikiModule::preloadTitleInfo(
+                       $context,
+                       wfGetDB( DB_REPLICA ),
+                       [ 'testmodule' ]
+               );
+
+               // Assert
+               $module = TestingAccessWrapper::newFromObject( $module );
+               $this->assertEquals( $titleInfo, $module->getTitleInfo( $context ), 'Title info' );
+       }
+
+       /**
+        * @covers ResourceLoaderWikiModule::preloadTitleInfo
+        */
+       public function testGetPreloadedTitleInfoEmpty() {
+               $context = new ResourceLoaderContext( new EmptyResourceLoader(), new FauxRequest() );
+               // Covers early return
+               $this->assertSame(
+                       null,
+                       ResourceLoaderWikiModule::preloadTitleInfo(
+                               $context,
+                               wfGetDB( DB_REPLICA ),
+                               []
+                       )
+               );
+       }
+
+       public static function provideGetContent() {
+               return [
+                       'Bad title' => [ null, '[x]' ],
+                       'Dead redirect' => [ null, [
+                               'text' => 'Dead redirect',
+                               'title' => 'Dead_redirect',
+                               'redirect' => 1,
+                       ] ],
+                       'Bad content model' => [ null, [
+                               'text' => 'MediaWiki:Wikitext',
+                               'ns' => NS_MEDIAWIKI,
+                               'title' => 'Wikitext',
+                       ] ],
+                       'No JS content found' => [ null, [
+                               'text' => 'MediaWiki:Script.js',
+                               'ns' => NS_MEDIAWIKI,
+                               'title' => 'Script.js',
+                       ] ],
+                       'No CSS content found' => [ null, [
+                               'text' => 'MediaWiki:Styles.css',
+                               'ns' => NS_MEDIAWIKI,
+                               'title' => 'Script.css',
+                       ] ],
+               ];
+       }
+
+       /**
+        * @covers ResourceLoaderWikiModule::getContent
+        * @dataProvider provideGetContent
+        */
+       public function testGetContent( $expected, $title ) {
+               $context = $this->getResourceLoaderContext( [], new EmptyResourceLoader );
+               $module = $this->getMockBuilder( 'ResourceLoaderWikiModule' )
+                       ->setMethods( [ 'getContentObj' ] ) ->getMock();
+               $module->expects( $this->any() )
+                       ->method( 'getContentObj' )->willReturn( null );
+
+               if ( is_array( $title ) ) {
+                       $title += [ 'ns' => NS_MAIN, 'id' => 1, 'len' => 1, 'redirect' => 0 ];
+                       $titleText = $title['text'];
+                       // Mock Title db access via LinkCache
+                       MediaWikiServices::getInstance()->getLinkCache()->addGoodLinkObj(
+                               $title['id'],
+                               new TitleValue( $title['ns'], $title['title'] ),
+                               $title['len'],
+                               $title['redirect']
+                       );
+               } else {
+                       $titleText = $title;
+               }
+
+               $module = TestingAccessWrapper::newFromObject( $module );
+               $this->assertEquals(
+                       $expected,
+                       $module->getContent( $titleText )
+               );
+
+       }
+
        /**
         * @covers ResourceLoaderWikiModule::getContent
         */
index 621d6a2..03e341a 100644 (file)
@@ -13,15 +13,42 @@ abstract class AbstractChangesListSpecialPageTestCase extends MediaWikiTestCase
         */
        protected $changesListSpecialPage;
 
+       protected $oldPatrollersGroup;
+
        protected function setUp() {
+               global $wgGroupPermissions;
+
                parent::setUp();
                $this->setMwGlobals( 'wgRCWatchCategoryMembership', true );
+
+               if ( isset( $wgGroupPermissions['patrollers'] ) ) {
+                       $this->oldPatrollersGroup = $wgGroupPermissions['patrollers'];
+               }
+
+               $wgGroupPermissions['patrollers'] = [
+                       'patrol' => true,
+               ];
+       }
+
+       protected function tearDown() {
+               global $wgGroupPermissions;
+
+               parent::tearDown();
+
+               if ( $this->oldPatrollersGroup !== null ) {
+                       $wgGroupPermissions['patrollers'] = $this->oldPatrollersGroup;
+               }
        }
 
        /**
         * @dataProvider provideParseParameters
         */
        public function testParseParameters( $params, $expected ) {
+               $context = $this->changesListSpecialPage->getContext();
+               $context = new DerivativeContext( $context );
+               $context->setUser( $this->getTestUser( [ 'patrollers' ] )->getUser() );
+               $this->changesListSpecialPage->setContext( $context );
+
                $this->changesListSpecialPage->registerFilters();
 
                $opts = new FormOptions();
index cbf306e..aeb9f0f 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 class MockChangesListFilter extends ChangesListFilter {
-       public function displaysOnUnstructuredUi( ChangesListSpecialPage $specialPage ) {
+       public function displaysOnUnstructuredUi() {
                throw new MWException(
                        'Not implemented: If the test relies on this, put it one of the ' .
                        'subclasses\' tests (e.g. ChangesListBooleanFilterTest) ' .
index 01665e5..0e88740 100644 (file)
@@ -1,5 +1,5 @@
 ( function ( mw, $ ) {
-       var
+       var util = require( 'mediawiki.util' ),
                // Based on IPTest.php > testisIPv4
                IPV4_CASES = [
                        [ false, false, 'Boolean false is not an IP' ],
@@ -89,7 +89,7 @@
        } ) );
 
        QUnit.test( 'rawurlencode', function ( assert ) {
-               assert.equal( mw.util.rawurlencode( 'Test:A & B/Here' ), 'Test%3AA%20%26%20B%2FHere' );
+               assert.equal( util.rawurlencode( 'Test:A & B/Here' ), 'Test%3AA%20%26%20B%2FHere' );
        } );
 
        QUnit.test( 'escapeId', function ( assert ) {
                        'Test:A & B/Here': 'Test:A_.26_B.2FHere',
                        'A&B&amp;C&amp;amp;D&amp;amp;amp;E': 'A.26B.26amp.3BC.26amp.3Bamp.3BD.26amp.3Bamp.3Bamp.3BE'
                }, function ( input, output ) {
-                       assert.equal( mw.util.escapeId( input ), output );
+                       assert.equal( util.escapeId( input ), output );
                } );
        } );
 
        QUnit.test( 'wikiUrlencode', function ( assert ) {
-               assert.equal( mw.util.wikiUrlencode( 'Test:A & B/Here' ), 'Test:A_%26_B/Here' );
+               assert.equal( util.wikiUrlencode( 'Test:A & B/Here' ), 'Test:A_%26_B/Here' );
                // See also wfUrlencodeTest.php#provideURLS
                $.each( {
                        '+': '%2B',
                        '<>': '%3C%3E',
                        '\'': '%27'
                }, function ( input, output ) {
-                       assert.equal( mw.util.wikiUrlencode( input ), output );
+                       assert.equal( util.wikiUrlencode( input ), output );
                } );
        } );
 
                        wgPageName: 'Foobar'
                } );
 
-               href = mw.util.getUrl( 'Sandbox' );
+               href = util.getUrl( 'Sandbox' );
                assert.equal( href, '/wiki/Sandbox', 'simple title' );
 
-               href = mw.util.getUrl( 'Foo:Sandbox? 5+5=10! (test)/sub ' );
+               href = util.getUrl( 'Foo:Sandbox? 5+5=10! (test)/sub ' );
                assert.equal( href, '/wiki/Foo:Sandbox%3F_5%2B5%3D10!_(test)/sub_', 'complex title' );
 
                // T149767
-               href = mw.util.getUrl( 'My$$test$$$$$title' );
+               href = util.getUrl( 'My$$test$$$$$title' );
                assert.equal( href, '/wiki/My$$test$$$$$title', 'title with multiple consecutive dollar signs' );
 
-               href = mw.util.getUrl();
+               href = util.getUrl();
                assert.equal( href, '/wiki/Foobar', 'default title' );
 
-               href = mw.util.getUrl( null, { action: 'edit' } );
+               href = util.getUrl( null, { action: 'edit' } );
                assert.equal( href, '/w/index.php?title=Foobar&action=edit', 'default title with query string' );
 
-               href = mw.util.getUrl( 'Sandbox', { action: 'edit' } );
+               href = util.getUrl( 'Sandbox', { action: 'edit' } );
                assert.equal( href, '/w/index.php?title=Sandbox&action=edit', 'simple title with query string' );
 
                // Test fragments
-               href = mw.util.getUrl( 'Foo:Sandbox#Fragment', { action: 'edit' } );
+               href = util.getUrl( 'Foo:Sandbox#Fragment', { action: 'edit' } );
                assert.equal( href, '/w/index.php?title=Foo:Sandbox&action=edit#Fragment', 'namespaced title with query string and fragment' );
 
-               href = mw.util.getUrl( 'Sandbox#', { action: 'edit' } );
+               href = util.getUrl( 'Sandbox#', { action: 'edit' } );
                assert.equal( href, '/w/index.php?title=Sandbox&action=edit', 'title with query string and empty fragment' );
 
-               href = mw.util.getUrl( 'Sandbox', {} );
+               href = util.getUrl( 'Sandbox', {} );
                assert.equal( href, '/wiki/Sandbox', 'title with empty query string' );
 
-               href = mw.util.getUrl( '#Fragment' );
+               href = util.getUrl( '#Fragment' );
                assert.equal( href, '/wiki/#Fragment', 'empty title with fragment' );
 
-               href = mw.util.getUrl( '#Fragment', { action: 'edit' } );
+               href = util.getUrl( '#Fragment', { action: 'edit' } );
                assert.equal( href, '/w/index.php?action=edit#Fragment', 'epmty title with query string and fragment' );
 
-               href = mw.util.getUrl( 'Foo:Sandbox \xC4#Fragment \xC4', { action: 'edit' } );
+               href = util.getUrl( 'Foo:Sandbox \xC4#Fragment \xC4', { action: 'edit' } );
                assert.equal( href, '/w/index.php?title=Foo:Sandbox_%C3%84&action=edit#Fragment_.C3.84', 'title with query string, fragment, and special characters' );
 
-               href = mw.util.getUrl( 'Foo:%23#Fragment', { action: 'edit' } );
+               href = util.getUrl( 'Foo:%23#Fragment', { action: 'edit' } );
                assert.equal( href, '/w/index.php?title=Foo:%2523&action=edit#Fragment', 'title containing %23 (#), fragment, and a query string' );
 
-               href = mw.util.getUrl( '#+&=:;@$-_.!*/[]<>\'§', { action: 'edit' } );
+               href = util.getUrl( '#+&=:;@$-_.!*/[]<>\'§', { action: 'edit' } );
                assert.equal( href, '/w/index.php?action=edit#.2B.26.3D:.3B.40.24-_..21.2A.2F.5B.5D.3C.3E.27.C2.A7', 'fragment with various characters' );
        } );
 
                        wgScriptPath: '/w'
                } );
 
-               assert.equal( mw.util.wikiScript(), mw.config.get( 'wgScript' ),
+               assert.equal( util.wikiScript(), mw.config.get( 'wgScript' ),
                        'wikiScript() returns wgScript'
                );
-               assert.equal( mw.util.wikiScript( 'index' ), mw.config.get( 'wgScript' ),
+               assert.equal( util.wikiScript( 'index' ), mw.config.get( 'wgScript' ),
                        'wikiScript( index ) returns wgScript'
                );
-               assert.equal( mw.util.wikiScript( 'load' ), mw.config.get( 'wgLoadScript' ),
+               assert.equal( util.wikiScript( 'load' ), mw.config.get( 'wgLoadScript' ),
                        'wikiScript( load ) returns wgLoadScript'
                );
-               assert.equal( mw.util.wikiScript( 'api' ), '/w/api.php', 'API path' );
+               assert.equal( util.wikiScript( 'api' ), '/w/api.php', 'API path' );
        } );
 
        QUnit.test( 'addCSS', function ( assert ) {
                var $el, style;
                $el = $( '<div>' ).attr( 'id', 'mw-addcsstest' ).appendTo( '#qunit-fixture' );
 
-               style = mw.util.addCSS( '#mw-addcsstest { visibility: hidden; }' );
+               style = util.addCSS( '#mw-addcsstest { visibility: hidden; }' );
                assert.equal( typeof style, 'object', 'addCSS returned an object' );
                assert.strictEqual( style.disabled, false, 'property "disabled" is available and set to false' );
 
                var url;
 
                url = 'http://example.org/?foo=wrong&foo=right#&foo=bad';
-               assert.equal( mw.util.getParamValue( 'foo', url ), 'right', 'Use latest one, ignore hash' );
-               assert.strictEqual( mw.util.getParamValue( 'bar', url ), null, 'Return null when not found' );
+               assert.equal( util.getParamValue( 'foo', url ), 'right', 'Use latest one, ignore hash' );
+               assert.strictEqual( util.getParamValue( 'bar', url ), null, 'Return null when not found' );
 
                url = 'http://example.org/#&foo=bad';
-               assert.strictEqual( mw.util.getParamValue( 'foo', url ), null, 'Ignore hash if param is not in querystring but in hash (T29427)' );
+               assert.strictEqual( util.getParamValue( 'foo', url ), null, 'Ignore hash if param is not in querystring but in hash (T29427)' );
 
                url = 'example.org?' + $.param( { TEST: 'a b+c' } );
-               assert.strictEqual( mw.util.getParamValue( 'TEST', url ), 'a b+c', 'T32441: getParamValue must understand "+" encoding of space' );
+               assert.strictEqual( util.getParamValue( 'TEST', url ), 'a b+c', 'T32441: getParamValue must understand "+" encoding of space' );
 
                url = 'example.org?' + $.param( { TEST: 'a b+c d' } ); // check for sloppy code from r95332 :)
-               assert.strictEqual( mw.util.getParamValue( 'TEST', url ), 'a b+c d', 'T32441: getParamValue must understand "+" encoding of space (multiple spaces)' );
+               assert.strictEqual( util.getParamValue( 'TEST', url ), 'a b+c d', 'T32441: getParamValue must understand "+" encoding of space (multiple spaces)' );
        } );
 
        QUnit.test( '$content', function ( assert ) {
-               assert.ok( mw.util.$content instanceof jQuery, 'mw.util.$content instance of jQuery' );
-               assert.strictEqual( mw.util.$content.length, 1, 'mw.util.$content must have length of 1' );
+               assert.ok( util.$content instanceof jQuery, 'mw.util.$content instance of jQuery' );
+               assert.strictEqual( util.$content.length, 1, 'mw.util.$content must have length of 1' );
        } );
 
        /**
 
                $( '#qunit-fixture' ).append( pTestTb, pCustom, vectorTabs );
 
-               tbRL = mw.util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/ResourceLoader',
+               tbRL = util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/ResourceLoader',
                        'ResourceLoader', 't-rl', 'More info about ResourceLoader on MediaWiki.org ', 'l'
                );
 
                assert.ok( tbRL && tbRL.nodeType, 'addPortletLink returns a DOM Node' );
 
-               tbMW = mw.util.addPortletLink( 'p-test-tb', '//mediawiki.org/',
+               tbMW = util.addPortletLink( 'p-test-tb', '//mediawiki.org/',
                        'MediaWiki.org', 't-mworg', 'Go to MediaWiki.org', 'm', tbRL );
                $tbMW = $( tbMW );
 
                assert.equal( $tbMW.closest( '.portlet' ).attr( 'id' ), 'p-test-tb', 'Link was inserted within correct portlet' );
                assert.strictEqual( $tbMW.next()[ 0 ], tbRL, 'Link is in the correct position (nextnode as Node object)' );
 
-               cuQuux = mw.util.addPortletLink( 'p-test-custom', '#', 'Quux', null, 'Example [shift-x]', 'q' );
+               cuQuux = util.addPortletLink( 'p-test-custom', '#', 'Quux', null, 'Example [shift-x]', 'q' );
                $cuQuux = $( cuQuux );
 
                assert.equal( $cuQuux.find( 'a' ).attr( 'title' ), 'Example [test-q]', 'Existing accesskey is stripped and updated' );
                        'addPortletLink did not add the item to all <ul> elements in the portlet (T37082)'
                );
 
-               tbRLDM = mw.util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/RL/DM',
+               tbRLDM = util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/RL/DM',
                        'Default modules', 't-rldm', 'List of all default modules ', 'd', '#t-rl' );
 
                assert.strictEqual( $( tbRLDM ).next()[ 0 ], tbRL, 'Link is in the correct position (CSS selector as nextnode)' );
 
-               caFoo = mw.util.addPortletLink( 'p-test-views', '#', 'Foo' );
+               caFoo = util.addPortletLink( 'p-test-views', '#', 'Foo' );
 
                assert.strictEqual( $tbMW.find( 'span' ).length, 0, 'No <span> element should be added for porlets without vectorTabs class.' );
                assert.strictEqual( $( caFoo ).find( 'span' ).length, 1, 'A <span> element should be added for porlets with vectorTabs class.' );
 
-               addedAfter = mw.util.addPortletLink( 'p-test-tb', '#', 'After foo', 'post-foo', 'After foo', null, $( tbRL ) );
+               addedAfter = util.addPortletLink( 'p-test-tb', '#', 'After foo', 'post-foo', 'After foo', null, $( tbRL ) );
                assert.strictEqual( $( addedAfter ).next()[ 0 ], tbRL, 'Link is in the correct position (jQuery object as nextnode)' );
 
                // test case - nonexistent id as next node
-               tbRLDMnonexistentid = mw.util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/RL/DM',
+               tbRLDMnonexistentid = util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/RL/DM',
                        'Default modules', 't-rldm-nonexistent', 'List of all default modules ', 'd', '#t-rl-nonexistent' );
 
                assert.equal( tbRLDMnonexistentid, $( '#p-test-tb li:last' )[ 0 ], 'Fallback to adding at the end (nextnode non-matching CSS selector)' );
 
                // test case - empty jquery object as next node
-               tbRLDMemptyjquery = mw.util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/RL/DM',
+               tbRLDMemptyjquery = util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/RL/DM',
                        'Default modules', 't-rldm-empty-jquery', 'List of all default modules ', 'd', $( '#t-rl-nonexistent' ) );
 
                assert.equal( tbRLDMemptyjquery, $( '#p-test-tb li:last' )[ 0 ], 'Fallback to adding at the end (nextnode as empty jQuery object)' );
        } );
 
        QUnit.test( 'validateEmail', function ( assert ) {
-               assert.strictEqual( mw.util.validateEmail( '' ), null, 'Should return null for empty string ' );
-               assert.strictEqual( mw.util.validateEmail( 'user@localhost' ), true, 'Return true for a valid e-mail address' );
+               assert.strictEqual( util.validateEmail( '' ), null, 'Should return null for empty string ' );
+               assert.strictEqual( util.validateEmail( 'user@localhost' ), true, 'Return true for a valid e-mail address' );
 
                // testEmailWithCommasAreInvalids
-               assert.strictEqual( mw.util.validateEmail( 'user,foo@example.org' ), false, 'Emails with commas are invalid' );
-               assert.strictEqual( mw.util.validateEmail( 'userfoo@ex,ample.org' ), false, 'Emails with commas are invalid' );
+               assert.strictEqual( util.validateEmail( 'user,foo@example.org' ), false, 'Emails with commas are invalid' );
+               assert.strictEqual( util.validateEmail( 'userfoo@ex,ample.org' ), false, 'Emails with commas are invalid' );
 
                // testEmailWithHyphens
-               assert.strictEqual( mw.util.validateEmail( 'user-foo@example.org' ), true, 'Emails may contain a hyphen' );
-               assert.strictEqual( mw.util.validateEmail( 'userfoo@ex-ample.org' ), true, 'Emails may contain a hyphen' );
+               assert.strictEqual( util.validateEmail( 'user-foo@example.org' ), true, 'Emails may contain a hyphen' );
+               assert.strictEqual( util.validateEmail( 'userfoo@ex-ample.org' ), true, 'Emails may contain a hyphen' );
        } );
 
        QUnit.test( 'isIPv6Address', function ( assert ) {
                $.each( IPV6_CASES, function ( i, ipCase ) {
-                       assert.strictEqual( mw.util.isIPv6Address( ipCase[ 1 ] ), ipCase[ 0 ], ipCase[ 2 ] );
+                       assert.strictEqual( util.isIPv6Address( ipCase[ 1 ] ), ipCase[ 0 ], ipCase[ 2 ] );
                } );
        } );
 
        QUnit.test( 'isIPv4Address', function ( assert ) {
                $.each( IPV4_CASES, function ( i, ipCase ) {
-                       assert.strictEqual( mw.util.isIPv4Address( ipCase[ 1 ] ), ipCase[ 0 ], ipCase[ 2 ] );
+                       assert.strictEqual( util.isIPv4Address( ipCase[ 1 ] ), ipCase[ 0 ], ipCase[ 2 ] );
                } );
        } );
 
        QUnit.test( 'isIPAddress', function ( assert ) {
                $.each( IPV4_CASES, function ( i, ipCase ) {
-                       assert.strictEqual( mw.util.isIPv4Address( ipCase[ 1 ] ), ipCase[ 0 ], ipCase[ 2 ] );
+                       assert.strictEqual( util.isIPv4Address( ipCase[ 1 ] ), ipCase[ 0 ], ipCase[ 2 ] );
                } );
 
                $.each( IPV6_CASES, function ( i, ipCase ) {
-                       assert.strictEqual( mw.util.isIPv6Address( ipCase[ 1 ] ), ipCase[ 0 ], ipCase[ 2 ] );
+                       assert.strictEqual( util.isIPv6Address( ipCase[ 1 ] ), ipCase[ 0 ], ipCase[ 2 ] );
                } );
        } );
 }( mediaWiki, jQuery ) );
index 4491c8e..6049eb2 100644 (file)
@@ -1,5 +1,5 @@
-/* eslint no-undef: "error"*/
-/* eslint-env node*/
+/* eslint no-undef: "error" */
+/* eslint-env node */
 'use strict';
 var merge = require( 'deepmerge' ),
        wdioConf = require( './wdio.conf.js' );
index b5dc61a..f132899 100644 (file)
@@ -1,7 +1,7 @@
 /* eslint comma-dangle: 0 */
-/* eslint no-undef: "error"*/
+/* eslint no-undef: "error" */
 /* eslint no-console: 0 */
-/* eslint-env node*/
+/* eslint-env node */
 'use strict';
 
 const path = require( 'path' );