Merge "Deprecate wfShellWikiCmd()"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 16 Apr 2018 16:57:14 +0000 (16:57 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 16 Apr 2018 16:57:14 +0000 (16:57 +0000)
64 files changed:
Gruntfile.js
RELEASE-NOTES-1.31
composer.json
includes/Storage/NameTableStore.php
includes/Storage/RevisionStore.php
includes/Title.php
includes/api/i18n/fr.json
includes/api/i18n/pt-br.json
includes/api/i18n/sv.json
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/loadbalancer/LoadBalancer.php
includes/revisiondelete/RevDelLogItem.php
includes/revisiondelete/RevDelRevisionItem.php
includes/specialpage/ChangesListSpecialPage.php
includes/specialpage/LoginSignupSpecialPage.php
includes/specials/SpecialVersion.php
includes/specials/pagers/NewFilesPager.php
includes/specials/pagers/NewPagesPager.php
includes/watcheditem/WatchedItemQueryService.php
languages/i18n/ar.json
languages/i18n/be-tarask.json
languages/i18n/de.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/gcr.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hu.json
languages/i18n/io.json
languages/i18n/ja.json
languages/i18n/km.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/li.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/sa.json
languages/i18n/skr-arab.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/te.json
languages/i18n/th.json
languages/i18n/tr.json
languages/i18n/yi.json
languages/i18n/yue.json
languages/i18n/zh-hans.json
maintenance/cleanupPreferences.php
package.json
tests/phan/stubs/wikidiff.php
tests/phpunit/PHPUnit4And6Compat.php
tests/phpunit/includes/Storage/NameTableStoreTest.php
tests/phpunit/includes/db/LoadBalancerTest.php
tests/phpunit/includes/watcheditem/WatchedItemQueryServiceUnitTest.php
tests/selenium/selenium.sh [new file with mode: 0755]
tests/selenium/wdio.conf.jenkins.js [deleted file]
tests/selenium/wdio.conf.js

index cb9a20d..69a123c 100644 (file)
@@ -4,7 +4,6 @@ module.exports = function ( grunt ) {
 
        var wgServer = process.env.MW_SERVER,
                wgScriptPath = process.env.MW_SCRIPT_PATH,
-               WebdriverIOconfigFile,
                karmaProxy = {};
 
        grunt.loadNpmTasks( 'grunt-banana-checker' );
@@ -21,12 +20,6 @@ module.exports = function ( grunt ) {
                changeOrigin: true
        };
 
-       if ( process.env.JENKINS_HOME ) {
-               WebdriverIOconfigFile = './tests/selenium/wdio.conf.jenkins.js';
-       } else {
-               WebdriverIOconfigFile = './tests/selenium/wdio.conf.js';
-       }
-
        grunt.initConfig( {
                eslint: {
                        all: [
@@ -116,7 +109,7 @@ module.exports = function ( grunt ) {
                // Configure WebdriverIO task
                webdriver: {
                        test: {
-                               configFile: WebdriverIOconfigFile
+                               configFile: './tests/selenium/wdio.conf.js'
                        }
                }
 
index 8ec3b7d..312933b 100644 (file)
@@ -84,6 +84,12 @@ production.
   extensions. Pass --with-extensions to enable that feature.
 * (T184791) rc_patrolled now has three states: "0" for unpatrolled,
   "1" for manually patrolled and "2" for autopatrolled actions.
+* Extensions can now set their type to "editor" if they provide an editor
+  or enhance the editing experience.
+* Extensions can use a PSR-4 autoloader by setting an "AutoloadNamespaces" property
+  in extension.json. See
+  <https://www.mediawiki.org/wiki/Manual:Extension.json/Schema#AutoloadNamespaces>
+  for more details and an example.
 
 === External library changes in 1.31 ===
 
index 321a941..313bbd9 100644 (file)
@@ -43,7 +43,7 @@
                "wikimedia/remex-html": "1.0.3",
                "wikimedia/running-stat": "1.2.1",
                "wikimedia/scoped-callback": "1.0.0",
-               "wikimedia/utfnormal": "1.1.0",
+               "wikimedia/utfnormal": "2.0.0",
                "wikimedia/timestamp": "1.0.0",
                "wikimedia/wait-condition-loop": "1.0.1",
                "wikimedia/wrappedstring": "2.3.0",
index 465f299..ebce3da 100644 (file)
@@ -321,7 +321,8 @@ class NameTableStore {
                                'name' => $this->nameField
                        ],
                        [],
-                       __METHOD__
+                       __METHOD__,
+                       [ 'ORDER BY' => 'id' ]
                );
 
                $assocArray = [];
index 584142b..1f0afae 100644 (file)
@@ -636,7 +636,7 @@ class RevisionStore
         */
        public function getRcIdIfUnpatrolled( RevisionRecord $rev ) {
                $rc = $this->getRecentChange( $rev );
-               if ( $rc && $rc->getAttribute( 'rc_patrolled' ) == 0 ) {
+               if ( $rc && $rc->getAttribute( 'rc_patrolled' ) == RecentChange::PRC_UNPATROLLED ) {
                        return $rc->getAttribute( 'rc_id' );
                } else {
                        return 0;
index 58e6885..b771477 100644 (file)
@@ -1027,12 +1027,11 @@ class Title implements LinkTarget {
         */
        public function getNsText() {
                if ( $this->isExternal() ) {
-                       // This probably shouldn't even happen,
-                       // but for interwiki transclusion it sometimes does.
-                       // Use the canonical namespaces if possible to try to
-                       // resolve a foreign namespace.
-                       if ( MWNamespace::exists( $this->mNamespace ) ) {
-                               return MWNamespace::getCanonicalName( $this->mNamespace );
+                       // This probably shouldn't even happen, except for interwiki transclusion.
+                       // If possible, use the canonical name for the foreign namespace.
+                       $nsText = MWNamespace::getCanonicalName( $this->mNamespace );
+                       if ( $nsText !== false ) {
+                               return $nsText;
                        }
                }
 
@@ -4795,14 +4794,12 @@ class Title implements LinkTarget {
         */
        public function getNamespaceKey( $prepend = 'nstab-' ) {
                global $wgContLang;
-               // Gets the subject namespace if this title
-               $namespace = MWNamespace::getSubject( $this->getNamespace() );
-               // Checks if canonical namespace name exists for namespace
-               if ( MWNamespace::exists( $this->getNamespace() ) ) {
-                       // Uses canonical namespace name
-                       $namespaceKey = MWNamespace::getCanonicalName( $namespace );
-               } else {
-                       // Uses text of namespace
+               // Gets the subject namespace of this title
+               $subjectNS = MWNamespace::getSubject( $this->getNamespace() );
+               // Prefer canonical namespace name for HTML IDs
+               $namespaceKey = MWNamespace::getCanonicalName( $subjectNS );
+               if ( $namespaceKey === false ) {
+                       // Fallback to localised text
                        $namespaceKey = $this->getSubjectNsText();
                }
                // Makes namespace key lowercase
index 30b262e..5ce2331 100644 (file)
                        "Umherirrender",
                        "Thibaut120094",
                        "KATRINE1992",
-                       "Kenjiraw"
+                       "Kenjiraw",
+                       "Framawiki"
                ]
        },
-       "apihelp-main-extended-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentation]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Liste de diffusion]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annonces de l’API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bogues et demandes]\n</div>\n<strong>État :</strong>L’API MédiaWiki est une interface stable et mature qui est supportée et améliorée de façon active. Bien que nous essayions de l’éviter, nous pouvons avoir parfois besoin de faire des modifications impactantes ; inscrivez-vous à [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la liste de diffusion mediawiki-api-announce] pour être informé des mises à jour.\n\n<strong>Requêtes erronées :</strong> Si des requêtes erronées sont envoyées à l’API, un entête HTTP sera renvoyé avec la clé « MediaWiki-API-Error ». La valeur de cet entête et le code d’erreur renvoyé prendront la même valeur. Pour plus d’information, voyez [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Errors and warnings]].\n\n<p class=\"mw-apisandbox-link\"><strong>Test :</strong> Pour faciliter le test des requêtes de l’API, voyez [[Special:ApiSandbox]].</p>",
+       "apihelp-main-extended-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentation]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Liste de diffusion]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annonces de l’API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bogues et demandes]\n</div>\n<strong>État :</strong> L’API MédiaWiki est une interface stable et mature qui est supportée et améliorée de façon active. Bien que nous essayions de l’éviter, nous pouvons avoir parfois besoin de faire des modifications impactantes ; inscrivez-vous à [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la liste de diffusion mediawiki-api-announce] pour être informé des mises à jour.\n\n<strong>Requêtes erronées :</strong> Si des requêtes erronées sont envoyées à l’API, un entête HTTP sera renvoyé avec la clé « MediaWiki-API-Error ». La valeur de cet entête et le code d’erreur renvoyé prendront la même valeur. Pour plus d’information, voyez [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Errors and warnings]].\n\n<p class=\"mw-apisandbox-link\"><strong>Test :</strong> Pour faciliter le test des requêtes de l’API, voyez [[Special:ApiSandbox]].</p>",
        "apihelp-main-param-action": "Quelle action effectuer.",
        "apihelp-main-param-format": "Le format de sortie.",
        "apihelp-main-param-maxlag": "La latence maximale peut être utilisée quand MédiaWiki est installé sur un cluster de base de données répliqué. Pour éviter des actions provoquant un supplément de latence de réplication de site, ce paramètre peut faire attendre le client jusqu’à ce que la latence de réplication soit inférieure à une valeur spécifiée. En cas de latence excessive, le code d’erreur <samp>maxlag</samp> est renvoyé avec un message tel que <samp>Attente de $host : $lag secondes de délai</samp>.<br />Voyez [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manuel: Maxlag parameter]] pour plus d’information.",
index 1e550ad..9330ca7 100644 (file)
@@ -26,7 +26,7 @@
        "apihelp-main-param-assert": "Verifique se o usuário está logado se configurado para <kbd>user</kbd> ou tem o direito do usuário do bot se <kbd>bot</kbd>.",
        "apihelp-main-param-assertuser": "Verificar que o usuário atual é o utilizador nomeado.",
        "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-servedby": "Incluir nos resultados o nome do servidor que serviu o pedido.",
        "apihelp-main-param-curtimestamp": "Inclui o timestamp atual no resultado.",
        "apihelp-main-param-responselanginfo": "Inclua os idiomas usados para <var>uselang</var> e <var>errorlang</var> 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-query+info-paramvalue-prop-readable": "Se o usuário pode ler esta página.",
        "apihelp-query+info-paramvalue-prop-preload": "Fornece o texto retornado por EditFormPreloadText.",
        "apihelp-query+info-paramvalue-prop-displaytitle": "Fornece o modo como o título da página é exibido.",
+       "apihelp-query+info-paramvalue-prop-varianttitles": "Fornece o título de apresentação em todas as variantes da língua de conteúdo da wiki.",
        "apihelp-query+info-param-testactions": "Testa se o usuário atual pode executar determinadas ações na página.",
        "apihelp-query+info-param-token": "Use [[Special:ApiHelp/query+tokens|action=query&meta=tokens]] em vez.",
        "apihelp-query+info-example-simple": "Obter informações sobre a página <kbd>Main Page</kbd>.",
index d22ec34..ebb0b45 100644 (file)
        "apihelp-query+extlinks-param-limit": "Hur många länkar som ska returneras.",
        "apihelp-query+extlinks-example-simple": "Hämta en lista över externa länkar på <kbd>Main Page</kbd>.",
        "apihelp-query+exturlusage-param-limit": "Hur många sidor att returnera.",
+       "apihelp-query+exturlusage-example-simple": "Visa sidor som länkar till <kbd>https://www.mediawiki.org</kbd>.",
        "apihelp-query+filearchive-param-limit": "Hur många bilder att returnera totalt.",
        "apihelp-query+filearchive-param-dir": "Riktningen att lista mot.",
        "apihelp-query+filearchive-paramvalue-prop-timestamp": "Lägger till tidsstämpel för den uppladdade versionen.",
index f681795..1779880 100644 (file)
@@ -1181,8 +1181,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                                        } else {
                                                # Nothing prior was there to lose from the transaction,
                                                # so just roll it back.
-                                               $this->doRollback( __METHOD__ . " ($fname)" );
-                                               $this->trxStatus = self::STATUS_TRX_OK;
+                                               $this->rollback( __METHOD__ . " ($fname)", self::FLUSHING_INTERNAL );
                                        }
                                        $this->trxStatusIgnoredCause = null;
                                } else {
index e2d3b33..96ea949 100644 (file)
@@ -590,7 +590,7 @@ class LoadBalancer implements ILoadBalancer {
         * @return bool
         */
        protected function doWait( $index, $open = false, $timeout = null ) {
-               $timeout = max( 1, $timeout ?: $this->waitTimeout );
+               $timeout = max( 1, intval( $timeout ?: $this->waitTimeout ) );
 
                // Check if we already know that the DB has reached this point
                $server = $this->getServerName( $index );
index 198a28b..36198cd 100644 (file)
@@ -75,7 +75,7 @@ class RevDelLogItem extends RevDelItem {
                $dbw->update( 'recentchanges',
                        [
                                'rc_deleted' => $bits,
-                               'rc_patrolled' => 1
+                               'rc_patrolled' => RecentChange::PRC_PATROLLED
                        ],
                        [
                                'rc_logid' => $this->row->log_id,
index cb5ce48..7b5d130 100644 (file)
@@ -83,7 +83,7 @@ class RevDelRevisionItem extends RevDelItem {
                $dbw->update( 'recentchanges',
                        [
                                'rc_deleted' => $bits,
-                               'rc_patrolled' => 1
+                               'rc_patrolled' => RecentChange::PRC_PATROLLED
                        ],
                        [
                                'rc_this_oldid' => $this->revision->getId(), // condition
index 2a4acc8..ac13f11 100644 (file)
@@ -475,7 +475,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
                                                        &$query_options, &$join_conds
                                                ) {
-                                                       $conds[] = 'rc_patrolled = 0';
+                                                       $conds['rc_patrolled'] = RecentChange::PRC_UNPATROLLED;
                                                },
                                                'isReplacedInStructuredUi' => true,
                                        ],
@@ -485,7 +485,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
                                                        &$query_options, &$join_conds
                                                ) {
-                                                       $conds[] = 'rc_patrolled != 0';
+                                                       $conds[] = 'rc_patrolled != ' . RecentChange::PRC_UNPATROLLED;
                                                },
                                                'isReplacedInStructuredUi' => true,
                                        ],
index d6ace0a..1c54d13 100644 (file)
@@ -515,7 +515,6 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
         * @private
         */
        protected function mainLoginForm( array $requests, $msg = '', $msgtype = 'error' ) {
-               $titleObj = $this->getPageTitle();
                $user = $this->getUser();
                $out = $this->getOutput();
 
index 1088d72..6590756 100644 (file)
@@ -368,6 +368,7 @@ class SpecialVersion extends SpecialPage {
                if ( self::$extensionTypes === false ) {
                        self::$extensionTypes = [
                                'specialpage' => wfMessage( 'version-specialpages' )->text(),
+                               'editor' => wfMessage( 'version-editors' )->text(),
                                'parserhook' => wfMessage( 'version-parserhooks' )->text(),
                                'variable' => wfMessage( 'version-variables' )->text(),
                                'media' => wfMessage( 'version-mediahandlers' )->text(),
index 57cdad9..c214f1f 100644 (file)
@@ -110,7 +110,7 @@ class NewFilesPager extends RangeChronologicalPager {
                        $tables[] = 'recentchanges';
                        $conds['rc_type'] = RC_LOG;
                        $conds['rc_log_type'] = 'upload';
-                       $conds['rc_patrolled'] = 0;
+                       $conds['rc_patrolled'] = RecentChange::PRC_UNPATROLLED;
                        $conds['rc_namespace'] = NS_FILE;
 
                        if ( $wgActorTableSchemaMigrationStage === MIGRATION_NEW ) {
index efdc75a..f16a5cb 100644 (file)
@@ -82,7 +82,7 @@ class NewPagesPager extends ReverseChronologicalPager {
 
                # If this user cannot see patrolled edits or they are off, don't do dumb queries!
                if ( $this->opts->getValue( 'hidepatrolled' ) && $this->getUser()->useNPPatrol() ) {
-                       $conds['rc_patrolled'] = 0;
+                       $conds['rc_patrolled'] = RecentChange::PRC_UNPATROLLED;
                }
 
                if ( $this->opts->getValue( 'hidebots' ) ) {
index bf419a9..506ee00 100644 (file)
@@ -498,15 +498,15 @@ class WatchedItemQueryService {
                        // TODO: not sure if this should simply ignore patrolled filters if user does not have the patrol
                        // right, or maybe rather fail loud at this point, same as e.g. ApiQueryWatchlist does?
                        if ( in_array( self::FILTER_PATROLLED, $options['filters'] ) ) {
-                               $conds[] = 'rc_patrolled != 0';
+                               $conds[] = 'rc_patrolled != ' . RecentChange::PRC_UNPATROLLED;
                        } elseif ( in_array( self::FILTER_NOT_PATROLLED, $options['filters'] ) ) {
-                               $conds[] = 'rc_patrolled = 0';
+                               $conds['rc_patrolled'] = RecentChange::PRC_UNPATROLLED;
                        }
 
                        if ( in_array( self::FILTER_AUTOPATROLLED, $options['filters'] ) ) {
-                               $conds[] = 'rc_patrolled = 2';
+                               $conds['rc_patrolled'] = RecentChange::PRC_AUTOPATROLLED;
                        } elseif ( in_array( self::FILTER_NOT_AUTOPATROLLED, $options['filters'] ) ) {
-                               $conds[] = 'rc_patrolled != 2';
+                               $conds[] = 'rc_patrolled != ' . RecentChange::PRC_AUTOPATROLLED;
                        }
                }
 
index 1daef3f..88ba7bc 100644 (file)
        "rcfilters-filter-humans-label": "بشري (ليس بوت)",
        "rcfilters-filter-humans-description": "التعديلات بواسطة المحررين البشريين.",
        "rcfilters-filtergroup-reviewstatus": "حالة المراجعة",
+       "rcfilters-filter-reviewstatus-unpatrolled-description": "التعديلات التي لم يتم وضع علامة عليها يدويا أو تلقائيا كمراجعة.",
        "rcfilters-filter-reviewstatus-unpatrolled-label": "غير مراجعة",
+       "rcfilters-filter-reviewstatus-manual-description": "التعديلات التي تم تعليمها يدويا كمراجعة.",
+       "rcfilters-filter-reviewstatus-manual-label": "مراجعة يدويا",
+       "rcfilters-filter-reviewstatus-auto-description": "التعديلات بواسطة المستخدمين المتقدمين الذين يتم تعليم عملهم تلقائيا كمراجع.",
+       "rcfilters-filter-reviewstatus-auto-label": "المراجعة تلقائيا",
        "rcfilters-filtergroup-significance": "الأهمية",
        "rcfilters-filter-minor-label": "تعديلات طفيفة",
        "rcfilters-filter-minor-description": "التعديلات التي علم عليها المستخدم كطفيفة.",
        "version-specialpages": "صفحات خاصة",
        "version-parserhooks": "خطاطيف المحلل",
        "version-variables": "المتغيرات",
+       "version-editors": "المحررون",
        "version-antispam": "منع البريد المزعج",
        "version-api": "إيه بي آي",
        "version-other": "أخرى",
index 60170bc..da1d85c 100644 (file)
        "right-edituserjson": "Рэдагаваньне JSON-файлаў іншых удзельнікаў",
        "right-edituserjs": "Рэдагаваньне JavaScript-файлаў іншых удзельнікаў",
        "right-editmyusercss": "Рэдагаваць свае карыстальніцкія CSS-файлы",
+       "right-editmyuserjson": "Рэдагаваньне вашых уласных JSON-файлаў",
        "right-editmyuserjs": "Рэдагаваць свае карыстальніцкія JavaScript-файлы",
        "right-viewmywatchlist": "Праглядаць уласны сьпіс назіраньня",
        "right-editmywatchlist": "Рэдагаваньне ўласнага сьпісу назіраньня. Некаторыя дзеяньні будуць дадаваць туды старонкі нават бяз гэтага права.",
index 9714b6a..22d7192 100644 (file)
        "version-specialpages": "Erweiterungen mit Spezialseiten",
        "version-parserhooks": "Parsererweiterungen",
        "version-variables": "Erweiterungen mit Variablen",
+       "version-editors": "Editoren",
        "version-antispam": "Spamschutzerweiterungen",
        "version-api": "API-Erweiterungen",
        "version-other": "Sonstige Erweiterungen",
index 069da81..ca4eed2 100644 (file)
        "version-specialpages": "Ειδικές σελίδες",
        "version-parserhooks": "Άγκιστρα του συντακτικού αναλυτή",
        "version-variables": "Παράμετροι",
+       "version-editors": "Συντάκτες",
        "version-antispam": "Πρόληψη spam",
        "version-other": "Άλλα",
        "version-mediahandlers": "Χειριστές των μέσων",
index 5cfad4b..168ce07 100644 (file)
        "version-specialpages": "Special pages",
        "version-parserhooks": "Parser hooks",
        "version-variables": "Variables",
+       "version-editors": "Editors",
        "version-antispam": "Spam prevention",
        "version-api": "API",
        "version-other": "Other",
index b75139e..01a9fcf 100644 (file)
        "saveusergroups": "Tallenna {{GENDER:$1|käyttäjän}} ryhmät",
        "userrights-groupsmember": "Jäsenenä ryhmissä:",
        "userrights-groupsmember-auto": "Automaattisesti jäsenenä ryhmissä:",
-       "userrights-groups-help": "Voit muuttaa ryhmiä, joissa tämä käyttäjä on.\n* Merkattu valintaruutu tarkoittaa, että käyttäjä on kyseisessä ryhmässä.\n* Merkkaamaton valintaruutu tarkoittaa, että käyttäjä ei ole kyseisessä ryhmässä.\n* <nowiki>*</nowiki> tarkoittaa, että et pysty poistamaan ryhmää, kun olet sen lisännyt tai päinvastoin.\n* # tarkoittaa että voit vain siirtää tämän ryhmän jäsenten vanhentumisaikaa menneisyyttä kohti etkä lisätä aikaa.",
+       "userrights-groups-help": "Voit muuttaa ryhmiä, joissa tämä käyttäjä on.\n* Merkattu valintaruutu tarkoittaa, että käyttäjä on kyseisessä ryhmässä.\n* Merkkaamaton valintaruutu tarkoittaa, että käyttäjä ei ole kyseisessä ryhmässä.\n* <nowiki>*</nowiki> tarkoittaa, että et pysty enää poistamaan käyttäjää ryhmästä, kun olet hänet siihen lisännyt, tai päinvastoin.\n* <nowiki>#</nowiki> tarkoittaa, että voit ainoastaan pidentää tämän ryhmän jäsenten oikeuksien vanhentumisen määräaikaa, mutta et voi lyhentää sitä.",
        "userrights-reason": "Syy:",
        "userrights-no-interwiki": "Sinulla ei ole oikeutta muokata käyttöoikeuksia muissa wikeissä.",
        "userrights-nodatabase": "Tietokantaa $1 ei ole tai se ei ole paikallinen.",
        "version-specialpages": "Toimintosivut",
        "version-parserhooks": "Jäsenninkytkökset",
        "version-variables": "Muuttujat",
+       "version-editors": "Muokkaajat",
        "version-antispam": "Roskalinkkien estäminen",
        "version-other": "Muut",
        "version-mediahandlers": "Median käsittelijät",
index 2a4b59e..39cf7d0 100644 (file)
        "apisandbox-results-login-suppressed": "Cette requête a été exécutée en tant qu'utilisateur déconnecté et aurait pu être utilisée pour évincer la sécurité concernant le contrôle de la même source dans le navigateur. Notez que la gestion automatique du jeton de l'API du bac à sable ne fonctionne pas correctement avec de telles requêtes; vous devez les remplir manuellement.",
        "apisandbox-request-selectformat-label": "Afficher les données de la requête comme :",
        "apisandbox-request-format-url-label": "Chaîne de requête de l’URL",
-       "apisandbox-request-url-label": "Requête URL :",
+       "apisandbox-request-url-label": "URL de la requête :",
        "apisandbox-request-format-json-label": "JSON",
-       "apisandbox-request-json-label": "Demander du JSON :",
+       "apisandbox-request-json-label": "Représentation JSON de requête :",
        "apisandbox-request-time": "Durée de la demande: {{PLURAL:$1|$1 ms}}",
        "apisandbox-results-fixtoken": "Corrigez le jeton et renvoyez",
        "apisandbox-results-fixtoken-fail": "Impossible de récupérer le jeton \"$1\"",
        "tooltip-publish": "Publier vos modifications",
        "tooltip-preview": "Merci de prévisualiser vos modifications avant de les publier",
        "tooltip-diff": "Afficher les modifications que vous avez apportées au texte",
-       "tooltip-compareselectedversions": "Afficher les différences entre les deux versions selectionnées de cette page",
+       "tooltip-compareselectedversions": "Afficher les différences entre les deux versions sélectionnées de cette page",
        "tooltip-watch": "Ajouter cette page à votre liste de suivi",
        "tooltip-watchlistedit-normal-submit": "Enlever les titres",
        "tooltip-watchlistedit-raw-submit": "Mise à jour de la liste de suivi",
index cb54e88..0aad8bc 100644 (file)
        "changepassword-success": "Zòt mo di pas té modifyé !",
        "changepassword-throttled": "Zòt fè tròp di tantativ di konèksyon résaman. \nSouplé, antann $1 anvan di rééséyé.",
        "botpasswords": "Mo di pas di robo",
+       "botpasswords-summary": "<em>Mo di pas di robo</em> ka pèrmèt di aksédé à roun kont itilizatò via API-a san itilizé idantifyan-yan di konèksyon prensipal. Drwè itilizatò disponib lò to konèkté ké roun mo di pas robo pouvé fika rédjwi.\n\nSi zòt wè pou kisa zòt ké lé fè sa, a ki zòt pa benzwen di fè sa. Pésonn divèt janmè doumandé zòt di jénéré roun é di bay li.",
+       "botpasswords-disabled": "Mo di pas di robo sa dézaktivé.",
+       "botpasswords-no-central-id": "Pou itilizé mo di pas di robo, zòt divèt fika konèkté à roun kont santralizé.",
+       "botpasswords-existing": "Mo di pas di robo ègzistan",
+       "botpasswords-createnew": "Kréyé roun mo di pas nòv di robo",
+       "botpasswords-editexisting": "Modifyé roun mo di pas di robo ègzistan",
+       "botpasswords-label-appid": "Non di robo :",
+       "botpasswords-label-create": "Kréyé",
+       "botpasswords-label-update": "Mété à jou",
+       "botpasswords-label-cancel": "Anilé",
+       "botpasswords-label-delete": "Souprimé",
+       "botpasswords-label-resetpassword": "Réyinisyalizé mo di pas",
+       "botpasswords-label-grants": "Drwè aplikab :",
+       "botpasswords-help-grants": "Otorizasyon-yan ka pèrmèt di aksédé o drwè ki ja akòrdé à zòt kont itilizatò. Aktivé roun otorizasyon isi pa ka fourni laksè à pyès drwè ki zòt kont itilizatò pé ké gen dayò. Wè [[Special:ListGrants|tablo dé otorizasyon]] pou plis d’enfòrmasyon.",
+       "botpasswords-label-grants-column": "Akòrdé",
+       "botpasswords-bad-appid": "Non-an di robo « $1 » pa valid.",
+       "botpasswords-insert-failed": "Échèk di ajou-a di non di robo « $1 ». Ès i té ja ajouté ?",
+       "botpasswords-update-failed": "Échèk di mizajou-a di non di robo « $1 ». Ès i té ja souprimé ?",
+       "botpasswords-created-title": "Mo di pas di robo kréyé",
+       "botpasswords-created-body": "Mo di pas pou robo-a « $1 » di {{GENDER:$2|itilizatò|itilizatris}}-a « $2 » té kréyé.",
+       "botpasswords-updated-title": "Mo di pas di robo mizajou",
+       "botpasswords-updated-body": "Mo di pas pou robo-a « $1 » di {{GENDER:$2|itilizatò|itilizatris}}-a « $2 » té mizajou.",
+       "botpasswords-deleted-title": "Mo di pas di robo souprimé",
+       "botpasswords-deleted-body": "Mo di pas pou robo-a « $1 » di {{GENDER:$2|itilizatò|itilizatris}}-a « $2 » té souprimé.",
+       "botpasswords-newpassword": "Mo di pas nòv pou konèkté so kò à<strong>$1</strong> sa <strong>$2</strong>. <em>Souplé, anréjistré li pou fè référans di li iltèryèrman.</em><br> (Pou ansyen robo ki ka nésésité ki non fourni pou konèksyon-an ka fika menm-an ki non di itilizasyon évantchwèl, zòt pouvé osi itilizé <strong>$3</strong> kou non di itilizatò é <strong>$4</strong> kou mo di pas).",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider pa disponib.",
+       "botpasswords-restriction-failed": "Rèstriksyon-yan di mo di pas di robo ka anpéché sa konèksyon.",
+       "botpasswords-invalid-name": "Non-an d'itilizatò spésifyé pa ka kontni di séparatò di mo di pas di robo (« $1 »).",
+       "botpasswords-not-exist": "{{GENDER:$1|Itilizatò|Itilizatris}}-a « $1 » pa gen di mo di pas di robo nonmen « $2 ».",
+       "resetpass_forbidden": "Mo di pas pa pouvé fika chanjé.",
+       "resetpass_forbidden-reason": "Mo di pas pa pouvé fika modifyé : $1",
+       "resetpass-no-info": "Zòt divèt fika konèkté pou aksédé dirèkman à sa paj.",
+       "resetpass-submit-loggedin": "Chanjé di mo di pas",
+       "resetpass-submit-cancel": "Anilé",
+       "resetpass-wrong-oldpass": "Mo di pas atchwèl oben tanporèr envalid.\nZòt pitèt ja chanjé zòt mo di pas oben doumandé roun mo di pas nòv tanporèr.",
+       "resetpass-recycled": "Souplé, réyinisyalizé zòt mo di pas an tchèk kichoz di ròt ki atchwèl-a.",
+       "resetpass-temp-emailed": "Zòt konèkté ké roun kod tanporèr fourni pa kouryé.\nPou tèrminé konèksyon-an, zòt divèt fourni roun mo di pas nòv isi :",
+       "resetpass-temp-password": "Mo di pas tanporèr :",
+       "resetpass-expired-soft": "Zòt mo di pas èkspiré, é divèt fika réyinisyalizé. Souplé, chwézi roun nouvèl atchwèlman oben kliké asou « {{int:authprovider-resetpass-skip-label}} » pou fè li plita.",
+       "resetpass-validity-soft": "Zòt mo di pas pa valid : $1\n\nSouplé, chwézi roun mo di pas nòv atchwèlman, oben kliké asou « {{int:authprovider-resetpass-skip-label}} » pou réyinisyalizé li plita.",
        "passwordreset": "Réyinisyalizasyon di mo di pas",
+       "passwordreset-text-one": "Ranplisé sa fòrmilèr pou zòt mo di pas.",
+       "passwordreset-emaildisabled": "Fonksyonalité-ya di kouryé té dézaktivé asou sa wiki.",
+       "passwordreset-username": "Non di itilizatò :",
+       "passwordreset-domain": "Domenn :",
+       "passwordreset-email": "Adrès di kouryé :",
+       "passwordreset-emailtitle": "Détay di kont asou {{SITENAME}}",
+       "passwordreset-emailelement": "Non di itilizatò : \n$1\n\nMo di pas tanporèr : \n$2",
+       "passwordreset-nocaller": "Oun apélan divèt fika fourni",
+       "passwordreset-nosuchcaller": "Apélan-an pa ka ègzisté : $1",
+       "passwordreset-invalidemail": "Adrès di mésajri envalid",
+       "passwordreset-nodata": "Pyès non d'itilizatò oben adrès di mésajri té fourni",
+       "changeemail": "Chanjé oben souprimé adrès di kouryé",
+       "changeemail-no-info": "Zòt divèt fika konèkté pou aksédé dirèkman à sa paj.",
+       "changeemail-oldemail": "Adrès di kouryé atchwèl :",
+       "changeemail-newemail": "Nouvèl adrès di kouryé :",
+       "changeemail-none": "(pyès)",
+       "changeemail-password": "Zòt mo di pas asou {{SITENAME}} :",
+       "changeemail-submit": "Chanjé adrès di kouryé",
+       "changeemail-throttled": "Zòt fè tròp di tantativ di konèksyon. \nSouplé, antann $1 anvan di rééséyé.",
+       "changeemail-nochange": "Souplé, sézi roun nouvèl adrès di kouryé diférant di présédant-a.",
+       "resettokens": "Réyinisyalizé jéton-yan.",
+       "resettokens-no-tokens": "I pa gen pyès jéton pou réyinisyalizé.",
+       "resettokens-tokens": "Jéton :",
+       "resettokens-token-label": "$1 (valò atchwèl : $2)",
+       "resettokens-watchlist-token": "Jéton pou flux (Atom/RSS) web di [[Special:Watchlist|modifikasyon di paj di zòt lis di swivi]]",
+       "resettokens-done": "Jéton réyinisyalizé.",
+       "resettokens-resetbutton": "Réyinisyalizé jéton-yan ki sékèksyoné",
        "bold_sample": "Tèks gra",
        "bold_tip": "Tèks gra",
        "italic_sample": "Tèks italik",
        "sig_tip": "Zòt signatir ké dat",
        "hr_tip": "Lign orizontal (pa an abizé)",
        "summary": "Rézimé :",
+       "subject": "Sijè :",
        "minoredit": "Sa modifikasyon sa minò.",
        "watchthis": "Swiv sa paj",
        "savearticle": "Anréjistré",
+       "savechanges": "Anréjistré modifikasyon-yan",
+       "publishpage": "Pibliyé paj-a",
+       "publishchanges": "Pibliyé modifikasyon-yan",
+       "savearticle-start": "Anréjistré paj-a…",
+       "savechanges-start": "Anréjistré modifikasyon-yan…",
+       "publishpage-start": "Pibliyé paj-a…",
+       "publishchanges-start": "Pibliyé modifikasyon-yan…",
        "preview": "Prévizwalizasyon",
        "showpreview": "Prévizwalizé",
        "showdiff": "Wè modifikasyon-yan",
index 495b2c4..d7bb1f8 100644 (file)
        "template-loop-category-desc": "הדף הזה מכיל לולאה בתבנית, כלומר תבנית שקוראת לעצמה באופן רקורסיבי.",
        "template-loop-warning": "<strong>אזהרה:</strong> הדף הזה קורא לדף [[:$1]], וזה גורם ללולאה בתבנית (קריאה רקורסיבית אינסופית).",
        "parser-template-recursion-depth-warning": "עומק התבניות המוכללות זו בזו עבר את המגבלה ($1)",
-       "language-converter-depth-warning": "×¢×\95×\9eק ×\9e×\9e×\99ר השפה עבר את המגבלה ($1)",
+       "language-converter-depth-warning": "×¢×\95×\9eק ×\94×\9eרת השפה עבר את המגבלה ($1)",
        "node-count-exceeded-category": "דפים שבהם מספר הצמתים גדול מדי",
        "node-count-exceeded-category-desc": "מספר הצמתים בדף גדול מהמספר המרבי.",
        "node-count-exceeded-warning": "מספר הצמתים בדף גדול מדי",
        "undo-summary": "ביטול גרסה $1 של [[Special:Contributions/$2|$2]] ([[User talk:$2|שיחה]])",
        "undo-summary-username-hidden": "ביטול גרסה $1 של משתמש מוסתר",
        "cantcreateaccount-text": "אפשרות יצירת החשבונות מכתובת ה־IP הזאת (<strong>$1</strong>) נחסמה על־ידי [[User:$3|$3]].\n\nהסיבה שניתנה על־ידי $3 היא: <em>$2</em>",
-       "cantcreateaccount-range-text": "אפשרות יצירת החשבונות מכתובות IP בתוך הטווח <strong>$1</strong>, כולל כתובת ה־IP שלך (<strong>$4</strong>), נחסמה על־ידי [[User:$3|$3]].\n\nהסיבה שניתנה על־ידי $3 היא \"$2\".",
+       "cantcreateaccount-range-text": "אפשרות יצירת החשבונות מכתובות IP בתוך הטווח <strong>$1</strong>, כולל כתובת ה־IP שלך (<strong>$4</strong>), נחסמה על־ידי [[User:$3|$3]].\n\nהסיבה שניתנה על־ידי $3 היא: <em>$2</em>",
        "viewpagelogs": "הצגת יומנים עבור דף זה",
        "nohistory": "אין היסטוריית שינויים עבור דף זה.",
        "currentrev": "גרסה אחרונה",
        "last": "קודמת",
        "page_first": "ראשון",
        "page_last": "אחרון",
-       "histlegend": "בחירת גרסאות להשוואה: {{GENDER:|בחר|בחרי|בחרו}} את הגרסאות ש{{GENDER:|ברצונך|ברצונך|ברצונכם}} להשוות ולאחר מכן {{GENDER:|הקש|הקישי|הקישו}} על Enter או {{GENDER:|לחץ|לחצי|לחצו}} על הכפתור שלמטה.<br />\nמקרא: <strong>({{int:cur}})</strong> = השוואה עם הגרסה הנוכחית, <strong>({{int:last}})</strong> = השוואה עם הגרסה הקודמת, <strong>{{int:minoreditletter}}</strong> = עריכה משנית.",
+       "histlegend": "בחירת גרסאות להשוואה: יש לבחור את הגרסאות שברצונך להשוות ולאחר מכן להקיש על Enter או ללחוץ על הכפתור שלמטה.<br />\nמקרא: <strong>({{int:cur}})</strong> = השוואה עם הגרסה הנוכחית, <strong>({{int:last}})</strong> = השוואה עם הגרסה הקודמת, <strong>{{int:minoreditletter}}</strong> = עריכה משנית.",
        "history-fieldset-title": "חיפוש גרסאות",
        "history-show-deleted": "גרסאות מוסתרות בלבד",
        "histfirst": "הישנות ביותר",
        "revdelete-selected-text": "{{PLURAL:$1|הגרסה שנבחרה|הגרסאות שנבחרו}} מתוך הדף [[:$2]]:",
        "revdelete-selected-file": "{{PLURAL:$1|גרסת הקובץ שנבחרה|גרסאות הקובץ שנבחרו}} מתוך [[:$2]]:",
        "logdelete-selected": "{{PLURAL:$1|פעולת היומן שנבחרה|פעולות היומן שנבחרו}}:",
-       "revdelete-text-text": "×\92רס×\90×\95ת ×©×\94×\95סתר×\95 ×¢×\93×\99×\99×\9f ×\99×\95פ×\99×¢×\95 בהיסטוריית הדף, אבל התוכן שלהן לא יהיה זמין לציבור.",
-       "revdelete-text-file": "×\92רס×\90×\95ת ×§×\91צ×\99×\9d ×©×\94×\95סתר×\95 ×¢×\93×\99×\99×\9f ×\99×\95פ×\99×¢×\95 בהיסטוריית הקובץ, אבל התוכן שלהן לא יהיה זמין לציבור.",
-       "logdelete-text": "פע×\95×\9c×\95ת ×\99×\95×\9e×\9f ×©×\94×\95סתר×\95 ×¢×\93×\99×\99×\9f ×\99×\95פ×\99×¢×\95 בדפי היומנים, אבל התוכן שלהן לא יהיה זמין לציבור.",
+       "revdelete-text-text": "×\92רס×\90×\95ת ×©×\94×\95סתר×\95 ×¢×\93×\99×\99×\9f ×ª×\95פענ×\94 בהיסטוריית הדף, אבל התוכן שלהן לא יהיה זמין לציבור.",
+       "revdelete-text-file": "×\92רס×\90×\95ת ×§×\91צ×\99×\9d ×©×\94×\95סתר×\95 ×¢×\93×\99×\99×\9f ×ª×\95פענ×\94 בהיסטוריית הקובץ, אבל התוכן שלהן לא יהיה זמין לציבור.",
+       "logdelete-text": "פע×\95×\9c×\95ת ×\99×\95×\9e×\9f ×©×\94×\95סתר×\95 ×¢×\93×\99×\99×\9f ×ª×\95פענ×\94 בדפי היומנים, אבל התוכן שלהן לא יהיה זמין לציבור.",
        "revdelete-text-others": "מפעילי מערכת אחרים עדיין יוכלו לגשת לתוכן המוסתר ואף לשחזר אותו, אלא אם כן תוגדרנה הגבלות נוספות.",
        "revdelete-confirm": "אנא אשרו שזה אכן מה שאתם מתכוונים לעשות, שאתם מבינים את התוצאות של מעשה כזה, ושהמעשה מבוצע בהתאם ל[[{{MediaWiki:Policy-url}}|נוהלי האתר]].",
        "revdelete-suppress-text": "יש להשתמש בהעלמה <strong>אך ורק</strong> במקרים הבאים:\n* מידע שעלול להיות לשון הרע\n* חשיפת מידע אישי\n*: <em>כתובות בתים ומספרי טלפון, מספרי זהות, וכו'</em>",
        "version-specialpages": "דפים מיוחדים",
        "version-parserhooks": "הרחבות מפענח",
        "version-variables": "משתנים",
+       "version-editors": "כלי עריכה",
        "version-antispam": "מניעת ספאם",
        "version-other": "אחר",
        "version-mediahandlers": "מציגי מדיה",
index fd8f8aa..9d139d8 100644 (file)
@@ -90,7 +90,8 @@
                        "Dcljr",
                        "Bhatakati aatma",
                        "Shypoetess",
-                       "Innocentbunny"
+                       "Innocentbunny",
+                       "TryKid"
                ]
        },
        "tog-underline": "कड़ी रेखांकन:",
        "rcfilters-filter-humans-description": "मानव संपादक द्वारा किए गए संपादन।",
        "rcfilters-filtergroup-reviewstatus": "पुनरीक्षण स्थिति",
        "rcfilters-filter-reviewstatus-unpatrolled-label": "अपरीक्षित",
+       "rcfilters-filter-reviewstatus-auto-label": "सवापरिक्षित",
        "rcfilters-filtergroup-significance": "महत्व",
        "rcfilters-filter-minor-label": "छोटा संपादन",
        "rcfilters-filter-minor-description": "लेखक का संपादन छोटा संपादन के रूप में लेबल किया गया है।",
index 339d268..422de69 100644 (file)
        "apisandbox-dynamic-error-exists": "A(z) „$1” nevű paraméter már létezik.",
        "apisandbox-deprecated-parameters": "Elavult paraméterek",
        "apisandbox-fetch-token": "A token automatikus kitöltése",
+       "apisandbox-add-multi": "Hozzáadás",
        "apisandbox-submit-invalid-fields-title": "Egyes mezők érvénytelenek",
        "apisandbox-submit-invalid-fields-message": "Javítsd ki a jelzett mezőket, és próbáld újra.",
        "apisandbox-results": "Eredmények",
index c99651a..7389382 100644 (file)
        "deprecated-self-close-category": "Pagini qui uzas nevalida etiketi HTML por klozajo",
        "duplicate-args-category": "Pagini kun argumenti duopligita che shabloni",
        "parser-unstrip-loop-warning": "Renkontresis nefinita procedo ('loop') en la funciono \"Unstrip\"",
+       "undo-success": "La redakto ne povas desfacesar.\nVerifikez adinfre per komparo inter la du versioni se to esas fakte quon vu deziras facar; pose 'salvez' la modifiki por kompletigar la redakto.",
        "undo-failure": "Ne povis nuligar la redakto pro konflikti kun intermeza redakti.",
        "viewpagelogs": "Videz registrari por ca pagino",
        "nohistory": "Ne esas redakto-historio por ica pagino.",
        "last": "lasta",
        "page_first": "unesma",
        "page_last": "finala",
-       "histlegend": "Selektado por diferi: markizez la versioni por komparar e lore presez 'Enter' o la butono infre.<br />\nSurskriburo: '''({{int:cur}})''' = diferi kun l'aktuala versiono,\n'''({{int:last}})''' = diferi kun l'antea versiono,\n'''{{int:minoreditletter}}''' = mikra redakto.",
+       "histlegend": "Selektado por diferi: markizez la versioni por komparar e presez 'Enter' o la butono adinfre.<br />\nSurskriburo: '''({{int:cur}})''' = diferi kun la nuna versiono,\n'''({{int:last}})''' = diferi kun l'antea versiono,\n'''{{int:minoreditletter}}''' = mikra redakturo.",
        "history-fieldset-title": "Serchar revizi",
        "history-show-deleted": "Nur efacita",
        "histfirst": "Maxim anciena",
        "prefs-personal": "Personala informo",
        "prefs-rc": "Recenta chanji",
        "prefs-watchlist": "Surveyo-listo",
+       "prefs-editwatchlist": "Modifikez surveyo-listo",
        "prefs-editwatchlist-edit": "Vidar e removar tituli de vua surveyo-listo",
+       "prefs-editwatchlist-raw": "Modifikez vua surveyo-listo en formo di texto",
+       "prefs-editwatchlist-clear": "Efacar vua surveyo-listo",
        "prefs-watchlist-days": "Dii montrata en la surveyo-listo:",
        "prefs-watchlist-days-max": "Admaxime $1 {{PLURAL:$1|dio|dii}}",
        "prefs-watchlist-edits-max": "Maxima nombro: 1000",
        "right-suppressrevision": "Vidar, celar e deskovrar specifika revizi di pagini de irga uzero",
        "right-blockemail": "Blokusar uzero pri sendar e-posto",
        "right-rollback": "Rapide retrorular la redakti da la lasta uzero qua redaktis specigita pagino",
+       "right-managechangetags": "Kreo e (des)uzo di [[Special:Tags|etiketi]]",
+       "grant-editmywatchlist": "Modifikez vua surveyo-listo",
        "newuserlogpage": "Uzero-kreo-registro",
        "rightslog": "Uzero-yuri-registraro",
        "action-read": "lektar ca pagino",
        "action-movefile": "movar ca arkivo",
        "action-upload": "adkargar ca arkivo",
        "action-browsearchive": "serchar pagini efacita",
+       "action-managechangetags": "krear e (des)uzar etiketi",
        "nchanges": "$1 {{PLURAL:$1|chanjo|chanji}}",
        "enhancedrc-history": "Versionaro",
        "recentchanges": "Recenta chanji",
        "shared-repo-name-wikimediacommons": "Wikimedia Commons",
        "upload-disallowed-here": "Vu ne povas modifikar ica arkivo.",
        "filerevert-comment": "Motivo:",
+       "filerevert-success": "<strong>[[Media:$1|$1]]</strong> restauresis a la [$4 versiono de $2, ye $3].",
        "filedelete": "Efacar $1",
        "filedelete-legend": "Efacar arkivo",
        "filedelete-intro": "Vu efacas '''[[Media:$1|$1]]''' kun olua tota versionaro.",
        "allpages-bad-ns": "{{SITENAME}} ne havas nomaro \"$1\".",
        "allpages-hide-redirects": "Celar ridirekti",
        "categories": "Kategorii",
-       "deletedcontributions": "Efacita uzero-kontributadi",
-       "deletedcontributions-title": "Efacita uzero-kontributadi",
+       "deletedcontributions": "Efacita uzero-kontributaji",
+       "deletedcontributions-title": "Efacita uzero-kontributaji",
        "linksearch": "Sercho di extera ligili",
        "linksearch-ns": "Nomaro:",
        "linksearch-ok": "Serchez",
        "listgrouprights": "Permisi dil grupo di uzeri",
        "listgrouprights-group": "Grupo",
        "listgrouprights-members": "(listo di membri)",
+       "restricted-displaytitle-ignored-desc": "La pagino havas nekonocita titulo <code><nowiki>{{DISPLAYTITLE}}</nowiki></code>, pro ol ne esas equivalanta a la nuna titulo di ica pagino.",
        "mailnologin": "Ne sendar adreso",
        "mailnologintext": "Vu mustas [[Special:UserLogin|enirir]] e havar valida e-adreso en vua [[Special:Preferences|preferaji]] por sendar e-posto ad altra uzanti.",
        "emailuser": "Sendar e-posto a ca uzero",
        "mywatchlist": "Surveyaji",
        "watchlistfor2": "Por $1 $2",
        "nowatchlist": "Vu ne havas objekti en vua listo di surveyaji.",
+       "watchlistanontext": "Voluntez facar 'log in' por vidar o modifikar artikli de vua surveyo-listo",
        "watchnologin": "Vu ne startis sesiono",
        "addedwatchtext": "\"[[:$1]]\" atachesis a vua [[Special:Watchlist|listo di surveyaji]].",
        "removedwatchtext": "\"[[:$1]]\" ed relatanta diskutado forigesis de [[Special:Watchlist|vua surveyado]].",
        "undeletepagetext": "La sequanta {{PLURAL:$1|pagino|pagini}} efacesis ma {{PLURAL:$1|ol|li}} ankore esas en la arkivo ed esas restaurebla. La arkivo povas netigesar periodale.",
        "undeleterevisions": "$1 {{PLURAL:$1|revizo|revizi}} efacita",
        "undeletehistory": "Se vu restauros la pagino, omna antea revizi restauresos en la korespondanta historiala pagino.\nSe nova pagino kun la sama titulo kreesis pos l'efaco, la restaurita revizuri aparos en lua historiala pagino.",
+       "undeleterevision-missing": "Nevalida o mankanta revizo.\nSive vu skribis la ligilo nekorekte, sive la revizo restauresis o removesis del arkivo.",
        "undeletebtn": "Restaurar",
        "undeletelink": "vidar/restaurar",
        "undeleteviewlink": "videz",
        "undeletecomment": "Motivo:",
+       "undeletedpage": "<strong>$1 restauresis</strong>\n\nVidez la [[Special:Log/delete|'log' pri efaci]] por vidar omna recenta efaci e restauri.",
        "undelete-search-box": "Serchez efacita pagini",
        "undelete-search-submit": "Serchar",
        "undelete-show-file-submit": "Yes",
        "month": "De monato (e plu frue):",
        "year": "De yaro (e plu frue):",
        "sp-contributions-newbies": "Montrez nur kontributadi di la nova uzeri",
-       "sp-contributions-newbies-sub": "Di nova konti",
+       "sp-contributions-newbies-sub": "Dil nova uzeri",
+       "sp-contributions-newbies-title": "Kontributaji dil nova uzeri",
        "sp-contributions-blocklog": "blokusar-registraro",
+       "sp-contributions-suppresslog": "efacita kontributaji dil {{GENDER:$1|uzero}}",
        "sp-contributions-deleted": "efacita {{GENDER:$1|uzero}}-kontributadi",
        "sp-contributions-uploads": "sendita arkivi",
        "sp-contributions-logs": "registrari",
        "ipaddressorusername": "IP-adreso od uzantonomo:",
        "ipbexpiry": "Expiro:",
        "ipbreason": "Motivo:",
-       "ipbreason-dropdown": "*Ordinara motivi por blokuso\n** Insertar nevera informi\n** Efacar kontenajo de pagini\n** Insertadar ligili ad extera reti\n** Insertar radoto aden pagini\n** Timidiganta ago\n** Trouzar multa konti\n** Neaceptebla uzeronomo",
+       "ipbreason-dropdown": "*Ordinara motivi por blokuso\n** Insertar nevera informi\n** Efacar kontenajo de pagini\n** Insertadar ligili 'spam' ad extera reti\n** Insertar radoto aden pagini\n** Timidiganta ago kontre uzeri\n** Trouzar multopla konti\n** Neaceptebla uzeronomo",
        "ipb-hardblock": "Impedar redakturi e modifikuri de uzeri qui facas 'login' de ica IP-adreso",
        "ipbcreateaccount": "Preventez kreo di konti",
        "ipbemailban": "Impedar l'uzero sendar e-posto",
        "blockipsuccesssub": "Blokusado sucesis",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] blokusesis.<br />\nVidez [[Special:BlockList|IP-blokuslisto]] por revizor blokusadi.",
        "ipb-edit-dropdown": "Redaktar blokuso-motivi",
+       "ipb-blocklist-contribs": "Kontributadi dil uzero {{GENDER:$1|$1}}",
        "unblockip": "Desblokusar uzero",
        "unblockiptext": "Uzez la sequanta formularo por restaurar la skribo-aceso ad IP-adreso qua blokusesis antee.",
        "ipusubmit": "Desblokusar",
        "ipblocklist-submit": "Serchar",
        "ipblocklist-otherblocks": "Altra {{PLURAL:$1|blokuso|blokusi}}",
        "infiniteblock": "nefinita",
+       "blocklist-nousertalk": "ne povas redaktar lua propra diskuto-pagino",
        "blocklink": "blokusar",
        "unblocklink": "desblokusar",
        "change-blocklink": "chanjar blokuso",
        "unblocklogentry": "desblokusis \"$1\"",
        "block-log-flags-nocreate": "ne povas krear konto",
        "block-log-flags-noemail": "e-posto blokusita",
+       "block-log-flags-nousertalk": "ne povas redaktar lua propra diskuto-pagino",
        "ipb_expiry_invalid": "Nevalida expiro-tempo.",
        "ipb-otherblocks-header": "Altra {{PLURAL:$1|blokuso|blokusi}}",
        "ip_range_invalid": "Nevalida IP-rango.",
        "autosumm-replace": "Kontenajo remplasigesis kun '$1'",
        "autoredircomment": "Ridirektas a [[$1]]",
        "autosumm-new": "Pagino kreesis kun '$1'",
+       "watchlistedit-normal-title": "Modifikez surveyo-listo",
        "watchlistedit-normal-legend": "Removar tituli de surveyo-listo",
        "watchlistedit-normal-explain": "La tituli de vua surveyo-listo montresas adinfre.\nPor removar ula titulo, markizez la buxo proxim ol, e kliktez \"{{int:Watchlistedit-normal-submit}}\".\nVu anke povas [[Special:EditWatchlist/raw|redaktar direkte la 'kruda' listo]].",
        "watchlistedit-normal-submit": "Removar tituli",
        "watchlistedit-normal-done": "{{PLURAL:$1|Singla titulo|$1 tituli}} removesis de vua surveyo-listo:",
        "watchlistedit-raw-title": "Redaktar texto di surveyo-listo",
-       "watchlistedit-raw-legend": "Redaktar texto di surveyo-listo",
+       "watchlistedit-raw-legend": "Redaktar vua surveyo-listo en formo di texto",
        "watchlistedit-raw-explain": "Tituli en vua surveyo-listo montresas adinfre, e povas modifikesar per adjuntado od eskarto de la listo; nur un titulo per lineo.\nKande vu finos, kliktez \"{{int:Watchlistedit-raw-submit}}\".\nVu anke povas [[Special:EditWatchlist|uzar la redaktero ordinara ('standard')]].",
        "watchlistedit-raw-titles": "Tituli:",
        "watchlistedit-raw-submit": "Aktualigar surveyo-listo",
        "tags-hitcount": "$1 {{PLURAL:$1|chanjo|chanji}}",
        "tags-create-explanation": "Segun predefino, la nova etiketi kreita divenos disponebla por uzado, sive da uzeri, sive da informatikoprogrami 'bot'.",
        "tags-create-warnings-above": "La sequanta {{PLURAL:$2|avizo|avizi}} renkontresis, probante kreir l'etiketo \"$1\":",
+       "tags-delete-too-many-uses": "L'etiketo \"$1\" uzesas en plua kam $2 {{PLURAL:$2|revizo|revizi}}, do ol ne povas eskartesar.",
+       "tags-delete-warnings-after-delete": "L'etiketo \"$1\" efacesis, ma la sequanta {{PLURAL:$2|avizo|avizi}} renkontresis:",
+       "tags-activate-not-found": "L'etiketo \"$1\" ne existas.",
        "htmlform-reset": "Desfacar chanji",
        "htmlform-selectorother-other": "Altra",
        "htmlform-cloner-create": "Adjuntar plue",
index 4d4221c..6e2bac9 100644 (file)
        "tog-watchlisthideminor": "細部の編集をウォッチリストに表示しない",
        "tog-watchlisthideliu": "ログイン利用者による編集をウォッチリストに表示しない",
        "tog-watchlistreloadautomatically": "フィルタが変更されるたびに、ウォッチリストを自動的に再読み込みする (JavaScript が必要)",
-       "tog-watchlistunwatchlinks": "ウォッチリストの項目に直接、追加/除去のリンクを表示 (トグル切り替えには JavaScript が必要)",
+       "tog-watchlistunwatchlinks": "ウォッチリストの項目に直接、追加/除去のリンク({{int:Watchlist-unwatch-undo}}/{{int:Watchlist-unwatch}})を表示 (トグル切り替えには JavaScript が必要)",
        "tog-watchlisthideanons": "匿名利用者による編集をウォッチリストに表示しない",
        "tog-watchlisthidepatrolled": "巡回済みの編集をウォッチリストに表示しない",
        "tog-watchlisthidecategorization": "ページのカテゴリ追加・除去を表示しない",
        "rcfilters-filter-humans-label": "人間(ボットではない)",
        "rcfilters-filter-humans-description": "人間の手作業による編集",
        "rcfilters-filtergroup-reviewstatus": "ステータスの確認",
+       "rcfilters-filter-reviewstatus-unpatrolled-description": "手動または自動で巡回されていない編集。",
        "rcfilters-filter-reviewstatus-unpatrolled-label": "未巡回",
+       "rcfilters-filter-reviewstatus-manual-description": "巡回済みと手動でマークされた編集。",
        "rcfilters-filtergroup-significance": "重要度",
        "rcfilters-filter-minor-label": "細部の編集",
        "rcfilters-filter-minor-description": "編集者が細部の編集とマークしたもの。",
        "apisandbox-dynamic-error-exists": "引数名 \"$1\" は既に存在しています。",
        "apisandbox-deprecated-parameters": "廃止予定の引数",
        "apisandbox-fetch-token": "トークンを自動入力します",
+       "apisandbox-add-multi": "追加",
        "apisandbox-submit-invalid-fields-title": "いくつかの欄が不正です。",
        "apisandbox-submit-invalid-fields-message": "印が付いている欄を訂正し、再試行してください。",
        "apisandbox-results": "結果",
index 7dac44f..83d1338 100644 (file)
        "october": "ខែតុលា",
        "november": "ខែវិច្ឆិកា",
        "december": "ខែធ្នូ",
-       "january-gen": "មករា",
-       "february-gen": "កុម្ភៈ",
-       "march-gen": "មីនា",
-       "april-gen": "មេសា",
-       "may-gen": "ឧសភា",
-       "june-gen": "មិថុនា",
-       "july-gen": "កក្កដា",
-       "august-gen": "សីហា",
-       "september-gen": "កញ្ញា",
-       "october-gen": "តុលា",
-       "november-gen": "វិច្ឆិកា",
-       "december-gen": "ធ្នូ",
+       "january-gen": "á\9e\81á\9f\82á\9e\98á\9e\80á\9e\9aá\9e¶",
+       "february-gen": "á\9e\81á\9f\82á\9e\80á\9e»á\9e\98á\9f\92á\9e\97á\9f\88",
+       "march-gen": "á\9e\81á\9f\82á\9e\98á\9e¸á\9e\93á\9e¶",
+       "april-gen": "á\9e\81á\9f\82á\9e\98á\9f\81á\9e\9fá\9e¶",
+       "may-gen": "á\9e\81á\9f\82á\9e§á\9e\9fá\9e\97á\9e¶",
+       "june-gen": "á\9e\81á\9f\82á\9e\98á\9e·á\9e\90á\9e»á\9e\93á\9e¶",
+       "july-gen": "á\9e\81á\9f\82á\9e\80á\9e\80á\9f\92á\9e\80á\9e\8aá\9e¶",
+       "august-gen": "á\9e\81á\9f\82á\9e\9fá\9e¸á\9e á\9e¶",
+       "september-gen": "á\9e\81á\9f\82á\9e\80á\9e\89á\9f\92á\9e\89á\9e¶",
+       "october-gen": "á\9e\81á\9f\82á\9e\8fá\9e»á\9e\9bá\9e¶",
+       "november-gen": "á\9e\81á\9f\82á\9e\9cá\9e·á\9e\85á\9f\92á\9e\86á\9e·á\9e\80á\9e¶",
+       "december-gen": "á\9e\81á\9f\82á\9e\92á\9f\92á\9e\93á\9e¼",
        "jan": "មករា",
        "feb": "កុម្ភៈ",
        "mar": "មីនា",
index b42ea4d..4c31b99 100644 (file)
        "tog-watchlisthideminor": "주시문서 목록에서 사소한 편집을 숨기기",
        "tog-watchlisthideliu": "주시문서 목록에서 로그인한 사용자의 편집을 숨기기",
        "tog-watchlistreloadautomatically": "필터가 수정될 때마다 주시문서 목록 자동으로 새로 고치기 (자바스크립트 필요)",
-       "tog-watchlistunwatchlinks": "주ì\8b\9c문ì\84\9c ëª©ë¡\9d í\95­ëª©ì\97\90 ë\8c\80í\95\9c ì§\81ì \91ì \81ì\9d¸ ì£¼ì\8b\9c/주ì\8b\9cí\95´ì \9c ë§\81í\81¬를 추가합니다 (토글 기능을 위해 자바스크립트가 필요합니다)",
+       "tog-watchlistunwatchlinks": "주ì\8b\9c문ì\84\9c ëª©ë¡\9d í\95­ëª©ì\97\90 ë\8c\80í\95\9c ì§\81ì \91ì \81ì\9d¸ ì£¼ì\8b\9c/주ì\8b\9cí\95´ì \9c ë§\88커 ({{int:Watchlist-unwatch}}/{{int:Watchlist-unwatch-undo}}) 를 추가합니다 (토글 기능을 위해 자바스크립트가 필요합니다)",
        "tog-watchlisthideanons": "주시문서 목록에서 익명 사용자의 편집을 숨기기",
        "tog-watchlisthidepatrolled": "주시문서 목록에서 점검한 편집을 숨기기",
        "tog-watchlisthidecategorization": "페이지 분류 숨기기",
        "blocked-notice-logextract": "이 사용자는 현재 차단되어 있습니다.\n해당 사용자의 최신 차단 기록을 참조하십시오:",
        "clearyourcache": "<strong>참고:</strong> 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.\n* <strong>파이어폭스 / 사파리</strong>: <em>Shift</em> 키를 누르면서 새로 고침을 클릭하거나, <em>Ctrl-F5</em> 또는 <em>Ctrl-R</em>을 입력 (Mac에서는 <em>⌘-R</em>)\n* <strong>구글 크롬</strong>: <em>Ctrl-Shift-R</em>키를 입력 (Mac에서는 <em>⌘-Shift-R</em>)\n* <strong>인터넷 익스플로러</strong>: <em>Ctrl</em> 키를 누르면서 새로 고침을 클릭하거나, <em>Ctrl-F5</em>를 입력.\n* <strong>오페라:</strong> <em>메뉴 → 설정</em>(맥의 경우 <em>오페라 → 환경 설정</em>)으로 이동한 다음 <em>개인 정보 보호 및 보안 → 검색 데이터 지우기 → 캐시한 영상 및 파일</em>을 누름.",
        "usercssyoucanpreview": "'''안내''': CSS 문서를 저장하기 전에 \"{{int:showpreview}}\" 기능을 통해 작동을 확인해주세요.",
+       "userjsonyoucanpreview": "<strong>안내:</strong> 새로운 JSON을 저장하기 전에 \"{{int:showpreview}}\" 버튼을 통해 작동을 확인해주세요.",
        "userjsyoucanpreview": "'''안내''': 자바스크립트 문서를 저장하기 전에 \"{{int:showpreview}}\" 기능을 통해 작동을 확인해주세요.",
        "usercsspreview": "'''사용자 CSS의 미리 보기입니다.'''\n'''아직 저장하지 않았습니다!'''",
        "userjsonpreview": "<strong>사용자 JSON 구성을 테스트/미리 보기만 하고 있습니다.\n아직 저장하지 않았습니다!</strong>",
        "userjspreview": "'''사용자 자바스크립트 미리 보기입니다.'''\n'''아직 저장하지 않았습니다!'''",
        "sitecsspreview": "'''이 CSS의 미리 보기입니다.'''\n'''아직 저장하지 않았습니다!'''",
+       "sitejsonpreview": "<strong>JSON 구성의 미리 보기입니다.\n아직 저장하지 않았습니다!</strong>",
        "sitejspreview": "'''이 자바스크립트 코드의 미리 보기입니다.'''\n'''아직 저장하지 않았습니다!'''",
        "userinvalidconfigtitle": "<strong>경고:</strong> \"$1\" 스킨은 없습니다.\n.css, .json, .js 문서의 제목은 {{ns:user}}:Foo/vector.css 처럼 소문자로 써야 합니다. {{ns:user}}:Foo/Vector.css 와 같이 대문자로 쓸 경우 작동하지 않습니다.",
        "updated": "(바뀜)",
        "revdelete-edit-reasonlist": "삭제 이유 편집",
        "revdelete-offender": "판 작성자:",
        "suppressionlog": "감추기 기록",
-       "suppressionlogtext": "다음은 관리자로부터 감춰진 내용에 관한 삭제와 차단 기록입니다.\n현재 차단된 사용자 목록을 보려면 [[Special:BlockList|차단된 사용자 목록]]을 참조하세요.",
+       "suppressionlogtext": "다음은 삭제와 차단 기록 중 관리자도 보지 못하게 감춰진 내용의 목록입니다.\n현재 차단된 사용자 목록을 보려면 [[Special:BlockList|차단된 사용자 목록]]을 참조하세요.",
        "mergehistory": "문서 역사 합치기",
        "mergehistory-header": "이 페이지는 새 문서 안으로 한 원본 문서의 편집 역사를 합치게 됩니다.\n이전 문서의 바뀜을 역사적 기록으로 계속 남겨둘 것인지 확인해주세요.",
        "mergehistory-box": "두 문서의 판 합치기:",
        "rcfilters-filter-humans-description": "사람이 한 편집.",
        "rcfilters-filtergroup-reviewstatus": "검토 상태",
        "rcfilters-filter-reviewstatus-unpatrolled-label": "점검 안 됨",
+       "rcfilters-filter-reviewstatus-manual-description": "수동으로 검토된 편집들.",
+       "rcfilters-filter-reviewstatus-manual-label": "수동으로 검토됨",
+       "rcfilters-filter-reviewstatus-auto-label": "점검 면제자",
        "rcfilters-filtergroup-significance": "의미",
        "rcfilters-filter-minor-label": "사소한 편집",
        "rcfilters-filter-minor-description": "기여자가 사소한 기여로 표시한 편집.",
        "lockmanager-fail-closelock": "\"$1\"에 대한 잠금 파일을 닫지 못했습니다.",
        "lockmanager-fail-deletelock": "\"$1\"에 대한 잠금 파일을 삭제하지 못했습니다.",
        "lockmanager-fail-acquirelock": "\"$1\"에 대한 잠금이 실패했습니다.",
-       "lockmanager-fail-openlock": "\"$1\"에 대한 잠금 파일을 열지 못했습니다.",
+       "lockmanager-fail-openlock": "\"$1\"에 대한 잠금 파일을 열지 못했습니다. 업로드 디렉토리가 제대로 설정되어 있고 웹 서버가 해당 디렉토리를 편집할 권한이 있는지 확인하세요. 더 많은 정보를 https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgUploadDirectory 에서 확인할 수 있습니다.",
        "lockmanager-fail-releaselock": "\"$1\"에 대한 잠금을 풀지 못했습니다.",
        "lockmanager-fail-db-bucket": "데이터베이스의 버킷 $1의 잠금을 풀지 못했습니다.",
        "lockmanager-fail-db-release": "데이터베이스 $1의 잠금을 풀지 못했습니다.",
        "uploadstash-bad-path-unrecognized-thumb-name": "인식되지 않은 썸네일 이름",
        "uploadstash-bad-path-no-handler": "파일 $2의 mime $1에 대한 핸들러를 찾을 수 없습니다.",
        "uploadstash-bad-path-bad-format": "\"$1\" 키는 적절한 포맷이 아닙니다.",
+       "uploadstash-file-not-found": "저장소에서 \"$1\" 키를 찾지 못했습니다.",
        "uploadstash-file-not-found-no-thumb": "섬네일을 가져오지 못했습니다.",
        "uploadstash-file-not-found-no-object": "섬네일을 위한 로컬 파일 객체를 만들 수 없습니다.",
        "uploadstash-file-not-found-no-remote-thumb": "섬네일 가져오기를 실패했습니다: $1\nURL = $2",
        "import-mapping-subpage": "이 문서의 하위문서로 들여오기:",
        "import-upload-filename": "파일 이름:",
        "import-upload-username-prefix": "인터위키 접두어:",
+       "import-assign-known-users": "사용자가 로컬에 존재하는 경우 편집을 사용자와 연동합니다",
        "import-comment": "요약:",
        "importtext": "원본 위키에서 [[Special:Export|내보내기]] 기능을 사용해 파일을 내려받으세요.\n그리고 당신의 컴퓨터에 저장해 둔 후 여기에 올려주세요.",
        "importstart": "문서를 가져오는 중...",
        "variantname-zh-hans": "간체",
        "variantname-zh-hant": "번체",
        "metadata": "메타데이터",
-       "metadata-help": "ì\9d´ í\8c\8cì\9d¼ì\9d\80 ì¹´ë©\94ë\9d¼ë\82\98 ì\8a¤ìº\90ë\84\88ê°\80 í\8c\8cì\9d¼ì\9d\84 ë§\8cë\93¤ê±°ë\82\98 ë\94\94ì§\80í\84¸í\99\94í\95\98ë\8a\94 ë\8d° ì\82¬ì\9a©í\95\98기ì\9c\84í\95´ ê¸°ë¡\9dí\95\9c ë¶\80ê°\80 ì \95보를 í\8f¬í\95¨í\95\98ê³  있습니다.\n프로그램에서 파일을 편집한 경우, 새로 저장한 파일에 일부 부가 정보가 빠질 수 있습니다.",
+       "metadata-help": "ì\9d´ í\8c\8cì\9d¼ì\97\90ë\8a\94 ì¹´ë©\94ë\9d¼ë\82\98 ì\8a¤ìº\90ë\84\88ê°\80 í\8c\8cì\9d¼ì\9d\84 ë§\8cë\93¤ê±°ë\82\98 ë\94\94ì§\80í\84¸í\99\94í\95\98ë\8a\94 ë\8d° ì\82¬ì\9a©í\95\98기 ì\9c\84í\95´ ê¸°ë¡\9dí\95\9c ë¶\80ê°\80 ì \95ë³´ê°\80 í\8f¬í\95¨ë\90\98ì\96´ 있습니다.\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",
        "version-specialpages": "특수 문서",
        "version-parserhooks": "파서 훅",
        "version-variables": "변수",
+       "version-editors": "편집자",
        "version-antispam": "스팸 막기",
        "version-other": "기타",
        "version-mediahandlers": "미디어 핸들러",
        "version-poweredby-others": "그 외 다른 개발자",
        "version-poweredby-translators": "translatewiki.net 번역자",
        "version-credits-summary": "[[Special:Version|미디어위키]]에 기여한 다음 사람에게 감사드립니다.",
-       "version-license-info": "미디어위키는 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 파일을 재배포하거나 수정할 수 있습니다.\n\n미디어위키가 유용하게 사용될 수 있기를 바라지만 '''상용으로 사용'''되거나 '''특정 목적에 맞을 것'''이라는 것을 '''보증하지 않습니다'''. 자세한 내용은 GNU 일반 공중 사용 허가서 전문을 참조하십시오.\n\n당신은 이 프로그램을 통해 [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU 일반 공중 사용 허가서 전문]을 받았습니다. 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html 온라인으로 읽어보시기] 바랍니다.",
+       "version-license-info": "미디어위키는 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 파일을 재배포하거나 수정할 수 있습니다.\n\n미디어위키가 유용하게 사용될 수 있기를 바라지만 <em>상용으로 사용</em>되거나 <strong>특정 목적에 맞을 것</strong>이라는 것을 <strong>보증하지 않습니다</strong>. 자세한 내용은 GNU 일반 공중 사용 허가서 전문을 참조하십시오.\n\n당신은 이 프로그램을 통해 [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU 일반 공중 사용 허가서 전문]을 받았습니다. 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html 온라인으로 읽어보시기] 바랍니다.",
        "version-software": "설치된 소프트웨어",
        "version-software-product": "제품",
        "version-software-version": "버전",
        "unlinkaccounts-success": "계정의 연결이 해제되었습니다.",
        "authenticationdatachange-ignored": "인증 데이터 변경을 처리하지 못했습니다. 제공자를 설정하지 않으셨습니까?",
        "userjsispublic": "주목해 주십시오: 자바스크립트의 하위 문서들은 다른 사용자들이 볼 수 있기 때문에 기밀 데이터를 포함해서는 안 됩니다.",
+       "userjsonispublic": "주의해 주십시오: JSON 하위 문서는 다른 사용자가 볼 수 있으므로 기밀 데이터를 포함하지 않는 것이 좋습니다.",
        "usercssispublic": "주목해 주십시오: CSS의 하위 문서들은 다른 사용자들이 볼 수 있기 때문에 기밀 데이터를 포함해서는 안 됩니다.",
        "restrictionsfield-badip": "유효하지 않은 IP 주소나 대역: $1",
        "restrictionsfield-label": "허용된 IP 대역:",
index 74ba1b9..b41ab45 100644 (file)
        "version-specialpages": "Spezialsäiten",
        "version-parserhooks": "Parser-Erweiderungen",
        "version-variables": "Variabelen",
+       "version-editors": "Editeuren",
        "version-antispam": "Spam-Preventioun",
        "version-other": "Aner",
        "version-mediahandlers": "Medien-Ënnerstëtzung",
index 6d3da3d..5ec8fb6 100644 (file)
        "tooltip-undo": "Mit \"óngedaon make\" driejs te dees bewirking trök en koms te in 't bewirkingsvinster.\nDoe kans in de bewirkingssamevatting 'n reej opgaeve.",
        "tooltip-preferences-save": "Veurkäöre opsjlaon",
        "tooltip-summary": "Veur 'n kórte samevatting in",
+       "common.json": "/* JSON dae hie wuuertj geplaats haet invlood op alle pagina's veur alle gebroekers. */",
        "anonymous": "{{PLURAL:$1|Anonieme gebroeker|Anoniem gebroekers}} ven {{SITENAME}}",
        "siteuser": "{{SITENAME}} gebroeker $1",
        "anonuser": "anonieme gebroeker óp {{SITENAME}} $1",
        "svg-long-error": "Óngeljig SVG-bestandj: $1",
        "show-big-image": "Oearsprunkelik bestandj",
        "show-big-image-preview": "Gruutde van dees veurvertuining: $1.",
+       "show-big-image-preview-differ": "Aafmaetinge van dees veurbesjoewing van 't type $3 van dit $2-bestandj: $1",
        "show-big-image-other": "Anger {{PLURAL:$2|resolutie|resoluties}}: $1.",
        "show-big-image-size": "$1 × $2 pixels",
        "file-info-gif-looped": "herhaolendj",
        "version-specialpages": "Speciaal pazjena's",
        "version-parserhooks": "Parserheuk",
        "version-variables": "Variabele",
+       "version-editors": "Bewirkers",
        "version-antispam": "Spampreventie",
        "version-other": "Euverige",
        "version-mediahandlers": "Mediaverwerkers",
        "tags-create-warnings-below": "Wils se wiejergaon mit 't aanmake van 't label?",
        "tags-delete-title": "Haol label eweg",
        "tags-delete-explanation-initial": "Doe bös 't label \"$1\" eweg 'nt haole oete databank.",
+       "tags-delete-reason": "Raeje:",
+       "tags-delete-submit": "Haol dit label eweg zónger det 't kan waere trögkgedrejd",
+       "tags-delete-not-allowed": "Labeles die waere bepaoldj door 'n oetbreijing kónne neet waeren eweggehaold, behauve wen de oetbreijing dit specefiek tousteit.",
+       "tags-delete-not-found": "'t Label \"$1\" besteit neet.",
        "tags-deactivate-reason": "Raeje:",
        "tags-deactivate-submit": "Deaktiveer",
        "comparepages": "Vergeliek pazjena's",
index d7637a6..a10585b 100644 (file)
        "version-specialpages": "Службени страници",
        "version-parserhooks": "Расчленувачки пресретници",
        "version-variables": "Променливи",
+       "version-editors": "Уредници",
        "version-antispam": "Спречување на спам",
        "version-api": "Извршници",
        "version-other": "Друго",
index 9b91b15..7feb18c 100644 (file)
        "rcfilters-preference-help": "സമ്പർക്കമുഖത്തിൽ 2017-ൽ വരുത്തിയ രൂപകല്പനാമാറ്റങ്ങളും, അതോടൊപ്പവും പിന്നീടും ചേർത്ത എല്ലാ ഉപകരണങ്ങളും ഒഴിവാക്കുക.",
        "rcfilters-filter-showlinkedfrom-label": "കണ്ണി ചേർക്കപ്പെട്ട താളുകളിലെ മാറ്റങ്ങൾ കാണിക്കുക",
        "rcfilters-filter-showlinkedfrom-option-label": "തിരഞ്ഞെടുത്ത താളിൽ <strong>കണ്ണി ചേർക്കപ്പെട്ട താളുകൾ</strong>",
+       "rcfilters-target-page-placeholder": "താളിന്റെ (അല്ലെങ്കിൽ വർഗ്ഗത്തിന്റെ) പേര് നൽകുക",
        "rcnotefrom": "<strong>$3, $4</strong> മുതലുള്ള {{PLURAL:$5|മാറ്റം|മാറ്റങ്ങൾ}} ആണ് താഴെയുള്ളത്  (<strong>$1</strong> എണ്ണം വരെ കൊടുക്കുന്നതാണ്).",
        "rclistfromreset": "തീയതി എടുത്തത് പുനഃസജ്ജീകരിക്കുക",
        "rclistfrom": "$3 $2 മുതലുള്ള മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക",
        "uploadbtn": "പ്രമാണം അപ്‌ലോഡ് ചെയ്യുക",
        "reuploaddesc": "വീണ്ടും അപ്‌ലോഡ് ചെയ്ത് നോക്കാനായി തിരിച്ചു പോവുക.",
        "upload-tryagain": "പുതുക്കിയ പ്രമാണ വിവരണങ്ങൾ സമർപ്പിക്കുക",
+       "upload-tryagain-nostash": "പുനർ അപ്‌ലോഡ് ചെയ്യുന്ന പ്രമാണവും പുതുക്കിയ വിവരണവും സമർപ്പിക്കുക",
        "uploadnologin": "ലോഗിൻ ചെയ്തിട്ടില്ല",
        "uploadnologintext": "പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യുന്നതിനു മുമ്പ്, താങ്കൾ $1.",
        "upload_directory_missing": "അപ്‌‌ലോഡ് ഡയറക്ടറി ($1) ലഭ്യമല്ല, അത് സൃഷ്ടിക്കാൻ വെബ്‌‌സെർവറിനു സാധിക്കില്ല.",
        "file-thumbnail-no": "പ്രമാണത്തിന്റെ പേര്‌  <strong>$1</strong> എന്നാണ്‌ തുടങ്ങുന്നത്.\nഇതു വലിപ്പം കുറച്ച ഒരു ചിത്രം ''(ലഘുചിത്രം)'' ആണെന്നു കാണുന്നു.\nപൂർണ്ണ റെസലൂഷൻ ഉള്ള ചിത്രം ഉണ്ടെങ്കിൽ അതു അപ്‌ലോഡ് ചെയ്യുവാൻ താല്പര്യപ്പെടുന്നു, അല്ലെങ്കിൽ പ്രമാണത്തിന്റെ പേരു മാറ്റുവാൻ അഭ്യർത്ഥിക്കുന്നു.",
        "fileexists-forbidden": "ഈ പേരിൽ ഒരു പ്രമാണം നിലവിലുണ്ട്, അതു മാറ്റി സൃഷ്ടിക്കുക സാദ്ധ്യമല്ല.\nതാങ്കൾക്ക് ഈ ചിത്രം അപ്‌ലോഡ് ചെയ്തേ മതിയാവുയെങ്കിൽ, ദയവു ചെയ്തു വേറൊരു പേരിൽ ഈ പ്രമാണം അപ്‌ലോഡ് ചെയ്യുക. [[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "ഈ പേരിൽ ഒരു പ്രമാണം പങ്ക് വെയ്ക്കപ്പെട്ടുപയോഗിക്കുന്ന ശേഖരത്തിലുണ്ട്. താങ്കൾക്ക് ഈ പ്രമാണം അപ്‌ലോഡ് ചെയ്തേ മതിയാവുയെങ്കിൽ, ദയവായി തിരിച്ചു പോയി പുതിയ ഒരു പേരിൽ ഈ പ്രമാണം അപ്‌ലോഡ് ചെയ്യുക.[[File:$1|thumb|center|$1]]",
+       "fileexists-no-change": "അപ്‌ലോഡ് നിലവിലുള്ള <strong>[[:$1]]</strong> പതിപ്പിന്റെ തനിപ്പകർപ്പാണ്.",
+       "fileexists-duplicate-version": "അപ്‌ലോഡ് പഴയ <strong>[[:$1]]</strong> പ്രമാണത്തിന്റെ {{PLURAL:$2|ഒരു പതിപ്പിന്റെ|പഴയ പതിപ്പുകളുടെ}} തനിപ്പകർപ്പാണ്.",
        "file-exists-duplicate": "ഈ പ്രമാണം ഇനി പറയുന്ന {{PLURAL:$1|പ്രമാണത്തിന്റെ|പ്രമാണങ്ങളുടെ}} പകർപ്പാണ്‌:",
        "file-deleted-duplicate": "ഈ പ്രമാണത്തിനു സദൃശമായ പ്രമാണം ([[:$1]]) മുമ്പ് മായ്ക്കപ്പെട്ടിട്ടുണ്ട്.\nആ പ്രമാണത്തിന്റെ മായ്ക്കൽ ചരിത്രം എടുത്തു പരിശോധിച്ച ശേഷം മാത്രം വീണ്ടും അപ്‌‌ലോഡ് ചെയ്യുക.",
        "file-deleted-duplicate-notitle": "ഈ പ്രമാണത്തിന് സദൃശമായ ഒന്ന് മുമ്പ് മായ്ക്കപ്പെട്ടിട്ടുണ്ട്, ആ തലക്കെട്ടിന്റെ ഉപയോഗം ഒതുക്കിയിരിക്കുന്നു.\nപുനർ-അപ്‌ലോഡിങ് ചെയ്യുന്നതിനു മുമ്പ് ഒതുക്കപ്പെട്ട പ്രമാണവിവരങ്ങൾ സംശോധനം ചെയ്ത് സാഹചര്യം വിശകലനം ചെയ്യാൻ അനുമതിയുള്ള ആരെയെങ്കിലും സമീപിച്ച് പ്രവൃത്തി ഉറപ്പാക്കുക.",
index 6d0d908..4eee09a 100644 (file)
        "rcfilters-filter-humans-label": "Człowiek (nie bot)",
        "rcfilters-filter-humans-description": "Zmiany wprowadzone przez ludzi.",
        "rcfilters-filtergroup-reviewstatus": "Status przejrzenia",
+       "rcfilters-filter-reviewstatus-unpatrolled-description": "Edycje, które nie zostały oznaczone jako „sprawdzone” automatycznie lub ręcznie.",
        "rcfilters-filter-reviewstatus-unpatrolled-label": "Niesprawdzone",
+       "rcfilters-filter-reviewstatus-manual-description": "Edycje ręcznie oznaczone jako „sprawdzone”.",
+       "rcfilters-filter-reviewstatus-manual-label": "Ręcznie oznaczone jako „sprawdzone”",
+       "rcfilters-filter-reviewstatus-auto-description": "Edycje wykonane przez zaawansowanych użytkowników, których edycje automatycznie oznaczane są jako „sprawdzone”.",
+       "rcfilters-filter-reviewstatus-auto-label": "Automatycznie oznaczone jako „sprawdzone”",
        "rcfilters-filtergroup-significance": "Znaczenie",
        "rcfilters-filter-minor-label": "Drobne zmiany",
        "rcfilters-filter-minor-description": "Zmiany, które autor oznaczył jako drobne.",
        "version-specialpages": "Strony specjalne",
        "version-parserhooks": "Haki analizatora składni (ang. parser hooks)",
        "version-variables": "Zmienne",
+       "version-editors": "Edytorzy",
        "version-antispam": "Ochrona przed spamem",
        "version-other": "Pozostałe",
        "version-mediahandlers": "Wtyczki obsługi mediów",
index 8e0e236..b47d245 100644 (file)
        "tog-watchlisthideminor": "Ocultar edições menores da lista de páginas vigiadas",
        "tog-watchlisthideliu": "Ocultar edições de usuários autenticados da lista de páginas vigiadas",
        "tog-watchlistreloadautomatically": "Recarregar a lista de páginas vigiadas automaticamente sempre que um filtro for alterado (requer JavaScript)",
-       "tog-watchlistunwatchlinks": "Adicionar hiperligações diretas para vigiar ou deixar de vigiar as entradas na lista de páginas vigiadas (é necessário o JavaScript para alternar entre ambas)",
+       "tog-watchlistunwatchlinks": "Adicionar marcadores ({{int:Watchlist-unwatch}}/{{int:Watchlist-unwatch-undo}}) para deixar de vigiar ou voltar a vigiar as páginas vigiadas que foram modificadas (é necessário o JavaScript para alternar entre ambas)",
        "tog-watchlisthideanons": "Ocultar edições de usuários anônimos da lista de páginas vigiadas",
        "tog-watchlisthidepatrolled": "Ocultar edições patrulhadas da lista de páginas vigiadas",
        "tog-watchlisthidecategorization": "Ocultar a categorização das páginas",
        "password-login-forbidden": "O uso deste nome de usuário e senha foi desautorizado.",
        "mailmypassword": "Redefinir senha",
        "passwordremindertitle": "Nova senha temporária em {{SITENAME}}",
-       "passwordremindertext": "Alguém (provavelmente você, a partir do endereço de IP $1) solicitou uma nova senha para {{SITENAME}} ($4). Foi criada uma senha temporária para o usuário \"$2\", sendo ela \"$3\". Se esta era sua intenção, você precisará se autenticar e escolher uma nova senha agora.\nA sua senha temporária expirará em {{PLURAL:$5|um dia|$5 dias}}.\n\nSe foi outra pessoa quem fez este pedido, ou se você já lembrou a sua senha, e não quer mais alterá-la, você pode ignorar esta mensagem e continuar utilizando sua senha antiga.",
+       "passwordremindertext": "Alguém (a partir do endereço IP $1) solicitou uma senha nova para a sua conta na wiki {{SITENAME}} ($4).\nFoi criada a senha temporária \"$3\" para o usuário \"$2\".\nSe o pedido foi feito por si, entre agora na sua conta e escolha uma palavra-passe nova.\nA palavra-passe temporária expira após {{PLURAL:$5|um dia|$5 dias}}.\n\nCaso outra pessoa tenha feito o pedido, ou se entretanto se recordou da sua senha e já não deseja alterá-la, ignore esta mensagem e continue a utilizar a senha antiga.",
        "noemail": "Não há um endereço de e-mail associado ao usuário \"$1\".",
        "noemailcreate": "Você precisa fornecer um endereço de e-mail válido",
        "passwordsent": "Uma nova senha está sendo enviada para o endereço de e-mail registrado para \"$1\".\nPor favor, reconecte-se ao recebê-lo.",
        "longpageerror": "'''Erro: O texto que submeteu ocupa {{PLURAL:$1|um kilobyte|$1 kilobytes}}, que excede o máximo de {{PLURAL:$2|um kilobyte|$2 kilobytes}}.'''\nA página não pode ser salva.",
        "readonlywarning": "'''Aviso: O banco de dados foi bloqueado para manutenção, por isso você não poderá salvar a sua edição neste momento.'''\nTalvez você queira copiar o seu texto num editor externo e guardá-lo, para posterior envio.\n\nQuem bloqueou o banco de dados forneceu a seguinte explicação: $1",
        "protectedpagewarning": "'''Atenção: Esta página foi protegida para que apenas usuários com privilégios de administrador possam editá-la.'''\nA última entrada no histórico é fornecida abaixo como referência:",
-       "semiprotectedpagewarning": "'''Nota:''' Esta página foi protegida, sendo que apenas usuários registrados poderão editá-la.\nA última entrada no histórico é fornecida abaixo para referência:",
+       "semiprotectedpagewarning": "<strong>Nota:</strong> Esta página foi protegida de modo a que só usuários autoconfirmados a possam editar.\nPara referência, é apresentada abaixo a última entrada do registo:",
        "cascadeprotectedwarning": "<strong>Aviso:</strong> Esta página foi protegida para que somente usuários com [[Special:ListGroupRights|grupos com direitos específicos]] possam editá-la porque ela é transcluída {{PLURAL:$1|na seguinte página protegida|nas seguintes páginas protegidas}} por cascata:",
        "titleprotectedwarning": "'''Atenção: esta página foi protegida; [[Special:ListGroupRights|privilégios específicos]] são necessários para criá-la.'''\nA última entrada no histórico é fornecida abaixo como referência:",
        "templatesused": "{{PLURAL:$1|Predefinição usada|Predefinições usadas}} nesta página:",
        "rcfilters-filter-humans-label": "Humano (não robô)",
        "rcfilters-filter-humans-description": "Edições feitas por editores humanos.",
        "rcfilters-filtergroup-reviewstatus": "Estado da revisão",
+       "rcfilters-filter-reviewstatus-unpatrolled-description": "Edições que não foram manualmente nem automaticamente marcadas como patrulhadas.",
        "rcfilters-filter-reviewstatus-unpatrolled-label": "Não patrulhadas",
+       "rcfilters-filter-reviewstatus-manual-description": "Edições manualmente marcadas como patrulhadas.",
+       "rcfilters-filter-reviewstatus-manual-label": "Patrulhadas manualmente",
+       "rcfilters-filter-reviewstatus-auto-description": "Edições de usuários avançados cujas edições são automaticamente marcadas como patrulhadas.",
+       "rcfilters-filter-reviewstatus-auto-label": "Patrulhadas automaticamente",
        "rcfilters-filtergroup-significance": "Significado",
        "rcfilters-filter-minor-label": "Edições menores",
        "rcfilters-filter-minor-description": "Edita o autor rotulado como menor.",
        "fix-double-redirects": "Atualizar todos os redirecionamentos que apontem para o título original",
        "move-leave-redirect": "Criar um redirecionamento",
        "protectedpagemovewarning": "'''Atenção:''' Esta página foi protegida de modo que apenas usuários com privilégio de administrador possam movê-la.\nA última entrada no histórico é fornecida abaixo para referência:",
-       "semiprotectedpagemovewarning": "''Nota:''' Esta página foi protegida de modo que apenas usuários registrados possam movê-la.\nA última entrada no histórico é fornecida abaixo para referência:",
+       "semiprotectedpagemovewarning": "<strong>Note:</strong> Esta página foi protegida de modo que só usuários autoconfirmados a possam mover.\nPara referência, é apresentada abaixo a última entrada do registo:",
        "move-over-sharedrepo": "[[:$1]] existe em um repositório compartilhado. Mover um arquivo para este título irá sobrescrever o arquivo compartilhado.",
        "file-exists-sharedrepo": "O nome de arquivo escolhido já está em uso em um repositório compartilhado.\nPor favor, escolha outro nome.",
        "export": "Exportar páginas",
        "version-specialpages": "Páginas especiais",
        "version-parserhooks": "Hooks do analisador (parser)",
        "version-variables": "Variáveis",
+       "version-editors": "Editores",
        "version-antispam": "Prevenção contra spam",
        "version-other": "Diversos",
        "version-mediahandlers": "Executores de mídia",
index f743f97..789eaeb 100644 (file)
        "svg-long-desc-animated": "ficheiro SVG animado, de $1 × $2 píxeis, tamanho: $3",
        "svg-long-error": "Ficheiro SVG inválido: $1",
        "show-big-image": "Ficheiro original",
-       "show-big-image-preview": "Tamanho desta antevisão: $1.",
-       "show-big-image-preview-differ": "Tamanho desta antevisão em $3 do ficheiro $2: $1",
+       "show-big-image-preview": "Dimensões desta antevisão: $1.",
+       "show-big-image-preview-differ": "Dimensões desta antevisão em $3 do ficheiro $2: $1",
        "show-big-image-other": "{{PLURAL:$2|Outra resolução|Outras resoluções}}: $1.",
        "show-big-image-size": "$1 × $2 píxeis",
        "file-info-gif-looped": "cíclico",
        "version-specialpages": "Páginas especiais",
        "version-parserhooks": "''Hooks'' do analisador sintático",
        "version-variables": "Variáveis",
+       "version-editors": "Editores",
        "version-antispam": "Prevenção contra spam",
        "version-other": "Diversos",
        "version-mediahandlers": "Leitura e tratamento de multimédia",
index cb8637a..e7da4c6 100644 (file)
        "userrights-groupsmember": "Used when editing user groups in [[Special:Userrights]].\n\nThe message is followed by a list of group names.\n\nParameters:\n* $1 - (Optional) the number of items in the list following the message, for PLURAL\n* $2 - (Optional) the user name, for GENDER",
        "userrights-groupsmember-auto": "Used when editing user groups in [[Special:Userrights]]. The message is followed by a list of group names.\n\n\"Implicit\" is for groups that the user was automatically added to (such as \"autoconfirmed\"); cf. {{msg-mw|userrights-groupsmember}}\n\nParameters:\n* $1 - (Optional) the number of items in the list following the message, for PLURAL\n* $2 - (Optional) the user name, for GENDER",
        "userrights-groupsmember-type": "{{optional}}\nParameters:\n* $1 - list of group names\n* $2 - list of group member names. Used with labels {{msg-mw|Userrights-groupsmember}} and {{msg-mw|Userrights-groupsmember-auto}}",
-       "userrights-groups-help": "Instructions displayed on [[Special:UserRights]].  \"Bring forward\" is a phrasal verb meaning \"move to an earlier time\". \"Put back\" means the opposite. Parameters:\n* $1 - (Optional) a username, can be used for GENDER",
+       "userrights-groups-help": "Instructions displayed on [[Special:UserRights]]. Parameters:\n* $1 - (Optional) a username, can be used for GENDER\n\nNote for section marked #:\n* \"Put back\" is a phrasal verb meaning \"to change the date of an event so that it happens _later_ than planned\".\n* \"Bring forward\" is a phrasal verb meaning \"to change the date of an event so that it happens _earlier_\".",
        "userrights-reason": "Text beside log field when editing user groups\n\n{{Identical|Reason}}",
        "userrights-no-interwiki": "Error message when editing user groups",
        "userrights-nodatabase": "Error message when editing user groups.\n\n\"Local\" means databases/wikis of the same farm/cluster; that is, meta, enwiki, dewiki, commons, etc are all local databases of the Wikimedia Foundation.\n\nSee [{{canonicalurl:meta:Special:Log|type=rights}} meta:Special:Log?type=rights] for a usage of local databases: username@barwiki\n\nParameters:\n* $1 - database name",
        "version-specialpages": "Part of [[Special:Version]].\n{{Identical|Special page}}",
        "version-parserhooks": "This message is a heading at [[Special:Version]] for extensions that modifies the parser of wikitext.",
        "version-variables": "{{Identical|Variable}}",
+       "version-editors": "Part of [[Special:Version]].\nThis message is followed by the list of installed extensions that provide an editor or enhance editing functionality.\n{{Identical|Editor}}",
        "version-antispam": "Part of [[Special:Version]].\nThis message is followed by the list of SPAM prevention extensions.",
        "version-api": "{{optional}}",
        "version-other": "{{Identical|Other}}",
index 0189324..30f341c 100644 (file)
        "redirectedfrom": "($1 इत्यस्मात् पुनर्निर्दिष्टम्)",
        "redirectpagesub": "पृष्ठम् अनुप्रेष्यताम्",
        "redirectto": "इत्यत्र पुनर्निदिष्यताम्",
-       "lastmodifiedat": "$1 (तमà¥\87) à¤¦à¤¿à¤¨à¤¾à¤\99à¥\8dà¤\95à¥\87 à¤\85नà¥\8dतिमसमà¥\8dपादनं $2 समये अभवत्",
+       "lastmodifiedat": "$1 (तमà¥\87) à¤¦à¤¿à¤¨à¤¾à¤\99à¥\8dà¤\95à¥\87 à¤\85नà¥\8dतिमपरिवरà¥\8dतनं $2 समये अभवत्",
        "viewcount": "एतत्पृष्ठं {{PLURAL:$1|एक वारं|$1 वारं}} दृष्टम् अस्ति",
        "protectedpage": "संरक्षितपृष्ठम्",
        "jumpto": "अत्र गम्यताम् :",
        "feedback-thanks": "कृतज्ञता ! भवतः प्रतिस्पन्दः \"[ $2  $1 ]\" पृष्ठाय प्रेषितः अस्ति ।",
        "feedback-thanks-title": "कृतज्ञतां निवेदयामि !",
        "feedback-useragent": "योजकानुयोज्यः :",
-       "searchsuggest-search": "अन्वेषणम्",
+       "searchsuggest-search": "{{SITENAME}} अन्विष्यताम्",
        "searchsuggest-containing": "विद्यन्ते......",
        "api-error-badtoken": "आन्तरिकदोषः : दुष्टप्रतीकः ।",
        "api-error-emptypage": "नूतनस्य रिक्तस्य पृष्ठस्य सर्जनं निषिद्धम् ।",
index 3218a1e..c7ee1f6 100644 (file)
        "watchlisttools-edit": "زیرنظر فہرست  کوں ݙیکھو تے تبدیلی کرو",
        "watchlisttools-raw": "کچی زیرِنظرفہرست وچ تبدیلی کرو",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|تبادلۂ خیال]])",
+       "version-editors": "ایڈیٹ کرݨ آلے",
        "redirect": "فائل، صارف، ورقہ،دہرائی یا آئی ڈی لاگ دے ذریعے ولدا واپس",
        "redirect-submit": "ڄلو",
        "redirect-lookup": "تلاش:",
index 9723fad..eb8680d 100644 (file)
        "version-specialpages": "Posebne strani",
        "version-parserhooks": "Razširitve razčlenjevalnika",
        "version-variables": "Spremenljivke",
+       "version-editors": "Uredniki",
        "version-antispam": "Preprečevanje smetja",
        "version-other": "Ostalo",
        "version-mediahandlers": "Upravljavci predstavnostnih vsebin",
index cd37332..e4b1807 100644 (file)
        "expansion-depth-exceeded-category-desc": "Страница је прекорачила највећу дубину проширења.",
        "expansion-depth-exceeded-warning": "Страница у којој је прекорачена дубина проширења",
        "parser-unstrip-loop-warning": "Утврђена је петља",
-       "unstrip-depth-warning": "Прекорачено је ограничење рекурзије ($1)",
+       "unstrip-depth-warning": "Прекорачен лимит Unstrip рекурзије ($1)",
        "converter-manual-rule-error": "Пронађена је грешка у правилу за ручно претварање језика",
        "undo-success": "Измена се може поништити.\nПроверите разлике испод, па сачувајте измене.",
        "undo-failure": "Ова измена се не може поништити због сукоба измена.",
        "rcfilters-savedqueries-cancel-label": "Откажи",
        "rcfilters-savedqueries-add-new-title": "Сачувајте тренутна подешавања филтера",
        "rcfilters-savedqueries-already-saved": "Ови филтери су већ сачувани. Измените Ваша подешавања како бисте направили нове сачуване филтере.",
-       "rcfilters-restore-default-filters": "Ð\92Ñ\80аÑ\9bаÑ\9aе Ð¿Ð¾Ð´Ñ\80азÑ\83меваниÑ\85 Ñ\84илÑ\82еÑ\80а",
+       "rcfilters-restore-default-filters": "Ð\92Ñ\80аÑ\82и Ð¿Ð¾Ð´Ñ\80азÑ\83меване Ñ\84илÑ\82еÑ\80е",
        "rcfilters-clear-all-filters": "Уклоните све филтере",
        "rcfilters-show-new-changes": "Погледај најновије измене",
        "rcfilters-search-placeholder": "Филтрирајте измене (користите мени или претрагу за име филтера)",
        "rcfilters-view-tags-help-icon-tooltip": "Сазнајте више о означеним изменама",
        "rcfilters-liveupdates-button": "Ажурирај уживо",
        "rcfilters-liveupdates-button-title-on": "Искључите ажурирања уживо",
-       "rcfilters-liveupdates-button-title-off": "Ð\9fÑ\80икажи Ð½Ð¾Ð²Ðµ Ð¸Ð·Ð¼ÐµÐ½Ðµ уживо",
+       "rcfilters-liveupdates-button-title-off": "Ð\9fÑ\80иказ Ð½Ð¾Ð²Ð¸Ñ\85 Ð¸Ð·Ð¼ÐµÐ½Ð° уживо",
        "rcfilters-watchlist-markseen-button": "Означи све измене као погледане",
        "rcfilters-watchlist-edit-watchlist-button": "Промени списак надгледаних страница",
        "rcfilters-watchlist-showupdated": "Измене на страницама које нисте посетили од када је измена извршена су <strong>подебљане</strong>, са испуњеним ознакама.",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|бајт|бајта|бајтова}}",
        "limitreport-expansiondepth": "Највећа дубина проширења",
        "limitreport-expensivefunctioncount": "Број „скупих” функција анализатора",
+       "limitreport-unstrip-depth": "Unstrip дубина рекурзије",
+       "limitreport-unstrip-size": "Unstrip величина након проширења",
        "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|бајт|бајта|бајтова}}",
        "expandtemplates": "Замена шаблона",
        "expand_templates_intro": "Ова посебна страница узима викитекст и мења све шаблоне у њему рекурзивно.\nТакође мења функције парсера као што је <code><nowiki>{{</nowiki>#language:…}}</code> и променљиве као што је <code><nowiki>{{</nowiki>CURRENTDAY}}</code>. \nЗаправо практично све што се налази између витичастих заграда.",
index df1b061..6522fb0 100644 (file)
        "expansion-depth-exceeded-category": "Stranice u kojima je prekoračena dubina proširenja",
        "expansion-depth-exceeded-warning": "Stranica u kojoj je prekoračena dubina proširenja",
        "parser-unstrip-loop-warning": "Utvrđena je petlja",
-       "unstrip-depth-warning": "Prekoračeno je ograničenje rekurzije ($1)",
+       "unstrip-depth-warning": "Prekoračen limit Unstrip rekurzije ($1)",
        "converter-manual-rule-error": "Pronađena je greška u pravilu za ručno pretvaranje jezika",
        "undo-success": "Izmena se može poništiti.\nProverite razlike ispod, pa sačuvajte izmene.",
        "undo-failure": "Ova izmena se ne može poništiti zbog sukoba izmena.",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bajt|bajta|bajtova}}",
        "limitreport-expansiondepth": "Najveća dubina proširenja",
        "limitreport-expensivefunctioncount": "Broj „skupih” funkcija analizatora",
+       "limitreport-unstrip-depth": "Unstrip dubina rekurzije",
+       "limitreport-unstrip-size": "Unstrip veličina nakon proširenja",
        "expandtemplates": "Zamena šablona",
        "expand_templates_intro": "Ova posebna stranica uzima tekst i menja sve šablone u njemu rekurzivno.\nTakođe menja funkcije parsera kao što je <code><nowiki>{{</nowiki>#language:…}}</code> i promenljive kao što je <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nZapravo praktično sve što se nalazi između vitičastih zagrada.",
        "expand_templates_title": "Naziv konteksta; za {{STRANICA}} itd.:",
index 6c41812..7f8f65d 100644 (file)
        "rcfilters-filter-humans-description": "Redigeringar gjorda av mänskliga redigerare.",
        "rcfilters-filtergroup-reviewstatus": "Granskningsstatus",
        "rcfilters-filter-reviewstatus-unpatrolled-label": "Inte patrullerade",
+       "rcfilters-filter-reviewstatus-auto-label": "Autopatrullerad",
        "rcfilters-filtergroup-significance": "Betydelse",
        "rcfilters-filter-minor-label": "Mindre redigeringar",
        "rcfilters-filter-minor-description": "Redigeringar som är märkta som mindre.",
        "version-specialpages": "Specialsidor",
        "version-parserhooks": "Parsertillägg",
        "version-variables": "Variabler",
+       "version-editors": "Redigerare",
        "version-antispam": "Förhindrar spam",
        "version-other": "Annat",
        "version-mediahandlers": "Mediahanterare",
index 8b58aae..7c7b7ff 100644 (file)
        "resetpass-validity-soft": "మీ సంకేతపదానికి కాలం చెల్లింది:$1\nకొత్తది ఇప్పుడే ఎంచుకోండి, లేదా \"{{int:authprovider-resetpass-skip-label}}\" నొక్కి, తరువాత మార్చుకోండి.",
        "passwordreset": "సంకేతపదాన్ని మార్చుకోండి",
        "passwordreset-text-one": "ఈమెయిలు ద్వారా తాత్కాలిక సంకేతపదాన్ని పొందేందుకు ఈ ఫారమును నింపండి.",
-       "passwordreset-text-many": "{{PLURAL:$1|ఈమెయిలు ద్వారా తాత్కాలిక సంకేతపదాన్ని పొందేందుకు ఏదో ఒక ఫీల్డును నింపండి.Fill in one of the fields to receive a temporary password via email.}}",
+       "passwordreset-text-many": "{{PLURAL:$1|ఈమెయిలు ద్వారా తాత్కాలిక సంకేతపదాన్ని పొందేందుకు ఏదో ఒక ఫీల్డును నింపండి.}}",
        "passwordreset-disabled": "ఈ వికీలో సంకేతపదాల మార్పును అచేతనం చేసాం.",
        "passwordreset-emaildisabled": "ఈ వికీలో ఈమెయిలు విశేషాలను అశక్తం చేసాం.",
        "passwordreset-username": "వాడుకరి పేరు:",
        "specialpages-note-top": "సూచిక",
        "specialpages-group-maintenance": "నిర్వహణా నివేదికలు",
        "specialpages-group-other": "ఇతర ప్రత్యేక పేజీలు",
-       "specialpages-group-login": "à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aà°\82à°¡à°¿ / à°\96ాతానà±\81 సృష్టించుకోండి",
+       "specialpages-group-login": "లాà°\97ినవà°\82à°¡à°¿ / à°\96ాతా సృష్టించుకోండి",
        "specialpages-group-changes": "ఇటీవలి మార్పులు మరియు దినచర్యలు",
        "specialpages-group-media": "మాధ్యమ నివేదికలు మరియు ఎగుమతులు",
        "specialpages-group-users": "వాడుకరులు, హక్కులు",
        "specialpages-group-highuse": "అధిక వాడుక పేజీలు",
-       "specialpages-group-pages": "à°ªà±\87à°\9cà±\80à°² à°¯à±\8aà°\95à±\8dà°\95 à°\9cాబితాలà±\81",
+       "specialpages-group-pages": "పేజీల జాబితాలు",
        "specialpages-group-pagetools": "పేజీ పనిముట్లు",
        "specialpages-group-wiki": "డాటా మరియు పనిముట్లు",
        "specialpages-group-redirects": "ప్రత్యేక పేజీల దారిమార్పులు",
        "tag-filter": "[[Special:Tags|ట్యాగుల]] వడపోత:",
        "tag-filter-submit": "వడపోయి",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ట్యాగు|ట్యాగులు}}]]: $2)",
+       "tag-mw-blank": "తుడిచివేత",
+       "tag-mw-blank-description": "పేజీని తుడిచివేసే దిద్దుబాట్లు",
        "tags-title": "టాగులు",
        "tags-intro": "ఈ పేజీ మృదూపకరణం మార్పులకు ఇచ్చే ట్యాగులను, మరియు వాటి అర్ధాలను చూపిస్తుంది.",
        "tags-tag": "ట్యాగు పేరు",
index 3323122..ea6a295 100644 (file)
        "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": "à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88มีà¸\84วามà¹\80à¸\8aีà¹\88ยวà¸\8aาà¸\8d",
+       "rcfilters-filter-user-experience-level-experienced-label": "à¸\9cูà¹\89à¹\83à¸\8aà¹\89มีà¸\9bระสà¸\9aà¸\81ารà¸\93à¹\8c",
        "rcfilters-filter-user-experience-level-experienced-description": "ผู้ใช้ลงทะเบียนที่มีการแก้ไขมากกว่า 500 ครั้งและอายุมากกว่า 30 วัน",
        "rcfilters-filtergroup-automated": "การเข้ามีส่วนร่วมอัตโนมัติ",
        "rcfilters-filter-bots-label": "บอต",
index 4cfa7a9..0563534 100644 (file)
        "logentry-delete-delete": "$1 $3 sayfasını {{GENDER:$2|sildi}}",
        "logentry-delete-delete_redir": "$1, $3 yönlendirmesini üzerine yazılması için {{GENDER:$2|sildi}}",
        "logentry-delete-restore": "$1 $3 ($4) sayfasını {{GENDER:$2|geri getirdi}}",
+       "restore-count-revisions": "{{PLURAL:$1|1 revizyon|$1 revizyon}}",
        "logentry-delete-event": "$1, $3 sayfasında {{PLURAL:$5|bir günlük girdisinin |$5 günlük girdisinin}} görünürlüğünü {{GENDER:$2|değiştirdi}}: $4",
        "logentry-delete-revision": "$1, $3 sayfasında {{PLURAL:$5|bir sürümün|$5 sürümün}} görünürlüğünü {{GENDER:$2|değiştirdi}}: $4",
        "logentry-delete-event-legacy": "$1, $3 sayfasında günlük girdilerinin görünürlüğünü  {{GENDER:$2|değiştirdi}}",
index af14e0f..d47b280 100644 (file)
        "version-specialpages": "ספעציעלע בלעטער",
        "version-parserhooks": "פארזער פארברייטונגען",
        "version-variables": "וואַריאַבלען",
+       "version-editors": "רעדאַקטאָרן",
        "version-antispam": "ספאם פארמיידן",
        "version-other": "אנדער",
        "version-hooks": "Hook סטרוקטורן",
index 8945a8d..81c092a 100644 (file)
        "wrongpasswordempty": "你都未入密碼,唔該再試多次啦。",
        "passwordtooshort": "你嘅密碼最少要有$1個半形字元。",
        "passwordtoolong": "密碼唔可以長過{{PLURAL:$1|1個字元|$1個字元}}。",
-       "passwordtoopopular": "呢個密碼太常見,唔俾用。唔該揀個獨特啲嘅密碼。",
+       "passwordtoopopular": "呢個密碼太常見,唔俾用。唔該揀個難估啲嘅密碼。",
        "password-name-match": "你嘅密碼一定要同你嘅用戶名唔一樣。",
        "password-login-forbidden": "呢個用戶名同密碼嘅利用係被禁止嘅。",
        "mailmypassword": "重設密碼",
        "passwordremindertitle": "{{SITENAME}}嘅新臨時密碼",
-       "passwordremindertext": "有人(可能係你,IP 位置 $1)\n請求 {{SITENAME}} 嘅新密碼 ($4)。\n而家用戶 \"$2\" 嘅新臨時密碼設定咗做 \"$3\"。\n如果呢個係你所要求嘅,你就需要即刻登入,揀一個新嘅密碼。\n你個臨時密碼會響{{PLURAL:$5|一|$5}}日內過期。\n\n如果係其他人作出呢個請求,\n又或者你記得返你嘅密碼而又唔想再轉,\n你可以唔使理呢個信息,繼續用舊密碼。",
+       "passwordremindertext": "有人(IP 位置 $1)\n請求 {{SITENAME}} 嘅新密碼 ($4)。\n而家用戶 \"$2\" 嘅新臨時密碼設定咗做 \"$3\"。\n如果呢個係你所要求嘅,你就需要即刻登入,揀一個新嘅密碼。\n你個臨時密碼會響{{PLURAL:$5|一|$5}}日內過期。\n\n如果係其他人作出呢個請求,\n又或者你記得返你嘅密碼而又唔想再轉,\n你可以唔使理呢個信息,繼續用舊密碼。",
        "noemail": "呢度冇用戶 \"$1\" 嘅電郵地址。",
        "noemailcreate": "你需要提供一個有效嘅電郵地址",
        "passwordsent": "新嘅密碼已經寄咗畀呢位用戶 \"$1\" 嘅電郵地址。收到之後請重新登入。",
        "savechanges": "記好",
        "publishpage": "發佈呢頁",
        "publishchanges": "發佈修改",
+       "savearticle-start": "儲存呢頁...",
+       "savechanges-start": "儲存修改...",
+       "publishpage-start": "發佈呢頁...",
+       "publishchanges-start": "發佈修改...",
        "preview": "預覽",
        "showpreview": "顯示預覽",
        "showdiff": "顯示差異",
        "blockedtitle": "用戶已經封鎖",
        "blockedtext": "你嘅用戶名或者 IP 位址已經被 $1 封咗。\n\n呢次封鎖係由$1所封嘅。當中嘅原因係''$2''。\n\n* 呢次封鎖嘅開始時間係:$8\n* 呢次封鎖嘅到期時間係:$6\n* 對於被封鎖者:$7\n\n你可以聯絡 $1 或者其他嘅[[{{MediaWiki:Grouppage-sysop}}|管理員]],討論呢次封鎖。\n除非你已經響你嘅[[Special:Preferences|戶口喜好設定]]入面設定咗有效嘅電郵地址,否則你係唔可以用「電郵呢個用戶」嘅功能。當設定咗一個有效嘅電郵地址之後,呢個功能係唔會封鎖嘅。\n\n你現時嘅 IP 位址係 $3 ,而個封鎖 ID 係 #$5。 請你喺你嘅查詢都註明以上封鎖嘅資料。",
        "autoblockedtext": "你嘅IP地址已經被自動封鎖,由於之前嘅另一位用戶係畀$1封咗。\n而封鎖嘅原因係:\n\n:''$2''\n\n* 呢次封鎖嘅開始時間係:$8\n* 呢次封鎖嘅到期時間係:$6\n* 對於被封鎖者:$7\n\n你可以聯絡 $1 或者其他嘅[[{{MediaWiki:Grouppage-sysop}}|管理員]],討論呢次封鎖。\n\n除非你已經響你嘅[[Special:Preferences|戶口喜好設定]]入面設定咗有效嘅電郵地址,否則你係唔可以用「電郵呢個用戶」嘅功能。當設定咗一個有效嘅電郵地址之後,呢個功能係唔會封鎖嘅。\n\n你現時用緊嘅 IP 地址係 $3,個封鎖 ID 係 #$5。 請喺你嘅查詢都註明呢個封鎖上面嘅資料。",
+       "systemblockedtext": "你嘅用戶名或者IP地址已經俾MediaWiki自動封鎖。\n封鎖原因係:\n\n:<em>$2</em>\n\n* 開始時間:$8\n* 到期時間:$6\n* 目標用戶:$7\n\n你而家嘅IP地址係$3。\n當你作出任何查詢嘅時候,請包含以上所有資料。",
        "blockednoreason": "無原因畀低",
        "whitelistedittext": "你需要$1去編輯呢頁。",
        "confirmedittext": "你個電郵地址要確定咗先可以編輯。唔該先去[[Special:Preferences|喜好設定]]填咗電郵地址,並做埋確認手續。",
        "blocked-notice-logextract": "呢位用戶而家被封鎖緊。\n下面有最近嘅封鎖紀錄以供參考:",
        "clearyourcache": "<strong>注意</strong>:喺儲存之後,你可能要先略過你嘅瀏覽器快取去睇到更改。\n* <strong>Firefox / Safari:</strong> 㩒住<em>Shift</em>掣再撳<em>重新載入</em>,又或者㩒<em>Ctrl-F5</em>或者<em>Ctrl-R</em>(喺Mac㩒<em>Command-R</em>掣);\n* <strong>Google Chrome:</strong> 㩒<em>Ctrl-Shift-R</em>(喺Mac㩒<em>Command-R</em>掣);\n* <strong>Internet Explorer:</strong> 㩒住<em>Ctrl</em>掣再撳<em>重新整理</em>,又或者㩒<em>Ctrl-F5</em>掣;\n* <strong>Opera:</strong> 去 <em>選單 → 設定</em> (喺 Mac 係 <em>Opera → 偏好設定</em>) 跟住再到 <em>隱私 & 安全性 → 清除瀏覽資料 → 已快取的圖片與檔案</em>。",
        "usercssyoucanpreview": "'''提示:'''響儲存前,用「{{int:showpreview}}」個掣嚟測試你嘅新CSS。",
+       "userjsonyoucanpreview": "'''提示:'''響儲存前,用「{{int:showpreview}}」個掣嚟測試你嘅新JSON。",
        "userjsyoucanpreview": "'''提示:'''響儲存前,用「{{int:showpreview}}」個掣嚟測試你嘅新JavaScript。",
        "usercsspreview": "'''記住你而家只係預覽緊你嘅用戶CSS樣式表。'''\n'''佢嘅內容重未儲存!'''",
+       "userjsonpreview": "<strong>記住你而家只係測試/預覽緊你定義嘅JSON。\n佢嘅內容重未儲存!</strong>",
        "userjspreview": "'''記住你而家只係測試/預覽緊你定義嘅JavaScript。'''\n'''佢嘅內容重未儲存!'''",
        "sitecsspreview": "'''記住你而家只係預覽呢段 CSS。'''\n'''佢嘅內容重未儲存!'''",
+       "sitejsonpreview": "<strong>記住你而家只係預覽緊你定義嘅JSON。\n佢嘅內容重未儲存!</strong>",
        "sitejspreview": "'''記住你而家只係預覽呢段 JavaScript 代碼。'''\n'''佢嘅內容重未儲存!'''",
-       "userinvalidconfigtitle": "'''警告:''' 無叫做 \"$1\" 嘅畫面。請記住自訂介面的 .css 和 .js 頁面時應使用細楷,例如:{{ns:user}}:Foo/vector.css 而唔係 {{ns:user}}:Foo/Vector.css 。",
+       "userinvalidconfigtitle": "<strong>警告:</strong> 無叫做「$1」嘅畫面。請記住自訂介面嘅.css, .json同.js頁面時應該用細楷,例如:{{ns:user}}:Foo/vector.css 而唔係 {{ns:user}}:Foo/Vector.css 。",
        "updated": "(己更新)",
        "note": "'''留意:'''",
        "previewnote": "'''請記住呢個只係預覽。'''\n更改嘅内容重未儲存!",
        "longpageerror": "<strong>出錯:你所遞交嘅文字係有 {{PLURAL:$1|1 KB|$1 KB}} 咁長,長過最大嘅 {{PLURAL:$2|1 KB|$2 KB}}。</strong>\n儲唔到你遞交嘅文字。",
        "readonlywarning": "<strong>警告:資料庫已經鎖住咗去做定期保養。而家你唔可以儲起你嘅編輯。</strong>\n你可以儲啲文字落一份文字檔先。\n\n鎖資料庫嘅系統管理員畀嘅解釋: $1",
        "protectedpagewarning": "'''警告:呢版已經受到保護,只有管理員權限嘅用戶先至可以改。'''\n最近嘅日誌響下面提供以便參考:",
-       "semiprotectedpagewarning": "'''注意:'''呢一頁已經保護咗,只有已經註冊嘅用戶先至可以改。\n最近嘅日誌響下面提供以便參考:",
+       "semiprotectedpagewarning": "<strong>注意:</strong>呢一頁已經保護咗,只有自動確認咗嘅用戶先至可以改。\n最近嘅日誌喺下面提供以便參考:",
        "cascadeprotectedwarning": "<strong>警告:</strong>呢一頁已經保護咗,凈得[[Special:ListGroupRights|有指定權限]]嘅用戶先至可以改,因為佢係響以下連串保護嘅{{PLURAL:$1|一|幾}}頁度包含咗:",
        "titleprotectedwarning": "'''警告:呢一版已經保護咗,需要一啲[[Special:ListGroupRights|指定權限]]先至可以開到。'''\n最近嘅日誌響下面提供以便參考:",
        "templatesused": "呢版用嘅{{PLURAL:$1|模}}:",
        "content-model-css": "層疊樣式表",
        "content-json-empty-object": "吉嘅嘢",
        "content-json-empty-array": "吉嘅陣列",
+       "deprecated-self-close-category": "用無效自己閂嘅HTML標籤嘅頁面",
        "duplicate-args-warning": "<strong>警告:</strong> [[:$1]]調用咗[[:$2]]並且指定咗多過一個值畀「$3」呢個參數,祇有最後一次指定嘅值會用到。",
        "duplicate-args-category": "模用重複參數嘅版面",
        "duplicate-args-category-desc": "呢版調用模嗰陣用咗重複嘅參數,好似<code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code>或者<code><nowiki>{{foo|bar|1=baz}}</nowiki></code>噉。",
        "prefs-files": "檔案",
        "prefs-custom-css": "自定 CSS",
        "prefs-custom-js": "自定 JavaScript",
-       "prefs-common-config": "共有嘅CSS同埋JavaScript畀所有畫面用:",
+       "prefs-common-config": "共有嘅CSS、JSON同埋JavaScript畀所有畫面用:",
        "prefs-reset-intro": "你可以用呢版去重設你嘅喜好設定到網站預設值。呢個動作無得番轉頭。",
        "prefs-emailconfirm-label": "電郵確認:",
        "youremail": "電郵:",
        "grant-createaccount": "開戶口",
        "grant-createeditmovepage": "開版、改版同搬版",
        "grant-delete": "刪版、修訂同日誌紀錄",
-       "grant-editinterface": "改 MediaWiki 名空間同用戶 CSS/JavaScript",
-       "grant-editmycssjs": "改你嘅用戶 CSS/JavaScript",
+       "grant-editinterface": "改 MediaWiki 空間名同用戶 CSS/JSON/JavaScript",
+       "grant-editmycssjs": "改你嘅用戶CSS/JSON/JavaScript",
        "grant-editmyoptions": "改你嘅用戶設定",
        "grant-editmywatchlist": "改你嘅監視清單",
        "grant-editpage": "改已經有嘅版",
        "unblockip": "解封用戶",
        "unblockiptext": "使用以下表格恢復之前阻止嘅某個IP地址或者某個用戶名嘅寫權限。",
        "ipusubmit": "拎走呢個封鎖",
-       "unblocked": "\"[[User:$1|$1]]\"已經解封",
+       "unblocked": "\"[[User:$1|$1]]\"已經解封",
        "unblocked-range": "$1 已經解鎖咗。",
        "unblocked-id": "$1嘅封鎖已經拎走咗",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] 已經解鎖咗。",
        "expandtemplates": "展開模",
        "expand_templates_intro": "呢個特別頁係用於將一啲文字中嘅模展開,包括響個模度引用嘅模。\n同時亦都展開解譯器函數好似\n<code><nowiki>{{</nowiki>#language:...}}</code>,同埋一啲變數好似\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>。\n實際上,幾乎所有響雙括弧中嘅內容都會被展開。",
        "expand_templates_title": "內容標題,用於 {{FULLPAGENAME}} 等頁面:",
-       "expand_templates_input": "輸入文字:",
+       "expand_templates_input": "輸入wiki文字:",
        "expand_templates_output": "結果:",
        "expand_templates_xml_output": "XML輸出",
        "expand_templates_html_output": "原始HTML輸出",
index 9d39d13..f1ed0f4 100644 (file)
        "version-specialpages": "特殊页面",
        "version-parserhooks": "解析器钩",
        "version-variables": "变量",
+       "version-editors": "编辑者",
        "version-antispam": "垃圾阻止",
        "version-other": "其他",
        "version-mediahandlers": "媒体文件处理器",
index 33cc0ca..b24d72d 100644 (file)
@@ -39,7 +39,7 @@ class CleanupPreferences extends Maintenance {
                $this->addOption( 'dry-run', 'Print debug info instead of actually deleting' );
                $this->addOption( 'hidden', 'Drop hidden preferences ($wgHiddenPrefs)' );
                $this->addOption( 'unknown',
-                       'Drop unknown preferences (not in $wgDefaultUserOptions or a gadget or userjs)' );
+                       'Drop unknown preferences (not in $wgDefaultUserOptions or prefixed with "userjs-")' );
                // TODO: actually implement this
                // $this->addOption( 'bogus', 'Drop preferences that have invalid/unaccepted values' );
        }
@@ -84,11 +84,9 @@ class CleanupPreferences extends Maintenance {
                        }
                }
 
-               // Remove unknown preferences. Special-case gadget- and userjs- as we can't
-               // control those names.
+               // Remove unknown preferences. Special-case 'userjs-' as we can't control those names.
                if ( $unknown ) {
                        $where = [
-                               'up_property NOT' . $dbw->buildLike( 'gadget-', $dbw->anyString() ),
                                'up_property NOT' . $dbw->buildLike( 'userjs-', $dbw->anyString() ),
                                'up_property NOT IN (' . $dbw->makeList( array_keys( $wgDefaultUserOptions ) ) . ')',
                        ];
index c33fb74..a282d69 100644 (file)
@@ -5,7 +5,7 @@
     "qunit": "grunt qunit",
     "doc": "jsduck",
     "postdoc": "grunt copy:jsduck",
-    "selenium": "killall -0 chromedriver 2>/dev/null || chromedriver --url-base=/wd/hub --port=4444 & grunt webdriver:test; killall chromedriver"
+    "selenium": "./tests/selenium/selenium.sh"
   },
   "devDependencies": {
     "bluebird": "3.5.1",
index bd4ed63..02bcd1f 100644 (file)
  */
 function wikidiff2_do_diff( $text1, $text2, $numContextLines, $movedParagraphDetectionCutoff = 0 ) {
 }
+
+/**
+ * @param string $text1
+ * @param string $text2
+ * @param int $numContextLines
+ * @param int $maxMovedLines
+ * @return string
+ */
+function wikidiff2_inline_diff( $text1, $text2, $numContextLines, $maxMovedLines = 25 ) {
+}
index ac2c4f5..672ab4a 100644 (file)
@@ -30,7 +30,9 @@ trait PHPUnit4And6Compat {
         */
        public function setExpectedException( $name, $message = '', $code = null ) {
                if ( is_callable( [ $this, 'expectException' ] ) ) {
-                       $this->expectException( $name );
+                       if ( $name !== null ) {
+                               $this->expectException( $name );
+                       }
                        if ( $message !== '' ) {
                                $this->expectExceptionMessage( $message );
                        }
index 5276a14..0cd164b 100644 (file)
@@ -257,7 +257,7 @@ class NameTableStoreTest extends MediaWikiTestCase {
                $store->getMap();
                $table = $store->getMap();
 
-               $expected = [ 2 => 'bar', 1 => 'foo' ];
+               $expected = [ 1 => 'foo', 2 => 'bar' ];
                $this->assertSame( $expected, $table );
                // Make sure the table returned is the same as the cached table
                $this->assertSame( $expected, TestingAccessWrapper::newFromObject( $store )->tableCache );
index cb29975..88cf0e0 100644 (file)
@@ -51,6 +51,7 @@ class LoadBalancerTest extends MediaWikiTestCase {
 
                $lb = new LoadBalancer( [
                        'servers' => $servers,
+                       'queryLogger' => MediaWiki\Logger\LoggerFactory::getInstance( 'DBQuery' ),
                        'localDomain' => new DatabaseDomain( $wgDBname, null, $this->dbPrefix() )
                ] );
 
@@ -120,6 +121,7 @@ class LoadBalancerTest extends MediaWikiTestCase {
                $lb = new LoadBalancer( [
                        'servers' => $servers,
                        'localDomain' => new DatabaseDomain( $wgDBname, null, $this->dbPrefix() ),
+                       'queryLogger' => MediaWiki\Logger\LoggerFactory::getInstance( 'DBQuery' ),
                        'loadMonitorClass' => LoadMonitorNull::class
                ] );
 
@@ -175,8 +177,6 @@ class LoadBalancerTest extends MediaWikiTestCase {
                                // re-throw original error, to preserve stack trace
                                throw $ex;
                        }
-               } finally {
-                       $db->rollback( __METHOD__, 'flush' );
                }
        }
 
@@ -184,6 +184,14 @@ class LoadBalancerTest extends MediaWikiTestCase {
                $table = $db->tableName( 'some_table' );
                try {
                        $db->dropTable( 'some_table' ); // clear for sanity
+
+                       // Trigger DBO_TRX to create a transaction so the flush below will
+                       // roll everything here back in sqlite. But don't actually do the
+                       // code below inside an atomic section becaue MySQL and Oracle
+                       // auto-commit transactions for DDL statements like CREATE TABLE.
+                       $db->startAtomic( __METHOD__ );
+                       $db->endAtomic( __METHOD__ );
+
                        // Use only basic SQL and trivial types for these queries for compatibility
                        $this->assertNotSame(
                                false,
@@ -195,12 +203,10 @@ class LoadBalancerTest extends MediaWikiTestCase {
                                $db->query( "DELETE FROM $table WHERE id=57634126", __METHOD__ ),
                                "delete query"
                        );
-                       $this->assertNotSame(
-                               false,
-                               $db->query( "DROP TABLE $table", __METHOD__ ),
-                               "table dropped"
-                       );
                } finally {
+                       // Drop the table to clean up, ignoring any error.
+                       $db->query( "DROP TABLE $table", __METHOD__, true );
+                       // Rollback the DBO_TRX transaction for sqlite's benefit.
                        $db->rollback( __METHOD__, 'flush' );
                }
        }
index be51626..50e6c20 100644 (file)
@@ -776,7 +776,7 @@ class WatchedItemQueryServiceUnitTest extends MediaWikiTestCase {
                                null,
                                [],
                                [],
-                               [ 'rc_patrolled = 0' ],
+                               [ 'rc_patrolled' => 0 ],
                                [],
                                [],
                        ],
diff --git a/tests/selenium/selenium.sh b/tests/selenium/selenium.sh
new file mode 100755 (executable)
index 0000000..519b7be
--- /dev/null
@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+set -euo pipefail
+chromedriver --url-base=/wd/hub --port=4444 &
+# Make sure it is killed to prevent file descriptors leak
+function kill_chromedriver() {
+    killall chromedriver > /dev/null
+}
+trap kill_chromedriver EXIT
+./node_modules/.bin/grunt webdriver:test
diff --git a/tests/selenium/wdio.conf.jenkins.js b/tests/selenium/wdio.conf.jenkins.js
deleted file mode 100644 (file)
index de2b738..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict';
-const merge = require( 'deepmerge' ),
-       password = 'testpass',
-       username = 'WikiAdmin',
-       wdioConf = require( './wdio.conf.js' );
-
-// Overwrite default settings
-exports.config = merge( wdioConf.config, {
-       username: process.env.MEDIAWIKI_USER === undefined ?
-               username :
-               process.env.MEDIAWIKI_USER,
-       password: process.env.MEDIAWIKI_PASSWORD === undefined ?
-               password :
-               process.env.MEDIAWIKI_PASSWORD,
-       screenshotPath: '../log/',
-       baseUrl: process.env.MW_SERVER + process.env.MW_SCRIPT_PATH,
-       exclude: [
-               './extensions/CirrusSearch/tests/selenium/specs/**/*.js'
-       ],
-       reporters: [ 'spec', 'junit' ],
-       reporterOptions: {
-               junit: {
-                       outputDir: '../log/'
-               }
-       }
-} );
index 0b374c8..0930a0f 100644 (file)
@@ -1,9 +1,21 @@
 'use strict';
 
-const password = 'vagrant',
-       fs = require( 'fs' ),
-       path = require( 'path' ),
+const fs = require( 'fs' ),
+       path = require( 'path' );
+
+let logPath, password, username;
+
+// username and password will be used only if
+// MEDIAWIKI_USER or MEDIAWIKI_PASSWORD environment variables are not set
+if ( process.env.JENKINS_HOME ) {
+       logPath = '../log/';
+       password = 'testpass';
+       username = 'WikiAdmin';
+} else {
+       logPath = './log/';
+       password = 'vagrant';
        username = 'Admin';
+}
 
 function relPath( foo ) {
        return path.resolve( __dirname, '../..', foo );
@@ -49,7 +61,7 @@ exports.config = {
        ],
        // Patterns to exclude.
        exclude: [
-       // 'path/to/excluded/files'
+               './extensions/CirrusSearch/tests/selenium/specs/**/*.js'
        ],
        //
        // ============
@@ -117,7 +129,7 @@ exports.config = {
        bail: 0,
        //
        // Saves a screenshot to a given path if a command fails.
-       screenshotPath: './log/',
+       screenshotPath: logPath,
        //
        // Set a base URL in order to shorten url command calls. If your `url` parameter starts
        // with `/`, the base url gets prepended, not including the path portion of your baseUrl.
@@ -177,7 +189,12 @@ exports.config = {
        // Test reporter for stdout.
        // The only one supported by default is 'dot'
        // see also: http://webdriver.io/guide/testrunner/reporters.html
-       reporters: [ 'spec' ],
+       reporters: [ 'spec', 'junit' ],
+       reporterOptions: {
+               junit: {
+                       outputDir: logPath
+               }
+       },
        //
        // Options to be passed to Mocha.
        // See the full list at http://mochajs.org/