Merge "Update MWLoggerLegacyLogger phpdoc"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Fri, 27 Mar 2015 17:06:36 +0000 (17:06 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 27 Mar 2015 17:06:36 +0000 (17:06 +0000)
202 files changed:
.rubocop.yml
.rubocop_todo.yml [deleted file]
Gemfile
INSTALL
RELEASE-NOTES-1.25
autoload.php
composer.json
includes/DefaultSettings.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/Html.php
includes/HttpFunctions.php
includes/MediaWiki.php
includes/OutputPage.php
includes/TemplateParser.php
includes/User.php
includes/WebResponse.php
includes/api/ApiParse.php
includes/api/ApiQueryStashImageInfo.php
includes/api/i18n/de.json
includes/api/i18n/fr.json
includes/api/i18n/gl.json
includes/api/i18n/ksh.json
includes/api/i18n/vi.json
includes/api/i18n/zh-hans.json
includes/api/i18n/zh-hant.json
includes/db/DatabaseUtility.php
includes/debug/MWDebug.php
includes/diff/DifferenceEngine.php
includes/installer/i18n/es.json
includes/jobqueue/Job.php
includes/jobqueue/JobQueue.php
includes/jobqueue/JobQueueFederated.php
includes/jobqueue/JobQueueRedis.php
includes/media/SVG.php
includes/page/WikiPage.php
includes/profiler/Profiler.php
includes/profiler/ProfilerStub.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/resourceloader/ResourceLoaderImageModule.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/skins/Skin.php
includes/specials/SpecialJavaScriptTest.php
includes/specials/SpecialUploadStash.php
includes/templates/Usercreate.php
includes/upload/UploadStash.php
jsduck.json
languages/i18n/af.json
languages/i18n/an.json
languages/i18n/as.json
languages/i18n/azb.json
languages/i18n/bcl.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bho.json
languages/i18n/bjn.json
languages/i18n/bn.json
languages/i18n/br.json
languages/i18n/bs.json
languages/i18n/ckb.json
languages/i18n/cs.json
languages/i18n/cv.json
languages/i18n/cy.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/dsb.json
languages/i18n/egl.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fr.json
languages/i18n/frc.json
languages/i18n/frp.json
languages/i18n/frr.json
languages/i18n/fy.json
languages/i18n/gd.json
languages/i18n/gu.json
languages/i18n/haw.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hif-latn.json
languages/i18n/hr.json
languages/i18n/hsb.json
languages/i18n/hu.json
languages/i18n/ia.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/kk-cyrl.json
languages/i18n/km.json
languages/i18n/ko.json
languages/i18n/krc.json
languages/i18n/ksh.json
languages/i18n/ky.json
languages/i18n/lb.json
languages/i18n/li.json
languages/i18n/lrc.json
languages/i18n/lt.json
languages/i18n/lv.json
languages/i18n/mai.json
languages/i18n/mg.json
languages/i18n/mk.json
languages/i18n/mr.json
languages/i18n/mt.json
languages/i18n/nds-nl.json
languages/i18n/ne.json
languages/i18n/nn.json
languages/i18n/or.json
languages/i18n/pa.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/qqq.json
languages/i18n/qu.json
languages/i18n/rm.json
languages/i18n/ru.json
languages/i18n/rue.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/scn.json
languages/i18n/ses.json
languages/i18n/sh.json
languages/i18n/si.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sq.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/ta.json
languages/i18n/tcy.json
languages/i18n/te.json
languages/i18n/tg-cyrl.json
languages/i18n/th.json
languages/i18n/tr.json
languages/i18n/tt-cyrl.json
languages/i18n/ug-arab.json
languages/i18n/vec.json
languages/i18n/wa.json
languages/i18n/yi.json
languages/i18n/yo.json
languages/i18n/zh-hant.json
maintenance/jsduck/CustomTags.rb [deleted file]
maintenance/jsduck/custom_tags.rb [new file with mode: 0644]
maintenance/refreshLinks.php
maintenance/showJobs.php
resources/Resources.php
resources/lib/mustache/mustache.js [new file with mode: 0644]
resources/lib/oojs-ui/i18n/af.json
resources/lib/oojs-ui/i18n/ne.json
resources/lib/oojs-ui/i18n/pa.json
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-alerts.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-content.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-editing-advanced.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-editing-core.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-editing-list.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-editing-styling.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-interactions.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-layout.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-location.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-media.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-moderation.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-movement.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-user.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-wikimedia.css
resources/lib/oojs-ui/oojs-ui-mediawiki.css
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui.js
resources/src/mediawiki.action/mediawiki.action.edit.preview.js
resources/src/mediawiki/mediawiki.template.mustache.js [new file with mode: 0644]
tests/browser/features/step_definitions/create_account_steps.rb
tests/browser/features/step_definitions/create_and_follow_wiki_link_steps.rb
tests/browser/features/step_definitions/login_steps.rb
tests/browser/features/support/pages/create_account_page.rb
tests/browser/features/support/pages/edit_page.rb
tests/browser/features/support/pages/file_does_not_exist_page.rb
tests/browser/features/support/pages/login_error_page.rb
tests/browser/features/support/pages/main_page.rb
tests/browser/features/support/pages/preferences_appearance_page.rb
tests/browser/features/support/pages/preferences_editing_page.rb
tests/browser/features/support/pages/preferences_page.rb
tests/browser/features/support/pages/preferences_user_profile_page.rb
tests/browser/features/support/pages/ztargetpage.rb
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/data/helpers/WellProtectedClass.php
tests/phpunit/data/templates/foobar.mustache [new file with mode: 0644]
tests/phpunit/data/templates/foobar_args.mustache [new file with mode: 0644]
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/PrefixSearchTest.php
tests/phpunit/includes/TemplateParserTest.php
tests/phpunit/includes/TestingAccessWrapper.php
tests/phpunit/includes/TestingAccessWrapperTest.php
tests/phpunit/includes/content/ContentHandlerTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js

index 3f1af39..61ffc1a 100644 (file)
@@ -1,13 +1,9 @@
-inherit_from: .rubocop_todo.yml
-
-AllCops:
-    Exclude:
-        - 'extensions/**/*'
-        - 'skins/**/*'
-        - 'tests/frontend/node_modules/**/*'
-        - 'vendor/**/*'
-
 AllCops:
+  Exclude:
+    - 'extensions/**/*'
+    - 'skins/**/*'
+    - 'tests/frontend/node_modules/**/*'
+    - 'vendor/**/*'
   StyleGuideCopsOnly: true
 
 Metrics/LineLength:
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
deleted file mode 100644 (file)
index 58cee0c..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-# This configuration was generated by `rubocop --auto-gen-config`
-# on 2015-03-06 17:05:39 +0100 using RuboCop version 0.29.1.
-# The point is for the user to remove these configuration records
-# one by one as the offenses are removed from the code base.
-# Note that changes in the inspected code, or installation of new
-# versions of RuboCop, may require this file to be generated again.
-
-# Offense count: 2
-# Cop supports --auto-correct.
-Lint/UnusedMethodArgument:
-  Enabled: false
-
-# Offense count: 1
-# Configuration parameters: Exclude.
-Style/FileName:
-  Enabled: false
-
-# Offense count: 8
-# Cop supports --auto-correct.
-# Configuration parameters: EnforcedStyle, SupportedStyles.
-Style/HashSyntax:
-  Enabled: false
-
-# Offense count: 4
-# Cop supports --auto-correct.
-Style/PerlBackrefs:
-  Enabled: false
-
-# Offense count: 81
-# Cop supports --auto-correct.
-# Configuration parameters: EnforcedStyle, SupportedStyles.
-Style/StringLiterals:
-  Enabled: false
diff --git a/Gemfile b/Gemfile
index 4373b7f..6f9c053 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -1,7 +1,7 @@
 # ruby=ruby-2.1.2
 # ruby-gemset=core
 
-source "https://rubygems.org"
+source 'https://rubygems.org'
 
-gem "mediawiki_selenium", "~> 1.0.1"
-gem "rubocop", require: false
+gem 'mediawiki_selenium', '~> 1.0.1'
+gem 'rubocop', require: false
diff --git a/INSTALL b/INSTALL
index 70d8d53..2054a57 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -8,10 +8,11 @@ Starting with MediaWiki 1.2.0, it's possible to install and configure the wiki
 Required software:
 * Web server with PHP 5.3.3 or higher.
 * A SQL server, the following types are supported
-** MySQL 5.0.2 or higher
+** MySQL 5.0.3 or higher
 ** PostgreSQL 8.3 or higher
 ** SQLite 3.3.7 or higher
 ** Oracle 9.0.1 or higher
+** Microsoft SQL Server 2005 (9.00.1399)
 
 MediaWiki is developed and tested mainly on Unix/Linux platforms, but should
 work on Windows as well.
index 00ce6b1..b7a1a8e 100644 (file)
@@ -45,6 +45,8 @@ production.
 * The 'daemonized' flag must be set to true in $wgJobTypeConf for any redis
   job queues. This means that mediawiki/services/jobrunner service has to
   be installed and running for any such queues to work.
+* $wgAutopromoteOnce no longer supports the 'view' event. For keeping some
+  compatibility, any 'view' event triggers will still trigger on 'edit'.
 
 === New features in 1.25 ===
 * (T64861) Updated plural rules to CLDR 26. Includes incompatible changes
@@ -409,6 +411,11 @@ changes to languages because of Bugzilla reports.
 * EditPage::attemptSave has been modified not to call handleStatus itself and
   instead just returns the Status object. Extension calling it should be aware of
   this.
+* Removed class DBObject. (unused since 1.10)
+* wfDiff() is deprecated.
+* The -m (maximum replication lag) option of refreshLinks.php was removed.
+  It had no effect since MediaWiki 1.18 and should be removed from any cron
+  jobs or similar scripts you may have set up.
 
 == Compatibility ==
 
@@ -421,7 +428,7 @@ Oracle and Microsoft SQL Server.
 
 The supported versions are:
 
-* MySQL 5.0.2 or later
+* MySQL 5.0.3 or later
 * PostgreSQL 8.3 or later
 * SQLite 3.3.7 or later
 * Oracle 9.0.1 or later
index eacf431..e0b91df 100644 (file)
@@ -276,7 +276,6 @@ $wgAutoloadLocalClasses = array(
        'DBFileJournal' => __DIR__ . '/includes/filebackend/filejournal/DBFileJournal.php',
        'DBLockManager' => __DIR__ . '/includes/filebackend/lockmanager/DBLockManager.php',
        'DBMasterPos' => __DIR__ . '/includes/db/DatabaseUtility.php',
-       'DBObject' => __DIR__ . '/includes/db/DatabaseUtility.php',
        'DBQueryError' => __DIR__ . '/includes/db/DatabaseError.php',
        'DBSiteStore' => __DIR__ . '/includes/site/DBSiteStore.php',
        'DBUnexpectedError' => __DIR__ . '/includes/db/DatabaseError.php',
@@ -1265,7 +1264,6 @@ $wgAutoloadLocalClasses = array(
        'UploadStashFileException' => __DIR__ . '/includes/upload/UploadStash.php',
        'UploadStashFileNotFoundException' => __DIR__ . '/includes/upload/UploadStash.php',
        'UploadStashNoSuchKeyException' => __DIR__ . '/includes/upload/UploadStash.php',
-       'UploadStashNotAvailableException' => __DIR__ . '/includes/upload/UploadStash.php',
        'UploadStashNotLoggedInException' => __DIR__ . '/includes/upload/UploadStash.php',
        'UploadStashWrongOwnerException' => __DIR__ . '/includes/upload/UploadStash.php',
        'UploadStashZeroLengthFileException' => __DIR__ . '/includes/upload/UploadStash.php',
index 484f472..b5995b2 100644 (file)
@@ -20,7 +20,7 @@
                "ext-iconv": "*",
                "leafo/lessphp": "0.5.0",
                "liuggio/statsd-php-client": "1.0.12",
-               "oojs/oojs-ui": "0.9.3",
+               "oojs/oojs-ui": "0.9.4",
                "php": ">=5.3.3",
                "psr/log": "1.0.0",
                "wikimedia/cdb": "1.0.1",
index 1df809e..5ab557e 100644 (file)
@@ -4863,7 +4863,6 @@ $wgAutopromote = array(
  * @endcode
  * Where event is either:
  *    - 'onEdit' (when user edits)
- *    - 'onView' (when user views the wiki)
  *
  * Criteria has the same format as $wgAutopromote
  *
@@ -4872,7 +4871,6 @@ $wgAutopromote = array(
  */
 $wgAutopromoteOnce = array(
        'onEdit' => array(),
-       'onView' => array()
 );
 
 /**
index 94ed903..6bdb85c 100644 (file)
@@ -2098,6 +2098,9 @@ class EditPage {
                        $displayTitle = $contextTitle->getPrefixedText();
                }
                $wgOut->setPageTitle( wfMessage( $msg, $displayTitle ) );
+               # Transmit the name of the message to JavaScript for live preview
+               # Keep Resources.php/mediawiki.action.edit.preview in sync with the possible keys
+               $wgOut->addJsConfigVars( 'wgEditMessage', $msg );
        }
 
        /**
@@ -3705,7 +3708,7 @@ HTML
                }
 
                $script .= '});';
-               $wgOut->addScript( ResourceLoader::makeInlineScript( $script ) );
+               $wgOut->addScript( Html::inlineScript( ResourceLoader::makeLoaderConditionalScript( $script ) ) );
 
                $toolbar = '<div id="toolbar"></div>';
 
index 47e7a15..a9ed60f 100644 (file)
@@ -3115,7 +3115,9 @@ function wfMerge( $old, $mine, $yours, &$result ) {
 
 /**
  * Returns unified plain-text diff of two texts.
- * Useful for machine processing of diffs.
+ * "Useful" for machine processing of diffs.
+ *
+ * @deprecated since 1.25, use DiffEngine/UnifiedDiffFormatter directly
  *
  * @param string $before The text before the changes.
  * @param string $after The text after the changes.
@@ -3155,6 +3157,11 @@ function wfDiff( $before, $after, $params = '-u' ) {
        $cmd = "$wgDiff " . $params . ' ' . wfEscapeShellArg( $oldtextName, $newtextName );
 
        $h = popen( $cmd, 'r' );
+       if ( !$h ) {
+               unlink( $oldtextName );
+               unlink( $newtextName );
+               throw new Exception( __METHOD__ . '(): popen() failed' );
+       }
 
        $diff = '';
 
index ed77729..6bd661f 100644 (file)
@@ -104,7 +104,8 @@ class Html {
        /**
         * Modifies a set of attributes meant for button elements
         * and apply a set of default attributes when $wgUseMediaWikiUIEverywhere enabled.
-        * @param array $modifiers to add to the button
+        * @param array $attrs
+        * @param string[] $modifiers to add to the button
         * @see https://tools.wmflabs.org/styleguide/desktop/index.html for guidance on available modifiers
         * @return array $attrs A modified attribute array
         */
@@ -164,7 +165,7 @@ class Html {
         * @param array $attrs Associative array of attributes, e.g., array(
         *   'href' => 'http://www.mediawiki.org/' ). See expandAttributes() for
         *   further documentation.
-        * @param array $modifiers to add to the button
+        * @param string[] $modifiers to add to the button
         * @see http://tools.wmflabs.org/styleguide/desktop/index.html for guidance on available modifiers
         * @return string Raw HTML
         */
@@ -184,7 +185,7 @@ class Html {
         * @param array $attrs Associative array of attributes, e.g., array(
         *   'href' => 'http://www.mediawiki.org/' ). See expandAttributes() for
         *   further documentation.
-        * @param array $modifiers to add to the button
+        * @param string[] $modifiers to add to the button
         * @see http://tools.wmflabs.org/styleguide/desktop/index.html for guidance on available modifiers
         * @return string Raw HTML
         */
@@ -704,7 +705,7 @@ class Html {
         * new HTML5 input types and attributes.
         *
         * @param string $name Name attribute
-        * @param array $value Value attribute
+        * @param string $value Value attribute
         * @param string $type Type attribute
         * @param array $attribs Associative array of miscellaneous extra
         *   attributes, passed to Html::element()
@@ -726,7 +727,7 @@ class Html {
         * @param string $name Name attribute
         * @param bool $checked Whether the checkbox is checked or not
         * @param array $attribs Array of additional attributes
-        * @return string
+        * @return string Raw HTML
         */
        public static function check( $name, $checked = false, array $attribs = array() ) {
                if ( isset( $attribs['value'] ) ) {
@@ -749,7 +750,7 @@ class Html {
         * @param string $name Name attribute
         * @param bool $checked Whether the checkbox is checked or not
         * @param array $attribs Array of additional attributes
-        * @return string
+        * @return string Raw HTML
         */
        public static function radio( $name, $checked = false, array $attribs = array() ) {
                if ( isset( $attribs['value'] ) ) {
@@ -772,7 +773,7 @@ class Html {
         * @param string $label Contents of the label
         * @param string $id ID of the element being labeled
         * @param array $attribs Additional attributes
-        * @return string
+        * @return string Raw HTML
         */
        public static function label( $label, $id, array $attribs = array() ) {
                $attribs += array(
@@ -996,7 +997,7 @@ class Html {
         *
         * @return string
         */
-       static function infoBox( $text, $icon, $alt, $class = false ) {
+       static function infoBox( $text, $icon, $alt, $class = '' ) {
                $s = Html::openElement( 'div', array( 'class' => "mw-infobox $class" ) );
 
                $s .= Html::openElement( 'div', array( 'class' => 'mw-infobox-left' ) ) .
@@ -1025,7 +1026,7 @@ class Html {
         * to URLs. Note that srcset supports width and height values as well, which
         * are not used here.
         *
-        * @param array $urls
+        * @param string[] $urls
         * @return string
         */
        static function srcSet( $urls ) {
index 36e06b5..8e05f59 100644 (file)
@@ -96,7 +96,7 @@ class Http {
                if ( isset( $args[1] ) && ( is_string( $args[1] ) || is_numeric( $args[1] ) ) ) {
                        // Second was used to be the timeout
                        // And third parameter used to be $options
-                       wfWarn( "Second parameter should not be a timeout." );
+                       wfWarn( "Second parameter should not be a timeout.", 2 );
                        $options = isset( $args[2] ) && is_array( $args[2] ) ?
                                $args[2] : array();
                        $options['timeout'] = $args[1];
index 2644023..c086a39 100644 (file)
@@ -199,8 +199,6 @@ class MediaWiki {
                        throw new PermissionsError( 'read', $permErrors );
                }
 
-               $pageView = false; // was an article or special page viewed?
-
                // Interwiki redirects
                if ( $title->isExternal() ) {
                        $rdfrom = $request->getVal( 'rdfrom' );
@@ -263,7 +261,6 @@ class MediaWiki {
                        }
                // Special pages
                } elseif ( NS_SPECIAL == $title->getNamespace() ) {
-                       $pageView = true;
                        // Actions that need to be made when we have a special pages
                        SpecialPageFactory::executePath( $title, $this->context );
                } else {
@@ -271,7 +268,6 @@ class MediaWiki {
                        // may be a redirect to another article or URL.
                        $article = $this->initializeArticle();
                        if ( is_object( $article ) ) {
-                               $pageView = true;
                                $this->performAction( $article, $requestTitle );
                        } elseif ( is_string( $article ) ) {
                                $output->redirect( $article );
@@ -280,12 +276,6 @@ class MediaWiki {
                                        . " returned neither an object nor a URL" );
                        }
                }
-
-               if ( $pageView ) {
-                       // Promote user to any groups they meet the criteria for
-                       $user->addAutopromoteOnceGroups( 'onView' );
-               }
-
        }
 
        /**
index 5ad33fa..edeae0d 100644 (file)
@@ -2674,12 +2674,10 @@ class OutputPage extends ContextSource {
                        $ret .= $item . "\n";
                }
 
-               $ret .= $this->getInlineHeadScript();
-
                // No newline after buildCssLinks since makeResourceLoaderLink did that already
                $ret .= $this->buildCssLinks();
 
-               $ret .= $this->getHeadScripts();
+               $ret .= $this->getHeadScripts() . "\n";
 
                foreach ( $this->mHeadItems as $item ) {
                        $ret .= $item . "\n";
@@ -2856,8 +2854,10 @@ class OutputPage extends ContextSource {
                                                        $resourceLoader->makeModuleResponse( $context, $grpModules )
                                                );
                                        } else {
-                                               $links['html'] .= ResourceLoader::makeInlineScript(
-                                                       $resourceLoader->makeModuleResponse( $context, $grpModules )
+                                               $links['html'] .= Html::inlineScript(
+                                                       ResourceLoader::makeLoaderConditionalScript(
+                                                               $resourceLoader->makeModuleResponse( $context, $grpModules )
+                                                       )
                                                );
                                        }
                                        $links['html'] .= "\n";
@@ -2896,8 +2896,10 @@ class OutputPage extends ContextSource {
                                        if ( $only === ResourceLoaderModule::TYPE_STYLES ) {
                                                $link = Html::linkedStyle( $url );
                                        } elseif ( $loadCall ) {
-                                               $link = ResourceLoader::makeInlineScript(
-                                                       Xml::encodeJsCall( 'mw.loader.load', array( $url, 'text/javascript', true ) )
+                                               $link = Html::inlineScript(
+                                                       ResourceLoader::makeLoaderConditionalScript(
+                                                               Xml::encodeJsCall( 'mw.loader.load', array( $url, 'text/javascript', true ) )
+                                                       )
                                                );
                                        } else {
                                                $link = Html::linkedScript( $url );
@@ -2906,8 +2908,10 @@ class OutputPage extends ContextSource {
                                                        // browsers not supported by the startup module would unconditionally
                                                        // execute this module. Otherwise users will get "ReferenceError: mw is
                                                        // undefined" or "jQuery is undefined" from e.g. a "site" module.
-                                                       $link = ResourceLoader::makeInlineScript(
-                                                               Xml::encodeJsCall( 'document.write', array( $link ) )
+                                                       $link = Html::inlineScript(
+                                                               ResourceLoader::makeLoaderConditionalScript(
+                                                                       Xml::encodeJsCall( 'document.write', array( $link ) )
+                                                               )
                                                        );
                                                }
 
@@ -2951,44 +2955,16 @@ class OutputPage extends ContextSource {
                }
 
                if ( count( $states ) ) {
-                       $html = ResourceLoader::makeInlineScript(
-                               ResourceLoader::makeLoaderStateScript( $states )
+                       $html = Html::inlineScript(
+                               ResourceLoader::makeLoaderConditionalScript(
+                                       ResourceLoader::makeLoaderStateScript( $states )
+                               )
                        ) . "\n" . $html;
                }
 
                return $html;
        }
 
-       /**
-        * Get <script> tags for <head> whose source is inline.
-        *
-        * @since 1.25
-        * @return string HTML fragment
-        */
-       public function getInlineHeadScript() {
-               // Load config before anything else.
-               $html = ResourceLoader::makeInlineScript(
-                       ResourceLoader::makeConfigSetScript( $this->getJSVars() )
-               );
-
-               // Load embeddable private modules before any loader links.
-               $inlineModulesLink = $this->makeResourceLoaderLink(
-                       array( 'user.options', 'user.tokens' ), ResourceLoaderModule::TYPE_COMBINED
-               );
-               $html .= "\n" . self::getHtmlFromLoaderLinks( array( $inlineModulesLink ) );
-
-               // Construct mw.loader.load() call for top-loaded modules.
-               // Client-side code will request these modules and their dependencies.
-               $topModules = $this->getModules( true, 'top' );
-               if ( $topModules ) {
-                       $html .= ResourceLoader::makeInlineScript(
-                               Xml::encodeJsCall( 'mw.loader.load', array( $topModules ) )
-                       ) . "\n";
-               }
-
-               return $html;
-       }
-
        /**
         * JS stuff to put in the "<head>". This is the startup module, config
         * vars and modules marked with position 'top'
@@ -3000,6 +2976,19 @@ class OutputPage extends ContextSource {
                $links = array();
                $links[] = $this->makeResourceLoaderLink( 'startup', ResourceLoaderModule::TYPE_SCRIPTS, true );
 
+               // Load config before anything else
+               $links[] = Html::inlineScript(
+                       ResourceLoader::makeLoaderConditionalScript(
+                               ResourceLoader::makeConfigSetScript( $this->getJSVars() )
+                       )
+               );
+
+               // Load embeddable private modules before any loader links
+               // This needs to be TYPE_COMBINED so these modules are properly wrapped
+               // in mw.loader.implement() calls and deferred until mw.user is available
+               $embedScripts = array( 'user.options', 'user.tokens' );
+               $links[] = $this->makeResourceLoaderLink( $embedScripts, ResourceLoaderModule::TYPE_COMBINED );
+
                // Scripts and messages "only" requests marked for top inclusion
                // Messages should go first
                $links[] = $this->makeResourceLoaderLink(
@@ -3011,6 +3000,17 @@ class OutputPage extends ContextSource {
                        ResourceLoaderModule::TYPE_SCRIPTS
                );
 
+               // Modules requests - let the client calculate dependencies and batch requests as it likes
+               // Only load modules that have marked themselves for loading at the top
+               $modules = $this->getModules( true, 'top' );
+               if ( $modules ) {
+                       $links[] = Html::inlineScript(
+                               ResourceLoader::makeLoaderConditionalScript(
+                                       Xml::encodeJsCall( 'mw.loader.load', array( $modules ) )
+                               )
+                       );
+               }
+
                if ( $this->getConfig()->get( 'ResourceLoaderExperimentalAsyncLoading' ) ) {
                        $links[] = $this->getScriptsForBottomQueue( true );
                }
@@ -3047,8 +3047,10 @@ class OutputPage extends ContextSource {
                // Only load modules that have marked themselves for loading at the bottom
                $modules = $this->getModules( true, 'bottom' );
                if ( $modules ) {
-                       $links[] = ResourceLoader::makeInlineScript(
-                               Xml::encodeJsCall( 'mw.loader.load', array( $modules, null, true ) )
+                       $links[] = Html::inlineScript(
+                               ResourceLoader::makeLoaderConditionalScript(
+                                       Xml::encodeJsCall( 'mw.loader.load', array( $modules, null, true ) )
+                               )
                        );
                }
 
index 65904a0..3de70fa 100644 (file)
@@ -51,7 +51,7 @@ class TemplateParser {
         * @return string
         * @throws UnexpectedValueException Disallows upwards directory traversal via $templateName
         */
-       public function getTemplateFilename( $templateName ) {
+       protected function getTemplateFilename( $templateName ) {
                // Prevent upwards directory traversal using same methods as Title::secureAndSplit
                if (
                        strpos( $templateName, '.' ) !== false &&
@@ -74,10 +74,10 @@ class TemplateParser {
        /**
         * Returns a given template function if found, otherwise throws an exception.
         * @param string $templateName The name of the template (without file suffix)
-        * @return Function
+        * @return callable
         * @throws RuntimeException
         */
-       public function getTemplate( $templateName ) {
+       protected function getTemplate( $templateName ) {
                // If a renderer has already been defined for this template, reuse it
                if ( isset( $this->renderers[$templateName] ) && is_callable( $this->renderers[$templateName] ) ) {
                        return $this->renderers[$templateName];
@@ -103,22 +103,15 @@ class TemplateParser {
                        // See if the compiled PHP code is stored in cache.
                        // CACHE_ACCEL throws an exception if no suitable object cache is present, so fall
                        // back to CACHE_ANYTHING.
-                       try {
-                               $cache = wfGetCache( CACHE_ACCEL );
-                       } catch ( Exception $e ) {
-                               $cache = wfGetCache( CACHE_ANYTHING );
-                       }
+                       $cache = ObjectCache::newAccelerator( array(), CACHE_ANYTHING );
                        $key = wfMemcKey( 'template', $templateName, $fastHash );
                        $code = $this->forceRecompile ? null : $cache->get( $key );
 
                        if ( !$code ) {
                                $code = $this->compileForEval( $fileContents, $filename );
 
-                               // Prefix the code with a keyed hash (64 hex chars) as an integrity check
-                               $code = hash_hmac( 'sha256', $code, $secretKey ) . $code;
-
-                               // Cache the compiled PHP code
-                               $cache->set( $key, $code );
+                               // Prefix the cached code with a keyed hash (64 hex chars) as an integrity check
+                               $cache->set( $key, hash_hmac( 'sha256', $code, $secretKey ) . $code );
                        } else {
                                // Verify the integrity of the cached PHP code
                                $keyedHash = substr( $code, 0, 64 );
@@ -148,9 +141,9 @@ class TemplateParser {
         * @return string PHP code (without '<?php')
         * @throws RuntimeException
         */
-       public function compileForEval( $fileContents, $filename ) {
+       protected function compileForEval( $fileContents, $filename ) {
                // Compile the template into PHP code
-               $code = self::compile( $fileContents );
+               $code = $this->compile( $fileContents );
 
                if ( !$code ) {
                        throw new RuntimeException( "Could not compile template: {$filename}" );
@@ -170,7 +163,7 @@ class TemplateParser {
         * @return string PHP code (with '<?php')
         * @throws RuntimeException
         */
-       public static function compile( $code ) {
+       protected function compile( $code ) {
                if ( !class_exists( 'LightnCandy' ) ) {
                        throw new RuntimeException( 'LightnCandy class not defined' );
                }
index b1d434d..78693c1 100644 (file)
@@ -204,8 +204,10 @@ class User implements IDBAccessObject {
        public $mNewpassTime;
 
        public $mEmail;
-
+       /** @var string TS_MW timestamp from the DB */
        public $mTouched;
+       /** @var string TS_MW timestamp from cache */
+       protected $mQuickTouched;
 
        protected $mToken;
 
@@ -320,8 +322,10 @@ class User implements IDBAccessObject {
 
        /**
         * Load the user table data for this object from the source given by mFrom.
+        *
+        * @param integer $flags User::READ_* constant bitfield
         */
-       public function load() {
+       public function load( $flags = self::READ_LATEST ) {
                if ( $this->mLoadedItems === true ) {
                        return;
                }
@@ -334,16 +338,18 @@ class User implements IDBAccessObject {
                                $this->loadDefaults();
                                break;
                        case 'name':
+                               // @TODO: this gets the ID from a slave, assuming renames
+                               // are rare. This should be controllable and more consistent.
                                $this->mId = self::idFromName( $this->mName );
                                if ( !$this->mId ) {
                                        // Nonexistent user placeholder object
                                        $this->loadDefaults( $this->mName );
                                } else {
-                                       $this->loadFromId();
+                                       $this->loadFromId( $flags );
                                }
                                break;
                        case 'id':
-                               $this->loadFromId();
+                               $this->loadFromId( $flags );
                                break;
                        case 'session':
                                if ( !$this->loadFromSession() ) {
@@ -359,9 +365,10 @@ class User implements IDBAccessObject {
 
        /**
         * Load user table data, given mId has already been set.
+        * @param integer $flags User::READ_* constant bitfield
         * @return bool False if the ID does not exist, true otherwise
         */
-       public function loadFromId() {
+       public function loadFromId( $flags = self::READ_LATEST ) {
                if ( $this->mId == 0 ) {
                        $this->loadDefaults();
                        return false;
@@ -372,11 +379,16 @@ class User implements IDBAccessObject {
                if ( !$cache ) {
                        wfDebug( "User: cache miss for user {$this->mId}\n" );
                        // Load from DB
-                       if ( !$this->loadFromDatabase() ) {
+                       if ( !$this->loadFromDatabase( $flags ) ) {
                                // Can't load from ID, user is anonymous
                                return false;
                        }
-                       $this->saveToCache();
+                       if ( $flags & self::READ_LATEST ) {
+                               // Only save master data back to the cache to keep it consistent.
+                               // @TODO: save it anyway and have callers specifiy $flags and have
+                               // load() called as needed. That requires updating MANY callers...
+                               $this->saveToCache();
+                       }
                }
 
                $this->mLoadedItems = true;
@@ -419,6 +431,8 @@ class User implements IDBAccessObject {
         * Save user data to the shared cache
         */
        public function saveToCache() {
+               global $wgMemc;
+
                $this->load();
                $this->loadGroups();
                $this->loadOptions();
@@ -432,7 +446,7 @@ class User implements IDBAccessObject {
                }
                $data['mVersion'] = self::VERSION;
                $key = wfMemcKey( 'user', 'id', $this->mId );
-               global $wgMemc;
+
                $wgMemc->set( $key, $data );
        }
 
@@ -1080,6 +1094,7 @@ class User implements IDBAccessObject {
 
        /**
         * Load user data from the session or login cookie.
+        *
         * @return bool True if the user is logged in, false otherwise.
         */
        private function loadFromSession() {
@@ -1118,6 +1133,7 @@ class User implements IDBAccessObject {
                }
 
                $proposedUser = User::newFromId( $sId );
+               $proposedUser->load( self::READ_LATEST );
                if ( !$proposedUser->isLoggedIn() ) {
                        // Not a valid ID
                        return false;
@@ -1162,10 +1178,10 @@ class User implements IDBAccessObject {
         * Load user and user_group data from the database.
         * $this->mId must be set, this is how the user is identified.
         *
-        * @param int $flags Supports User::READ_LOCKING
+        * @param integer $flags User::READ_* constant bitfield
         * @return bool True if the user exists, false if the user is anonymous
         */
-       public function loadFromDatabase( $flags = 0 ) {
+       public function loadFromDatabase( $flags = self::READ_LATEST ) {
                // Paranoia
                $this->mId = intval( $this->mId );
 
@@ -1175,8 +1191,11 @@ class User implements IDBAccessObject {
                        return false;
                }
 
-               $dbr = wfGetDB( DB_MASTER );
-               $s = $dbr->selectRow(
+               $db = ( $flags & self::READ_LATEST )
+                       ? wfGetDB( DB_MASTER )
+                       : wfGetDB( DB_SLAVE );
+
+               $s = $db->selectRow(
                        'user',
                        self::selectFields(),
                        array( 'user_id' => $this->mId ),
@@ -1211,7 +1230,7 @@ class User implements IDBAccessObject {
         *      user_groups             Array with groups out of the user_groups table
         *      user_properties         Array with properties out of the user_properties table
         */
-       public function loadFromRow( $row, $data = null ) {
+       protected function loadFromRow( $row, $data = null ) {
                $all = true;
                $passwordFactory = self::getPasswordFactory();
 
@@ -1373,7 +1392,7 @@ class User implements IDBAccessObject {
                global $wgAutopromoteOnceLogInRC, $wgAuth;
 
                $toPromote = array();
-               if ( $this->getId() ) {
+               if ( !wfReadOnly() && $this->getId() ) {
                        $toPromote = Autopromote::getAutopromoteOnceGroups( $this, $event );
                        if ( count( $toPromote ) ) {
                                $oldGroups = $this->getGroups(); // previous groups
@@ -1399,6 +1418,7 @@ class User implements IDBAccessObject {
                                }
                        }
                }
+
                return $toPromote;
        }
 
@@ -2199,9 +2219,10 @@ class User implements IDBAccessObject {
         * Called implicitly from invalidateCache() and saveSettings().
         */
        public function clearSharedCache() {
+               global $wgMemc;
+
                $this->load();
                if ( $this->mId ) {
-                       global $wgMemc;
                        $wgMemc->delete( wfMemcKey( 'user', 'id', $this->mId ) );
                }
        }
@@ -2240,6 +2261,31 @@ class User implements IDBAccessObject {
                }
        }
 
+       /**
+        * Update the "touched" timestamp for the user
+        *
+        * This is useful on various login/logout events when making sure that
+        * a browser or proxy that has multiple tenants does not suffer cache
+        * pollution where the new user sees the old users content. The value
+        * of getTouched() is checked when determining 304 vs 200 responses.
+        * Unlike invalidateCache(), this preserves the User object cache and
+        * avoids database writes.
+        *
+        * @since 1.25
+        */
+       public function touch() {
+               global $wgMemc;
+
+               $this->load();
+
+               if ( $this->mId ) {
+                       $key = wfMemcKey( 'user-quicktouched', 'id', $this->mId );
+                       $timestamp = self::newTouchedTimestamp();
+                       $wgMemc->set( $key, $timestamp );
+                       $this->mQuickTouched = $timestamp;
+               }
+       }
+
        /**
         * Validate the cache for this account.
         * @param string $timestamp A timestamp in TS_MW format
@@ -2252,10 +2298,28 @@ class User implements IDBAccessObject {
 
        /**
         * Get the user touched timestamp
-        * @return string Timestamp
+        * @return string TS_MW Timestamp
         */
        public function getTouched() {
+               global $wgMemc;
+
                $this->load();
+
+               if ( $this->mId ) {
+                       if ( $this->mQuickTouched === null ) {
+                               $key = wfMemcKey( 'user-quicktouched', 'id', $this->mId );
+                               $timestamp = $wgMemc->get( $key );
+                               if ( $timestamp ) {
+                                       $this->mQuickTouched = $timestamp;
+                               } else {
+                                       # Set the timestamp to get HTTP 304 cache hits
+                                       $this->touch();
+                               }
+                       }
+
+                       return max( $this->mTouched, $this->mQuickTouched );
+               }
+
                return $this->mTouched;
        }
 
index f977c20..ab34931 100644 (file)
@@ -55,8 +55,8 @@ class WebResponse {
 
        /**
         * Set the browser cookie
-        * @param string $name Name of cookie
-        * @param string $value Value to give cookie
+        * @param string $name The name of the cookie.
+        * @param string $value The value to be stored in the cookie.
         * @param int|null $expire Unix timestamp (in seconds) when the cookie should expire.
         *        0 (the default) causes it to expire $wgCookieExpiration seconds from now.
         *        null causes it to be a session cookie.
@@ -72,7 +72,7 @@ class WebResponse {
         *   'prefix', 'domain', and 'secure'
         * @since 1.22 Replaced $prefix, $domain, and $forceSecure with $options
         */
-       public function setcookie( $name, $value, $expire = 0, $options = null ) {
+       public function setcookie( $name, $value, $expire = 0, $options = array() ) {
                global $wgCookiePath, $wgCookiePrefix, $wgCookieDomain;
                global $wgCookieSecure, $wgCookieExpiration, $wgCookieHttpOnly;
 
@@ -164,7 +164,7 @@ class FauxResponse extends WebResponse {
 
        /**
         * @param string $key The name of the header to get (case insensitive).
-        * @return string
+        * @return string|null The header value (if set); null otherwise.
         */
        public function getHeader( $key ) {
                $key = strtoupper( $key );
@@ -185,20 +185,18 @@ class FauxResponse extends WebResponse {
        }
 
        /**
-        * @todo document. It just ignore optional parameters.
-        *
-        * @param string $name Name of cookie
-        * @param string $value Value to give cookie
-        * @param int $expire Number of seconds til cookie expires (Default: 0)
-        * @param array $options Ignored
+        * @param string $name The name of the cookie.
+        * @param string $value The value to be stored in the cookie.
+        * @param int|null $expire Ignored in this faux subclass.
+        * @param array $options Ignored in this faux subclass.
         */
-       public function setcookie( $name, $value, $expire = 0, $options = null ) {
+       public function setcookie( $name, $value, $expire = 0, $options = array() ) {
                $this->cookies[$name] = $value;
        }
 
        /**
         * @param string $name
-        * @return string
+        * @return string|null
         */
        public function getcookie( $name ) {
                if ( isset( $this->cookies[$name] ) ) {
index 20592ca..73bea83 100644 (file)
@@ -88,6 +88,9 @@ class ApiParse extends ApiBase {
                $result = $this->getResult();
 
                if ( !is_null( $oldid ) || !is_null( $pageid ) || !is_null( $page ) ) {
+                       if ( $this->section === 'new' ) {
+                                       $this->dieUsage( 'section=new cannot be combined with oldid, pageid or page parameters. Please use text', 'params' );
+                       }
                        if ( !is_null( $oldid ) ) {
                                // Don't use the parser cache
                                $rev = Revision::newFromId( $oldid );
@@ -228,12 +231,11 @@ class ApiParse extends ApiBase {
                                        $result_array['wikitext'] = array();
                                        ApiResult::setContent( $result_array['wikitext'], $this->content->serialize( $format ) );
                                }
-                               if ( !is_null( $params['summary'] ) ) {
+                               if ( !is_null( $params['summary'] ) ||
+                                       ( !is_null( $params['sectiontitle'] ) && $this->section === 'new' )
+                               ) {
                                        $result_array['parsedsummary'] = array();
-                                       ApiResult::setContent(
-                                               $result_array['parsedsummary'],
-                                               Linker::formatComment( $params['summary'], $titleObj )
-                                       );
+                                       ApiResult::setContent( $result_array['parsedsummary'], $this->formatSummary( $titleObj, $params ) );
                                }
 
                                $result->addValue( null, $this->getModuleName(), $result_array );
@@ -270,12 +272,11 @@ class ApiParse extends ApiBase {
                        ApiResult::setContent( $result_array['text'], $p_result->getText() );
                }
 
-               if ( !is_null( $params['summary'] ) ) {
+               if ( !is_null( $params['summary'] ) ||
+                       ( !is_null( $params['sectiontitle'] ) && $this->section === 'new' )
+               ) {
                        $result_array['parsedsummary'] = array();
-                       ApiResult::setContent(
-                               $result_array['parsedsummary'],
-                               Linker::formatComment( $params['summary'], $titleObj )
-                       );
+                       ApiResult::setContent( $result_array['parsedsummary'], $this->formatSummary( $titleObj, $params ) );
                }
 
                if ( isset( $prop['langlinks'] ) ) {
@@ -499,6 +500,30 @@ class ApiParse extends ApiBase {
                return $section;
        }
 
+       /**
+        * This mimicks the behavior of EditPage in formatting a summary
+        *
+        * @param Title $title of the page being parsed
+        * @param Array $params the API parameters of the request
+        * @return Content|bool
+        */
+       private function formatSummary( $title, $params ) {
+               global $wgParser;
+               $summary = !is_null( $params['summary'] ) ? $params['summary'] : '';
+               $sectionTitle = !is_null( $params['sectiontitle'] ) ? $params['sectiontitle'] : '';
+
+               if ( $this->section === 'new' && ( $sectionTitle === '' || $summary === '' ) ) {
+                       if( $sectionTitle !== '' ) {
+                               $summary = $params['sectiontitle'];
+                       }
+                       if ( $summary !== '' ) {
+                               $summary = wfMessage( 'newsectionsummary' )->rawParams( $wgParser->stripSectionName( $summary ) )
+                                       ->inContentLanguage()->text();
+                       }
+               }
+               return Linker::formatComment( $summary, $title, $this->section === 'new' );
+       }
+
        private function formatLangLinks( $links ) {
                $result = array();
                foreach ( $links as $link ) {
index 59fe8ad..342e367 100644 (file)
@@ -62,8 +62,6 @@ class ApiQueryStashImageInfo extends ApiQueryImageInfo {
                                $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), $modulePrefix );
                        }
                // @todo Update exception handling here to understand current getFile exceptions
-               } catch ( UploadStashNotAvailableException $e ) {
-                       $this->dieUsage( "Session not available: " . $e->getMessage(), "nosession" );
                } catch ( UploadStashFileNotFoundException $e ) {
                        $this->dieUsage( "File not found: " . $e->getMessage(), "invalidsessiondata" );
                } catch ( UploadStashBadPathException $e ) {
index a7b951b..9617204 100644 (file)
        "apihelp-query+duplicatefiles-example-simple": "Sucht nach Duplikaten von [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+duplicatefiles-example-generated": "Sucht nach Duplikaten aller Dateien.",
        "apihelp-query+embeddedin-param-namespace": "Der aufzulistende Namensraum.",
-       "apihelp-query+embeddedin-param-filterredir": "Wie für Weiterleitungen gefiltert werden soll.",
+       "apihelp-query+embeddedin-param-filterredir": "Wie Weiterleitungen behandelt werden sollen.",
        "apihelp-query+embeddedin-param-limit": "Wie viele Seiten insgesamt zurückgegeben werden sollen.",
        "apihelp-query+extlinks-param-limit": "Wie viele Links zurückgegeben werden sollen.",
        "apihelp-query+exturlusage-param-limit": "Wie viele Seiten zurückgegeben werden sollen.",
-       "apihelp-query+filearchive-param-from": "Der Bildertitel, bei der die Auflistung beginnen soll.",
-       "apihelp-query+filearchive-param-to": "Der Bildertitel, bei der die Auflistung enden soll.",
+       "apihelp-query+filearchive-param-from": "Der Bildertitel, bei dem die Auflistung beginnen soll.",
+       "apihelp-query+filearchive-param-to": "Der Bildertitel, bei dem die Auflistung enden soll.",
        "apihelp-query+filearchive-param-limit": "Wie viele Bilder insgesamt zurückgegeben werden sollen.",
        "apihelp-query+filearchive-example-simple": "Eine Liste aller gelöschten Dateien auflisten",
        "apihelp-query+imageinfo-param-limit": "Wie viele Dateiversionen pro Datei zurückgegeben werden sollen.",
index c74715d..c6b6829 100644 (file)
@@ -9,7 +9,8 @@
                        "Macofe",
                        "Linedwell",
                        "Nicolapps",
-                       "Raulel"
+                       "Raulel",
+                       "Arkanosis"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentation]]\n* [[mw: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> Toutes les fonctionnalités affichées sur cette page devraient fonctionner, mais l’API est encore en cours de développement et peut changer à tout moment. 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 en-tête HTTP sera renvoyé avec la clé « MediaWiki-API-Error ». La valeur de cet en-tête et le code d’erreur renvoyé prendront la même valeur. Pour plus d’information, voyez [[mw:API:Errors_and_warnings|API: Errors and warnings]].",
        "apihelp-query+blocks-example-simple": "Lister les blocages",
        "apihelp-query+blocks-example-users": "Lister les blocages des utilisateurs <kbd>Alice</kbd> et <kbd>Bob</kbd>.",
        "apihelp-query+categories-description": "Lister toutes les catégories auxquelles les pages appartiennent.",
-       "apihelp-query+categories-param-prop": "Quelles propriétés supplémentaires obtenir de chaque catégorie :\n;sortkey:Ajoute la clé de tri (chaîne hexadécimale) et son préfixe (partie lisible) de la catégorie.\n;timestamp:Ajoute l’horodatage de l’ajout de la catégorie.\n;hidden:Marque els catégories cachées avec _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+categories-param-prop": "Quelles propriétés supplémentaires obtenir de chaque catégorie :\n;sortkey:Ajoute la clé de tri (chaîne hexadécimale) et son préfixe (partie lisible) de la catégorie.\n;timestamp:Ajoute l’horodatage de l’ajout de la catégorie.\n;hidden:Marque les catégories cachées avec _&#95;HIDDENCAT_&#95;.",
        "apihelp-query+categories-param-show": "Quelle sorte de catégories afficher.",
        "apihelp-query+categories-param-limit": "Combien de catégories renvoyer.",
        "apihelp-query+categories-param-categories": "Lister uniquement ces catégories. Utile pour vérifier si une certaine page est dans une certaine catégorie.",
index b7171f4..1bee415 100644 (file)
        "apihelp-undelete-param-reason": "Razón para restaurar.",
        "apihelp-undelete-param-timestamps": "Selos de tempo das modificacións a restaurar. Se <var>$1timestamps</var> e <var>$1fileids</var> están baleiras, restaurarase todo.",
        "apihelp-undelete-param-fileids": "IDs das modificacións de ficheiro a restaurar. Se <var>$1timestamps</var> e <var>$1fileids</var> están baleiras, serán restauradas todas.",
+       "apihelp-undelete-param-watchlist": "Engadir ou eliminar a páxina da lista de vixiancia do usuario actual sen condicións, use as preferencias ou non cambie a vixiancia.",
        "apihelp-undelete-example-page": "Restaurar a <kbd>Páxina Principal</kbd>.",
        "apihelp-undelete-example-revisions": "Restaurar dúas revisións de <kbd>[[Main Page]]</kbd>.",
        "apihelp-upload-param-filename": "Nome de ficheiro obxectivo.",
        "api-help-examples": "{{PLURAL:$1|Exemplo|Exemplos}}:",
        "api-help-permissions": "{{PLURAL:$1|Permiso|Permisos}}:",
        "api-help-permissions-granted-to": "{{PLURAL:$1|Concedida a|Concedidas a}}: $2",
+       "api-help-right-apihighlimits": "Usar os valores superiores das consultas da API (consultas lentas: $1; consultas rápidas: $2). Os límites para as consultas lentas tamén se aplican ós parámetros multivaluados.",
        "api-credits-header": "Créditos"
 }
index 4dcc433..047ef0b 100644 (file)
@@ -19,6 +19,7 @@
        "apihelp-block-param-anononly": "Bloß de nahmelohse Metmaaacher spärre, alsu donn et nahmelohse Beärbeide vun dä <i lang=\"en\" xml:lang=\"en\" title=\"Internet Protocol\">IP</i>-Addräß uß verhendere.",
        "apihelp-block-param-nocreate": "Et Neu-Aanmelde verbeede",
        "apihelp-block-param-autoblock": "Dun automattesch de läzde <i lang=\"en\" xml:lang=\"en\">IP</i>-Adräß schpärre, di dä Metmaacher jehatt hät, un och all di <i lang=\"en\" xml:lang=\"en\">IP</i>-Adräße, vun wo dä versöhk, jet ze ändere.",
+       "apihelp-block-param-reblock": "Wann dä Metmaacher als jeschpächd es, donn dat övverschrihve.",
        "apihelp-block-param-watchuser": "Donn de Metmaachersigg un de Klaafsigg dohzoh op mig Oppaßleß säze.",
        "apihelp-block-example-ip-simple": "Donn de <i lang=\"en\" xmL:lang=\"en\" title=\"Internet Protocol\">IP</i>-Addräß <kbd>192.0.2.5</kbd> för drei ääsch schpärre mem Jrond: <kbd>Eestschlaach</kbd>.",
        "apihelp-compare-description": "Donn de Ongerscheide zwesche zwai Sigge beschtemme.\n\nDo moß derför jeweils en Väsjohn, en Övverschreff för di Sigg, odder ener Sigg iehr Kännong aanjävve, för de beide Sigge.",
@@ -44,6 +45,7 @@
        "apihelp-delete-param-unwatch": "Schmihß di Sigg us däm aktoälle Metmaacher singe Oppaßless erus.",
        "apihelp-delete-example-simple": "Schmiiß de <kbd>Houpsigg</kbd> fott",
        "apihelp-delete-example-reason": "Schmiiß de <kbd>Houpsigg</kbd> fott mem Jrond: <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Preparing for move</kbd>.",
+       "apihelp-disabled-description": "Dat Moduhl wohd affjeschalldt.",
        "apihelp-edit-description": "Sigge aanlähje un verändere.",
        "apihelp-edit-param-sectiontitle": "De Övverschreff för ene neue Affschnett.",
        "apihelp-edit-param-text": "Dä Sigg ehre Ennhalld.",
@@ -52,6 +54,7 @@
        "apihelp-edit-param-bot": "Makeer heh di Änderog als vun enem Bot jemaat.",
        "apihelp-edit-param-createonly": "Donn di Sigg nit ändere, wann se ald doh es.",
        "apihelp-edit-param-nocreate": "Mäld ene Fähler, wann di Sigg nit doh es.",
+       "apihelp-edit-param-watch": "Donn di Sigg op dem aktälle Metmaacher sing Oppaßleß.",
        "apihelp-edit-param-unwatch": "schmiiß di Sigg uß heh däm Metmaacher singe oppaßleß.",
        "apihelp-edit-param-redirect": "Verfollsch de Ömleidonge automattesch.",
        "apihelp-edit-param-contentmodel": "Et Enhalltsmodäll för dä neue Ennhalld.",
@@ -66,6 +69,7 @@
        "apihelp-expandtemplates-description": "Deiht alle Schablohne en Wikkitäx ömsäze.",
        "apihelp-expandtemplates-param-title": "De Övverschreff vun dä Sigg.",
        "apihelp-expandtemplates-param-text": "Dä Wikitäx zom ömwandelle.",
+       "apihelp-expandtemplates-param-includecomments": "Ov Aanmärkonge em <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i>-Fommaht med ußjejovve wähde sulle.",
        "apihelp-feedcontributions-param-feedformat": "Däm Kannahl sing Fommaht.",
        "apihelp-feedcontributions-param-year": "Vum johr un fröhjer.",
        "apihelp-feedcontributions-param-month": "Vun däm Mohnd un derför",
        "apihelp-feedcontributions-param-showsizediff": "Zeijsch de Ongerscheijd en de Jrühße zwesche de Väsjohne.",
        "apihelp-feedcontributions-example-simple": "Zeijsch de Änderonge vum Metmaacher <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Example</kbd>.",
        "apihelp-feedrecentchanges-param-feedformat": "Däm Kannahl sing Fommaht.",
+       "apihelp-feedrecentchanges-param-limit": "De hühßte Aanzahl vun Äjeebnesse för zeröck ze jävve",
+       "apihelp-feedrecentchanges-param-from": "Zeijsch de Änderonge zigg dämm.",
+       "apihelp-feedrecentchanges-param-hideminor": "De kein Minni_Änderonge verschteijsche.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "Nohjelohrte Änderonge övverjonn.",
        "apihelp-feedrecentchanges-param-hidemyself": "Änderonge vun heh dämm Metmaacher övverjonn.",
+       "apihelp-feedwatchlist-param-feedformat": "Däm Kannahl sing Fommaht.",
        "apihelp-filerevert-param-filename": "De Zih_Dattei, der ohne „{{ne:file}}“ derför.",
        "apihelp-filerevert-param-comment": "Aanmärkong huh lahde.",
        "apihelp-help-description": "zeisch Hölp för de aanjejovve Moduhle.",
@@ -86,6 +94,8 @@
        "apihelp-imagerotate-param-rotation": "Öm wi vill Jrahd sulle de Bellder noh de Uhr drieh wääde?",
        "apihelp-imagerotate-example-simple": "Drieh de <kbd>Dattei:Beijschpell.png</kbd> öm <kbd>90</kbd> Jrahd.",
        "apihelp-imagerotate-example-generator": "Drieh alle Bellder en dä <kbd>Saachjropp:Ömdriehje</kbd> öm <kbd>180</kbd> Jrahd.",
+       "apihelp-import-param-xml": "Donn en Dattei em <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Extensible Markup Language\">XML</i>-Fommaht huhjahde.",
+       "apihelp-import-param-rootpage": "Als Ongersiff vun heh dä Sigg empottehre-",
        "apihelp-login-param-name": "Metmaacher_Nahme.",
        "apihelp-login-param-password": "Paßwoot.",
        "apihelp-login-param-domain": "De Domaijn (kann fott bliehve)",
        "apihelp-opensearch-param-search": "Noh wat söhke?",
        "apihelp-opensearch-param-limit": "De hühßte Aanzahl vun Äjeebnesse för zeröck ze jävve",
        "apihelp-opensearch-param-namespace": "En wällschem Appachtemang söhke.",
+       "apihelp-parse-param-section": "Holl blohß dann der Ennhalld vun däm Affschnett met dä Nommer, udder wann „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</kbd>“ enjejovve es, maach ene neu Affschnett derbei.",
+       "apihelp-parse-param-sectiontitle": "De Övverschreff för dä neuje Afschnet, wann <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">section</var> = <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</kbd> es.\n\nAnders wi beim Beärbeide vun dä Sigg weed dä Parramehter nit dorsch de <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">summary</var> ußjetuusch, wann hä fottjelohße udder läddesch es.",
+       "apihelp-parse-example-page": "Donn en Sigg pahse.",
+       "apihelp-parse-example-text": "Donn Wikkitäx pahse.",
+       "apihelp-parse-example-texttitle": "Donn Wikkitäx pahse, un jiff derför en Övverschreff för en Sigg aan.",
+       "apihelp-parse-example-summary": "Donn Zersammefaßong pahse.",
+       "apihelp-patrol-description": "Donn en Sigg udder Väsjohn nohkike.",
+       "apihelp-patrol-param-rcid": "De Kännong in de läzde Änderonge zum Nohkike.",
+       "apihelp-patrol-param-revid": "De Kännong vun dä Väsjohn zum Nohkike.",
+       "apihelp-patrol-example-rcid": "Donn en läzde Änderonge nohkike.",
+       "apihelp-patrol-example-revid": "Donn en Väsjohn nohkike.",
        "apihelp-protect-description": "Änder der Siggeschoz för en Sigg.",
+       "apihelp-protect-param-title": "De Övverschreff vun dä Sigg zom Schöze udder Freijävve. Kam_mer nit zesamme met\n„<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1pageid</code>“ bruche.",
+       "apihelp-protect-param-pageid": "De Kännong vun dä Sigg zom Schöze udder Freijävve. Kam_mer nit zesamme met\n„<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1pageid</code>“ bruche.",
+       "apihelp-protect-param-reason": "Der Jrond för et Schöze udder Freijävve.",
+       "apihelp-protect-example-protect": "Donn en Sigg schöze.",
+       "apihelp-query-param-list": "Wat för en Leßte holle.",
+       "apihelp-query+allcategories-description": "Alle Saachjroppe opzälle.",
+       "apihelp-query+allcategories-param-from": "De Saachjropp, vun woh aan opzälle.",
+       "apihelp-query+allcategories-param-to": "De Saachjropp, bes woh hen opzälle.",
+       "apihelp-query+allcategories-param-dir": "De Reijefollsch zum Zotehre.",
+       "apihelp-query+allcategories-param-limit": "Wi vell Saachjroppe ußjävve?",
+       "apihelp-query+allcategories-param-prop": "Which properties to get:\n;size:Adds number of pages in the category.\n;hidden:Tags categories that are hidden with _&#95;HIDDENCAT_&#95;.\n<!-- \nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-query%2Ballcategories-param-prop/ksh\n-->",
+       "apihelp-query+alldeletedrevisions-description": "Donn alle fottjeschmeße Väsjohne vun enem Metmaacher udder en enem Appachemang opleßte.",
+       "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Kam_mer blohß met <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$3user</var> bruche.",
+       "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Kam_mer nit met <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$3user</var> bruche.",
+       "apihelp-query+alldeletedrevisions-param-start": "Et Dattom un de Zigg vun woh aff opjezallt wähde sull.",
+       "apihelp-query+alldeletedrevisions-param-end": "Et Dattom un de Zigg bes woh hen opjezallt wähde sull.",
+       "apihelp-query+alldeletedrevisions-param-from": "Bejenn de Leß bei heh dä Överschreff.",
+       "apihelp-query+alldeletedrevisions-param-to": "Hühr de Leß bei heh dä Överschreff oop.",
+       "apihelp-query+alldeletedrevisions-param-prefix": "Söhk noh Sigge, woh de Övverschrevv esu aanfängk.",
+       "apihelp-query+alldeletedrevisions-param-user": "Donn blohß Väsjohne vun heh däm Metmaacher opleßte.",
+       "apihelp-query+alldeletedrevisions-param-excludeuser": "Donn kein Väsjohne vun heh däm Metmaacher opleßte.",
+       "apihelp-query+alldeletedrevisions-param-namespace": "Donn blohß Siegg en heh däm Appachtemang opleßte.",
+       "apihelp-query+alldeletedrevisions-param-generatetitles": "Wann als ene  Jenerahtor enjesaz, bräng Övverschreffte un kein Kännonge vu Väsjohne.",
+       "apihelp-query+alldeletedrevisions-example-user": "Donn de läzde fuffzisch fottjeschmeße Beijdrähsch vim Metmaacher „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Example<kbd>“ opleste.",
+       "apihelp-query+alldeletedrevisions-example-ns-main": "Donn de läzde fuffzisch fottjeschmeße Väsjohne em Houp-Appachemang opleste.",
+       "apihelp-query+allfileusages-description": "Donn alle Dattei_Oprohfe opleste, och vun Datteije, di (noch) nit doh sin.",
+       "apihelp-query+allfileusages-param-from": "De Övverschreff vun dä Dattei, woh de Leß medd aanfange sull.",
+       "apihelp-query+allfileusages-param-to": "De Övverschreff vun dä Dattei, woh de Leß medd ophühre sull.",
+       "apihelp-query+allfileusages-param-prefix": "Söhk noh alle Övverschreffte, di met heh däm Täx aanfange.",
+       "apihelp-query+allfileusages-param-unique": "Donn blohß ongerscheidlijje Övverschreffte vun Datteije aanzeije. Kammer nit zesamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1prop=ids<code>“ bruche.\nWann als ene  Jenerahtor enjesaz, bräng Zihlsigge un kein Kwällsigge.",
+       "apihelp-query+allfileusages-param-prop": "Which pieces of information to include:\n;ids:Adds the page ID of the using page (cannot be used with $1unique).\n;title:Adds the title of the file.\n<!-- \nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-query%2Ballfileusages-param-prop/ksh\n-->",
+       "apihelp-query+allfileusages-param-limit": "Wi vill sulle överhoup aanjezeisch wähde?",
+       "apihelp-query+allfileusages-param-dir": "En wälsche Reijefollsch?",
+       "apihelp-query+allfileusages-example-B": "Donn Övverschreffte vun Datteije aanzeije, och vun Datteije, di (noch) nit doh sin, zesame met dä Kännonge vun dä Sigge, woh se vun sin, aanjevange vun <kbd>B</kbd>.",
+       "apihelp-query+allfileusages-example-unique": "Donn ongerscheidlejje Övverschreffte vun Datteije opleßte.",
+       "apihelp-query+allfileusages-example-generator": "Holl Sigge, woh Datteieje dren vorkumme.",
+       "apihelp-query+allimages-description": "Donn alle Bellder der Reih noh opzälle.",
+       "apihelp-query+allimages-param-sort": "De Eijeschavv öm dernoh ze zottehre.",
+       "apihelp-query+allimages-param-dir": "En wälsche Reijefollsch?",
+       "apihelp-query+allimages-param-limit": "Wi vell Bellder ennsjesamp ußjävve.",
+       "apihelp-query+allimages-example-generator": "Zeisch Aanjahbe övver veer Bellder un bejenn mem Bohchschtabe <kbd>T</kbd>.",
+       "apihelp-query+alllinks-description": "Donn alle Lengk opzälle, di en e beschtemmpt Appachtemang jonn.",
+       "apihelp-query+alllinks-param-from": "De Övverschreff vun däm Lengk, woh de Leß medd aanfange sull.",
+       "apihelp-query+alllinks-param-to": "De Övverschreff vun dä Dattei, woh et Zälle ophühre sull.",
+       "apihelp-query+alllinks-param-prefix": "Söhk noh alle verlengk Övverschreffte, di met heh däm Täx aanfange.",
+       "apihelp-query+alllinks-param-namespace": "Dat Appachtemang zom opzälle.",
+       "apihelp-query+alllinks-param-limit": "Wi vill sulle överhoup aanjezeisch wähde?",
+       "apihelp-query+alllinks-param-dir": "En wälsche Reijefollsch?",
+       "apihelp-query+alllinks-example-unique": "Leß ongerscheidlejje verlengk Övverschreffte.",
+       "apihelp-query+alllinks-example-generator": "Holl Sigge, di di Lengks änthallde.",
+       "apihelp-query+allmessages-description": "Donn em Wikki sing Täxte un Nohreescht ußjävve.",
        "apihelp-query+allmessages-param-prop": "Wat för en Eijeschaffte holle.",
        "apihelp-query+allmessages-param-filter": "Jiv blohß de Täxte un Nohreesche uß, woh heh dat Täxschtöck dren änthallde es.",
        "apihelp-query+allmessages-param-customised": "Jiv bloß de Täxte un Nohreesche en heh däm Zohschtand uß.",
        "apihelp-query+allmessages-param-from": "Jiv de Täxte un Nohreesche vun heh aan uß.",
        "apihelp-query+allmessages-param-to": "Jiv de Täxte un Nohreesche bes heh uß.",
        "apihelp-query+allmessages-param-prefix": "Jiv de Täxte un Nohreesche met heh däm Aanfang uß.",
+       "apihelp-query+allpages-param-from": "De Övverschreff vun dä Sigg, woh de Leß medd aanfange sull.",
+       "apihelp-query+allpages-param-to": "De Kännong vun dä Sigg, bes woh hen opzälle.",
+       "apihelp-query+allpages-param-namespace": "De Saachjropp zom opzälle.",
        "apihelp-query+allpages-param-filterredir": "Wat för en Sigg zem opleßte.",
        "apihelp-query+allpages-param-minsize": "Bejränz op Sigge met winneschßdens esu vill Bytes dren.",
        "apihelp-query+allpages-param-maxsize": "Bejränz op Sigge met hüüschßdens esu vill Bytes dren.",
        "apihelp-query+allpages-param-prtype": "Bejränz op jeschöz Sigge.",
        "apihelp-query+allpages-param-limit": "Wi vill Sigge zen aanzeije?",
        "apihelp-query+allpages-param-dir": "En wälsche Reijefollsch?",
+       "apihelp-query+allpages-example-B": "Zeisch en Leß met Sigge un bejenn mem Bohchschtabe <kbd>B</kbd>.",
+       "apihelp-query+allpages-example-generator": "Zeisch Aanjahbe övver veer Bellder un bejenn mem Bohchschtabe <kbd>T</kbd>.",
+       "apihelp-query+allpages-example-generator-revisions": "Zeisch der Enhalld vu de eetsde zwai Sigg un bejenn bei <kbd>Re</kbd>.",
        "apihelp-query+allredirects-description": "Alle Ömleidonge op e beschtemmp Appachtemang opleßte.",
        "apihelp-query+allredirects-param-from": "De Övverschreff vun dä Ömleidong, woh de Leß medd ophühre sull.",
        "apihelp-query+allredirects-param-to": "De Övverschreff vun dä Sigg, woh et Zälle ophühre sull.",
        "apihelp-query+allredirects-param-namespace": "Dat Appachtemang zom opzälle.",
        "apihelp-query+allredirects-param-limit": "Wi vill sulle överhoup aanjezeisch wääde?",
        "apihelp-query+allredirects-param-dir": "En wälsche Reijefollsch?",
+       "apihelp-query+allredirects-example-B": "Zeisch Zihlsigge, och di et (noch) nit jitt, met dä Kännonge, wo se her sin, un bejenn mem Bohchschtabe <kbd>B</kbd>.",
        "apihelp-query+allredirects-example-unique": "Ongerscheidlijje Sigge opleste.",
+       "apihelp-query+allredirects-example-generator": "Holl de Sigge met de Ömleidonge.",
        "apihelp-query+alltransclusions-param-namespace": "Dat Appachtemang zom opzälle.",
        "apihelp-query+alltransclusions-param-limit": "Wi vill sulle överhoup aanjezeisch wähde?",
        "apihelp-query+alltransclusions-param-dir": "En wälsche Reijefollsch?",
+       "apihelp-query+allusers-description": "Donn alle aanjemälldte Metmaacher opzälle.",
+       "apihelp-query+allusers-param-from": "Dä Metmaacher_Nahme vun woh aan opzälle.",
+       "apihelp-query+allusers-param-to": "Dä Metmaacher_Nahme bes woh hen opzälle.",
+       "apihelp-query+allusers-param-prefix": "Söhk noh alle Metmaacher_Nahme, di mit heh däm Wäät bejenne.",
        "apihelp-query+allusers-param-dir": "De Reijefollsch zum Zotehre.",
        "apihelp-query+allusers-param-group": "Donn blohß Metmaacher uß dä aanjejovve Jroppe enschlehße.",
        "apihelp-query+allusers-param-excludegroup": "Donn keine Metmaacher uß dä aanjejovve Jroppe enschlehße.",
        "apihelp-query+allusers-param-limit": "Wi vill Nahme Metmaacher sulle mer krijje?",
        "apihelp-query+allusers-param-witheditsonly": "Blohß Metmahcher, di och ens jät verändert han.",
+       "apihelp-query+allusers-param-activeusers": "Donn blohß Metmaacher opleßte, di  {{PLURAL:$1|der läzde Daach|en de läzde $1 Dääsch|keine läzde Daach}} aktihf wohre.",
+       "apihelp-query+allusers-example-Y": "Monn metmaacher opleßte, woh de Nahme vun met <kbd>Y</kbd> aanfange.",
+       "apihelp-query+backlinks-description": "Fengk alle Sigge, di op de aanjejovve Sigg lengke.",
        "apihelp-query+backlinks-param-namespace": "Dat Appachtemang zom opzälle.",
        "apihelp-query+backlinks-param-dir": "En wälsche Reijefollsch?",
-       "apihelp-query+categories-param-dir": "En wälsche Reijefollsch?"
+       "apihelp-query+blocks-param-start": "Et Dattom un de Zigg vun woh aff opjezallt wähde sull.",
+       "apihelp-query+blocks-param-end": "Et Dattom un de Zigg bes woh hen opjezallt wähde sull.",
+       "apihelp-query+blocks-param-limit": "De hühßde Aanzahl Spärre zom opleste.",
+       "apihelp-query+blocks-param-prop": "Which properties to get:\n;id:Adds the ID of the block.\n;user:Adds the username of the blocked user.\n;userid:Adds the user ID of the blocked user.\n;by:Adds the username of the blocking user.\n;byid:Adds the user ID of the blocking user.\n;timestamp:Adds the timestamp of when the block was given.\n;expiry:Adds the timestamp of when the block expires.\n;reason:Adds the reason given for the block.\n;range:Adds the range of IP addresses affected by the block.\n;flags:Tags the ban with (autoblock, anononly, etc.).\n<!-- \nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-query%2Bblocks-param-prop/ksh\n-->",
+       "apihelp-query+blocks-example-simple": "Schpärre opleßte.",
+       "apihelp-query+blocks-example-users": "Donn de Schpärre vun dä Metmaacher <lang=\"en\" xml:lang=\"en\" dir=\"ltr\" kbd>Alice</kbd> un <lang=\"en\" xml:lang=\"en\" dir=\"ltr\" kbd>Bob</kbd> opleßte.",
+       "apihelp-query+categories-description": "Donn alle Saachjroppe epleßte, woh di Sigge dren sin.",
+       "apihelp-query+categories-param-prop": "Which additional properties to get for each category:\n;sortkey:Adds the sortkey (hexadecimal string) and sortkey prefix (human-readable part) for the category.\n;timestamp:Adds timestamp of when the category was added.\n;hidden:Tags categories that are hidden with _&#95;HIDDENCAT_&#95;.\n<!-- \nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-query%2Bcategories-param-prop/ksh\n-->",
+       "apihelp-query+categories-param-show": "Wat för en Zoot Saachjroppe zeije.",
+       "apihelp-query+categories-param-dir": "En wälsche Reijefollsch?",
+       "apihelp-query+categories-example-simple": "Holl en Leß med alle Saachjroppe, woh di Sigg <kbd>Albert Einstein</kbd> dren es.",
+       "apihelp-query+categories-example-generator": "Holl Aanjahbe övver alle Saachjroppe, di en dä Sigg <kbd>Albert Einstein</kbd> jebruch wähde.",
+       "apihelp-query+categoryinfo-description": "Holl Aanjahbe övver de aanjejovve Saachjroppe.",
+       "apihelp-query+categorymembers-description": "Donn alle Sigge en ener aanjejove saachjrobb opleste.",
+       "apihelp-query+categorymembers-param-limit": "De jrüüßte Zahl Sigge för ußzejävve.",
+       "apihelp-query+categorymembers-param-sort": "De Eijeschavv öm dernoh ze zottehre.",
+       "apihelp-query+categorymembers-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+duplicatefiles-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+embeddedin-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+filearchive-param-dir": "En wälsche Reijefollsch opleßte.",
+       "apihelp-query+images-param-dir": "En wälsche Reijefollsch opleßte.",
+       "apihelp-query+imageusage-param-namespace": "Dat Appachtemang zom opzälle.",
+       "apihelp-query+imageusage-param-dir": "En wälsche Reijefollsch opleßte.",
+       "apihelp-query+info-paramvalue-prop-watchers": "De Aanzahl Oppaßer, wann zohjelohße.",
+       "apihelp-query+iwbacklinks-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+iwlinks-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+langbacklinks-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+langlinks-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+links-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+pagepropnames-param-limit": "De jrüüßte Zahl Nahme för ußzejävve.",
+       "apihelp-query+pagepropnames-example-simple": "Holl de eezde zehn Nahme vun Eijeschaffte.",
+       "apihelp-query+pageswithprop-param-limit": "De jrüüßte Zahl Sigge för ußzejävve.",
+       "apihelp-query+pageswithprop-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+prefixsearch-param-namespace": "En wällschem Appachtemang söhke.",
+       "apihelp-query+prefixsearch-param-limit": "De hühßte Aanzahl vun Äjeebnesse för zeröck ze jävve",
+       "apihelp-query+querypage-param-limit": "De Aanzahl vun Äjeebnesse för zeröck ze jävve",
+       "apihelp-query+random-param-limit": "Wi vill zohfälleje Sigge sulle ußjejovve wähde?",
+       "apihelp-query+revisions+base-param-limit": "Wi vill Väsjohne sulle ußjejovve wähde?",
+       "apihelp-query+siteinfo-param-numberingroup": "Donn de Aanzahl Metmaacher en de Jroppe vun Metmaacher opleßte.",
+       "apihelp-query+tags-param-limit": "De hühßde Aanzahl !!FUZY tags zom opleste.",
+       "apihelp-query+tags-param-prop": "Wat för en Eijschaffte holle:\n;name:Adds name of tag.\n;displayname:Adds system message for the tag.\n;description:Adds description of the tag.\n;hitcount:Adds the number of revisions and log entries that have this tag.\n;defined:Indicate whether the tag is defined.\n;source:Gets the sources of the tag, which may include <samp>extension</samp> for extension-defined tags and <samp>manual</samp> for tags that may be applied manually by users.\n;active:Whether the tag is still being applied.\n<!-- https://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-query%2Btags-param-prop/ksh\n -->",
+       "apihelp-query+templates-param-limit": "Wi vill Schablohne sulle ußjejovve wähde?",
+       "apihelp-query+templates-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+usercontribs-param-limit": "De hühßte Aanzahl vun Meddeilonge för zeröck ze jävve",
+       "api-help-param-default": "Schtandatt: $1",
+       "api-help-param-default-empty": "Schtandatt: <span class=\"apihelp-empty\">(läddesch)</span>",
+       "api-help-param-limited-in-miser-mode": "<strong>opjepaß:</strong> Weil der  [[mw:Manual:$wgMiserMode|miser mode]] enjeschalld es, künne heh winnijer wi <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1limit</var> Äjehpneße ußjejejovve wähde, vör em Wigger_Mache. En Jränzfäll künne et Noll sin.",
+       "api-help-param-direction": "En wälsche Reihjefollsch opleßte:\n;newer:List oldest first. Note: $1start has to be before $1end.\n;older:List newest first (default). Note: $1start has to be later than $1end.\n<!-- \nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Api-help-param-direction/ksh\n-->",
+       "api-help-param-continue": "Wann mih ze holle es, nemm dat för wigger ze maache.",
+       "api-help-param-no-description": "<span class=\"apihelp-empty\">(nix drövver bikannt)</span>",
+       "api-help-examples": "{{PLURAL:$1|Beijschpell|Beijschpelle|Beijschpell}}:",
+       "api-help-permissions": "{{PLURAL:$1|Rääsch|Rääschde|Rääsch}}:",
+       "api-help-permissions-granted-to": "Jejovve aan: $2{{PLURAL:$1|}}",
+       "api-help-right-apihighlimits": "Donn de Beschängkonge vun Opdrähscht aan de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> kleiner maache (langsamme Opdrähscht: $1; flöcke Opdrähscht: $2). De Beschränkonge för lahme Opdrähscht jällde och för Parramehtere met vill Wähte.",
+       "api-credits-header": "Aanäkännong för Beijdrähsch",
+       "api-credits": "Dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> ier Äntweklere:\n* Roan Kattouw (Aanföhrer zigg em Säptämber 2007 bes 2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (Bejenner un Aanföhrer vum Säptämber 2006 bes Säptämber 2007)\n* Brad Jorsch (Aanföhrer vun 2013 bes hük)\n\nDoht Ühr Aanmärkonge, Vörschlähsch un Frohre aan de Meijlengleß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">mediawiki-api@lists.wikimedia.org</code> scheke, Ühr Vörschlähsch un Fählermälldong doht op <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">https://phabricator.wikimedia.org/</code> ennjävve."
 }
index ff00e7c..4fc49e6 100644 (file)
@@ -53,6 +53,8 @@
        "apihelp-edit-param-nocreate": "Gây lỗi nếu trang không tồn tại.",
        "apihelp-edit-param-watch": "Thêm trang vào danh sách theo dõi của bạn.",
        "apihelp-edit-param-unwatch": "Bỏ trang này khỏi danh sách theo dõi của bạn.",
+       "apihelp-edit-param-undo": "Hoàn tác sửa đổi này. Ghi đè $1text, $1prependtext và $ 1appendtext.",
+       "apihelp-edit-param-undoafter": "Hoàn tác tất cả các sửa đổi từ $1undo cho tới sửa đổi này. Nếu không được thiết lập, chỉ cần lùi lại một sửa đổi.",
        "apihelp-edit-example-edit": "Sửa đổi trang",
        "apihelp-edit-example-prepend": "Đưa <kbd>_&#95;NOTOC_&#95;</kbd> vào đầu trang",
        "apihelp-edit-example-undo": "Lùi sửa các thay đổi 13579–13585 và tự động tóm lược",
index 81e5941..bf50728 100644 (file)
@@ -9,7 +9,8 @@
                        "Shizhao",
                        "Yfdyh000",
                        "JuneAugsut",
-                       "EagerLin"
+                       "EagerLin",
+                       "Simon xianyu"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|文档]]\n* [[mw:API:FAQ|常见问题]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 邮件列表]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API公告]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 程序错误与功能请求]\n</div>\n<strong>状态信息:</strong>本页所展示的所有特性都应正常工作,但是API仍在开发当中,将会随时变化。请订阅[https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mediawiki-api-announce 邮件列表]以便获得更新通知。\n\n<strong>错误请求:</strong>当API收到错误请求时,HTTP header将会返回一个包含\"MediaWiki-API-Error\"的值,随后header的值与error code将会送回并设置为相同的值。详细信息请参阅[[mw:API:Errors_and_warnings|API: 错误与警告]]。",
        "apihelp-options-param-resetkinds": "当<var>$1reset</var>选项被设置时,要重置的选项类型列表。",
        "apihelp-options-param-change": "更改列表,以name=value格式化(例如skin=vector)。值不能包含管道字符。如果没提供值(甚至没有等号),例如optionname|otheroption|...,选项将重置为默认值。",
        "apihelp-options-param-optionname": "应设置为由<var>$1optionvalue</var>提供值的选项名称。",
+       "apihelp-options-param-optionvalue": "使用<var>$1选项名</var>指定的选项值中,可以包含管道字符",
        "apihelp-options-example-reset": "重置所有用户设置",
        "apihelp-options-example-change": "更改<kbd>skin</kbd>和<kbd>hideminor</kbd>设置。",
        "apihelp-options-example-complex": "重置所有设置,然后设置<kbd>皮肤</kbd>和<kbd>昵称</kbd>。",
        "apihelp-parse-param-pageid": "解析此页的内容。覆盖<var>$1page</var>。",
        "apihelp-parse-param-redirects": "如果<var>$1page</var>或<var>$1pageid</var>被设置为一个重定向,则解析它。",
        "apihelp-parse-param-oldid": "解析该修订版本的内容。覆盖<var>$1page</var>和<var>$1pageid</var>。",
+       "apihelp-parse-param-pst": "在解析输入前,对输入做一次保存前变换处理。仅当使用文本时有效。",
        "apihelp-parse-param-effectivelanglinks": "包含由扩展提供的语言链接(用于与<kbd>$1prop=langlinks</kbd>一起使用)。",
+       "apihelp-parse-param-section": "只检索此段数的内容,或只当<kbd>new</kbd>生成新的段落时检索。\n\n<kbd>new</kbd>段落只当指定<var>text</var>时受尊重。",
        "apihelp-parse-param-sectiontitle": "当<var>section</var>为<kbd>new</kbd>时新段落标题。\n\n不像页面编辑,当省略或为空时将不会备选为<var>summary</var>。",
        "apihelp-parse-param-disablepp": "从解析器输出中禁用PP报告。",
        "apihelp-parse-param-disableeditsection": "从解析器输出中禁用编辑段落链接。",
        "apihelp-protect-example-protect": "保护一个页面",
        "apihelp-protect-example-unprotect": "通过设置限制为<kbd>all</kbd>解除保护一个页面。",
        "apihelp-protect-example-unprotect2": "通过设置没有限制解除保护一个页面",
+       "apihelp-purge-description": "为指定标题刷新缓存。\n\n如果用户尚未登录的话,就需要POST请求。",
        "apihelp-purge-param-forcelinkupdate": "更新链接表。",
        "apihelp-purge-param-forcerecursivelinkupdate": "更新链接表中,并更新任何使用此页作为模板的页面的链接表。",
        "apihelp-purge-example-simple": "刷新<kbd>Main Page</kbd>和<kbd>API</kbd>页面。",
        "apihelp-purge-example-generator": "刷新主名字空间的前10个页面",
        "apihelp-query-description": "获取来自和有关MediaWiki的数据。\n\n所有数据修改将首先要使用查询以获得令牌以阻止来自恶意网站的滥用破坏。",
+       "apihelp-query-param-prop": "要为已查询页面获取的属性。",
        "apihelp-query-param-list": "要获取的列表。",
        "apihelp-query-param-meta": "要获取的元数据。",
        "apihelp-query-param-rawcontinue": "目前被忽略。将来<var>$1continue</var>将成为默认,且这里将需要得到原始的<samp>query-continue</samp>数据。",
        "apihelp-query+allcategories-param-min": "只返回至少带这么多成员的分类。",
        "apihelp-query+allcategories-param-max": "只返回最多带这么多成员的分类。",
        "apihelp-query+allcategories-param-limit": "要返回多少个类别。",
+       "apihelp-query+allcategories-param-prop": "要获取的属性:\n;size:在分类中添加页面数。\n;hidden:标记由_&#95;HIDDENCAT_&#95;隐藏的分类。",
        "apihelp-query+allcategories-example-size": "列出分类及其含有多少页面的信息。",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "只可以与<var>$3user</var>一起使用。",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "不能与<var>$3user</var>一起使用。",
        "apihelp-query+alldeletedrevisions-example-user": "列出由<kbd>Example<kbd>作出的最近50次已删除贡献。",
        "apihelp-query+alldeletedrevisions-example-ns-main": "列出前50次已删除的主名字空间修订。",
        "apihelp-query+allfileusages-description": "列出所有文件用途,包括不存在的。",
+       "apihelp-query+allfileusages-param-from": "文件的标题开始枚举于.",
        "apihelp-query+allfileusages-param-prefix": "搜索此值开头的所有文件标题。",
+       "apihelp-query+allfileusages-param-prop": "要包含的信息束:\n;ids:添加使用中的页面的页面ID(不能与$1unique一起使用)。\n;title:添加文件的标题。",
        "apihelp-query+allfileusages-param-limit": "要返回的总计项目。",
        "apihelp-query+allfileusages-param-dir": "罗列所采用的方向。",
        "apihelp-query+allfileusages-example-unique": "列出唯一性的文件标题",
        "apihelp-query+blocks-description": "列出所有被封禁的用户和IP地址。",
        "apihelp-query+blocks-param-ids": "要列出的封禁ID列表(可选)。",
        "apihelp-query+blocks-param-users": "要搜索的用户列表(可选)。",
+       "apihelp-query+blocks-param-prop": "要获取的属性:\n;id:添加封禁ID。\n;user:添加被封禁用户的用户名。\n;userid:添加被封禁用户的用户ID。\n;by:添加执行封禁的用户的用户名。\n;byid:添加执行封禁的用户的用户ID。\n;timestamp:添加封禁生效时的时间戳。\n;expiry:添加封禁截止时的时间戳。\n;reason:添加封禁原因。\n;range:添加受封禁影响的IP地址段。\n;flags:标记编辑禁止(自动封禁、仅限匿名用户等)。",
        "apihelp-query+blocks-example-simple": "封禁列表",
        "apihelp-query+blocks-example-users": "列出用户<kbd>Alice</kbd>和<kbd>Bob</kbd>的封禁。",
        "apihelp-query+categories-description": "页面属于的所有分类列表。",
+       "apihelp-query+categories-param-prop": "要为每个分类获取的额外属性:\n;sortkey:为每个分类添加关键词(十六进制字符串)和关键词前缀(人类可读部分)。\n;timestamp:添加分类添加时的时间戳。\n;hidden:标记由_&#95;HIDDENCAT_&#95;隐藏的分类。",
        "apihelp-query+categories-param-show": "显示何种分类。",
        "apihelp-query+categories-param-limit": "返回多少分类。",
        "apihelp-query+categories-param-dir": "罗列所采用的方向。",
index 8eccd5d..261186f 100644 (file)
        "apihelp-block-description": "封鎖使用者。",
        "apihelp-block-param-user": "您要封鎖的使用者名稱、IP 位址或 IP 範圍。",
        "apihelp-block-param-reason": "封鎖原因。",
-       "apihelp-block-param-anononly": "僅封鎖匿名使用者 (禁止這個 IP 的匿名使用者編輯)。",
+       "apihelp-block-param-anononly": "僅封鎖匿名使用者 (禁止這個 IP 位址的匿名使用者編輯)。",
        "apihelp-block-param-nocreate": "禁止建立帳號。",
        "apihelp-block-param-autoblock": "自動封鎖最後使用的 IP 位址,以及在這之後嘗試登入的 IP 位址。",
-       "apihelp-block-param-noemail": "禁止使用者透過 Wiki 寄送電子郵件。 (需要 \"blockemail\" 權限)。",
-       "apihelp-block-param-hidename": "隱藏封鎖日誌的使用者名稱。 (需要 \"hideuser\" 權限)。",
+       "apihelp-block-param-noemail": "禁止使用者透過 Wiki 寄送電子郵件。 (需要 <code>blockemail</code> 權限)。",
+       "apihelp-block-param-hidename": "隱藏封鎖日誌的使用者名稱。 (需要 <code>hideuser</code> 權限)。",
        "apihelp-block-param-allowusertalk": "允許使用者編輯自己的對話頁面 (依據 <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var> 的設定)。",
        "apihelp-block-param-reblock": "若使用者已被封鎖,覆寫既有的封鎖設定值。",
-       "apihelp-block-param-watchuser": "監視使用者或 IP 的使用者頁面與對話頁面。",
+       "apihelp-block-param-watchuser": "監視使用者或 IP 位址的使用者頁面與對話頁面。",
+       "apihelp-checktoken-param-type": "已開始測試的標記類型。",
+       "apihelp-checktoken-param-token": "標記測試。",
+       "apihelp-checktoken-param-maxtokenage": "以秒計算標記的最大允許年限。",
+       "apihelp-checktoken-example-simple": "測試 <kbd>csrf</kbd> 標記的有效性。",
+       "apihelp-clearhasmsg-description": "清除目前單一使用者的 <code>hasmsg</code> 標記。",
+       "apihelp-clearhasmsg-example-1": "清除目前使用者的 <code>hasmsg</code> 標記。",
+       "apihelp-compare-description": "取得2個葉面之間的差别。\n\n用於“from”和“to”的修訂版編號、頁面標題或頁面 ID 必須取得認證。",
        "apihelp-compare-param-fromtitle": "要比對的第一個標題。",
        "apihelp-compare-param-fromid": "要比對的第一個頁面 ID。",
        "apihelp-compare-param-fromrev": "要比對的第一個修訂。",
        "apihelp-createaccount-param-mailpassword": "若設為其他值,將會以電子郵件寄送隨機密碼給使用者。",
        "apihelp-createaccount-param-reason": "建立帳號時選填的原因,會被記錄到日誌當中。",
        "apihelp-createaccount-param-language": "要設定的使用者預設語言代碼 (選填,預設依據內容語言)。",
-       "apihelp-createaccount-example-pass": "建立使用者 \"testuser\" 使用密碼 \"test123\"",
+       "apihelp-createaccount-example-pass": "建立使用者 <kbd>testuser</kbd> 使用密碼 <kbd>test123</kbd>",
        "apihelp-createaccount-example-mail": "建立使用者 <kbd>testmailuser</kbd> 並且電子郵件通知隨機產生的密碼。",
        "apihelp-delete-description": "刪除頁面。",
-       "apihelp-delete-param-title": "您欲刪除的頁面標題。 無法與 $1pageid 同時使用。",
-       "apihelp-delete-param-pageid": "您欲刪除頁面的頁面 ID。 無法與 $1title 同時使用。",
+       "apihelp-delete-param-title": "您欲刪除的頁面標題。 無法與 <var>$1pageid</var> 同時使用。",
+       "apihelp-delete-param-pageid": "您欲刪除頁面的頁面 ID。 無法與 <var>$1title</var> 同時使用。",
        "apihelp-delete-param-reason": "刪除的原因。 若未設定,將會使用自動產生的原因。",
-       "apihelp-delete-param-watch": "加入頁面至您的監視清單。",
-       "apihelp-delete-param-unwatch": "從您的監視清單中移除頁面。",
-       "apihelp-delete-example-simple": "刪除主頁面",
-       "apihelp-delete-example-reason": "刪除主頁面使用原因 \"準備移至它處\"",
+       "apihelp-delete-param-watch": "加入目前頁面至您的監視清單。",
+       "apihelp-delete-param-watchlist": "無條件使用設置將頁面加入或移除目前使用者的監視清單或者是不更改監視清單。",
+       "apihelp-delete-param-unwatch": "從您的監視清單中移除目前頁面。",
+       "apihelp-delete-param-oldimage": "來自[[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]]提供要删除的舊圖片名稱。",
+       "apihelp-delete-example-simple": "刪除<kbd>主頁面</kbd>",
+       "apihelp-delete-example-reason": "刪除<kbd>主頁面</kbd>使用原因 <kbd>準備移至它處</kbd>",
        "apihelp-disabled-description": "已停用此模組。",
        "apihelp-edit-description": "建立與編輯頁面。",
-       "apihelp-edit-param-title": "您欲編輯的頁面標題。 無法與 $1pageid 同時使用。",
-       "apihelp-edit-param-pageid": "您欲編輯頁面的頁面 ID。 無法與 $1title 同時使用。",
-       "apihelp-edit-param-section": "章節編號。 0 代表最上層章節,\"new\" 代表新章節。",
+       "apihelp-edit-param-title": "您欲編輯的頁面標題。 無法與 <var>$1pageid</var> 同時使用。",
+       "apihelp-edit-param-pageid": "您欲編輯頁面的頁面 ID。 無法與 <var>$1title</var> 同時使用。",
+       "apihelp-edit-param-section": "章節編號。 <kbd>0</kbd> 代表最上層章節,<kbd>new</kbd> 代表新章節。",
        "apihelp-edit-param-sectiontitle": "新章節的標題。",
        "apihelp-edit-param-text": "頁面內容。",
        "apihelp-edit-param-summary": "編輯摘要。 當未設定 $1section=new 與 $1sectiontitle 時也會當做章節標題。",
        "apihelp-edit-param-minor": "小編輯。",
        "apihelp-edit-param-notminor": "非小編輯。",
+       "apihelp-edit-param-bot": "標記此編輯為機器人編輯。",
+       "apihelp-edit-param-basetimestamp": "基於修訂的時間戳記,用來檢測編輯衝突。也许可以取得[[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]]認可。",
        "apihelp-edit-param-createonly": "若頁面已存在,則不編輯頁面。",
        "apihelp-edit-param-nocreate": "若頁面不存在,則產生錯誤。",
-       "apihelp-edit-param-watch": "加入頁面至您的監視清單。",
-       "apihelp-edit-param-unwatch": "從您的監視清單中移除頁面。",
+       "apihelp-edit-param-watch": "加入目前頁面至您的監視清單。",
+       "apihelp-edit-param-unwatch": "從您的監視清單中移除目前頁面。",
        "apihelp-edit-example-edit": "編輯頁面",
        "apihelp-emailuser-description": "寄送電子郵件給使用者。",
        "apihelp-emailuser-param-target": "電子郵件的收件使用者。",
        "apihelp-emailuser-param-subject": "郵件主旨。",
        "apihelp-emailuser-param-text": "郵件內容。",
        "apihelp-emailuser-param-ccme": "寄送一份此郵件的複本給我。",
-       "apihelp-emailuser-example-email": "寄送電子郵件給使用者 \"WikiSysop\" 使用內容 \"Content\"",
+       "apihelp-emailuser-example-email": "寄送電子郵件給使用者 <kbd>WikiSysop</kbd> 使用內容 <kbd>Content</kbd>",
        "apihelp-expandtemplates-description": "展開所有於 wikitext 中模板。",
        "apihelp-expandtemplates-param-title": "頁面標題。",
        "apihelp-expandtemplates-param-text": "要轉換的 Wikitext。",
+       "apihelp-feedcontributions-param-showsizediff": "顯示修訂版本之間的差異大小。",
+       "apihelp-feedcontributions-example-simple": "返回使用者<kbd>Example</kbd>的貢獻。",
+       "apihelp-feedrecentchanges-description": "返回近期邊更摘要。",
+       "apihelp-feedrecentchanges-param-feedformat": "摘要格式。",
+       "apihelp-feedrecentchanges-param-namespace": "用於限制結果的命名空間。",
+       "apihelp-feedrecentchanges-param-invert": "除所選定者外的所有命名空間。",
        "apihelp-feedrecentchanges-example-simple": "顯示近期變動",
        "apihelp-feedrecentchanges-example-30days": "顯示近期30天內的變動",
        "apihelp-feedwatchlist-description": "返回監視清單 feed。",
        "apihelp-userrights-param-user": "使用者名稱。",
        "apihelp-userrights-param-userid": "使用者 ID。",
        "apihelp-format-example-generic": "格式化查詢結果為 $1 格式",
-       "apihelp-dbg-description": "使用 PHP 的 var_export() 格式輸出資料。",
-       "apihelp-dbgfm-description": "使用 PHP 的 var_export() 格式輸出資料 (使用 HTML 格式顯示)。",
-       "apihelp-dump-description": "使用 PHP 的 var_dump() 格式輸出資料。",
-       "apihelp-dumpfm-description": "使用 PHP 的 var_dump() 格式輸出資料 (使用 HTML 格式顯示)。",
+       "apihelp-dbg-description": "使用 PHP 的 <code>var_export()</code> 格式輸出資料。",
+       "apihelp-dbgfm-description": "使用 PHP 的 <code>var_export()</code> 格式輸出資料 (使用 HTML 格式顯示)。",
+       "apihelp-dump-description": "使用 PHP 的 <code>var_dump()</code> 格式輸出資料。",
+       "apihelp-dumpfm-description": "使用 PHP 的 <code>var_dump()</code> 格式輸出資料 (使用 HTML 格式顯示)。",
        "apihelp-json-description": "使用 JSON 格式輸出資料。",
        "apihelp-jsonfm-description": "使用 JSON 格式輸出資料 (使用 HTML 格式顯示)。",
        "apihelp-none-description": "不輸出。",
        "apihelp-php-description": "使用序列化 PHP 格式輸出資料。",
        "apihelp-phpfm-description": "使用序列化 PHP 格式輸出資料 (使用 HTML 格式顯示)。",
        "apihelp-rawfm-description": "使用 JSON 格式的除錯元素輸出資料 (使用 HTML 格式顯示)。",
-       "apihelp-txt-description": "使用 PHP 的 print_r() 格式輸出資料。",
-       "apihelp-txtfm-description": "使用 PHP 的 print_r() 格式輸出資料 (使用 HTML 格式顯示)。",
+       "apihelp-txt-description": "使用 PHP 的 <code>print_r()</code> 格式輸出資料。",
+       "apihelp-txtfm-description": "使用 PHP 的 <code>print_r()</code> 格式輸出資料 (使用 HTML 格式顯示)。",
        "apihelp-wddx-description": "使用 WDDX 格式輸出資料。",
        "apihelp-wddxfm-description": "使用 WDDX 格式輸出資料 (使用 HTML 格式顯示)。",
        "apihelp-xml-description": "使用 XML 格式輸出資料。",
index 4e5ed08..9a520ff 100644 (file)
  * @ingroup Database
  */
 
-/**
- * Utility class.
- * @ingroup Database
- */
-class DBObject {
-       public $mData;
-
-       function __construct( $data ) {
-               $this->mData = $data;
-       }
-
-       /**
-        * @return bool
-        */
-       function isLOB() {
-               return false;
-       }
-
-       function data() {
-               return $this->mData;
-       }
-}
-
 /**
  * Utility class
  * @ingroup Database
index dc80a46..7a4a3b6 100644 (file)
@@ -432,8 +432,10 @@ class MWDebug {
 
                        // Cannot use OutputPage::addJsConfigVars because those are already outputted
                        // by the time this method is called.
-                       $html = ResourceLoader::makeInlineScript(
-                               ResourceLoader::makeConfigSetScript( array( 'debugInfo' => $debugInfo ) )
+                       $html = Html::inlineScript(
+                               ResourceLoader::makeLoaderConditionalScript(
+                                       ResourceLoader::makeConfigSetScript( array( 'debugInfo' => $debugInfo ) )
+                               )
                        );
                }
 
index 77bbd36..de8dd43 100644 (file)
@@ -1233,6 +1233,12 @@ class DifferenceEngine extends ContextSource {
                // Load the new revision object
                if ( $this->mNewid ) {
                        $this->mNewRev = Revision::newFromId( $this->mNewid );
+
+                       if ( !$this->mNewRev && wfGetLB()->getServerCount() > 1 ) {
+                               // Try harder… This is being hit after a rollback where we show the
+                               // diff immediately after the edit happened. T93866
+                               $this->mNewRev = Revision::newFromId( $this->mNewid, Revision::READ_LATEST );
+                       }
                } else {
                        $this->mNewRev = Revision::newFromTitle(
                                $this->getTitle(),
index 5ff0749..35fe2d8 100644 (file)
        "config-desc": "El instalador de MediaWiki",
        "config-title": "Instalación de MediaWiki $1",
        "config-information": "Información",
-       "config-localsettings-upgrade": "Se ha encontrado un archivo <code>LocalSettings.php</code>.\nPara actualizar esta instalación, por favor ingresa el valor de <code>$wgUpgradeKey</code> en el cuadro de abajo.\nLo encontrarás en <code>LocalSettings.php</code>.",
-       "config-localsettings-cli-upgrade": "Se ha detectado un archivo <code>LocalSettings.php</code>.\nPara actualizar la instalación, vuelva a ejecutar <code>update.php</code>",
+       "config-localsettings-upgrade": "Se ha encontrado un archivo <code>LocalSettings.php</code>.\nPara actualizar esta instalación, escribe el valor de <code>$wgUpgradeKey</code> en el cuadro de abajo.\nLo encontrarás en <code>LocalSettings.php</code>.",
+       "config-localsettings-cli-upgrade": "Se ha detectado un archivo <code>LocalSettings.php</code>.\nPara actualizar la instalación, en su lugar ejecuta <code>update.php</code>",
        "config-localsettings-key": "Clave de actualización:",
        "config-localsettings-badkey": "La clave proporcionada es incorrecta.",
-       "config-upgrade-key-missing": "Se ha detectado una instalación existente de MediaWiki.\nPara actualizar la instalación, por favor, ponga la siguiente línea al final de su archivo <code>LocalSettings.php</code>:\n\n$1",
-       "config-localsettings-incomplete": "El archivo <code>LocalSettings.php</code> existente parece estar incompleto.\nLa variable $1 no está definida.\nCambie el archivo <code>LocalSettings.php</code> para que esta variable quede establecida y haga clic en \"{{int:Config-continue}}\".",
-       "config-localsettings-connection-error": "Se ha producido un error al conectar a la base de datos utilizando la configuración especificada en <code>LocalSettings.php</code> . Por favor arreglar estos ajustes e inténtelo de nuevo.\n\n$1",
+       "config-upgrade-key-missing": "Se ha detectado una instalación existente de MediaWiki.\nPara actualizar la instalación, añade la siguiente línea al final de tu  <code>LocalSettings.php</code>:\n\n$1",
+       "config-localsettings-incomplete": "El archivo <code>LocalSettings.php</code> existente parece estar incompleto.\nLa variable $1 no está definida.\nCambia <code>LocalSettings.php</code> para que esta variable quede establecida y haz clic en \"{{int:Config-continue}}\".",
+       "config-localsettings-connection-error": "Se ha producido un error al conectar a la base de datos utilizando la configuración especificada en <code>LocalSettings.php</code>. Corrige estos ajustes e inténtalo de nuevo.\n\n$1",
        "config-session-error": "Error al iniciar la sesión: $1",
        "config-session-expired": "Tus datos de sesión parecen haber expirado.\nLas sesiones están configuradas por una duración de $1.\nPuedes incrementar esto configurando <code>session.gc_maxlifetime</code> en php.ini.\nReiniciar el proceso de instalación.",
        "config-no-session": "Se han perdido los datos de sesión.\nVerifica tu php.ini y comprueba que <code>session.save_path</code> está establecido en un directorio apropiado.",
        "config-page-restart": "Reiniciar instalación",
        "config-page-readme": "Léeme",
        "config-page-releasenotes": "Notas de la versión",
-       "config-page-copying": "Copiando",
-       "config-page-upgradedoc": "Actualizando",
+       "config-page-copying": "Copia",
+       "config-page-upgradedoc": "Actualización",
        "config-page-existingwiki": "Wiki existente",
-       "config-help-restart": "¿Deseas borrar todos los datos que has ingresado hasta ahora y reiniciar el proceso de instalación desde el principio?",
+       "config-help-restart": "¿Deseas borrar todos los datos guardados que has escrito y reiniciar el proceso de instalación?",
        "config-restart": "Sí, reiniciarlo",
        "config-welcome": "=== Comprobación del entorno ===\nAhora se van a realizar comprobaciones básicas para ver si el entorno es adecuado para la instalación de MediaWiki.\nRecuerda suministrar los resultados de tales comprobaciones si necesitas ayuda para completar la instalación.",
        "config-copyright": "=== Derechos de autor y Términos de uso ===\n\n$1\n\nEste programa es software libre; puedes redistribuirlo y/o modificarlo en los términos de la Licencia Pública General de GNU, tal como aparece publicada por la Fundación para el Software Libre, tanto la versión 2 de la Licencia, como cualquier versión posterior (según prefiera).\n\nEste programa es distribuido en la esperanza de que sea útil, pero '''sin cualquier garantía'''; inclusive, sin la garantía implícita de la '''posibilidad de ser comercializado''' o de '''idoneidad para cualquier finalidad específica'''.\nConsulte la licencia *GNU General *Public *License para más detalles.\n\nEn conjunto con este programa debe haber recibido <doclink href=Copying>una copia de la Licencia Pública General de GNU</doclink>; si no la recibió, pídala por escrito a Fundación para el Software Libre, Inc., 51 Franklin Street, Fifth Floor, Boston, ME La 02110-1301, USA o [http://www.gnu.org/copyleft/gpl.html léala en internet].",
        "config-env-hhvm": "HHVM $1 está instalado.",
        "config-unicode-using-utf8": "Usando utf8_normalize.so de Brion Vibber para la normalización Unicode.",
        "config-unicode-using-intl": "Usando la [http://pecl.php.net/intl extensión intl PECL] para la normalización Unicode.",
-       "config-unicode-pure-php-warning": "'''Advertencia''': La [http://pecl.php.net/intl extensión intl] no está disponible para efectuar la normalización Unicode. Utilizando la implementación más lenta en PHP.\nSi tu web tiene mucho tráfico, te recomendamos leer acerca de la [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalización Unicode].",
-       "config-unicode-update-warning": "'''Warning''': La versión instalada del contenedor de normalización Unicode usa una versión anterior de la biblioteca del [http://site.icu-project.org/ proyecto ICU].\nDeberás [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations actualizar] si realmente deseas usar Unicode.",
+       "config-unicode-pure-php-warning": "<strong>Advertencia:</strong> la [http://pecl.php.net/intl extensión intl] no está disponible para efectuar la normalización Unicode. Se utilizará la implementación más lenta en PHP puro.\nSi tu web tiene mucho tráfico, te recomendamos leer acerca de la [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalización Unicode].",
+       "config-unicode-update-warning": "<strong>Warning:</strong> la versión instalada del contenedor de normalización Unicode usa una versión antigua de la biblioteca del [http://site.icu-project.org/ proyecto ICU].\nDeberás [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations actualizar] si realmente deseas usar Unicode.",
        "config-no-db": "No se encontró un controlador adecuado para la base de datos. Necesitas instalar un controlador de base de datos para PHP.\n{{PLURAL:$2|El siguiente gestor de bases de datos está soportado|Los siguientes gestores de bases de datos están soportados}}: $1.\n\nSi compilaste PHP tú mismo, debes reconfigurarlo habilitando un cliente de base de datos, por ejemplo, usando <code>./configure --with-mysqli</code>.\nSi instalaste PHP desde un paquete Debian o Ubuntu, entonces también necesitas instalar, por ejemplo, el paquete <code>php5-mysql</code>.",
-       "config-outdated-sqlite": "''' Advertencia ''': tiene la versión SQLite $1, que es inferior a la mínima versión requerida: $2 . SQLite no estará disponible.",
-       "config-no-fts3": "'''Advertencia''': SQLite está compilado sin el [//sqlite.org/fts3.html módulo FTS3]. Las funcionalidades de búsqueda no estarán disponibles en esta instalación.",
-       "config-register-globals-error": "<strong>Error: la opción de PHP <code>[http://php.net/register_globals register_globals]</code> está activada.\nDebe estar desactivada para continuar con la instalación.</strong>\nVea [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] para obtener ayuda sobre cómo hacerlo.",
+       "config-outdated-sqlite": "<strong>Advertencia:</strong> tienes SQLite $1, que es inferior a la mínima versión requerida: $2. SQLite no estará disponible.",
+       "config-no-fts3": "<strong>Advertencia:</strong> SQLite está compilado sin el [//sqlite.org/fts3.html módulo FTS3]. Las funcionalidades de búsqueda no estarán disponibles en esta instalación.",
+       "config-register-globals-error": "<strong>Error: la opción de PHP <code>[http://php.net/register_globals register_globals]</code> está activada.\nDebe estar desactivada para continuar con la instalación.</strong>\nVéase [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] para obtener ayuda sobre cómo hacerlo.",
        "config-magic-quotes-gpc": "<strong>Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] está activa!</strong>\nEsta opción corrompe la entrada de datos de forma impredecible.\nUsted no puede instalar o utilizar MediaWiki a menos que esta opción esté deshabilitada.",
        "config-magic-quotes-runtime": "'''Fatal: ¡[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] está activada!'''\nEsta opción causa la imprevisible corrupción de la entrada de datos.\nNo puedes instalar o utilizar MediaWiki a menos que esta opción esté inhabilitada.",
        "config-magic-quotes-sybase": "'''Fatal: ¡[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] está activada!'''\nEsta opción causa la imprevisible corrupción de la entrada de datos.\nNo puedes instalar o utilizar MediaWiki a menos que esta opción esté inhabilitada.",
        "config-mbstring": "'''Fatal: La opción [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] está activada!'''\nEsta opción causa errores y puede corromper los datos de una forma imprevisible.\nNo se puede instalar o usar MediaWiki a menos que esta opción sea desactivada.",
-       "config-safe-mode": "'''Advertencia:''' El [http://www.php.net/features.safe-mode modo seguro] de PHP está activado.\nEste modo puede causar problemas, especialmente en la carga de archivosy en compatibilidad con <code>math</code>.",
-       "config-xml-bad": "Falta el módulo XML de PHP.\nMediaWiki necesita funciones en este módulo y no funcionará con esta configuración.\nSi está ejecutando Mandrake, instale el paquete php-xml.",
+       "config-safe-mode": "<strong>Advertencia:</strong> el [http://www.php.net/features.safe-mode modo seguro] de PHP está activado.\nEste modo puede causar problemas, especialmente en la carga de archivos y en compatibilidad con <code>math</code>.",
+       "config-xml-bad": "Falta el módulo XML de PHP.\nMediaWiki necesita funciones en este módulo y no funcionará con esta configuración.\nSi estás usando Mandrake, instala el paquete php-xml.",
        "config-pcre-old": "'''Fatal:''' Se requiere PCRE $1 o posterior.\nSu PHP binario está enlazado con PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Más información].",
        "config-pcre-no-utf8": "'''Error fatal ''': Parece que el módulo PCRE de PHP fue compilado sin el soporte PCRE_UTF8.\nMediaWiki requiere compatibilidad con UTF-8 para funcionar correctamente.",
        "config-memory-raised": "el parámetro <code>memory_limit</code> de PHP es $1, aumentada a $2.",
-       "config-memory-bad": "'''Advertencia:''' El parámetro <code>memory_limit</code> de PHP es $1.\nProbablemente este valor es demasiado bajo.\n¡La instalación podrá fallar!",
+       "config-memory-bad": "<strong>Advertencia:</strong> el parámetro <code>memory_limit</code> de PHP es $1.\nProbablemente sea demasiado bajo.\n¡La instalación puede fallar!",
        "config-ctype": "'''Fatal''': Se necesita compilar PHP con compatibilidad para la [http://www.php.net/manual/en/ctype.installation.php extensión Ctype].",
        "config-iconv": "<strong>Fatal:</strong> PHP debe ser compilado con soporte para la [http://www.php.net/manual/en/iconv.installation.php extensión iconv].",
        "config-json": "'''Fatal:''' PHP fue compilado sin soporte para JSON.\nDebes instalar la extensión JSON o la extensión [http://pecl.php.net/package/jsonc PECL jsonc] antes de instalar MediaWiki.\n* La extensión PHP se incluye en Red Hat Enterprise Linux (CentOS) 5 y 6, aunque debe habilitarse en <code>/etc/php.ini</code> o <code>/etc/php.d/json.ini</code>.\n* Algunas distribuciones Linux liberadas después de mayo del 2013 omiten la extensión PHP, y en su lugar disponen de la extensión PECL en el paquete <code>php5-json</code> o <code>php-pecl-jsonc</code>.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] está instalado",
        "config-apc": "[http://www.php.net/apc APC] está instalado",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] está instalado",
-       "config-no-cache": "'''Advertencia:''' No pudo encontrarse [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache].\nEl caché de objetos no está habilitado.",
-       "config-mod-security": "''' Advertencia ''': Su servidor web tiene [http://modsecurity.org/ mod_security] habilitado. Si la configuración es incorrecta, puede causar problemas a MediaWiki u otro software que permita a los usuarios publicar contenido arbitrarios.\nConsulte la [http://modsecurity.org/documentation/ documentación de mod_security] o contacte con el soporte de su servidor (''host'') si encuentra errores aleatorios.",
+       "config-no-cache": "<strong>Advertencia:</strong> no pudo encontrarse [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache].\nEl caché de objetos no está activado.",
+       "config-mod-security": "<strong>Advertencia:</strong> tu servidor web tiene activado [http://modsecurity.org/ mod_security]/mod_security2. Muchas de sus configuraciones comunes pueden causar problemas a MediaWiki u otro software que permita a los usuarios publicar contenido arbitrario. De ser posible, deberías desactivarlo. Si no, consulta la [http://modsecurity.org/documentation/ documentación de mod_security] o contacta con el administrador de tu servidor si encuentras errores aleatorios.",
        "config-diff3-bad": "GNU diff3 no se encuentra.",
        "config-git": "Se encontró el software de control de versiones Git: <code>$1</code>.",
        "config-git-bad": "No se encontró el software de control de versiones Git.",
        "config-imagemagick": "ImageMagick encontrado: <code>$1</code>.\nLa miniaturización de imágenes se habilitará si habilitas las cargas.",
        "config-gd": "Se ha encontrado una biblioteca de gráficos GD integrada.\nLa miniaturización de imágenes se habilitará si habilitas las subidas.",
-       "config-no-scaling": "No se ha encontrado ninguma biblioteca GD o ImageMagik.\nSe inhabilitará la miniaturización de imágenes.",
+       "config-no-scaling": "No se ha encontrado la biblioteca GD o ImageMagik.\nSe desactivará la miniaturización de imágenes.",
        "config-no-uri": "<strong>Error:</strong> no se pudo determinar el URI actual.\nSe interrumpió la instalación.",
        "config-no-cli-uri": "<strong>Aviso:</strong> No se especificó <code>--scriptpath</code>; se usa el valor predeterminado: <code>$1</code>.",
        "config-using-server": "Utilizando el nombre de servidor \"<nowiki>$1</nowiki>\".",
        "config-using-uri": "Utilizando la URL del servidor \"<nowiki>$1$2</nowiki>\".",
-       "config-uploads-not-safe": "'''Atención:''' Su directorio por defecto para las cargas, <code>$1</code>, es vulnerable a la ejecución de scripts arbitrarios.\nAunque MediaWiki comprueba todos los archivos cargados por si hubiese amenazas de seguridad, es altamente recomendable [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security cerrar esta vulnerabilidad de seguridad] antes de activar las cargas.",
-       "config-no-cli-uploads-check": "'''Atención:''' Su directorio predeterminado para cargas (<code>$1</code>) no está comprobado para la vulnerabilidad\n de ejecución arbitraria de comandos script durante la instalación de CLI.",
+       "config-uploads-not-safe": "<strong>Advertencia:</strong> tu directorio predeterminado para las cargas, <code>$1</code>, es vulnerable a la ejecución de scripts arbitrarios.\nAunque MediaWiki comprueba todos los archivos cargados por si hubiese amenazas de seguridad, es altamente recomendable [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security cerrar esta vulnerabilidad de seguridad] antes de activar las cargas.",
+       "config-no-cli-uploads-check": "<strong>Advertencia:</strong> tu directorio predeterminado para cargas (<code>$1</code>) no está comprobado contra la vulnerabilidad\n de ejecución arbitraria de \"scripts\" durante la instalación por línea de comandos.",
        "config-brokenlibxml": "El sistema tiene una combinación de versiones de PHP y de libxml2 que es poco confiable y puede provocar corrupción oculta en los datos de MediaWiki y otras aplicaciones web.\nActualizar a PHP 5.2.9 o posterior y a libxml2 2.7.3 o posterior ([//bugs.php.net/bug.php?id=45996 bug reportado con PHP]).\nInstalación abortada.",
        "config-suhosin-max-value-length": "Suhosin está instalado y limita el parámetro <code>length</code> GET a $1 bytes.\nEl componente ResourceLoader (gestor de recursos) de MediaWiki trabajará en este límite, pero eso perjudicará el rendimiento.\nSi es posible, deberías establecer <code>suhosin.get.max_value_length</code> en el valor 1024 o superior en <code>php.ini</code> y establecer <code>$wgResourceLoaderMaxQueryLength</code> en el mismo valor en <code>php.ini</code>.",
        "config-db-type": "Tipo de base de datos:",
        "config-db-host": "Servidor de la base de datos:",
-       "config-db-host-help": "Si su servidor de base de datos está en otro servidor, escriba el nombre del host o su dirección IP aquí.\nSi está utilizando alojamiento web compartido, su proveedor de alojamiento debería darle el nombre correcto del servidor de alojamiento (host) en su documentación.\nSi va a instalarlo en un servidor Windows y utiliza MySQL, el uso de \"localhost\" como nombre del servidor puede no funcionar. Si no es así, intente poner \"127.0.0.1\" como dirección IP local.\nSi utiliza PostgreSQL, deje este campo en blanco para conectarse a través de un socket de Unix.",
+       "config-db-host-help": "Si tu servidor de base de datos está en otro servidor, escribe el nombre del equipo o su dirección IP aquí.\n\nSi estás utilizando alojamiento web compartido, tu proveedor debería darte el nombre correcto del servidor en su documentación.\n\nSi vas a instalar en un servidor Windows y a utilizar MySQL, el uso de \"localhost\" como nombre del servidor puede no funcionar. Si es así, intenta poner \"127.0.0.1\" como dirección IP local.\n\nSi utilizas PostgreSQL, deja este campo vacío para conectarse a través de un socket de Unix.",
        "config-db-host-oracle": "TNS de la base de datos:",
        "config-db-host-oracle-help": "Introduzca un [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm nombre de conexión local] válido; un archivo tnsnames.ora debe ser visible para esta instalación.<br />Si está utilizando bibliotecas de cliente 10g o más recientes también puede utilizar el método de asignación de nombres [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].",
        "config-db-wiki-settings": "Identifica este wiki",
        "config-db-name": "Nombre de la base de datos:",
-       "config-db-name-help": "Elija un nombre que identifique su wiki.\nNo debe contener espacios.\n\nSi está utilizando alojamiento web compartido, su proveedor de alojamiento le dará un nombre específico de base de datos para que lo utilice, o bien le permitirá crear bases de datos a través de un panel de control.",
+       "config-db-name-help": "Elige un nombre que identifique tu wiki.\nNo debe contener espacios.\n\nSi estás utilizando alojamiento web compartido, tu proveedor te dará un nombre específico de base de datos para que lo utilices, o bien te permitirá crear bases de datos a través de un panel de control.",
        "config-db-name-oracle": "Esquema de la base de datos:",
        "config-db-account-oracle-warn": "Hay tres escenarios compatibles para la instalación de Oracle como base de datos back-end:\n\nSi desea crear una cuenta de base de datos como parte del proceso de instalación, por favor suministre una cuenta con función SYSDBA como cuenta de base de datos para la instalación y especifique las credenciales deseadas de la cuenta de acceso al web, de lo contrario puede crear manualmente la cuenta de acceso al web y suministrar sólo esa cuenta (si tiene los permisos necesarios para crear los objetos de esquema) o suministrar dos cuentas diferentes, una con privilegios de creación y otra con acceso restringido a la web\n\nLa secuencia de comandos (script) para crear una cuenta con los privilegios necesarios puede encontrarse en el directorio \"maintenance/oracle/\" de esta instalación. Tenga en cuenta que utilizando una cuenta restringida desactivará todas las capacidades de mantenimiento con la cuenta predeterminada.",
        "config-db-install-account": "Cuenta de usuario para instalación",
        "config-db-username": "Nombre de usuario de la base de datos:",
        "config-db-password": "Contraseña de la base de datos:",
-       "config-db-password-empty": "Introduzca una contraseña para el nuevo usuario de base de datos:  $1.\nAunque es posible crear usuarios sin contraseña, esto no es seguro.",
-       "config-db-username-empty": "Debe introducir un valor para \"{{int:config-db-username}}\"",
-       "config-db-install-username": "Introduzca el nombre de usuario que se utilizará para conectarse a la base de datos durante el proceso de instalación.\nEste no es el nombre de usuario de la cuenta de MediaWiki; Este es el nombre de usuario para la base de datos.",
-       "config-db-install-password": "Introduzca la contraseña que se utilizará para conectarse a la base de datos durante el proceso de instalación.\nEsta no es la contraseña para la cuenta de MediaWiki; esta es la contraseña para la base de datos.",
-       "config-db-install-help": "Ingresar el nombre de usuario y la contraseña que será usada para conectar a la base de datos durante el proceso de instalación.",
+       "config-db-password-empty": "Escribe una contraseña para el nuevo usuario de base de datos: $1.\nAunque es posible crear usuarios sin contraseña, esto no es seguro.",
+       "config-db-username-empty": "Debes introducir un valor para \"{{int:config-db-username}}\"",
+       "config-db-install-username": "Escribe el nombre de usuario que se utilizará para conectarse a la base de datos durante el proceso de instalación.\nEste no es el nombre de usuario de la cuenta de MediaWiki, sino el nombre de usuario para la base de datos.",
+       "config-db-install-password": "Escribe la contraseña que se utilizará para conectarse a la base de datos durante el proceso de instalación.\nEsta no es la contraseña para la cuenta de MediaWiki, sino la contraseña para la base de datos.",
+       "config-db-install-help": "Escribe el nombre de usuario y la contraseña que se utilizarán para conectarse a la base de datos durante el proceso de instalación.",
        "config-db-account-lock": "Usar el mismo nombre de usuario y contraseña durante operación normal",
        "config-db-wiki-account": "Cuenta de usuario para operación normal",
-       "config-db-wiki-help": "Introduce el nombre de usuario y la contraseña que serán usados para acceder a la base de datos durante la operación normal del wiki.\nSi esta cuenta no existe y la cuenta de instalación tiene suficientes privilegios, se creará esta cuenta de usuario con los privilegios mínimos necesarios para la operación normal del wiki.",
+       "config-db-wiki-help": "Escribe el nombre de usuario y la contraseña que se utilizarán para acceder a la base de datos durante la operación normal del wiki.\nSi esta cuenta no existe y la cuenta de instalación tiene suficientes privilegios, se creará esta cuenta de usuario con los privilegios mínimos necesarios para la operación normal del wiki.",
        "config-db-prefix": "Prefijo de tablas de la base de datos:",
-       "config-db-prefix-help": "Si necesita compartir una base de datos entre múltiples wikis, o entre MediaWiki y otra aplicación web, puede optar por agregar un prefijo a todos los nombres de tabla para evitar conflictos.\nNo utilice espacios.\n\nNormalmente se deja este campo vacío.",
+       "config-db-prefix-help": "Si necesitas compartir una base de datos entre múltiples wikis, o entre MediaWiki y otra aplicación web, puedes optar por agregar un prefijo a todos los nombres de tabla para evitar conflictos.\nNo utilices espacios.\n\nNormalmente se deja este campo vacío.",
        "config-db-charset": "Conjunto de caracteres de la base de datos",
        "config-charset-mysql5-binary": "MySQL 4.1/5.0 binario",
        "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
        "config-mysql-old": "Se necesita MySQL $1 o posterior. Tienes $2.",
        "config-db-port": "Puerto de la base de datos:",
        "config-db-schema": "Esquema para MediaWiki",
-       "config-db-schema-help": "Estos esquemas usualmente estarán bien.\nAltéralos sólo si tienes la seguridad de que necesitas hacerlo.",
-       "config-pg-test-error": "No se puede conectar a la base de datos '''$1''': $2",
+       "config-db-schema-help": "Este esquema usualmente estará bien.\nCámbialos solo si lo necesitas.",
+       "config-pg-test-error": "No se puede conectar a la base de datos <strong>$1</strong>: $2",
        "config-sqlite-dir": "Directorio de datos SQLite:",
-       "config-sqlite-dir-help": "SQLite almacena todos los datos en un único archivo.\n\nEl directorio que proporcione debe ser escribible por el servidor Web durante la instalación.\n\n'''No''' debería ser accesible a través de Internet, por eso no vamos a ponerlo en el sitio donde están los archivos PHP.\n\nEl instalador escribirá un archivo <code>.htaccess</code> junto con él, pero si falla alguien podría tener acceso a la base de datos en bloque.\nEso incluye los datos de usuario en bloque (direcciones de correo electrónico, las contraseñas con hash) así como revisiones eliminadas y otros datos restringidos del wiki.\n\nConsidere la posibilidad de poner la base de datos en algún otro sitio, por ejemplo en <code>/var/lib/mediawiki/yourwiki</code> .",
-       "config-oracle-def-ts": "Espacio de tablas por defecto:",
+       "config-sqlite-dir-help": "SQLite almacena todos los datos en un único archivo.\n\nEl directorio que proporciones debe poder escribirse por el servidor web durante la instalación.\n\n'''No''' debería ser accesible a través de Internet. Por eso no vamos a ponerlo en el sitio donde están los archivos PHP.\n\nEl instalador escribirá un archivo <code>.htaccess</code> junto con él, pero si falla alguien podría tener acceso a la base de datos en bloque.\nEso incluye los datos de usuario en bloque (direcciones de correo electrónico, las contraseñas con hash) así como revisiones eliminadas y otros datos restringidos del wiki.\n\nConsidera poner la base de datos en algún otro sitio, por ejemplo en <code>/var/lib/mediawiki/tuwiki</code> .",
+       "config-oracle-def-ts": "Espacio de tablas predeterminado:",
        "config-oracle-temp-ts": "Espacio de tablas temporal:",
        "config-type-mysql": "MySQL (o compatible)",
        "config-type-postgres": "PostgreSQL",
        "config-type-sqlite": "SQLite",
        "config-type-oracle": "Oracle",
        "config-type-mssql": "Microsoft SQL Server",
-       "config-support-info": "MediaWiki es compatible con los siguientes sistemas de bases de datos:\n\n$1\n\nSi no encuentras en el listado el sistema de base de datos que estás intentando utilizar, sigue las instrucciones vinculadas arriba para habilitar la compatibilidad.",
+       "config-support-info": "MediaWiki es compatible con los siguientes sistemas de bases de datos:\n\n$1\n\nSi no encuentras en el listado el sistema de base de datos que estás intentando utilizar, sigue las instrucciones enlazadas arriba para activar la compatibilidad.",
        "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] es la base de datos mayoritaria para MediaWiki y la que goza de mayor compatibilidad. MediaWiki también funciona con [{{int:version-db-mariadb-url}} MariaDB] y [{{int:version-db-percona-url}} Percona Server], que son compatibles con MySQL. ([http://www.php.net/manual/es/mysql.installation.php Cómo compilar PHP con compatibilidad MySQL])",
        "config-dbsupport-postgres": "[{{int:version-db-postgres-url}} PostgreSQL] es un sistema de base de datos popular de código abierto, alternativa a MySQL. Pueden haber algunos fallos menores destacables, y no es recomendable para su uso en un entorno de producción. ([http://www.php.net/manual/es/pgsql.installation.php Cómo compilar PHP con compatibilidad PostgreSQL]).",
        "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] es un sistema de base de datos ligero con gran compatibilidad con MediaWiki. ([http://www.php.net/manual/es/pdo.installation.php Cómo compilar PHP con compatibilidad SQLite], usando PDO)",
        "config-header-oracle": "Configuración de Oracle",
        "config-header-mssql": "Configuración de Microsoft SQL Server",
        "config-invalid-db-type": "El tipo de base de datos no es válido",
-       "config-missing-db-name": "Debe introducir un valor para \"{{int:config-db-nombre}}\".",
-       "config-missing-db-host": "Debe introducir un valor para \"{{int:config-db-host}}\".",
-       "config-missing-db-server-oracle": "Debe introducir un valor para \"{{int:config-db-host-oracle}}\".",
+       "config-missing-db-name": "Debes escribir un valor para \"{{int:config-db-nombre}}\".",
+       "config-missing-db-host": "Debes escribir un valor para \"{{int:config-db-host}}\".",
+       "config-missing-db-server-oracle": "Debes escribir un valor para \"{{int:config-db-host-oracle}}\".",
        "config-invalid-db-server-oracle": "El TNS de la base de datos «$1» es inválido.\nDebes usar un \"TNS Name\" o una cadena \"Easy Connect\" ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Nomenclatura de Oracle]).",
-       "config-invalid-db-name": "El nombre de la base de datos \"$1\"  es inválido.\nUsa sólo caracteres ASCII: letras (a-z, A-Z), números (0-9), guiones bajos (_)y guiones (-).",
-       "config-invalid-db-prefix": "El prefijo de la base de datos \"$1\"  es inválido.\nUse sólo carateres ASCII: letras (a-z, A-Z), números (0-9), guiones bajos (_) y guiones (-).",
-       "config-connection-error": "$1.\n\nVerifique el servidor, el nombre de usuario y la contraseña, e intente de nuevo.",
+       "config-invalid-db-name": "El nombre de la base de datos \"$1\" no es válido.\nUsa sólo caracteres ASCII: letras (a-z, A-Z), números (0-9), guiones bajos (_) y guiones (-).",
+       "config-invalid-db-prefix": "El prefijo de la base de datos \"$1\" no es válido.\nUsa sólo caracteres ASCII: letras (a-z, A-Z), números (0-9), guiones bajos (_) y guiones (-).",
+       "config-connection-error": "$1.\n\nVerifica el servidor, el nombre de usuario y la contraseña, e intenta de nuevo.",
        "config-invalid-schema": "El esquema de la base de datos \"$1\"  es inválido.\nUse sólo carateres ASCII: letras (a-z, A-Z), guarismos (0-9) y guiones bajos (_).",
        "config-db-sys-create-oracle": "El instalador sólo admite el empleo de cuentas SYSDBA como método para crear una cuenta nueva.",
        "config-db-sys-user-exists-oracle": "La cuenta de usuario \"$1\" ya existe. ¡SYSDBA sólo puede utilizarse para crear una nueva cuenta!",
-       "config-postgres-old": "Se necesita PostgreSQL $1 o una versión más reciente; tienes la versión $2.",
-       "config-mssql-old": "Microsoft SQL Server  $1  o posterior es necesario. Tienes  $2 .",
-       "config-sqlite-name-help": "Elige el nombre que identificará tu wiki.\nNo uses espacios o guiones.\nEste nombre será usado como nombre del archivo de datos de SQLite.",
+       "config-postgres-old": "Se requiere PostgreSQL $1 o posterior. Tienes la versión $2.",
+       "config-mssql-old": "Se requiere Microsoft SQL Server $1 o posterior. Tienes la versión $2.",
+       "config-sqlite-name-help": "Elige el nombre que identificará a tu wiki.\nNo uses espacios o guiones.\nEste nombre se usará como nombre del archivo de datos de SQLite.",
        "config-sqlite-parent-unwritable-group": "No se puede crear el directorio de datos <code><nowiki>$1</nowiki></code> , porque el directorio padre <code><nowiki>$2</nowiki></code> no es accesible en escritura por el servidor Web.\n\nEl instalador ha determinado el usuario cuyo servidor Web se está ejecutando.\nConceda permisos de escritura en el directorio <code><nowiki>$3</nowiki></code> para continuar.\nEn un sistema Unix/Linux haga:\n\n<pre>cd $2\nmkdir $3\nchgrp $4 $3\nchmod g+w $3</pre>",
        "config-sqlite-parent-unwritable-nogroup": "No se puede crear el directorio de datos <code><nowiki>$1</nowiki></code> , porque el directorio padre <code><nowiki>$2</nowiki></code> no es accesible en escritura por el servidor Web.\n\nEl programa de instalación no pudo determinar el usuario que se ejecuta en el servidor Web\nConceda permisos de escritura en el directorio <code><nowiki>$3</nowiki></code> para continuar.\nEn un sistema Unix/Linux haga:\n\n<pre>cd $2\nmkdir $3\nchmod a+w $3</pre>",
        "config-sqlite-mkdir-error": "Error al crear el directorio de datos \"$1\".\nComprueba la ubicación e inténtalo de nuevo.",
-       "config-sqlite-dir-unwritable": "No se puede escribir en el directorio \"$1\".\nModifica los permisos para que el servidor web pueda escribir en él y vuelve a intentarlo.",
-       "config-sqlite-connection-error": "$1.\n\nVerifique el directório de datos y el nombre de la base de datos mostrada a continuación e inténtalo nuevamente.",
+       "config-sqlite-dir-unwritable": "No se puede escribir en el directorio \"$1\".\nModifica sus permisos para que el servidor web pueda escribir en él, y vuelve a intentarlo.",
+       "config-sqlite-connection-error": "$1.\n\nVerifica el directorio de datos y el nombre de la base de datos mostrada a continuación, e inténtalo nuevamente.",
        "config-sqlite-readonly": "El archivo <code>$1</code> no se puede escribir.",
        "config-sqlite-cant-create-db": "No fue posible crear el archivo de la base de datos <code>$1</code>.",
        "config-sqlite-fts3-downgrade": "El PHP no tiene compatibilidad FTS3. actualizando tablas a una versión anterior",
-       "config-can-upgrade": "Esta base de datos contiene tablas de MediaWiki.\nPara actualizarlas a MediaWiki $1, haz clic en '''Continuar'''.",
-       "config-upgrade-done": "Actualización completa.\n\nUsted puede ahora [ $1  empezar a usar su wiki].\n\nSi desea regenerar su archivo <code>LocalSettings.php</code> de archivo, haga clic en el botón de abajo.\nEsto '''no se recomienda''' a menos que esté teniendo problemas con su wiki.",
-       "config-upgrade-done-no-regenerate": "Actualización completa.\n\nUsted puede ahora [$1  empezar a usar su wiki].",
+       "config-can-upgrade": "Esta base de datos contiene tablas de MediaWiki.\nPara actualizarlas a MediaWiki $1, haz clic en <strong>Continuar</strong>.",
+       "config-upgrade-done": "Actualización completa.\n\nYa puedes [$1 empezar a usar tu wiki].\n\nSi quieres regenerar tu archivo <code>LocalSettings.php</code>, haz clic en el botón de abajo.\nEsto <strong>no se recomienda</strong> a menos que estés teniendo problemas con tu wiki.",
+       "config-upgrade-done-no-regenerate": "Actualización completa.\n\nYa puedes [$1 empezar a usar tu wiki].",
        "config-regenerate": "Regenerar LocalSettings.php →",
        "config-show-table-status": "¡Falló la consulta <code>SHOW TABLE STATUS</code>!",
-       "config-unknown-collation": "'''Advertencia:''' La base de datos está utilizando una intercalación no reconocida.",
+       "config-unknown-collation": "<strong>Advertencia:</strong> la base de datos está utilizando una intercalación no reconocida.",
        "config-db-web-account": "Cuenta de la base de datos para acceso web",
-       "config-db-web-help": "Elige el usuario y contraseña que el servidor Web usará para conectarse al servidor de la base de datos durante el fincionamiento normal del wiki.",
+       "config-db-web-help": "Elige el usuario y contraseña que el servidor web usará para conectarse al servidor de la base de datos durante el funcionamiento normal del wiki.",
        "config-db-web-account-same": "Utilizar la misma cuenta que en la instalación",
        "config-db-web-create": "Crear la cuenta si no existe",
-       "config-db-web-no-create-privs": "La cuenta que has especificado para la instalación no tiene privilegios suficientes para crear una cuenta.\nLa cuenta que especifiques aquí debe existir.",
+       "config-db-web-no-create-privs": "La cuenta que has especificado para la instalación no tiene privilegios suficientes para crear una cuenta.\nLa cuenta que especifiques aquí ya debe existir.",
        "config-mysql-engine": "Motor de almacenamiento:",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
-       "config-mysql-myisam-dep": "'''Atención''': Ha seleccionado MyISAM como motor de almacenamiento de MySQL, el cual no está recomendado para su uso con MediaWiki, porque:\n * apenas soporta accesos simultáneos debido al bloqueo de tablas\n * es más propenso a la corrupción que otros motores\n * el código MediaWiki no siempre controla MyISAM como debiera\n\nSi su instalación de MySQL soporta InnoDB, es muy recomendable que lo elija en su lugar.\nSi la instalación de MySQL no admite InnoDB, quizás es el momento de una actualización.",
-       "config-mysql-only-myisam-dep": "'''Advertencia:''' Solo se ha encontrado el motor de almacenamiento MyISAM para MySQL en esta máquina, y no se recomienda su uso con MediaWiki, porque:\n* apenas soporta concurrencia debido a los bloqueos de tablas\n* es más propenso a sufrir corrupción de datos que otros motores\n* el código MediaWiki no siempre maneja MyISAM como debería\n\nTu instalación de MySQL no soporta InnoDB, quizá vaya siendo hora de actualizarla.",
-       "config-mysql-engine-help": "'''InnoDB''' es casi siempre la mejor opción, dado que soporta bien los accesos simultáneos.\n\n'''MyISAM''' es más rápido en instalaciones de usuario único o de sólo lectura.\nLas bases de datos MyISAM tienden a corromperse más a menudo que las bases de datos InnoDB.",
+       "config-mysql-myisam-dep": "<strong>Advertencia:</strong> has seleccionado MyISAM como motor de almacenamiento de MySQL, el cual no está recomendado para usarse con MediaWiki, porque:\n* apenas soporta concurrencia debido al bloqueo de tablas\n* es más propenso a la corrupción que otros motores\n* el código MediaWiki no siempre controla MyISAM como debiera\n\nSi tu instalación de MySQL soporta InnoDB, es muy recomendable que lo elijas en su lugar.\nSi tu instalación de MySQL no soporta InnoDB, quizás es el momento de una actualización.",
+       "config-mysql-only-myisam-dep": "<strong>Advertencia:</strong> solo se ha encontrado el motor de almacenamiento MyISAM para MySQL en esta máquina, y no se recomienda su uso con MediaWiki, porque:\n* apenas soporta concurrencia debido al bloqueo de tablas\n* es más propenso a la corrupción que otros motores\n* el código MediaWiki no siempre controla MyISAM como debiera\n\nTu instalación de MySQL no soporta InnoDB, quizás es el momento de una actualización.",
+       "config-mysql-engine-help": "<strong>InnoDB</strong> es casi siempre la mejor opción, dado que soporta bien los accesos simultáneos.\n\n<strong>MyISAM</strong> puede ser más rápido en instalaciones con usuario único o de sólo lectura.\nLas bases de datos MyISAM tienden a corromperse más a menudo que las bases de datos InnoDB.",
        "config-mysql-charset": "Conjunto de caracteres de la base de datos:",
        "config-mysql-binary": "Binario",
        "config-mysql-utf8": "UTF-8",
        "config-mssql-windowsauth": "Autentificación de Windows",
        "config-site-name": "Nombre del wiki:",
        "config-site-name-help": "Esto aparecerá en la barra de título del navegador y en varios otros lugares.",
-       "config-site-name-blank": "Ingresar un nombre de sitio.",
-       "config-project-namespace": "Espacio de nombre de proyecto:",
+       "config-site-name-blank": "Escribe un nombre de sitio.",
+       "config-project-namespace": "Espacio de nombres del proyecto:",
        "config-ns-generic": "Proyecto",
        "config-ns-site-name": "Igual al nombre del wiki: $1",
        "config-ns-other": "Otro (especificar)",
        "config-ns-other-default": "MiWiki",
        "config-project-namespace-help": "Siguiendo el ejemplo de  Wikipedia, muchos wikis mantienen sus páginas de políticas separadas de sus páginas de contenido, en un \"'''espacio de nombres del proyecto'''\".\n\nTodos los títulos de página en este espacio de nombres comienzan con un determinado prefijo, que usted puede especificar aquí.\nTradicionalmente, este prefijo se deriva del nombre del wiki, pero no puede contener caracteres de puntuación como \"#\" o \":\".",
-       "config-ns-invalid": "El espacio de nombre especificado \"<nowiki>$1</nowiki>\" no es válido.\nEspecifica un espacio de nombre de proyecto diferente.",
-       "config-ns-conflict": "El espacio de nombres especificado \"<nowiki>$1</nowiki>\" entra en conflicto con un espacio de nombres predeterminado de MediaWiki.\nEspecifique un espacio de nombres de proyecto diferente.",
+       "config-ns-invalid": "El espacio de nombres especificado \"<nowiki>$1</nowiki>\" no es válido.\nEspecifica uno diferente.",
+       "config-ns-conflict": "El espacio de nombres especificado \"<nowiki>$1</nowiki>\" entra en conflicto con uno predeterminado de MediaWiki.\nEspecifica uno diferente.",
        "config-admin-box": "Cuenta de administrador",
        "config-admin-name": "Tu nombre de usuario:",
        "config-admin-password": "Contraseña:",
        "config-admin-password-confirm": "Repite la contraseña:",
        "config-admin-help": "Escribe aquí el nombre de usuario que desees, como por ejemplo \"Pedro Bloggs\".\nEste es el nombre que usarás para entrar al wiki.",
-       "config-admin-name-blank": "Introduce un nombre de usuario de administrador.",
-       "config-admin-name-invalid": "El nombre de usuario especificado \"<nowiki>$1</nowiki>\" no es válido.\nEspecifique un nombre de usuario diferente.",
-       "config-admin-password-blank": "Introduzca una contraseña para la cuenta de administrador.",
+       "config-admin-name-blank": "Escribe un nombre de usuario de administrador.",
+       "config-admin-name-invalid": "El nombre de usuario especificado \"<nowiki>$1</nowiki>\" no es válido.\nEspecifica un nombre de usuario diferente.",
+       "config-admin-password-blank": "Escribe una contraseña para la cuenta de administrador.",
        "config-admin-password-mismatch": "Las dos contraseñas que ingresaste no coinciden.",
        "config-admin-email": "Dirección de correo electrónico:",
-       "config-admin-email-help": "Introduce aquí un correo electrónico que te permita recibir mensajes de otros usuarios del wiki, vuelve a configurar tu contraseña y recibe notificaciones de cambios realizados a tus páginas vigiladas. Puedes dejar este campo vacío.",
+       "config-admin-email-help": "Escribe aquí una dirección de correo electrónico para que te permita recibir mensajes de otros usuarios del wiki, restablecer tu contraseña y recibir notificaciones de cambios a tus páginas vigiladas. Puedes dejar este campo vacío.",
        "config-admin-error-user": "Error interno al crear un administrador con el nombre \"<nowiki>$1</nowiki>\".",
-       "config-admin-error-password": "Error interno al establecer una contraseña para el administrador \" <nowiki>$1</nowiki> \": <pre>$2</pre>",
-       "config-admin-error-bademail": "Ha introducido una dirección de correo electrónico inválida.",
-       "config-subscribe": "Suscribirse para recibir [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce avisos de nuevas versiones].",
+       "config-admin-error-password": "Error interno al establecer una contraseña para el administrador \"<nowiki>$1</nowiki>\": <pre>$2</pre>",
+       "config-admin-error-bademail": "Has escrito una dirección de correo electrónico no válida.",
+       "config-subscribe": "Suscribirse a la [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce lista de correo de anuncios de versiones].",
        "config-subscribe-help": "Esta es una lista de divulgación de bajo volumen para anuncios de lanzamiento de versiones nuevas, incluyendo anuncios de seguridad importantes.\nTe recomendamos suscribirte y actualizar tu instalación MediaWiki cada vez que se lance una nueva versión.",
        "config-subscribe-noemail": "Ha intentado suscribirse a la lista de correo de anuncios de nuevos lanzamientos sin proporcionar una dirección de correo electrónico.\nProporcione una dirección de correo electrónico si desea suscribirse a la lista de correo.",
-       "config-almost-done": "¡Ya casi has terminado!\nAhora puedes saltarte el resto de pasos e instalar el wiki con valores predeterminados.",
+       "config-almost-done": "¡Ya casi has terminado!\nAhora puedes saltarte el resto de los pasos e instalar el wiki ya.",
        "config-optional-continue": "Hazme más preguntas.",
        "config-optional-skip": "Ya estoy aburrido, sólo instala el wiki.",
        "config-profile": "Perfil de derechos de usuario:",
index 334d374..f8de0b5 100644 (file)
@@ -188,6 +188,8 @@ abstract class Job implements IJobSpecification {
                        unset( $info['params']['rootJobTimestamp'] );
                        // Likewise for jobs with different delay times
                        unset( $info['params']['jobReleaseTimestamp'] );
+                       // Queues pack and hash this array, so normalize the order
+                       ksort( $info['params'] );
                }
 
                return $info;
index f4fe913..91fe86c 100644 (file)
@@ -615,6 +615,17 @@ abstract class JobQueue {
                return new ArrayIterator( array() ); // not implemented
        }
 
+       /**
+        * Get an iterator to traverse over all abandoned jobs in this queue
+        *
+        * @return Iterator
+        * @throws JobQueueError
+        * @since 1.25
+        */
+       public function getAllAbandonedJobs() {
+               return new ArrayIterator( array() ); // not implemented
+       }
+
        /**
         * Do not use this function outside of JobQueue/JobQueueGroup
         *
index 1d84dc4..d985d44 100644 (file)
@@ -422,6 +422,17 @@ class JobQueueFederated extends JobQueue {
                return $iterator;
        }
 
+       public function getAllAbandonedJobs() {
+               $iterator = new AppendIterator();
+
+               /** @var JobQueue $queue */
+               foreach ( $this->partitionQueues as $queue ) {
+                       $iterator->append( $queue->getAllAbandonedJobs() );
+               }
+
+               return $iterator;
+       }
+
        public function getCoalesceLocationInternal() {
                return "JobQueueFederated:wiki:{$this->wiki}" .
                        sha1( serialize( array_keys( $this->partitionQueues ) ) );
index d9fe30b..6c823fb 100644 (file)
@@ -516,6 +516,29 @@ LUA;
                }
        }
 
+       /**
+        * @see JobQueue::getAllAbandonedJobs()
+        * @return Iterator
+        */
+       public function getAllAbandonedJobs() {
+               $conn = $this->getConnection();
+               try {
+                       $that = $this;
+
+                       return new MappedIterator( // delayed jobs
+                               $conn->zRange( $this->getQueueKey( 'z-abandoned' ), 0, -1 ),
+                               function ( $uid ) use ( $that, $conn ) {
+                                       return $that->getJobFromUidInternal( $uid, $conn );
+                               },
+                               array( 'accept' => function ( $job ) {
+                                       return is_object( $job );
+                               } )
+                       );
+               } catch ( RedisException $e ) {
+                       $this->throwRedisException( $conn, $e );
+               }
+       }
+
        public function getCoalesceLocationInternal() {
                return "RedisServer:" . $this->server;
        }
index 0618f7e..8fdfa47 100644 (file)
@@ -487,7 +487,7 @@ class SvgHandler extends ImageHandler {
        function makeParamString( $params ) {
                $lang = '';
                if ( isset( $params['lang'] ) && $params['lang'] !== 'en' ) {
-                       $params['lang'] = mb_strtolower( $params['lang'] );
+                       $params['lang'] = strtolower( $params['lang'] );
                        $lang = "lang{$params['lang']}-";
                }
                if ( !isset( $params['width'] ) ) {
index 5527ace..0452c41 100644 (file)
@@ -602,13 +602,23 @@ class WikiPage implements Page, IDBAccessObject {
                        return; // page doesn't exist or is missing page_latest info
                }
 
-               // Bug 37225: if session S1 loads the page row FOR UPDATE, the result always includes the
-               // latest changes committed. This is true even within REPEATABLE-READ transactions, where
-               // S1 normally only sees changes committed before the first S1 SELECT. Thus we need S1 to
-               // also gets the revision row FOR UPDATE; otherwise, it may not find it since a page row
-               // UPDATE and revision row INSERT by S2 may have happened after the first S1 SELECT.
-               // http://dev.mysql.com/doc/refman/5.0/en/set-transaction.html#isolevel_repeatable-read.
-               $flags = ( $this->mDataLoadedFrom == self::READ_LOCKING ) ? Revision::READ_LOCKING : 0;
+               if ( $this->mDataLoadedFrom == self::READ_LOCKING ) {
+                       // Bug 37225: if session S1 loads the page row FOR UPDATE, the result always
+                       // includes the latest changes committed. This is true even within REPEATABLE-READ
+                       // transactions, where S1 normally only sees changes committed before the first S1
+                       // SELECT. Thus we need S1 to also gets the revision row FOR UPDATE; otherwise, it
+                       // may not find it since a page row UPDATE and revision row INSERT by S2 may have
+                       // happened after the first S1 SELECT.
+                       // http://dev.mysql.com/doc/refman/5.0/en/set-transaction.html#isolevel_repeatable-read.
+                       $flags = Revision::READ_LOCKING;
+               } elseif ( $this->mDataLoadedFrom == self::READ_LATEST ) {
+                       // Bug T93976: if page_latest was loaded from the master, fetch the
+                       // revision from there as well, as it may not exist yet on a slave DB.
+                       // Also, this keeps the queries in the same REPEATABLE-READ snapshot.
+                       $flags = Revision::READ_LATEST;
+               } else {
+                       $flags = 0;
+               }
                $revision = Revision::newFromPageId( $this->getId(), $latest, $flags );
                if ( $revision ) { // sanity
                        $this->setLastEdit( $revision );
@@ -1982,6 +1992,7 @@ class WikiPage implements Page, IDBAccessObject {
                // Promote user to any groups they meet the criteria for
                $dbw->onTransactionIdle( function () use ( $user ) {
                        $user->addAutopromoteOnceGroups( 'onEdit' );
+                       $user->addAutopromoteOnceGroups( 'onView' ); // b/c
                } );
 
                return $status;
index 69470fd..1c9824a 100644 (file)
@@ -134,7 +134,7 @@ abstract class Profiler {
        /**
         * @param ScopedCallback $section
         */
-       public function scopedProfileOut( ScopedCallback &$section ) {
+       public function scopedProfileOut( ScopedCallback &$section = null ) {
                $section = null;
        }
 
index 5580f94..1d04536 100644 (file)
@@ -28,7 +28,7 @@
  */
 class ProfilerStub extends Profiler {
        public function scopedProfileIn( $section ) {
-               return new ScopedCallback( null ); // no-op
+               return null; // no-op
        }
 
        public function getFunctionStats() {
index 803afbf..5eab3cb 100644 (file)
@@ -1326,7 +1326,6 @@ MESSAGE;
         * Returns JS code which runs given JS code if the client-side framework is
         * present.
         *
-        * @deprecated since 1.25; use makeInlineScript instead
         * @param string $script JavaScript code
         * @return string
         */
@@ -1334,20 +1333,6 @@ MESSAGE;
                return "if(window.mw){\n" . trim( $script ) . "\n}";
        }
 
-       /**
-        * Construct an inline script tag with given JS code.
-        *
-        * The code will be wrapped in a closure, and it will be executed by ResourceLoader
-        * only if the client has adequate support for MediaWiki JavaScript code.
-        *
-        * @param string $script JavaScript code
-        * @return string HTML
-        */
-       public static function makeInlineScript( $script ) {
-               $js = 'var _mwq = _mwq || []; _mwq.push( function ( mw ) { ' . $script . ' } );';
-               return Html::inlineScript( $js );
-       }
-
        /**
         * Returns JS code which will set the MediaWiki configuration array to
         * the given value.
index fbca08e..a46c931 100644 (file)
@@ -295,6 +295,18 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                }
                if ( $hasTemplates ) {
                        $this->dependencies[] = 'mediawiki.template';
+                       // Ensure relevant template compiler module gets loaded
+                       foreach ( $this->templates as $alias => $templatePath ) {
+                               if ( is_int( $alias ) ) {
+                                       $alias = $templatePath;
+                               }
+                               $suffix = explode( '.', $alias );
+                               $suffix = end( $suffix );
+                               $compilerModule = 'mediawiki.template.' . $suffix;
+                               if ( $suffix !== 'html' && !in_array( $compilerModule, $this->dependencies ) ) {
+                                       $this->dependencies[] = $compilerModule;
+                               }
+                       }
                }
        }
 
@@ -587,9 +599,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
         * @return array
         */
        public function getDefinitionSummary( ResourceLoaderContext $context ) {
-               $summary = array(
-                       'class' => get_class( $this ),
-               );
+               $summary = parent::getDefinitionSummary( $context );
                foreach ( array(
                        'scripts',
                        'debugScripts',
index 8fbe497..5be4419 100644 (file)
@@ -264,18 +264,23 @@ class ResourceLoaderImageModule extends ResourceLoaderModule {
        }
 
        /**
+        * SVG support using a transparent gradient to guarantee cross-browser
+        * compatibility (browsers able to understand gradient syntax support also SVG).
+        * http://pauginer.tumblr.com/post/36614680636/invisible-gradient-technique
+        *
+        * Keep synchronized with the .background-image-svg LESS mixin in
+        * /resources/src/mediawiki.less/mediawiki.mixins.less.
+        *
         * @param string $primary Primary URI
         * @param string $fallback Fallback URI
         * @return string[] CSS declarations to use given URIs as background-image
         */
        protected function getCssDeclarations( $primary, $fallback ) {
-               // SVG support using a transparent gradient to guarantee cross-browser
-               // compatibility (browsers able to understand gradient syntax support also SVG).
-               // http://pauginer.tumblr.com/post/36614680636/invisible-gradient-technique
                return array(
                        "background-image: url($fallback);",
                        "background-image: -webkit-linear-gradient(transparent, transparent), url($primary);",
                        "background-image: linear-gradient(transparent, transparent), url($primary);",
+                       "background-image: -o-linear-gradient(transparent, transparent), url($fallback);",
                );
        }
 
index 6ee098c..48b3576 100644 (file)
@@ -357,20 +357,11 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                                ResourceLoader::inDebugMode()
                        );
 
-                       // Process the deferred inline script queue, and ensure that any
-                       // functions enqueued after this point are executed immediately.
-                       $mwqJs = (
-                               'window._mwq = window._mwq || [];' .
-                               'while ( _mwq.length ) _mwq.shift()( mw );' .
-                               '_mwq.push = function ( f ) { f( mw ); };'
-                       );
-
                        $out .= "var startUp = function () {\n" .
                                "\tmw.config = new " .
                                $mwMapJsCall . "\n" .
                                "\t$registrations\n" .
-                               "\t" . $mwConfigSetJsCall . "\n" .
-                               "\t" . $mwqJs . "\n" .
+                               "\t" . $mwConfigSetJsCall .
                                "};\n";
 
                        // Conditional script injection
index d649c2e..48bce67 100644 (file)
@@ -360,8 +360,8 @@ abstract class Skin extends ContextSource {
         */
        static function makeVariablesScript( $data ) {
                if ( $data ) {
-                       return ResourceLoader::makeInlineScript(
-                               ResourceLoader::makeConfigSetScript( $data )
+                       return Html::inlineScript(
+                               ResourceLoader::makeLoaderConditionalScript( ResourceLoader::makeConfigSetScript( $data ) )
                        );
                } else {
                        return '';
index e9639e1..ecb166a 100644 (file)
@@ -168,13 +168,15 @@ HTML;
                // The testrunner configures QUnit and essentially depends on it. However, test suites
                // are reusable in environments that preload QUnit (or a compatibility interface to
                // another framework). Therefore we have to load it ourselves.
-               $out->addHtml( ResourceLoader::makeInlineScript(
-                       Xml::encodeJsCall( 'mw.loader.using', array(
-                               array( 'jquery.qunit', 'jquery.qunit.completenessTest' ),
-                               new XmlJsCode(
-                                       'function () {' . Xml::encodeJsCall( 'mw.loader.load', array( $modules ) ) . '}'
-                               )
-                       ) )
+               $out->addHtml( Html::inlineScript(
+                       ResourceLoader::makeLoaderConditionalScript(
+                               Xml::encodeJsCall( 'mw.loader.using', array(
+                                       array( 'jquery.qunit', 'jquery.qunit.completenessTest' ),
+                                       new XmlJsCode(
+                                               'function () {' . Xml::encodeJsCall( 'mw.loader.load', array( $modules ) ) . '}'
+                                       )
+                               ) )
+                       )
                ) );
        }
 
index 87e7063..12e103e 100644 (file)
@@ -48,10 +48,6 @@ class SpecialUploadStash extends UnlistedSpecialPage {
 
        public function __construct() {
                parent::__construct( 'UploadStash', 'upload' );
-               try {
-                       $this->stash = RepoGroup::singleton()->getLocalRepo()->getUploadStash( $this->getUser() );
-               } catch ( UploadStashNotAvailableException $e ) {
-               }
        }
 
        /**
@@ -62,6 +58,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
         * @return bool Success
         */
        public function execute( $subPage ) {
+               $this->stash = RepoGroup::singleton()->getLocalRepo()->getUploadStash( $this->getUser() );
                $this->checkPermissions();
 
                if ( $subPage === null || $subPage === '' ) {
index dc9da63..f09b6bb 100644 (file)
@@ -261,7 +261,7 @@ class UsercreateTemplate extends BaseTemplate {
                                <?php
                                echo Html::submitButton(
                                        $this->getMsg( $this->data['loggedin'] ? 'createacct-another-submit' : 'createacct-submit' ),
-                                       $attrs = array(
+                                       array(
                                                'id' => 'wpCreateaccount',
                                                'name' => 'wpCreateaccount',
                                                'tabindex' => $tabIndex++
index 52ce4d3..c07665a 100644 (file)
@@ -727,9 +727,6 @@ class UploadStashFile extends UnregisteredLocalFile {
 class UploadStashException extends MWException {
 }
 
-class UploadStashNotAvailableException extends UploadStashException {
-}
-
 class UploadStashFileNotFoundException extends UploadStashException {
 }
 
index 67ab986..53c6913 100644 (file)
@@ -2,7 +2,7 @@
        "--title": "MediaWiki core - Documentation",
        "--categories": "maintenance/jsduck/categories.json",
        "--eg-iframe": "maintenance/jsduck/eg-iframe.html",
-       "--tags": "maintenance/jsduck/CustomTags.rb",
+       "--tags": "maintenance/jsduck/custom_tags.rb",
        "--warnings": ["-nodoc(class,public)"],
        "--builtin-classes": true,
        "--processes": "0",
index 94f1841..bd4fc67 100644 (file)
@@ -19,7 +19,8 @@
                        "Spacebirdy",
                        "Xethron",
                        "පසිඳු කාවින්ද",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Onderstreep skakels.",
        "import-rootpage-nosubpage": "Die naamruimte \"$1\" van die basisblad laat nie subblaaie toe nie.",
        "importlogpage": "Invoer logboek",
        "importlogpagetext": "Administratiewe invoere van bladsye met geskiedenis van ander wiki's.",
-       "import-logentry-upload": "[[$1]] ingevoer deur 'n lêer op te laai",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|weergawe|weergawes}}",
-       "import-logentry-interwiki": "importeer $1 via transwiki",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|weergawe|weergawes}} vanaf $2",
        "javascripttest": "JavaScript toetsing",
        "javascripttest-pagetext-noframework": "Hierdie bladsy is gereserveer vir die uitvoer van JavaScript-toetse.",
        "feedback-error3": "Fout: Geen reaksie van API",
        "feedback-message": "Boodskap:",
        "feedback-subject": "Onderwerp:",
-       "feedback-submit": "Stuur terugvoer",
+       "feedback-submit": "Dien in",
        "feedback-thanks": "Dankie! U terugvoer is op die bladsy \"[$2 $1]\" geplaas.",
        "searchsuggest-search": "Soek",
        "searchsuggest-containing": "bevat...",
index de8316a..b73d7cf 100644 (file)
@@ -10,7 +10,8 @@
                        "Urhixidur",
                        "Willtron",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Subrayar os vinclos:",
        "import-error-invalid": "A pachina \"$1\" no s'ha importau porque o suyo nombre ye invalido.",
        "importlogpage": "Rechistro d'importacions",
        "importlogpagetext": "Importacions almenistrativas de pachinas con historial dende atros wikis.",
-       "import-logentry-upload": "importata [[$1]] cargando un fichero",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|versión|versions}}",
-       "import-logentry-interwiki": "Importata $1 entre wikis",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versión|versions}} dende $2",
        "javascripttest": "Prebatinas de JavaScript",
        "javascripttest-pagetext-noframework": "Ista pachina ye reservada ta fer as prebas de JavaScrip.",
        "feedback-error3": "Error: No i hai respuesta de l'API",
        "feedback-message": "Mensache:",
        "feedback-subject": "Afer:",
-       "feedback-submit": "Ninviar comentarios",
+       "feedback-submit": "Ninviar",
        "feedback-thanks": "Gracias! O suyo comentario s'ha publicau en a pachina [$2  $1].",
        "searchsuggest-search": "Mirar",
        "searchsuggest-containing": "que contién...",
index 1d03c74..6afb8bc 100644 (file)
@@ -15,7 +15,9 @@
                        "Simbu123",
                        "Urhixidur",
                        "아라",
-                       "Aftabuzzaman"
+                       "Aftabuzzaman",
+                       "Macofe",
+                       "IKHazarika"
                ]
        },
        "tog-underline": "সংযোগসমূহ অধোৰেখিত কৰক:",
        "showhideselectedversions": "নিৰ্বাচিত সংশোধনসমূহ দেখুৱাওক/আঁৰ কৰক",
        "editundo": "পূৰ্ববত কৰক",
        "diff-empty": "(কোনো পাৰ্থক্য নাই)",
-       "diff-multi-sameuser": "একেজন সদস্যই কৰা ({{PLURAL:$1|এটা মধ্যৱৰ্তী সংশোধন|$1টা মধ্যৱৰ্তী সংশোধন}} দেখুওৱা হোৱা নাই",
+       "diff-multi-sameuser": "একেজন সদস্যই কৰা ({{PLURAL:$1|এটা মধ্যৱৰ্তী সংশোধন|$1 মধ্যৱৰ্তী সংশোধন}} দেখুওৱা হোৱা নাই)",
        "diff-multi-otherusers": "{{PLURAL:$2|আন এজন সদস্যই|$2জন সদস্যই}} কৰা ({{PLURAL:$1|এটা মধ্যৱৰ্তী সংশোধন|$1টা মধ্যৱৰ্তী সংশোধন}} দেখুওৱা হোৱা নাই।",
        "diff-multi-manyusers": "({{PLURAL:$2|এজনতকৈ|$2-জনতকৈ}} অধিক সদস্যৰ দ্বাৰা {{PLURAL:$1|এটা মধ্যৱৰ্তী সংশোধন|$1-টা মধ্যৱৰ্তী সংশোধন}} দেখুওৱা হোৱা নাই)",
        "difference-missing-revision": "{{PLURAL:$2|এটা সংস্কৰণ|$2 সংস্কৰণসমূহৰ}} সংশোধনৰ পাৰ্থক্য  ($1) {{PLURAL:$2| পোৱা নগ’ল}}।\n\n\nসাধাৰণতে বিলোপ কৰা এখন পৃষ্ঠাৰ পুৰণা ইতিহাস লিংক অনুসৰণ কৰিলে এনে হয়।\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} বিলোপন অভিলেখ] চালে অধিক তথ্য পাব।",
        "searchrelated": "সম্পৰ্কিত",
        "searchall": "সকলো",
        "showingresults": "তলত #'''$2'''ৰ পৰা {{PLURAL:$1|'''1''' ফলাফল|'''$1''' ফলাফল}} দেখুওৱা হৈছে।",
+       "search-showingresults": "{{PLURAL:$4|<strong>$3</strong>-ৰ <strong>$1</strong>টো ফলাফল|<strong>$3</strong>-ৰ <strong>$1 - $2</strong>টো ফলাফল}}",
        "search-nonefound": "এই অনুসন্ধানৰ কোনো ফলাফল নাই ।",
        "powersearch-legend": "শক্তিশালী সন্ধান",
        "powersearch-ns": "নামস্থানবোৰত সন্ধান:",
        "logentry-rights-rights": "$1ৰ গোট সদস্যপদ $3ৰ পৰা $4লৈ $5 লৈ সলনি কৰা হ'ল",
        "logentry-rights-rights-legacy": "$1-ৰ গোট সদস্যপদ $3-লৈ সলনি কৰা হ'ল",
        "logentry-rights-autopromote": "$1ক  $4ৰ পৰা $5লৈ স্বয়ংক্ৰিয়ভাৱে পদোন্নীত কৰা হ’ল",
+       "logentry-upload-upload": "$1 $3 {{GENDER:$2|আপল'ড কৰা হ'ল}}",
        "rightsnone": "(নাই)",
        "revdelete-summary": "সম্পাদনাৰ সাৰমৰ্ম",
        "feedback-adding": "পৃষ্ঠাত প্ৰতিক্ৰিয়া যোগ কৰা হৈছে...",
        "feedback-error3": "ত্ৰুটি: এ.পি.আই.ৰ কোনো সঁহাৰি নাই",
        "feedback-message": "বাৰ্তা:",
        "feedback-subject": "বিষয়:",
-       "feedback-submit": "পà§\8dৰতিà¦\95à§\8dৰিয়া à¦\9cমা কৰক",
+       "feedback-submit": "দাà¦\96িল কৰক",
        "feedback-thanks": "ধন্যবাদ ! আপোনাৰ প্ৰতিক্ৰিয়া \"[$2 $1]\" পৃষ্ঠাত প্ৰকাশ কৰা হৈছে।",
        "searchsuggest-search": "সন্ধান কৰক",
        "searchsuggest-containing": "যি আছে...",
index 4f123e3..8258954 100644 (file)
@@ -13,7 +13,8 @@
                        "Microchip08",
                        "아라",
                        "Koroğlu",
-                       "Baloch Afghanistan"
+                       "Baloch Afghanistan",
+                       "Macofe"
                ]
        },
        "tog-underline": "باغلانتیلارین آلتینی خطله:",
        "import-rootpage-nosubpage": "آد فضا سی  \"$1\" آنا باسئ ٔآلت صحیفه اوچون اجازه وئرمیر.",
        "importlogpage": "چیخاریلما گونده‌لیگی",
        "importlogpagetext": "باشقا ویکیلردن، دَییشیکلیک گئچمیشلریله بیرلیک‌ده گتیریلمیش صحیفه‌لر.",
-       "import-logentry-upload": "[[$1]]-ی فایل یوکله‌مکله گتیردی",
        "import-logentry-upload-detail": "{{PLURAL:$1|بیر|$1}} نوسخه",
-       "import-logentry-interwiki": "$1-ی ویکی‌آراسی ائتدی",
        "import-logentry-interwiki-detail": "$2-دن {{PLURAL:$1|بیر|$1}} نوسخه",
        "javascripttest": "جاوااسکریپت تِستی",
        "javascripttest-pagetext-noframework": "بو صحیفه، جاوااسکریپت تِستلرینی ایشلدمگه ساخلانیلیب‌دیر.",
        "feedback-error3": "خطا: API-دان جاواب گلمه‌دی",
        "feedback-message": "مئساژ:",
        "feedback-subject": "قونو:",
-       "feedback-submit": "گئرÛ\8c-بÛ\8cÙ\84دÛ\8cرÛ\8cÙ\85Û\8c Û\8cÙ\88Ù\84â\80\8cÙ\84ا",
+       "feedback-submit": "گؤÙ\86در",
        "feedback-thanks": "تشکورلر! سیزین گئری-بیلدیریمینیز «[$2 $1]» صحیفه‌سینه گؤندریلدی.",
        "searchsuggest-search": "آختار",
        "searchsuggest-containing": "ساخلانیلیر...",
index 7a27bc6..e5a69d9 100644 (file)
@@ -8,7 +8,8 @@
                        "Shirayuki",
                        "Steven*fung",
                        "Urhixidur",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Linyahan an kilyawan:",
        "import-rootpage-nosubpage": "Espasyong-ngaran \"$1\" kan ugat na pahina dae minatugot nin pan-irarom na mga pahina.",
        "importlogpage": "Usip nin pagpalaog",
        "importlogpagetext": "Administratibong mga importadong pahina na igwang historiya nin pagliliwat gikan sa ibang wikis.",
-       "import-logentry-upload": "pigpadara an [[$1]] kan pagkarga nin ''file''",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|rebisyon|mga rebisyon}}",
-       "import-logentry-interwiki": "na-transwiki an $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|rebisyon|mga rebisyon}} gikan sa $2",
        "javascripttest": "Testing sa JavaScript",
        "javascripttest-pagetext-noframework": "An pahinang ini reserbado para sa pagpapadalagan kan mga pagtesting sa JavaScript.",
        "feedback-error3": "Kasalaan: Mayong kasimbagan gikan sa API",
        "feedback-message": "An Mensahe:",
        "feedback-subject": "Subheto",
-       "feedback-submit": "Isumite an balik-simbag",
+       "feedback-submit": "Isumite",
        "feedback-thanks": "Salamat! An saimong balik-simbag pinagposte sa pahina \"[$2 $1]\".",
        "searchsuggest-search": "Hanapa baya",
        "searchsuggest-containing": "may laog na...",
index 5713043..dfe1c0b 100644 (file)
        "wrongpasswordempty": "Быў уведзены пусты пароль. Калі ласка, паспрабуйце яшчэ раз.",
        "passwordtooshort": "Паролі павінны ўтрымліваць ня менш за $1 {{PLURAL:$1|сымбаль|сымбалі|сымбаляў}}.",
        "password-name-match": "Ваш пароль павінен адрозьнівацца ад Вашага імя ўдзельніка.",
-       "password-login-forbidden": "Ð\92Ñ\8bкаÑ\80Ñ\8bÑ\81Ñ\82анÑ\8cне Ð³Ñ\8dÑ\82ага Ñ\96мÑ\8f Ñ\9eдзелÑ\8cнÑ\96ка Ñ\96 Ð¿Ð°Ñ\80олÑ\8f было забароненае.",
+       "password-login-forbidden": "Ð\92Ñ\8bкаÑ\80Ñ\8bÑ\81Ñ\82анÑ\8cне Ð³Ñ\8dÑ\82ага Ñ\96мÑ\8f Ñ\9eдзелÑ\8cнÑ\96ка Ñ\96 Ð¿Ð°Ñ\80олÑ\8e было забароненае.",
        "mailmypassword": "Скінуць пароль",
        "passwordremindertitle": "Новы часовы пароль для {{GRAMMAR:родны|{{SITENAME}}}}",
        "passwordremindertext": "Нехта (магчыма Вы, з IP-адрасу $1) запытаў нас даслаць новы пароль для {{GRAMMAR:родны|{{SITENAME}}}} ($4). Для ўдзельніка «$2» быў створаны часовы пароль і ён цяпер «$3». Калі гэта была Вашая ініцыятыва, Вам трэба ўвайсьці ў сыстэму і адразу зьмяніць пароль. Тэрмін дзеяньня Вашага часовага паролю — $5 {{PLURAL:$5|дзень|дні|дзён}}.\n\nКалі гэты запыт адправіў нехта іншы, альбо Вы ўзгадалі свой пароль і ўжо не жадаеце яго зьмяніць, Вы можаце праігнараваць гэты ліст і працягваць карыстацца старым паролем.",
        "missingcommentheader": "'''Напамін:''' Вы не пазначылі загаловак камэнтара.\nКалі Вы націсьніце кнопку «{{int:savearticle}}» яшчэ раз, Ваш камэнтар захаваецца бяз тэмы.",
        "summary-preview": "Папярэдні прагляд апісаньня:",
        "subject-preview": "Папярэдні прагляд загалоўку:",
+       "previewerrortext": "Адбылася памылка пры спробе папярэдняга прагляду вашых зьменаў.",
        "blockedtitle": "Удзельнік заблякаваны",
        "blockedtext": "'''Ваш рахунак ўдзельніка ці IP-адрас быў заблякаваны.'''\n\nБлякаваньне выканаў $1.\nПрычына гэтага: ''$2''.\n\n* Пачатак блякаваньня: $8\n* Сканчэньне блякаваньня: $6\n* Быў заблякаваны: $7\n\nВы можаце скантактавацца з $1 ці адным зь іншых [[{{MediaWiki:Grouppage-sysop}}|адміністратараў]], каб абмеркаваць блякаваньне. Заўважце, што Вы ня зможаце ўжыць магчымасьць «даслаць ліст па электроннай пошце», пакуль не пазначыце сапраўдны адрас электроннай пошты ў Вашых [[Special:Preferences|наладах]], і калі гэта Вам не было забаронена.\nВаш IP-адрас — $3, ідэнтыфікатар блякаваньня — #$5.\nКалі ласка, улучайце ўсю вышэйпададзеную інфармацыю ва ўсе запыты, што Вы будзеце рабіць.",
        "autoblockedtext": "Ваш IP-адрас быў аўтаматычна заблякаваны, таму што ён ужываўся іншым удзельнікам, які быў заблякаваны $1.\nПрычына гэтага:\n\n:''$2''\n\n* Блякаваньне пачалося: $8\n* Блякаваньне скончыцца: $6\n* Быў заблякаваны: $7\n\nВы можаце скантактавацца з $1 ці з адным зь іншых [[{{MediaWiki:Grouppage-sysop}}|адміністратараў]], каб абмеркаваць блякаваньне.\n\nЗаўважце, што Вы ня зможаце ужываць магчымасьць «даслаць ліст праз электронную пошту», пакуль ня будзе пазначаны дзейны адрас электроннай пошты ў Вашых [[Special:Preferences|наладах удзельніка]], і калі гэта Вам не было забаронена.\n\nВаш цяперашні IP-адрас — $3, ідэнтыфікатар блякаваньня — #$5.\nКалі ласка, улучайце ўсю вышэйпададзеную інфармацыю ва ўсе запыты, што Вы будзеце рабіць.",
        "unusedimages": "Файлы, якія не выкарыстоўваюцца",
        "wantedcategories": "Запатрабаваныя катэгорыі",
        "wantedpages": "Запатрабаваныя старонкі",
+       "wantedpages-summary": "Сьпіс няісных старонак з найбольшай колькасьцю спасылак на іх, за выключэньнем старонак, на якія спасылаюцца толькі старонкі-перанакіраваньні. Дзеля сьпісу няісных старонак, на якія спасылаюцца перанакіраваньні, глядзіце [[{{#special:BrokenRedirects}}]].",
        "wantedpages-badtitle": "Няслушная назва сярод вынікаў: $1",
        "wantedfiles": "Запатрабаваныя файлы",
        "wantedfiletext-cat": "Наступныя файлы выкарыстоўваюцца, але іх няма. Файлы са зьнешніх сховішчаў могуць знаходзіцца ў сьпісе без уліку іх існаваньня. Любыя такія няслушныя ўваходжаньні будуць <del>выкрасьленыя</del>. Дадаткова, старонкі, якія ўбудоўваюць неіснуючыя файлы прыведзеныя на [[:$1]].",
index 31853ac..5997c31 100644 (file)
        "disclaimers": "Адмова ад адказнасці",
        "disclaimerpage": "Project:Агульная адмова ад адказнасці",
        "edithelp": "Даведка рэдактарскага акна",
+       "helppage-top-gethelp": "Даведка",
        "mainpage": "Галоўная старонка",
        "mainpage-description": "Першая старонка",
        "policy-url": "Project:Арганізацыйная палітыка",
        "import-rootpage-nosubpage": "У прастора назваў \"$1\" каранёвай старонкі падстаронкі не дазволены.",
        "importlogpage": "Журнал імпартаванняў",
        "importlogpagetext": "Адміністрацыйныя імпартаванні старонак з іншых вікі, разам з гісторыямі правак.",
-       "import-logentry-upload": "імпартавана [[$1]] праз файлавы ўклад",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|версія|версіі|версій}} імпартавана",
-       "import-logentry-interwiki": "транс-вікавана $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|версія|версіі|версій}} імпартавана з $2",
        "javascripttest": "JavaScript-тэсты",
        "javascripttest-pagetext-noframework": "Гэта старонка зарэзервавана для запуску тэстаў JavaScript",
index 0590ce1..0013ab7 100644 (file)
@@ -26,7 +26,8 @@
                        "Bjankuloski06",
                        "Vodnokon4e",
                        "ShadeOfGrey",
-                       "PetaRZ"
+                       "PetaRZ",
+                       "Macofe"
                ]
        },
        "tog-underline": "Подчертаване на препратките:",
        "feedback-error3": "Грешка: Няма отговор от API",
        "feedback-message": "Съобщение:",
        "feedback-subject": "Тема:",
-       "feedback-submit": "Ð\9eÑ\81Ñ\82авÑ\8fне Ð½Ð° ÐºÐ¾Ð¼ÐµÐ½Ñ\82аÑ\80",
+       "feedback-submit": "Ð\98зпÑ\80аÑ\89ане",
        "feedback-thanks": "Благодарности! Вашата обратна информация е публикувана на страницата „[$2  $1]“.",
        "searchsuggest-search": "Търсене",
        "api-error-badaccess-groups": "Нямате необходимите права, за да качвате файлове в това уики.",
index 1184e72..22cef7e 100644 (file)
        "fileuploadsummary": "सारांश:",
        "filesource": "स्रोत:",
        "unknown-error": "अज्ञात त्रुटि उत्पन्न हो गईल बा।",
+       "license-header": "लाईसेंसिंग",
        "file-anchor-link": "फ़ाइल",
        "filehist": "पन्ना के इतिहास",
        "filehist-deleteall": "सब मिटाईं",
        "whatlinkshere-next": "{{PLURAL:$1|अगला|अगला $1}}",
        "whatlinkshere-links": "← लिंक",
        "whatlinkshere-hideredirs": "$1 पुन: निर्देशित",
+       "whatlinkshere-hidetrans": "$1 ट्रान्स्क्ल्युजन्स",
        "whatlinkshere-hidelinks": "$1 लिंक",
        "whatlinkshere-hideimages": "$1 फ़ाइल लिंक",
        "whatlinkshere-filters": "फिल्टर",
        "tooltip-t-whatlinkshere": "अहिजा लिंक होखे वाला सब विकि पन्ना के सूची",
        "tooltip-t-recentchangeslinked": "ई पन्ना से जुड़ल पन्नवन पर तुरंत भईल परिवर्तन",
        "tooltip-feed-atom": "ई पन्ना खातिर अणु फ़ीड",
+       "tooltip-t-contributions": "इ सदस्य के योगदान के सूची",
        "tooltip-t-upload": "फाईल लादीं (अपलोड )",
        "tooltip-t-specialpages": "ख़ाश पन्नवन के सूची",
        "tooltip-t-print": "ई पन्ना के छापे लायक संस्करण।",
        "tooltip-t-permalink": "ई पन्ना के संसोधन खातिर स्थायी लिंक।",
        "tooltip-ca-nstab-main": "सामग्री पन्ना देखीं",
+       "tooltip-ca-nstab-user": "प्रयोगकर्ता पन्ना देखीं",
        "tooltip-ca-nstab-special": "ई एगो ख़ाश पन्ना ह, रउआ ई पन्ना के सम्पादन नईखीं कर सकत",
        "tooltip-ca-nstab-image": "संचिका के पन्ना देखीं",
        "tooltip-ca-nstab-template": "टेम्प्लेट देखीं",
        "exif-yresolution": "लम्बवत समाधान",
        "exif-stripoffsets": "चित्र डेटा के स्थिती",
        "exif-jpeginterchangeformatlength": "JPEG डेटा के बाइट",
+       "exif-make": "कैमेरा उत्पादक",
+       "exif-model": "कैमेरा मॉडेल",
+       "exif-software": "प्रयोग करल गईल सॉफ्टवेयर",
+       "exif-datetimeoriginal": "डाटा बनावे के दिनांक अउर समय",
+       "exif-orientation-1": "सामान्य",
        "namespacesall": "सब",
        "monthsall": "सब",
        "confirmemail": "इ-मेल पता कन्फर्म करीं",
        "version-no-ext-name": "[अज्ञात नाम]",
        "specialpages": "ख़ाश पन्ना",
+       "logentry-delete-delete": "$1 द्वारा पन्ना $3 {{GENDER:$2|हटा}} दिहल गईल",
        "revdelete-restricted": "प्रबंधक पर प्रतिबंध लागू",
        "revdelete-unrestricted": "प्रबंधक पर से प्रतिबंध समाप्त",
        "revdelete-summary": "सारांश संपादन",
index d49c547..3a6b067 100644 (file)
@@ -6,7 +6,8 @@
                        "J Subhi",
                        "Kaganer",
                        "Riemogerz",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Garisi di bawah tautan",
        "import-error-create": "Tungkaran \"$1\" kada diumpur karana Pian kada bulih maulah ngini.",
        "importlogpage": "Log impur",
        "importlogpagetext": "Impur administratip matan tutungkaran awan babakan halam matan wiwiki lain.",
-       "import-logentry-upload": "[[$1]] diimpur lung hunggah barakas",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|ralatan|raralatan}}",
-       "import-logentry-interwiki": "ditranswiki $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|ralatan|raralatan}} matan $2",
        "javascripttest": "Mantis JavaScript",
        "javascripttest-pagetext-skins": "Pilih kulit nang cagar Pian cubai:",
        "feedback-error3": "Kasalahan: Kadada tanggapan matan API",
        "feedback-message": "Pasan:",
        "feedback-subject": "Parihal:",
-       "feedback-submit": "Kirimi Kitihanbalik",
+       "feedback-submit": "Kirim",
        "feedback-thanks": "Tarimakasih! jitihanbalik Pian sudah dipusakan ka si tungkaran \"[$2 $1]\".",
        "searchsuggest-search": "Gagai",
        "searchsuggest-containing": "isian ...",
index fb7ea65..596f521 100644 (file)
@@ -45,7 +45,7 @@
        "tog-minordefault": "শুরুতেই সব সম্পাদনাকে অনুল্লেখ্য বলে চিহ্নিত করা হোক",
        "tog-previewontop": "সম্পাদনা বাক্সের আগে প্রাকদর্শন দেখানো হোক",
        "tog-previewonfirst": "প্রথম সম্পাদনার ক্ষেত্রে প্রাকদর্শন দেখানো হোক",
-       "tog-enotifwatchlistpages": "à¦\86মার à¦¨à¦\9cর à¦¤à¦¾à¦²à¦¿à¦\95ায় à¦\86à¦\9bà§\87 à¦\8fমন à¦ªà¦¾à¦¤à¦¾ à¦\85থবা à¦«à¦¾à¦\87লà§\87 à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦¹à¦²à§\87 à¦¤à¦¾ à¦\9cানিয়à§\87 à¦\86মাà¦\95à§\87 à¦\87-মà§\87à¦\87ল à¦\95রà§\8b",
+       "tog-enotifwatchlistpages": "আমার নজর তালিকায় আছে এমন পাতা অথবা ফাইলে পরিবর্তন হলে আমাকে ই-মেইল করো",
        "tog-enotifusertalkpages": "আমার ব্যবহারকারী আলোচনা পাতার পরিবর্তন হলে আমাকে ই-মেইল করা হোক",
        "tog-enotifminoredits": "পাতা এবং ফাইলগুলোতে অনুল্লেখ্য সম্পাদনার জন্যও আমাকে ই-মেইল করা হোক",
        "tog-enotifrevealaddr": "বিজ্ঞপ্তি মেইলে আমার ই-মেইল ঠিকানা প্রকাশ করা হোক",
        "edit-local": "স্থানীয় বিবরণ সম্পাদনা করুন",
        "create": "তৈরি",
        "create-local": "স্থানীয় বিবরণ যোগ করুন",
-       "editthispage": "সম্পাদনা করুন",
+       "editthispage": "পাতাà¦\9fি à¦¸à¦®à§\8dপাদনা à¦\95রà§\81ন",
        "create-this-page": "পাতাটি তৈরি করো",
        "delete": "অপসারণ",
        "deletethispage": "এই পাতাটি মুছে ফেলুন",
        "viewdeleted_short": "{{PLURAL:$1| টি অপসারিত সম্পাদনা|$1 টি অপসারিত সম্পাদনা}} দেখাও",
        "protect": "সুরক্ষা",
        "protect_change": "পরিবর্তন করুন",
-       "protectthispage": "সà¦\82রà¦\95à§\8dষণ à¦\95রà§\81ন",
+       "protectthispage": "à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦\95à§\87 à¦¸à§\81রà¦\95à§\8dষিত à¦\95রà§\8b",
        "unprotect": "সুরক্ষা পরিবর্তন",
        "unprotectthispage": "এই পাতার সুরক্ষা পরিবর্তন করুন",
        "newpage": "নতুন পাতা",
        "talkpagelinktext": "আলোচনা",
        "specialpage": "বিশেষ পাতা",
        "personaltools": "নিজস্ব সরঞ্জামসমূহ",
-       "articlepage": "নিবনà§\8dধ দেখুন",
+       "articlepage": "বিষয়বসà§\8dতà§\81 à¦ªà¦¾à¦¤à¦¾à¦\9fি দেখুন",
        "talk": "আলোচনা",
        "views": "দৃষ্টিকোণ",
        "toolbox": "সরঞ্জাম",
        "missingcommentheader": "'''খেয়াল করুন:''' আপনি এই মন্তব্যের জন্য কোন বিষয়/শিরোনাম দেননি। সংরক্ষণ বোতামে ক্লিক করলে, আপনার এই সম্পাদনা কোন বিষয়/শিরোনাম ছাড়াই সংরক্ষিত হবে।",
        "summary-preview": "সারাংশ প্রাকদর্শন:",
        "subject-preview": "বিষয়/শিরোনাম প্রাকদর্শন:",
+       "previewerrortext": "আপনার পরিবর্তনগুলি প্রাকদর্শন করার চেষ্টা করার সময় একটি ত্রুটি ঘটেছে।",
        "blockedtitle": "ব্যবহারকারীকে বাধা দেয়া হয়েছে",
        "blockedtext": "আপনার ব্যবহারকারী নাম বা আইপি ঠিকানার ঊপর নিষেধাজ্ঞা আরোপিত হয়েছে।\n\n$1 নিষেধাজ্ঞা আরোপ করেছেন। নিষেধের কারণ হিসেবে বলা হয়েছে:''$2''।\n\n* নিষেধাজ্ঞা শুরুর সময়:$8\n* নিষেধাজ্ঞা উঠিয়ে নেয়ার সময়: $6\n* যার উপর নিষেধাজ্ঞা আরোপ করা হয়েছে: $7\n\nআপনি $1 অথবা [[{{MediaWiki:Grouppage-sysop}}|প্রশাসকদের]] কারও সাথে এই নিষেধাজ্ঞা সংক্রান্ত বিষয়ে আলোচনা করতে পারেন।\n\nআপনি '(ব্যবহারকারীকে) ইমেইল করুন' ফিচারটি ব্যবহার করতে পারবেন না। তবে [[Special:Preferences|আপনার পছন্দ তালিকাতে]] যদি একটি বৈধ ই-মেইল ঠিকানা নির্দিষ্ট করা হয়ে থাকে এবং ফিচারটি ব্যবহারে যদি আপনাকে বাধা না দেওয়া হয়ে থাকে, তবে আপনি ফিচারটি ব্যবহার করতে পারবেন।\n\nআপনার বর্তমান আইপি ঠিকানা $3, এবং আপনার নিষেধাজ্ঞা নং হল #$5।\n\nদয়া করে আপনার যেকোন জিজ্ঞাসাতে উপরের সমস্ত বিবরণ অন্তর্ভুক্ত করুন।",
        "autoblockedtext": "আপনার আইপি ঠিকানাকে স্বয়ংক্রিয়ভাবে বাধা দেয়া হয়েছে কারণ একই আইপি ঠিকানার আরেকজন ব্যবহারকারী ব্যবহার করছেন যাকে $1  দ্বারা বাধা দেওয়া হয়েছে।\nবাধাদানের যে কারণ দেয়া হয়েছে:\n\n:''$2''\n\n* বাধা শুরুর সময়: $8\n* বাধা শেষের সময়: $6\n* যাকে বাধা দেওয়ার চেষ্টা করা হয়েছে: $7\n\nআপনি $1-এর সাথে কিংবা অন্য যেকোন [[{{MediaWiki:Grouppage-sysop}}|প্রশাসকের]] সাথে যোগাযোগ করে বাধার ব্যাপারটি আলোচনা করতে পারেন।\n\nলক্ষ্য করুন, যদি আপনি \"এই ব্যবহারকারীকে ই-মেইল করুন\" ফিচারটি ব্যবহার করতে চান, তবে আপনার [[Special:Preferences|পছন্দ]] অপশনে একটি বৈধ ইমেইল ঠিকানা দিতে হবে এবং আপনার সেটি ব্যবহারে কোন বাধা থাকতে পারবে না।\n\nআপনার বর্তমান IP ঠিকানা হচ্ছে $3, এবং যা বাধা দানের আইডি হল $5।\nযেকোন প্রশ্ন করার সময় উপরের সকল তথ্য উল্লেখ করুন।",
        "blocklogpage": "বাধা দানের লগ",
        "blocklog-showlog": "এই ব্যবহারকারীকে পূর্বেও বাধা প্রদান করা হয়েছিলো।\nতথ্যসূত্র হিসেবে তাই পূর্বের বাধাদানের লগটি নিচে প্রদর্শন করা হচ্ছে:",
        "blocklog-showsuppresslog": "এই ব্যবহারকারীকে পূর্বেও বাধা প্রদান ও লুকানো হয়েছিলো।\nতথ্যসূত্র হিসেবে তাই পূর্বের অপসারণ লগটি নিচে প্রদর্শন করা হচ্ছে:",
-       "blocklogentry": "$1 কে $2 মেয়াদের জন্য বাধাদান করেছেন $3",
+       "blocklogentry": "[[$1]] কে $2 মেয়াদের জন্য বাধাদান করেছেন $3",
        "reblock-logentry": "[[$1]] এর ব্লক সেটিং পরিবর্তন করা হয়েছে যেটি শেষ হবে $2 $3 সময়ে",
        "blocklogtext": "এটি ব্যবহারকারীদেরকে বাধা দানের বা বাধা তুলে নেওয়ার লগ।\nস্বয়ংক্রিয়ভাবে বাধাদানকৃত আইপি ঠিকানাগুলি এখানে তালিকাবদ্ধ করা হয়নি।\nবর্তমানে সক্রিয় নিষিদ্ধকরণ ও বাধাদানের তালিকার জন্য [[Special:BlockList| বাধাদান তালিকা]] দেখুন।",
        "unblocklogentry": "$1-এর উপর বাধা তুলে নেয়া হয়েছে",
index da14afa..b13ddbc 100644 (file)
@@ -15,7 +15,8 @@
                        "Y-M D",
                        "לערי ריינהארט",
                        "아라",
-                       "Pymouss"
+                       "Pymouss",
+                       "Macofe"
                ]
        },
        "tog-underline": "Liammoù islinennet",
        "delete-warning-toobig": "Bras eo istor ar bajenn-mañ, ouzhpenn {{PLURAL:$1|stumm|stumm}} zo.\nDiverkañ anezhi a c'hallo degas reuz war mont en-dro diaz titouroù {{SITENAME}};\ntaolit evezh bras.",
        "deleteprotected": "Ne c'hallit ket dilemel ar bajenn-mañ rak gwarezet eo bet.",
        "rollback": "disteuler ar c'hemmoù",
-       "rollback_short": "Disteuler",
        "rollbacklink": "disteuler",
        "rollbacklinkcount": "disteurel $1 {{PLURAL:$1|kemm}}",
        "rollbacklinkcount-morethan": "disteurel ouzhpenn $1 {{PLURAL:$1|kemm}}",
        "import-rootpage-nosubpage": "Esaouenn anvioù \"$1\" eus ar bennpajenn ne aotre ket an ispajennoù.",
        "importlogpage": "Log an enporzhiadennoù",
        "importlogpagetext": "Enporzhiadennoù melestradurel eus pajennoù adal wikioù all gant istor ar c'hemmadennoù degaset enno.",
-       "import-logentry-upload": "en/he deus enporzhiet (pellgarget) [[$1]]",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|adweladenn}} enporzhiet",
-       "import-logentry-interwiki": "treuzwikiet $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|adweladenn}} enporzhiet eus $2",
        "javascripttest": "Amprouadenn JavaScript",
-       "javascripttest-title": "Emeur o seveniñ $1 amprouadenn",
        "javascripttest-pagetext-noframework": "Miret eo ar bajenn-mañ evit amprouiñ JavaScript.",
        "javascripttest-pagetext-unknownframework": "Framm amprouiñ \"$1\" dianav.",
        "javascripttest-pagetext-frameworks": "Diuzit unan eus ar frammoù amprouiñ da-heul : $1",
        "javascripttest-pagetext-skins": "Diuzit ar gwiskadur da vezañ implijet evit an amprouadennoù :",
        "javascripttest-qunit-intro": "Sellet ouzh [$1 an teulioù amprouiñ] e mediawiki.org.",
-       "javascripttest-qunit-heading": "Heuliad amprouadennoù QUnit eus JavaScript war MediaWiki",
        "tooltip-pt-userpage": "Ho pajenn implijer",
        "tooltip-pt-anonuserpage": "Ar bajenn implijer evit ar c'homlec'h IP implijet ganeoc'h",
        "tooltip-pt-mytalk": "Ho pajenn gaozeal",
        "logentry-upload-revert": "$1 {{GENDER:$2|en deus|he deus}} ezporzhiet $3",
        "rightsnone": "(netra)",
        "revdelete-summary": "diverradenn eus ar c'hemmoù",
+       "feedback-adding": "Oc'h ouzhpennañ ho soñj war ar bajenn...",
+       "feedback-bugcheck": "Eus ar c'hentañ ! Gwiriit mat n'emañ ket e-touez an [$1 draen diskoachet c'hoazh].",
+       "feedback-bugnew": "Gwiriet em eus. Kemenn un draen nevez",
        "feedback-bugornote": "Ma'z oc'h prest da zeskrivañ ur gudenn deknikel dre ar munud e c'hallit [$1 kemenn un draen].\nA-hend-all e c'hallit ober gant ar furmskrid eeunaet dindan. Ouzhpennet e vo hoc'h evezhiadenn d'ar bajenn \"[$3 $2]\", a-gevret gant hoc'h anv implijer hag anv ar merdeer a rit gantañ.",
-       "feedback-subject": "Danvez :",
-       "feedback-message": "Kemennadenn :",
        "feedback-cancel": "Nullañ",
-       "feedback-submit": "Kas ho soñj",
-       "feedback-adding": "Oc'h ouzhpennañ ho soñj war ar bajenn...",
+       "feedback-close": "Graet",
        "feedback-error1": "Fazi : disoc'h dianav a-berzh an API",
        "feedback-error2": "Fazi : N'eus ket bet gallet degemer ar c'hemmoù",
        "feedback-error3": "Fazi : respont ebet a-berzh an API",
+       "feedback-message": "Kemennadenn :",
+       "feedback-subject": "Danvez :",
+       "feedback-submit": "Kas",
        "feedback-thanks": "Ho trugarekaat ! Postet eo bet hoc'h evezhiadenn d'ar bajenn \"[$2 $1]\".",
-       "feedback-close": "Graet",
-       "feedback-bugcheck": "Eus ar c'hentañ ! Gwiriit mat n'emañ ket e-touez an [$1 draen diskoachet c'hoazh].",
-       "feedback-bugnew": "Gwiriet em eus. Kemenn un draen nevez",
        "searchsuggest-search": "Klask",
        "searchsuggest-containing": "ennañ...",
        "api-error-badaccess-groups": "N'oc'h ket aotreet da enporzhiañ restroù war ar wiki-mañ.",
index 226a08c..0481bb9 100644 (file)
@@ -18,7 +18,8 @@
                        "Smooth O",
                        "לערי ריינהארט",
                        "아라",
-                       "Milicevic01"
+                       "Milicevic01",
+                       "Macofe"
                ]
        },
        "tog-underline": "Podvuci veze:",
        "import-rootpage-nosubpage": "Imenski prostor \"$1\" osnovne stranice ne dozvoljava podstranice.",
        "importlogpage": "Zapisnik uvoza",
        "importlogpagetext": "Administrativni uvozi stranica sa historijom izmjena sa drugih wikija.",
-       "import-logentry-upload": "uvezena stranica [[$1]] putem postavljanja datoteke",
        "import-logentry-upload-detail": "{{PLURAL:$1|Uvezena jedna revizija|Uvezene $1 revizije|Uvezeno $1 revizija}}",
-       "import-logentry-interwiki": "uveženo (''transwikied'') $1",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|Uvezena $1 revizija|Uvezene $1 revizije|Uvezeno $1 revizija}} od $2",
        "javascripttest": "Testiranje JavaScript-e",
        "javascripttest-pagetext-noframework": "Ova stranica je određena za pokretanje JavaScript testova.",
        "feedback-error3": "Greška: Nema odgovora od API",
        "feedback-message": "Poruka:",
        "feedback-subject": "Tema:",
-       "feedback-submit": "Pošalji povratnu informaciju",
+       "feedback-submit": "Pošalji",
        "feedback-thanks": "Hvala! Vaša povratna informacija je postavljena na stranicu „[$2 $1]“.",
        "searchsuggest-search": "Traži",
        "searchsuggest-containing": "sadrži...",
index c77b043..6f8efcb 100644 (file)
@@ -14,7 +14,8 @@
                        "رزگار",
                        "아라",
                        "Serwan",
-                       "Ebraminio"
+                       "Ebraminio",
+                       "Macofe"
                ]
        },
        "tog-underline": "ھێڵ ھێنان بەژێر بەستەرەکان:",
        "import-error-invalid": "پەڕەی «$1» ھاوردە ناکرێ چون ناوەکەی نادروستە.",
        "importlogpage": "لۆگی ھاوردن",
        "importlogpagetext": "ھاوردنی پەڕەکان لەگەڵ مێژووی دەستکاری لە ویکییەکانی ترەوە.",
-       "import-logentry-upload": "[[$1]]ی بە بارکردنی پەڕگە ھاورد",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|پێداچوونەوە}} ھاوردە کرا",
-       "import-logentry-interwiki": "$1ی ناوویکی کرد",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|پێداچوونەوە}} لە $2 ھاوردە کرا",
        "javascripttest": "تاقیکردنەوەی جاڤاسکریپت",
        "tooltip-pt-userpage": "پەڕەی بەکارھێنەرییەکەت",
        "feedback-close": "کرا",
        "feedback-message": "پەیام:",
        "feedback-subject": "بابەت:",
-       "feedback-submit": "تێبینییەکان بنێرە",
+       "feedback-submit": "ناردن",
        "searchsuggest-search": "گەڕان",
        "searchsuggest-containing": "بە لەبەرگرتنەوەی ...",
        "api-error-empty-file": "ئەو پەڕگەیە کە ناردووتە واڵا بوو.",
index e2b0a8f..81e0e4d 100644 (file)
        "missingcommentheader": "<strong>Připomenutí:</strong> Nezadali jste předmět/nadpis pro tento komentář.\nPokud ještě jednou kliknete na „{{int:savearticle}}“, bude vaše editace uložena bez něj.",
        "summary-preview": "Náhled shrnutí:",
        "subject-preview": "Náhled předmětu/nadpisu:",
+       "previewerrortext": "Při pokusu o zobrazení náhledu vašich změn došlo k chybě.",
        "blockedtitle": "Uživatel zablokován",
        "blockedtext": "<strong>Vaší IP adrese či uživatelskému jménu byla zablokována možnost editace.<strong>\n\nZablokování provedl{{GENDER:$4||a}} $1.\nUdaným důvodem bylo <em>$2</em>.\n\n* Začátek blokování: $8\n* Zablokování vyprší: $6\n* Blokovaný uživatel: $7\n\nPokud chcete zablokování prodiskutovat, můžete kontaktovat {{GENDER:$4|uživatele|uživatelku}} $1 či jiného [[{{MediaWiki:Grouppage-sysop}}|správce]].\nUvědomte si, že nemůžete použít nabídku „Poslat e-mail“, jestliže nemáte ve svém [[Special:Preferences|nastavení]] uvedenu platnou e-mailovou adresu nebo pokud vám byla tato možnost zakázána.\nVaše IP adresa je $3 a&nbsp;identifikační číslo bloku je #$5; tyto údaje uvádějte ve všech dotazech na správce.",
        "autoblockedtext": "Vaše IP adresa byla automaticky zablokována, protože ji používal jiný uživatel, kterého zablokoval $1.\nUdaný důvod blokování:\n\n:<em>$2</em>\n\n* Začátek blokování: $8\n* Konec blokování: $6\n* Původně blokovaný uživatel: $7\n\nZablokování můžete prodiskutovat se správcem $1 nebo některým z dalších [[{{MediaWiki:Grouppage-sysop}}|správců]].\n\nUvědomte si však, že funkci „Poslat e-mail tomuto uživateli“ nemůžete použít, pokud nemáte ve svém [[Special:Preferences|uživatelském nastavení]] zadaný platný e-mail a nebylo vám zablokováno jeho užívání.\n\nVaše současná IP adresa je $3, číslo vašeho zablokování je #$5.\nProsíme, uveďte tyto údaje při komunikaci se správci.",
index 08a33ce..53f9caa 100644 (file)
        "nospecialpagetext": "Эсир ыйтакан ятарлă страница çук. [[Special:SpecialPages|Ятарлă страницăсен списокне]] пăхăр.",
        "error": "Йăнăш",
        "databaseerror": "Пĕлĕм пуххин йăнăшĕ",
+       "databaseerror-function": "$1: функци",
        "laggedslavemode": "Асăрхăр! Страница çинче юлашки улшăнусене кăтартмасăр пултарнă.",
        "readonly": "Пĕлĕм пуххине çырассине чарса хунă",
        "enterlockreason": "Чарнин сăлтавне тата палăртнă вăхăта кăтартăр.",
index e7e72e8..daba7a3 100644 (file)
@@ -12,7 +12,8 @@
                        "Urhixidur",
                        "Xxglennxx",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Tanlinellu cysylltiadau:",
        "import-rootpage-nosubpage": "Nid yw'r parth \"$1\", sef parth y brif dudalen y mewnforir iddi, yn caniatau is-dudalennau.",
        "importlogpage": "Lòg mewnforio",
        "importlogpagetext": "Cofnodion mewnforio tudalennau ynghyd â'u hanes golygu oddi ar wicïau eraill, gan weinyddwyr.",
-       "import-logentry-upload": "wedi mewnforio [[$1]] trwy uwchlwytho ffeil",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|diwygiad|diwygiad|ddiwygiad|diwygiad|diwygiad|diwygiad}} wedi'i fewnforio",
-       "import-logentry-interwiki": "wedi symud $1 (traws-wici)",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|diwygiad|diwygiad|ddiwygiad|diwygiad|diwygiad|diwygiad}} wedi'i fewnforio o $2",
        "javascripttest": "Profi JavaScript",
        "javascripttest-pagetext-noframework": "Neilltuwyd y dudalen hon at gynnal profion JavaScript.",
        "feedback-error3": "Gwall: Dim ymateb gan yr API",
        "feedback-message": "Neges:",
        "feedback-subject": "Gwrthrych:",
-       "feedback-submit": "Cyflwyner yr Adborth",
+       "feedback-submit": "Cyflwyner",
        "feedback-thanks": "Diolch! Gosodwyd eich adborth ar y dudalen \"[$2 $1]\".",
        "searchsuggest-search": "Chwilio",
        "searchsuggest-containing": "yn cynnwys...",
index 3b9ef84..8ea019f 100644 (file)
@@ -48,7 +48,8 @@
                        "Urhixidur",
                        "아라",
                        "Thomsen",
-                       "Knud Winckelmann"
+                       "Knud Winckelmann",
+                       "Macofe"
                ]
        },
        "tog-underline": "Understreg henvisninger:",
        "revdelete-show-file-confirm": "Er du sikker på, at du vil vise en slettet version af filen \"<nowiki>$1</nowiki>\" fra den $2, klokken $3?",
        "revdelete-show-file-submit": "Ja",
        "logdelete-selected": "{{PLURAL:$1|Valgt logindførsel|Valgte logindførsler}}:",
+       "revdelete-text-text": "Slettede version vil stadigt fremgå af sidehistorikken, men dele af indholdet vil ikke være offentlig tilgængeligt.",
+       "revdelete-text-others": "Andre administratorer vil fortsat have adgang til det skjulte indhold og have mulighed for at genskabe det, med mindre andre begrænsninger er sat.",
        "revdelete-confirm": "Vær venlig at bekræfte at du vil gøre dette, at du forstår konsekvenserne, og at du gør det i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjerne]].",
        "revdelete-suppress-text": "Der bør '''kun''' skjules i de følgende tilfælde:\n* Potentielt injurierende oplysninger\n* Upassende personlige oplysninger\n*: ''hjemmeadresser og -telefonnumre, CPR-numre og lign.''",
        "revdelete-legend": "Fastlægge begrænsninger for versionerne:",
        "feedback-error3": "Fejl: Intet svar fra API",
        "feedback-message": "Besked:",
        "feedback-subject": "Emne:",
-       "feedback-submit": "Send kommentar",
+       "feedback-submit": "Send",
        "feedback-thanks": "Tak! Dine tilbagemeldinger er blevet noteret på siden \"[$2 $1]\".",
        "searchsuggest-search": "Søg",
        "searchsuggest-containing": "indeholder...",
index 06815fa..f0b7993 100644 (file)
        "missingcommentheader": "'''Achtung:''' Du hast kein Betreff/Überschrift eingegeben. Wenn du erneut auf „{{int:savearticle}}“ klickst, wird deine Bearbeitung ohne Überschrift gespeichert.",
        "summary-preview": "Vorschau der Zusammenfassungszeile:",
        "subject-preview": "Vorschau der Zusammenfassungszeile:",
+       "previewerrortext": "Beim Versuch, eine Vorschau deiner Änderungen anzuzeigen, ist ein Fehler aufgetreten.",
        "blockedtitle": "Benutzer ist gesperrt",
        "blockedtext": "'''Dein Benutzername oder deine IP-Adresse wurde gesperrt.'''\n\nDie Sperrung wurde vom Administrator $1 durchgeführt.\nAls Grund wurde ''$2'' angegeben.\n\n* Beginn der Sperre: $8\n* Ende der Sperre: $6\n* Sperre betrifft: $7\n\nDu kannst $1 oder einen der anderen [[{{MediaWiki:Grouppage-sysop}}|Administratoren]] kontaktieren, um über die Sperre zu diskutieren.\nDu kannst die „E-Mail an diesen Benutzer“-Funktion nicht nutzen, solange keine gültige E-Mail-Adresse in deinen [[Special:Preferences|Benutzerkonto-Einstellungen]] eingetragen ist oder diese Funktion für dich gesperrt wurde.\nDeine aktuelle IP-Adresse ist $3 und die Sperrkennung lautet $5.\nBitte füge alle Informationen jeder Anfrage hinzu, die du stellst.",
        "autoblockedtext": "Deine IP-Adresse wurde automatisch gesperrt, da sie von einem anderen Benutzer genutzt wurde, der von $1 gesperrt wurde.\nAls Grund wurde angegeben:\n\n:''$2''\n\n* Beginn der Sperre: $8\n* Ende der Sperre: $6\n* Sperre betrifft: $7\n\nDu kannst $1 oder einen der anderen [[{{MediaWiki:Grouppage-sysop}}|Administratoren]] kontaktieren, um über die Sperre zu diskutieren.\n\nDu kannst die „E-Mail an diesen Benutzer“-Funktion nicht nutzen, solange keine gültige E-Mail-Adresse in deinen [[Special:Preferences|Benutzerkonto-Einstellungen]] eingetragen ist oder diese Funktion für dich gesperrt wurde.\n\nDeine aktuelle IP-Adresse ist $3, und die Sperr-ID ist $5.\nBitte füge alle Informationen jeder Anfrage hinzu, die du stellst.",
index cbf4637..b680641 100644 (file)
@@ -20,7 +20,8 @@
                        "Geitost",
                        "Microchip08",
                        "아라",
-                       "Calak"
+                       "Calak",
+                       "Macofe"
                ]
        },
        "tog-underline": "Bınê gırey de xete bance:",
        "import-rootpage-nosubpage": "Qan de bınnaman reçe de \"$1\" re mısade nedano.",
        "importlogpage": "Defterê seyırio idxal",
        "importlogpagetext": "wiki yo ke nişane biyo tera kırıştışê zerredayişi nêbeno.",
-       "import-logentry-upload": "dosyayê bar kerdişî ra [[$1]] împort biyo",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|çımraviyarnayış|çımraviyarnayışi}}",
-       "import-logentry-interwiki": "$1 transwiki biyo",
        "import-logentry-interwiki-detail": "$2 ra $1 {{PLURAL:$1|çımraviyarnayış|çımraviyarnayışi}}",
        "javascripttest": "Cerebnayışê JavaScripti",
        "javascripttest-pagetext-noframework": "Na pela testanê JavaScripta gurweynayışi re abıryaya.",
        "feedback-error3": "Xeta: API ra cewab çıno",
        "feedback-message": "Mesac:",
        "feedback-subject": "Mewzu:",
-       "feedback-submit": "Peyxeberdar Bırşe",
+       "feedback-submit": "Bırışe",
        "feedback-thanks": "Teşekkur kemê! Vatışê şıma pela da \"[$2 $1]\" esta.",
        "searchsuggest-search": "Cı geyre",
        "searchsuggest-containing": "Estên...",
index e079cf5..d57a9c8 100644 (file)
@@ -17,7 +17,8 @@
                        "Tlustulimu",
                        "Tlustulimu Nepl1",
                        "아라",
-                       "TMg"
+                       "TMg",
+                       "Macofe"
                ]
        },
        "tog-underline": "Wótkaze pódšmarnuś:",
        "unusedimages": "Njewužywane dataje",
        "wantedcategories": "Póžedane kategorije",
        "wantedpages": "Póžedane boki",
+       "wantedpages-summary": "Toś ten specialny bok nalicujo wšykne boki, kótarež hyšći njeeksistěruju, na kótarež ale wót eksistěrujucych bokow se wótkazuju.",
        "wantedpages-badtitle": "Njepłaśiwy titel we wuslědku: $1",
        "wantedfiles": "Póžedane dataje",
        "wantedfiletext-cat": "Slědujuce dataje se wužywaju, ale njeeksistěruja. Dataje z cuzych repozitoriumow daju se nalicyś, lěcrownož eksistěruju. Take wopacne pozitiwy su <del>pśešmarnjone</del>. Mimo togo se boki w [[:$1]] nalicyju, kótarež dataje zasajźuju, kótarež njeeksistěruju.",
        "delete-warning-toobig": "Toś ten bok ma z wěcej ako $1 {{PLURAL:$1|wersiju|wersijomaj|wersijami|wersijami}} dłujke stawizny. Jich wulašowanje móžo źěło datoweje banki na {{SITENAME}} kazyś;\npóstupujśo z glědanim.",
        "deleting-backlinks-warning": "'''Warnowanje:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Druge boki]] wótkazuju k bokoju abo bok jo hynźi zapśěgnjony, kótaryž coš wulašowaś.",
        "rollback": "Wobźěłanja slědk wześ",
-       "rollback_short": "anulěrowaś",
        "rollbacklink": "anulěrowaś",
        "rollbacklinkcount": "$1 {{PLURAL:$1|změnu|změnje|změny|změnow}} slědk wześ",
        "rollbacklinkcount-morethan": "wěcej ako $1 {{PLURAL:$1|změnu|změnje|změny|změnow}} slědk wześ",
        "import-rootpage-nosubpage": "Mjenjowy rum \"$1\" kórjenjowego boka njedowólujo pódboki.",
        "importlogpage": "Log-lisćinu importěrowaś",
        "importlogpagetext": "Administratiwne importěrowanje bokow ze stawiznami z drugich wikijow.",
-       "import-logentry-upload": "jo se [[$1]]  pśez nagrawańske nagraśe importěrowała.",
        "import-logentry-upload-detail": "{{PLURAL:$1|$1 wersija|$1 wersiji|$1 wersije}}",
-       "import-logentry-interwiki": "Dataja $1 jo se importěrowała (transwiki).",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|$1 wersija|$1 wersiji|$1 wersije}} wót $2",
        "javascripttest": "JavaScriptowy test",
-       "javascripttest-title": "Testy $1 se pśewjeduju",
        "javascripttest-pagetext-noframework": "Toś ten bok jo pśewjedowanjeju javascriptowych testow pśewóstajony.",
        "javascripttest-pagetext-unknownframework": "Njeznaty wobłuk \"$1\".",
        "javascripttest-pagetext-frameworks": "Pšosym wubjeŕ jaden ze slědujucych testowańskich wobłukow: $1",
        "javascripttest-pagetext-skins": "Wubjeŕ drastwu za pśewjeźenje testow:",
        "javascripttest-qunit-intro": "Glědaj [$1 testowańsku dokumentaciju] na mediawiki.org.",
-       "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit test suite",
        "tooltip-pt-userpage": "Twój wužywarski bok",
        "tooltip-pt-anonuserpage": "Wužywarski bok za IP-adresu, z kótarejuž bok wobźěłajoš",
        "tooltip-pt-mytalk": "Twój diskusijny bok",
        "iranian-calendar-m11": "Bahman",
        "iranian-calendar-m12": "Esfand",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|diskusija]])",
-       "unknown_extension_tag": "Njeznaty tag rozšyrjenja „$1“",
        "duplicate-defaultsort": "Glědaj: Standardny sortěrowański kluc (DEFAULT SORT KEY) \"$2\" pśepišo pjerwjej wužyty kluc \"$1\".",
        "version": "Wersija",
        "version-extensions": "Instalowane rozšyrjenja",
        "specialpages-group-wiki": "Daty a rědy",
        "specialpages-group-redirects": "Dalej pósrědnjajuce boki",
        "specialpages-group-spam": "Spamowe rědy",
+       "specialpages-group-developer": "Rědy wuwiwarjow",
        "blankpage": "Prozny bok",
        "intentionallyblankpage": "Toś ten bok jo z wótglědom prozny.",
        "external_image_whitelist": " #Wóstaj toś tu smužku rowno tak jo<pre>\n#Zapódaj fragmenty regularnych wurazow (jano źěl mjazy //) dołojce\n#Toś te budu se pśirunowaś z URL ekseternych wobrazow\n#Te, kótarež makaju se, zwobraznuju se ako wobraze, howac pokažo se jano wótkaz k wobrazoju\n#Ze smužkami, kótarež zachopiju se z #, wobchadaju ako z komentarami\n#To njeźiwa na wjelikopisanje\n\n#Staj wše fragmenty regularnych wurazow nad smužku. Wóstaj toś tu smužku rowno tak jo</pre>",
        "logentry-rights-autopromote": "$1 jo se awtomatiski wót $4 do $5 {{GENDER:$2|pśirědował|pśirědowała}}",
        "rightsnone": "(nic)",
        "revdelete-summary": "Zespominanje wobźěłanja",
+       "feedback-adding": "Komentar pśidawa se bokoju...",
+       "feedback-bugcheck": "Wjelicnje! Pśekontrolěruj jano, lěc to njejo jadna z [$1 znatych zmólkow].",
+       "feedback-bugnew": "Som pśekontrolěrował. Nowu zmólku k wěsći daś",
        "feedback-bugornote": "Jolic sy zwólny, techniski problem nadrobnje wopisaś, [$1 daj pšosym zmólku k wěsći].\nHować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo se bokoju \"[$3 $2]\", z twójim wužywarskim mjenim a z wobglědowakom, kótaryž wužywaš.",
-       "feedback-subject": "Tema:",
-       "feedback-message": "Powěsć:",
        "feedback-cancel": "Pśetergnuś",
-       "feedback-submit": "Komentar wótpósłaś",
-       "feedback-adding": "Komentar pśidawa se bokoju...",
+       "feedback-close": "Dokóńcony",
        "feedback-error1": "Zmólka: Njepóznaty wuslědk wót API",
        "feedback-error2": "Zmólka: Wobźěłanje njejo se raźiło",
        "feedback-error3": "Zmólka: Žedne wótegrono wót API",
+       "feedback-message": "Powěsć:",
+       "feedback-subject": "Tema:",
+       "feedback-submit": "Wótpósłaś",
        "feedback-thanks": "Źěkujomy se! Twój komentar jo se k bokoju \"[$2 $1]\" pósłał.",
-       "feedback-close": "Dokóńcony",
-       "feedback-bugcheck": "Wjelicnje! Pśekontrolěruj jano, lěc to njejo jadna z [$1 znatych zmólkow].",
-       "feedback-bugnew": "Som pśekontrolěrował. Nowu zmólku k wěsći daś",
        "searchsuggest-search": "Pytaś",
        "searchsuggest-containing": "wopśimujo...",
        "api-error-badaccess-groups": "Njamaš pšawo dataje do toś togo wikija nagraś.",
index a9a62b2..b115620 100644 (file)
        "uploaddisabled": "La cârga dal file l'é bluchêda.",
        "copyuploaddisabled": "La cârga per mèz  'd URL l'é blucêda.",
        "uploaddisabledtext": "La cârga di file an n'é mìa atîva.",
+       "php-uploaddisabledtext": "La cârga dal file cun PHP l'é bluchêda. Cuntròla che 'l file_uploads al sìa bèin impustê.",
+       "uploadscripted": "Cól file ché al gh'à un côdis o di script, che prén èser mìa capî bèin da un navigadōr internèt.",
+       "uploadscriptednamespace": "Cól file SVG ché al gh'à un namespace '$1' mìa permés.",
+       "uploadinvalidxml": "Al côdis XML int al file al pōl mìa èser lavurê bèin.",
+       "uploadvirus": "Cól fil ché al ghè un 'virus'! Particulêr: $1",
        "license": "Licèinsa:",
        "license-header": "Licèinsa",
        "nolicense": "Nisóna licèinsa sgnêda",
index 742138a..7a4da02 100644 (file)
@@ -40,7 +40,8 @@
                        "Calak",
                        "Auslaender",
                        "Milicevic01",
-                       "Ah3kal"
+                       "Ah3kal",
+                       "Macofe"
                ]
        },
        "tog-underline": "Υπογράμμιση συνδέσμων:",
        "import-rootpage-invalid": "Η δεδομένη ριζική σελίδα είναι μη έγκυρος τίτλος",
        "importlogpage": "Αρχείο καταγραφής εισαγωγών",
        "importlogpagetext": "Διαχειριστικές εισαγωγές σελίδων με ιστορικό επεξεργασίας από άλλα wiki.",
-       "import-logentry-upload": "εισάχθηκε η σελίδα [[$1]] με επιφόρτωση αρχείου",
        "import-logentry-upload-detail": "{{PLURAL:$1|Εισήχθη $1 αναθεώρηση|Εισήχθησαν $1 αναθεωρήσεις}}",
-       "import-logentry-interwiki": "η σελίδα $1 εισάχθηκε μεταξύ wiki",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|Εισήχθη $1 αναθεώρηση|Εισήχθησαν $1 αναθεωρήσεις}} από $2",
        "javascripttest": "Δοκιμή JavaScript",
        "javascripttest-pagetext-noframework": "Αυτή η σελίδα είναι δεσμευμένη για την εκτέλεση δοκιμών σε JavaScript.",
        "feedback-error3": "Σφάλμα: Καμία απάντηση από το API",
        "feedback-message": "Μήνυμα:",
        "feedback-subject": "Θέμα:",
-       "feedback-submit": "Υποβολή σχολίων",
+       "feedback-submit": "Υποβολή",
        "feedback-thanks": "Ευχαριστούμε! Τα σχόλιά σας έχουν καταχωρηθεί στη σελίδα \"[$2 $1]\".",
        "searchsuggest-search": "Αναζήτηση",
        "searchsuggest-containing": "περιέχει...",
index 56bfbbc..be318e6 100644 (file)
        "missingcommentheader": "<strong>Reminder:</strong> You have not provided a subject/headline for this comment.\nIf you click \"{{int:savearticle}}\" again, your edit will be saved without one.",
        "summary-preview": "Summary preview:",
        "subject-preview": "Subject/headline preview:",
+       "previewerrortext": "An error occurred while attempting to preview your changes.",
        "blockedtitle": "User is blocked",
        "blockedtext": "<strong>Your username or IP address has been blocked.</strong>\n\nThe block was made by $1.\nThe reason given is <em>$2</em>.\n\n* Start of block: $8\n* Expiry of block: $6\n* Intended blockee: $7\n\nYou can contact $1 or another [[{{MediaWiki:Grouppage-sysop}}|administrator]] to discuss the block.\nYou cannot use the \"email this user\" feature unless a valid email address is specified in your [[Special:Preferences|account preferences]] and you have not been blocked from using it.\nYour current IP address is $3, and the block ID is #$5.\nPlease include all above details in any queries you make.",
        "autoblockedtext": "Your IP address has been automatically blocked because it was used by another user, who was blocked by $1.\nThe reason given is:\n\n:<em>$2</em>\n\n* Start of block: $8\n* Expiry of block: $6\n* Intended blockee: $7\n\nYou may contact $1 or one of the other [[{{MediaWiki:Grouppage-sysop}}|administrators]] to discuss the block.\n\nNote that you may not use the \"email this user\" feature unless you have a valid email address registered in your [[Special:Preferences|user preferences]] and you have not been blocked from using it.\n\nYour current IP address is $3, and the block ID is #$5.\nPlease include all above details in any queries you make.",
index bbf55e3..0f7989d 100644 (file)
@@ -21,7 +21,8 @@
                        "아라",
                        "Joxemai",
                        "Arkaitz Barnetik",
-                       "Sator"
+                       "Sator",
+                       "Macofe"
                ]
        },
        "tog-underline": "Azpimarratu loturak:",
        "feedback-error3": "Akatsa: APIaren erantzunik gabe",
        "feedback-message": "Mezua:",
        "feedback-subject": "Gaia:",
-       "feedback-submit": "Feedbacka bidali",
+       "feedback-submit": "Bidali",
        "searchsuggest-search": "Bilatu",
        "searchsuggest-containing": "edukian...",
        "api-error-badaccess-groups": "Ez duzu baimendik fitxategi hauek wiki honetara igotzeko.",
index 9833b1f..2dd4ff3 100644 (file)
        "missingcommentheader": "'''یادآوری:''' شما موضوع/عنوان این یادداشت را مشخص نکرده‌اید.\nاگر دوباره دکمهٔ «{{int:savearticle}}» را فشار دهید ویرایش شما بدون آن ذخیره خواهد شد.",
        "summary-preview": "پیش‌نمایش خلاصه:",
        "subject-preview": "پیش‌نمایش موضوع/عنوان:",
+       "previewerrortext": "در زمان تلاش برای نمایش دادن تغییرات شما، خطای رخ داد.",
        "blockedtitle": "کاربر بسته شده‌است",
        "blockedtext": "'''دسترسی حساب کاربری یا نشانی آی‌پی شما بسته شده‌است.'''\n\nاین قطع دسترسی توسط $1 انجام شده‌است.\nدلیل ارائه‌شده چنین است: $2''\n\n* شروع قطع دسترسی: $8\n* پایان قطع دسترسی: $6\n* کاربری هدف قطع دسترسی: $7\n\nشما می‌توانید با $1 یا  [[{{MediaWiki:Grouppage-sysop}}|مدیری]] دیگر تماس بگیرید و در این باره صحبت کنید.\nتوجه کنید که شما نمی‌توانید از ویژگی «فرستادن رایانامه به این کاربر» استفاده کنید مگر آنکه نشانی رایانامه معتبری در [[Special:Preferences|ترجیحات کاربری]] خودتان ثبت کرده باشید و نیز باید امکان استفاده از این ویژگی برای شما قطع نشده باشد.\nنشانی آی‌پی فعلی شما $3 و شمارهٔ قطع دسترسی شما $5 است.\nلطفاً تمامی جزئیات فوق را در کلیهٔ درخواست‌هایی که در این باره مطرح می‌کنید ذکر کنید.",
        "autoblockedtext": "دسترسی نشانی آی‌پی شما قطع شده‌است، زیرا این نشانی آی‌پی توسط کاربر دیگری استفاده شده که دسترسی او توسط $1 قطع شده‌است.\nدلیل ارائه‌شده چنین است:\n\n:''$2''\n\n* شروع قطع دسترسی: $8\n* پایان قطع دسترسی: $6\n* کاربری هدف قطع دسترسی: $7\n\nشما می‌توانید با $1 یا  [[{{MediaWiki:Grouppage-sysop}}|مدیری]] دیگر تماس بگیرید و در این باره صحبت کنید.\nتوجه کنید که شما نمی‌توانید از ویژگی «فرستادن رایانامه به این کاربر» استفاده کنید مگر آنکه نشانی رایانامه معتبری در [[Special:Preferences|ترجیحات کاربری]] خودتان ثبت کرده باشید و نیز باید امکان استفاده از این ویژگی برای شما قطع نشده باشد.\nنشانی آی‌پی فعلی شما $3 و شمارهٔ قطع دسترسی شما $5 است.\nلطفاً تمامی جزئیات فوق را در کلیهٔ درخواست‌هایی که در این باره مطرح می‌کنید ذکر کنید.",
        "logentry-block-reblock": "$1 {{GENDER:$2|تنظیمات}} بستن {{GENDER:$4|$3}} را به پایان قطع دسترسی $5 $6 تغییر داد.",
        "logentry-suppress-block": "$1 {{GENDER:$2|بسته شد}} {{GENDER:$4|$3}} با پایان قطع دسترسی در زمان $5 $6",
        "logentry-suppress-reblock": "$1 {{GENDER:$2|تنظیمات}} بستن برای  {{GENDER:$4|$3}} به پایان قطع دسترسی  $5 $6 تغییر یافت",
+       "logentry-import-upload": "$1 $3 را توسط بارگذار پرونده {{GENDER:$2|درون‌ریزی کرد}}",
+       "logentry-import-interwiki": "$1 $3 را از ویکی دیگر {{GENDER:$2|درون‌ریز کرد}}",
        "logentry-merge-merge": "$1  $3  را به  $4 {{GENDER:$2| ادغام کرد}} (نسخه تا  $5)",
        "logentry-move-move": "$1 صفحهٔ $3 را به $4 {{GENDER:$2|منتقل کرد}}",
        "logentry-move-move-noredirect": "$1 صفحهٔ $3 را بدون برجای‌گذاشتن تغییرمسیر به $4 {{GENDER:$2|منتقل کرد}}",
index cff297f..157c5bd 100644 (file)
        "missingcommentheader": "'''Rappel :''' vous n'avez pas fourni de sujet ou de titre à ce commentaire.\nSi vous cliquez de nouveau sur « {{int:Savearticle}} », votre modification sera enregistrée sans titre.",
        "summary-preview": "Aperçu du résumé :",
        "subject-preview": "Prévisualisation du sujet/titre :",
+       "previewerrortext": "Une erreur s’est produite lors de la tentative de prévisualisation de vos modifications.",
        "blockedtitle": "L’utilisateur est bloqué.",
        "blockedtext": "'''Votre compte utilisateur ou votre adresse IP a été bloqué.'''\n\nLe blocage a été effectué par $1.\nLa raison invoquée est la suivante : ''$2''.\n\n* Début du blocage : $8\n* Expiration du blocage : $6\n* Compte bloqué : $7.\n\nVous pouvez contacter $1 ou un autre [[{{MediaWiki:Grouppage-sysop}}|administrateur]] pour en discuter.\nVous ne pouvez utiliser la fonction « {{MediaWiki:emailpage}} » que si une adresse de courriel valide est spécifiée dans vos [[Special:Preferences|préférences]] et que si cette fonctionnalité n’a pas été bloquée.\nVotre adresse IP actuelle est $3 et votre identifiant de blocage est $5.\nVeuillez préciser ces indications dans toutes les requêtes que vous ferez.",
        "autoblockedtext": "Votre adresse IP a été bloquée automatiquement car elle a été utilisée par un autre utilisateur, lui-même bloqué par $1.\nLa raison invoquée est :\n\n:''$2''\n\n* Début du blocage : $8\n* Expiration du blocage : $6\n* Compte bloqué : $7\n\nVous pouvez contacter $1 ou l’un des autres [[{{MediaWiki:Grouppage-sysop}}|administrateurs]] pour discuter de ce blocage.\n\nNotez que vous ne pourrez utiliser la fonctionnalité d’envoi de courriel que si vous avez une adresse de courriel validée dans vos [[Special:Preferences|préférences]] et que si cette fonctionnalité n’a pas été désactivée.\n\nVotre adresse IP actuelle est $3, et le numéro de blocage est $5.\nVeuillez préciser ces indications dans toutes les requêtes que vous ferez.",
index 8052343..f3a43cb 100644 (file)
@@ -8,7 +8,8 @@
                        "RoyAlcatraz",
                        "Urhixidur",
                        "Zetud",
-                       "Hangmanwa7id"
+                       "Hangmanwa7id",
+                       "Stisc-14"
                ]
        },
        "tog-underline": "Souligner les liens:",
        "missingcommentheader": "'''Attention :''' Vous avez pas mis de sujet pour ce commentaire. Si vous cliquez le bouton \"Sauver\" encore, votre changement va être sauvé sans sujet.",
        "summary-preview": "Vue d'avance de la description:",
        "subject-preview": "Vue d'avance du sujet:",
+       "previewerrortext": "Une erreur est survenue pendant la tentative pour visualiser tes modifications.",
        "blockedtitle": "L'useur est bloqué",
        "blockedtext": "'''Votre compte d'useur (ou votre adresse IP) est bloqué.'''\n\nLe blocage a été fait par $1.  La raison donnée est ''$2''.\n\n* La date du blocage: $8\n* Le blocage va être ôté: $6\n* L'useur bloqué: $7\n\nVous pouvez contacter $1 ou un autre [[{{MediaWiki:Grouppage-sysop}}|administrateur]] pour discuter le blocage.  Vous pouvez pas user la fonction 'envoyer un e-mail à cet useur' hormis que vous avez une adresse e-mail confirmée dans votre [[Special:Preferences|réglage de compte]] et vous avez la permission de l'user.  Votre adresse IP est $3, et le numéro du blocage est #$5.  Mettez donc cette information dans toutes vos demandes.",
        "autoblockedtext": "Le système a bloqué votre adresse IP parce qu'alle a été usée par un autre useur qu'était bloqué par $1.\n\nLa raison donnée est: ''$2''\n\n* La date du blocage: $8\n* Le blocage va être ôté: $6\n\nVous pouvez contacter $1 ou un autre [[{{MediaWiki:Grouppage-sysop}}|administrateur]] pour discuter le blocage.\n\nNotez donc que vous pouvez pas user la fonction 'envoyer un e-mail à cet useur' hormis que vous avez une adresse e-mail confirmée dans votre [[Special:Preferences|réglage de compte]] et vous avez la permission de l'user.\n\nVotre numéro de blocage est #$5.  Mettez donc cette information dans toutes vos demandes.",
index e5fd8b9..7f202d2 100644 (file)
@@ -6,7 +6,8 @@
                        "Reedy",
                        "לערי ריינהארט",
                        "아라",
-                       "Soul Train"
+                       "Soul Train",
+                       "Macofe"
                ]
        },
        "tog-underline": "Solegnér los lims :",
        "import-options-wrong": "{{PLURAL:$2|Crouyo chouèx|Crouyos chouèx}} : <nowiki>$1</nowiki>",
        "importlogpage": "Jornal de les importacions",
        "importlogpagetext": "Importacions administratives de pâges avouéc lor historico de changements dês d’ôtros vouiquis.",
-       "import-logentry-upload": "at importâ [[$1]] per tèlèchargement de fichiér",
        "import-logentry-upload-detail": "$1 vèrsion{{PLURAL:$1||s}}",
-       "import-logentry-interwiki": "at importâ $1 per entèrvouiqui",
        "import-logentry-interwiki-detail": "$1 vèrsion{{PLURAL:$1||s}} dês $2",
        "javascripttest": "Èprôva de JavaScript",
        "javascripttest-qunit-intro": "Vêde la [$1 documentacion de les èprôves] dessus mediawiki.org.",
        "feedback-error3": "Èrror : gins de rèponsa de l’API",
        "feedback-message": "Mèssâjo :",
        "feedback-subject": "Sujèt :",
-       "feedback-submit": "Mandar voutron avis",
+       "feedback-submit": "Sometre",
        "feedback-thanks": "Grant-marci ! Voutron avis at étâ postâ sur la pâge « [$2 $1] ».",
        "searchsuggest-search": "Rechèrchiér",
        "searchsuggest-containing": "que contint...",
index c530e1e..8c6c777 100644 (file)
        "disclaimers": "Disclaimers",
        "disclaimerpage": "Project:Disclaimers",
        "edithelp": "Halep bi't bewerkin",
+       "helppage-top-gethelp": "Halep",
        "mainpage": "Hoodsidj",
        "mainpage-description": "Hoodsidj",
        "policy-url": "Project:Reegeln",
        "logentry-block-reblock": "$1 {{GENDER:$2|hää}} det sper för {{GENDER:$4|$3}} feranert mä en sperdüür faan $5 $6",
        "logentry-suppress-block": "$1 {{GENDER:$2|hää}} {{GENDER:$4|$3}} speret mä en sperdüür faan $5 $6",
        "logentry-suppress-reblock": "$1 {{GENDER:$2|hää}} det sper för {{GENDER:$4|$3}} feranert mä en sperdüür faan $5 $6",
+       "logentry-import-upload": "$1 {{GENDER:$2|hää}} $3 importiaret an en datei huuchschüürd",
+       "logentry-import-interwiki": "$1 {{GENDER:$2|hää}} $3 faan en ööder Wiki importiaret",
        "logentry-merge-merge": "$1 {{GENDER:$2|hää}} $3 mä det sidj „$4“ (werjuunen bit tu di $5) tuupfeerd",
        "logentry-move-move": "$1 {{GENDER:$2}} hää det sidj $3 efter $4 fersköwen.",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2}} hää det sidj $3 efter $4 saner widjerfeerang fersköwen.",
index 3ed2027..a748333 100644 (file)
@@ -12,7 +12,8 @@
                        "Urhixidur",
                        "לערי ריינהארט",
                        "아라",
-                       "Robin0van0der0vliet"
+                       "Robin0van0der0vliet",
+                       "Macofe"
                ]
        },
        "tog-underline": "Keppelings ûnderstreekje:",
        "revdelete-unrestricted": "hat beheinings foar behearders goedmakke",
        "rightsnone": "(gjin)",
        "revdelete-summary": "gearfetting bewurkje",
-       "feedback-subject": "Ûnderwerp:",
-       "feedback-message": "Berjocht:",
        "feedback-cancel": "Annulearje",
-       "feedback-submit": "Feedback ferstjoere",
        "feedback-close": "Dien",
+       "feedback-message": "Berjocht:",
+       "feedback-subject": "Ûnderwerp:",
+       "feedback-submit": "Ferstjoere",
        "searchsuggest-search": "Sykje",
        "api-error-unknown-code": "Unbekende flater: \"$1\".",
        "api-error-unknownerror": "Unbekende flater: \"$1\".",
index e4d59a3..ac14972 100644 (file)
@@ -8,7 +8,8 @@
                        "Steafan31",
                        "לערי ריינהארט",
                        "아라",
-                       "GunChleoc"
+                       "GunChleoc",
+                       "Macofe"
                ]
        },
        "tog-underline": "Fo-loidhneadh nan ceanglaichean:",
        "feedback-error3": "Mearachd: Cha d' fhuair sinn freagairt on API",
        "feedback-message": "Teachdaireachd:",
        "feedback-subject": "Cuspair:",
-       "feedback-submit": "Cuir do bheachd a-null",
+       "feedback-submit": "Cuir a-null",
        "feedback-thanks": "Mòran taing! Chaidh do bheachd a phostadh air an duilleag \"[$2 $1]\".",
        "searchsuggest-search": "Lorg",
        "searchsuggest-containing": "anns a bheil...",
index ac35a76..7946f02 100644 (file)
@@ -22,7 +22,8 @@
                        "Sushant savla",
                        "לערי ריינהארט",
                        "아라",
-                       "Vyom"
+                       "Vyom",
+                       "Macofe"
                ]
        },
        "tog-underline": "કડીઓની નીચે લીટી (અંડરલાઇન):",
        "import-error-invalid": "પાનું \"$1\" આયાત થયું નથી કારણ કે તેનું નામ આ વિકિ માટે અયોગ્ય છે.",
        "importlogpage": "આયાત માહિતિ પત્રક",
        "importlogpagetext": "અન્ય  વિકિમાંથી ઈતિહાસ સહિત પાનાની પ્રબંધકીય આયાત",
-       "import-logentry-upload": "ફાઇલ ચઢાવનાર દ્વારા [[$1]] આયાત કરાઇ",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}} આયાત કરેલ છે",
-       "import-logentry-interwiki": "આંતરવિકિ  $1",
        "import-logentry-interwiki-detail": "$2 માંથી આયાત કરેલ $1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}}",
        "javascripttest": "જાવા સ્ક્રીપ્ટ પરીક્ષણ",
        "javascripttest-pagetext-noframework": "આ પાનું જાવા સ્ક્રીપ્ટ ચલાવવા આરક્ષિત છે.",
        "feedback-error3": "ત્રુટી: API તરફથી કોઈ પ્રત્યુત્તર નથી",
        "feedback-message": "સંદેશ",
        "feedback-subject": "વિષય:",
-       "feedback-submit": "પà«\8dરતિભાવ àª\86પો",
+       "feedback-submit": "àª\9cમા àª\95રો",
        "feedback-thanks": "આભર! તમારા પ્રતિભાવને \"[$2 $1]\" પાના પર મુકાયા છે.",
        "searchsuggest-search": "શોધો",
        "searchsuggest-containing": "ધરાવતી...",
index e8169dd..65176b1 100644 (file)
@@ -6,7 +6,8 @@
                        "Kolonahe",
                        "Node ue",
                        "Singularity",
-                       "Xqt"
+                       "Xqt",
+                       "Macofe"
                ]
        },
        "tog-underline": "Kahalalo i nā loulou:",
        "htmlform-yes": "ʻAe",
        "htmlform-chosen-placeholder": "Koho i kekahi koho",
        "rightsnone": "(ʻaʻohe)",
-       "feedback-subject": "Kumunui:",
-       "feedback-message": "Pūlono:",
-       "feedback-cancel": "Hoʻōki",
-       "feedback-submit": "Hoʻouna i nā Manaʻo",
        "feedback-adding": "Ke hoʻohui nei i ka manaʻo i ka ʻaoʻao...",
+       "feedback-cancel": "Hoʻōki",
        "feedback-close": "Ua pau",
+       "feedback-message": "Pūlono:",
+       "feedback-subject": "Kumunui:",
+       "feedback-submit": "Waiho",
        "searchsuggest-search": "Huli",
        "api-error-unknown-code": "Hewa ʻikeʻole: \"$1\".",
        "api-error-unknown-warning": "Akahele ʻikeʻole: \"$1\".",
index 5ae57bb..9235b4b 100644 (file)
        "missingcommentheader": "<strong>תזכורת:</strong> לא הזנת נושא/כותרת להודעה זו.\nלחיצה חוזרת על הכפתור \"{{int:savearticle}}\" תגרום לעריכה שלך להישמר ללא נושא/כותרת.",
        "summary-preview": "תצוגה מקדימה של התקציר:",
        "subject-preview": "תצוגה מקדימה של הנושא/הכותרת:",
+       "previewerrortext": "אירעה שגיאה בעת הניסיון להציג תצוגה מקדימה של השינויים שלך.",
        "blockedtitle": "המשתמש חסום",
        "blockedtext": "'''שם המשתמש או כתובת ה־IP שלכם נחסמו.'''\n\nהחסימה בוצעה על ידי $1. הסיבה שניתנה לכך היא '''$2'''.\n\n* תחילת החסימה: $8\n* פקיעת החסימה: $6\n* החסימה שבוצעה: $7\n\nבאפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון על החסימה.\nאינכם יכולים להשתמש בתכונת \"שליחת דואר אלקטרוני למשתמש זה\" אם לא ציינתם כתובת דוא\"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא\"ל.\nכתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.\nאנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.",
        "autoblockedtext": "כתובת ה־IP שלכם נחסמה באופן אוטומטי כיוון שמשתמש אחר, שנחסם על־ידי $1, השתמש בה.\nהסיבה שניתנה לחסימה היא:\n\n:<em>$2</em>\n\n* תחילת החסימה: $8\n* פקיעת החסימה: $6\n* החסימה שבוצעה: $7\n\nבאפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון בחסימה.\n\nבאפשרותכם להשתמש בתכונת \"שליחת דואר אלקטרוני למשתמש זה\", אלא אם לא ציינתם כתובת דוא\"ל תקינה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא\"ל.\n\nכתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.\nאנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.",
index c9bbbaa..682e806 100644 (file)
@@ -58,7 +58,8 @@
                        "संजीव कुमार",
                        "बिप्लब आनन्द",
                        "Phoenix303",
-                       "Steinsplitter"
+                       "Steinsplitter",
+                       "Macofe"
                ]
        },
        "tog-underline": "कड़ियाँ अधोरेखन:",
        "disclaimerpage": "Project:साधारण अस्वीकरण",
        "edithelp": "सम्पादन सहायता",
        "helppage-top-gethelp": "सहायता",
-       "mainpage": "'मुख्य पृष्ठ",
-       "mainpage-description": "मà¥\81à¤\96à¥\8dय à¤ªà¥\83षà¥\8dठ",
+       "mainpage": "मुखपृष्ठ",
+       "mainpage-description": "मुखपृष्ठ",
        "policy-url": "Project:नीति",
        "portal": "समाज मुखपृष्ठ",
        "portal-url": "Project:समाज मुखपृष्ठ",
        "feedback-error3": "त्रुटि: एपीआई से कोई प्रतिक्रिया नहीं",
        "feedback-message": "संदेश:",
        "feedback-subject": "विषय:",
-       "feedback-submit": "पà¥\8dरतिà¤\95à¥\8dरिया à¤­à¥\87à¤\9cें",
+       "feedback-submit": "à¤\9cमा à¤\95रें",
        "feedback-thanks": "धन्यवाद! आपकी प्रतिक्रिया पृष्ठ में नियुक्त किया गया है \"[ $2  $1 ]\"।",
        "searchsuggest-search": "खोज",
        "searchsuggest-containing": "...से युक्त",
index d77db57..4e3590d 100644 (file)
@@ -12,7 +12,8 @@
                        "아라",
                        "Soul Train",
                        "Filipinayzd",
-                       "SNN95"
+                       "SNN95",
+                       "Macofe"
                ]
        },
        "tog-underline": "Jorr ke niche line khicho:",
        "import-rootpage-nosubpage": "Root panna ke namespace \"$1\" sub panna ke nai allow kare hae.",
        "importlogpage": "Suchi ke import karo",
        "importlogpagetext": "Duusra wiki se panna aur badlao ke itihaas ke administrative imports.",
-       "import-logentry-upload": "file upload se [[$1]] ke import karaa gais hai",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|badlao|badlao}} import karaa gais hae",
-       "import-logentry-interwiki": "transwikied $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|badlao|badlao}} $2 se import karaa gais hae",
        "javascripttest": "JavaScript ke testing",
        "javascripttest-pagetext-noframework": "Ii panna ke JavaScript test ke kare ke khatir reserve karaa gais hae.",
        "logentry-upload-revert": "$1 {{GENDER:$2|upload karaa gais hae}} $3",
        "rightsnone": "(koi nai hai)",
        "revdelete-summary": "summary ke badlo",
+       "feedback-adding": "Panna me subject jorra jaawe hae...",
+       "feedback-bugcheck": "Julum! Khaali ii check karna ki ii ek pahile se jaana waala bugs me se nai hae [$1 known bugs].",
+       "feedback-bugnew": "Ham karaa hae. Nawaa bug ke report karo",
        "feedback-bugornote": "Agar aap ek technical problem ke detail me describe kare mangtaa hae tab meharbaani kar ke [$1 report a bug].\n\nNai to, aap niche ke sahaj form ke kaam me laae saktaa hae. Aap ke comment ke, aap ke naam ke saathe, panna \"[$3 $2]\" me jorra jaai.",
-       "feedback-subject": "Subject:",
-       "feedback-message": "Sandes:",
        "feedback-cancel": "Cancel karo",
-       "feedback-submit": "Feedback do",
-       "feedback-adding": "Panna me subject jorra jaawe hae...",
+       "feedback-close": "Kar dewa gais hae",
        "feedback-error1": "Error: Unrecognized result from API",
        "feedback-error2": "Error: Edit fail hoi gais hae",
        "feedback-error3": "Error: API se koi response nai mila",
+       "feedback-message": "Sandes:",
+       "feedback-subject": "Subject:",
+       "feedback-submit": "Submit karo",
        "feedback-thanks": "Dhanyabaad! Aap ke feedback ke panna \"[$2 $1]\" me post karaa gais hae.",
-       "feedback-close": "Kar dewa gais hae",
-       "feedback-bugcheck": "Julum! Khaali ii check karna ki ii ek pahile se jaana waala bugs me se nai hae [$1 known bugs].",
-       "feedback-bugnew": "Ham karaa hae. Nawaa bug ke report karo",
        "searchsuggest-search": "Khojo",
        "searchsuggest-containing": "isme hae.....",
        "api-error-badaccess-groups": "Aap ke ii wiki me file upload kare ke ijajat nai hae.",
index 56bcc01..2fed2d7 100644 (file)
@@ -27,7 +27,8 @@
                        "Tivek",
                        "Treecko",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Podcrtane poveznice",
        "disclaimers": "Odricanje od odgovornosti",
        "disclaimerpage": "Project:General_disclaimer",
        "edithelp": "Kako uređivati stranicu",
+       "helppage-top-gethelp": "Pomoć",
        "mainpage": "Glavna stranica",
        "mainpage-description": "Glavna stranica",
        "policy-url": "Project:Pravila",
        "filerenameerror": "Ne mogu preimenovati datoteku \"$1\" u \"$2\".",
        "filedeleteerror": "Ne mogu obrisati datoteku \"$1\".",
        "directorycreateerror": "Nije moguće kreirati direktorij \"$1\".",
+       "directoryreadonlyerror": "Direktorij \"$1\" je samo za čitanje.",
+       "directorynotreadableerror": "Direktorij \"$1\" ne može se pročitati.",
        "filenotfound": "Datoteka \"$1\" nije nađena.",
        "unexpected": "Neočekivana vrijednost: \"$1\"=\"$2\".",
        "formerror": "Pogreška: Ne mogu poslati podatke",
        "viewsourcetext": "Možete pogledati i kopirati izvorni sadržaj ove stranice:",
        "viewyourtext": "Možete vidjeti i kopirati tekst '''vaših uređivanja''' na ovoj stranici:",
        "protectedinterface": "Ova stranica je zaštićena od izmjena jer sadrži tekst MediaWiki softvera.\nAko želite prevesti neprevedenu poruku ili popraviti prijevod neke druge poruke za sve MediaWiki wikije, posjetite [//translatewiki.net/  translatewiki.net], projekt za lokalizaciju MediaWiki softvera.",
-       "editinginterface": "'''Upozorenje:''' Uređujete stranicu koja se rabi za prikaz teksta u sučelju softvera. Promjene učinjene na ovoj stranici će se odraziti na izgled korisničkog sučelja kod drugih suradnika. Za prijevod, razmotrite uporabu [//translatewiki.net/wiki/Main_Page?setlang=hr translatewiki.net], projekta lokalizacije MedijeWiki.",
+       "editinginterface": "<strong>Upozorenje:</strong> Uređujete stranicu koja se rabi za prikaz teksta u sučelju softvera. Promjene učinjene na ovoj stranici odrazit će se na izgled korisničkog sučelja kod drugih suradnika na ovoj wiki.",
        "translateinterface": "Za dodavanje ili promjenu prijevoda za sve wikije koristite [//translatewiki.net/ translatewiki.net], projekt za lokalizaciju MediaWikija.",
        "cascadeprotected": "Ova je stranica zaključana za uređivanja jer je uključena u {{PLURAL:$1|slijedeću stranicu|slijedeće stranice}}, koje su zaštićene \"prenosivom zaštitom\":\n$2",
        "namespaceprotected": "Ne možete uređivati stranice u imenskom prostoru '''$1'''.",
        "invalidtitle-knownnamespace": "Neispravan naziv imenskog prostora \"$2\" i teksta \"$3\"",
        "invalidtitle-unknownnamespace": "Neispravan naziv imenskog prostora broj $1 i teksta \"$2\"",
        "exception-nologin": "Niste prijavljeni",
-       "exception-nologin-text": "Ova stranica ili aktivnost zahtijeva da budete prijavljeni na ovom wikiju.",
+       "exception-nologin-text": "Molimo prijavite se ako želite pristup ovoj stranici ili djelovanje.",
+       "exception-nologin-text-manual": "Molimo $1 ako želite pristup ovoj stranici ili djelovanje.",
        "virus-badscanner": "Loša konfiguracija: nepoznati skener za viruse: ''$1''",
        "virus-scanfailed": "skeniranje neuspješno (kod $1)",
        "virus-unknownscanner": "nepoznati antivirus:",
        "gotaccountlink": "Prijavite se",
        "userlogin-resetlink": "Zaboravili ste detalje vaše prijave?",
        "userlogin-resetpassword-link": "Zaboravili ste zaporku?",
+       "userlogin-helplink2": "Pomoć pri prijavi",
        "userlogin-loggedin": "Već ste prijavljeni kao {{GENDER:$1|$1}}.\nRabite donji obrazac da biste se prijavili kao drugi suradnik.",
        "userlogin-createanother": "Stvori još jedan račun",
        "createacct-emailrequired": "Adresa e-pošte",
        "preview": "Pregled kako će stranica izgledati",
        "showpreview": "Prikaži kako će izgledati",
        "showdiff": "Prikaži promjene",
+       "blankarticle": "<strong>Upozorenje:</strong> Stvorili ste stranicu koja je prazna.\nAko iznova pritisnete na \"{{int:savearticle}}\", stranica će biti stvorena bez ikakvog sadržaja.",
        "anoneditwarning": "<strong>Upozorenje:</strong> niste prijavljeni. Ako napravite uređivanje, Vaša IP adresa će biti javno vidljiva. Ako se <strong>[$1 prijavite]</strong> ili <strong>[$2 stvorite račun]</strong>, Vaša uređivanja će biti pridružena suradničkom imenu, zajedno s ostalim pogodnostima.",
        "anonpreviewwarning": "''Niste prijavljeni. Spremanjem će Vaše IP adrese ostati zabilježene u starim izmjenama ove stranice.''",
        "missingsummary": "'''Podsjetnik:''' Niste unijeli sažetak promjena. Ako ponovno kliknete na \"Sačuvaj stranicu\", Vaše će promjene biti snimljene bez sažetka.",
+       "selfredirect": "<strong>Upozorenje:</strong> Stvarate preusmjeravanje na isti članak.\nMožda ste izabrali pogrješnu odredišnu stranicu za preusmjeravanje ili uređujete pogrješnu stranicu.\nAko pritisnete na \"{{int:savearticle}}\" još jednom, preusmjeravanje će svejedno biti stvoreno.",
        "missingcommenttext": "Molim unesite sažetak.",
        "missingcommentheader": "'''Podsjetnik:''' Niste napisali sažetak ovog komentara. Ako ponovno kliknete \"{{int:savearticle}}\", Vaš će komentar biti snimljen bez sažetka.",
        "summary-preview": "Pregled sažetka:",
        "content-failed-to-parse": "Obrada (''parsiranje'') formata $2 za model $1 nije uspjela: $3",
        "invalid-content-data": "Nevaljani sadržaj",
        "content-not-allowed-here": "Sadržaj napisan u obliku \"$1\"-a nije dozvoljen na stranici [[$2]]",
-       "editwarning-warning": "Napuštanje ove stranice može uzrokovati gubitak svake izmjene koju ste napravili.\nMožete onemogućiti ovo upozorenje u odjeljku \"{{int:prefs-editing}}\" Vaših postavki.",
+       "editwarning-warning": "Napuštanje ove stranice može uzrokovati gubitak svake izmjene koju ste napravili.\nAko ste prijavljeni, možete onemogućiti ovo upozorenje u odjeljku \"{{int:prefs-editing}}\" Vaših postavki.",
        "content-model-wikitext": "wikitekst",
        "content-model-text": "obični tekst",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "content-json-empty-object": "Prazan objekt",
+       "content-json-empty-array": "Prazno polje",
        "expensive-parserfunction-warning": "Upozorenje: Ova stranica sadrži previše opterećujućih poziva parserskih funkcija\n\nTrebala bi imati manje od $2 {{PLURAL:$2|poziva|poziva}}, sada ima {{PLURAL:$1|$1 poziv|$1 poziva}}.",
        "expensive-parserfunction-category": "Stranice s previše poziva opterećujućih parserskih funkcija",
        "post-expand-template-inclusion-warning": "Upozorenje: Veličina uključenih predložaka je prevelika.\nNeki predlošci neće biti uključeni.",
        "undo-success": "Izmjena je uklonjena (tekst u okviru ispod ne sadrži posljednju izmjenu). Molim sačuvajte stranicu (provjerite sažetak).",
        "undo-failure": "Ova izmjena ne može biti uklonjena zbog postojanja međuinačica.",
        "undo-norev": "Izmjena nije mogla biti uklonjena jer ne postoji ili je obrisana.",
+       "undo-nochange": "Čini se da je uređivanje već otkazano.",
        "undo-summary": "uklanjanje izmjene $1 {{GENDER:$2|suradnika|suradnice}} [[Posebno:Doprinosi/$2|$2]] ([[Razgovor sa suradnikom:$2|razgovor]])",
        "cantcreateaccounttitle": "Nije moguće stvoriti suradnički račun",
        "cantcreateaccount-text": "Otvaranje suradničkog računa ove IP adrese ('''$1''') blokirao/la je [[User:$3|$3]].\n\nRazlog koji je dao/la $3 je ''$2''",
        "logdelete-selected": "{{PLURAL:$1|Odabrani zapis u evidenciji|Odabrani zapisi u evidenciji}}:",
        "revdelete-text-text": "Izbrisane izmjene će i dalje biti vidljive u povijesti stranice, ali dijelovi sadržaja neće biti vidljivi javno.",
        "logdelete-text": "Izbrisane izmjene i dalje će biti vidljive u evidencijama, ali dijelovi njihova sadržaja biti će nedostupni za javnost.",
-       "revdelete-text-others": "Ostali administratori na projektu {{SITENAME}} će moći vidjeti i vratiti izbrisani sadržaj na isti način, osim ako nisu postavljena dodatna ograničenja.",
+       "revdelete-text-others": "Ostali administratori na projektu moći će pristupiti izbrisanom sadržaju i vratiti ga, osim ako nisu postavljena dodatna ograničenja.",
        "revdelete-confirm": "Molimo potvrdite da namjeravate ovo učiniti, da razumijete posljedice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].",
-       "revdelete-suppress-text": "Sklanjanje uređivanja treba raditi '''iznimno''' u slijedećih par slučajeva:\n* Privatne informacije neprilične javnom mediju tipa\n*: ''kućna adresa i broj telefona, JMBG ili OIB, itd.''",
+       "revdelete-suppress-text": "Sklanjanje uređivanja treba raditi <strong>iznimno</strong> u sljedećih par slučajeva:\n* moguće klevetničke informacije\n* neprikladne osobne informacije \n*: <em>kućna adresa i broj telefona, JMBG ili OIB, itd.</em>",
        "revdelete-legend": "Postavi ograničenja na izmjenu:",
        "revdelete-hide-text": "Sakrij tekst izmjene",
        "revdelete-hide-image": "Sakrij sadržaj datoteke (sakrij sliku)",
        "revdelete-hide-user": "Sakrij suradnikovo ime/IP adresu",
        "revdelete-hide-restricted": "Postavi ograničenja i za administratore kao i za ostale suradnike",
        "revdelete-radio-same": "(ne mijenjaj)",
-       "revdelete-radio-set": "Da",
-       "revdelete-radio-unset": "Ne",
+       "revdelete-radio-set": "Skriven",
+       "revdelete-radio-unset": "Vidljivo",
        "revdelete-suppress": "Sakrij podatke od administratora i ostalih suradnika",
        "revdelete-unsuppress": "Ukloni ograničenja na vraćenim izmjenama",
        "revdelete-log": "Razlog:",
        "searchall": "sve",
        "showingresults": "Dolje {{PLURAL:$1|je prikazan '''$1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}}, počevši od '''$2'''.",
        "showingresultsinrange": "Dolje {{PLURAL:$1|je prikazan '''$1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}}, u rasponu od '''$2''' do '''$3'''.",
+       "search-showingresults": "{{PLURAL:$4|Rezultat <strong>$1</strong> od <strong>$3</strong>|Rezultati <strong>$1 - $2</strong> od <strong>$3</strong>}}",
        "search-nonefound": "Ne postoje rezultati koji se podudaraju s upitom.",
        "powersearch-legend": "Napredno pretraživanje",
        "powersearch-ns": "Traži u imenskom prostoru:",
        "preferences": "Postavke",
        "mypreferences": "Moje postavke",
        "prefs-edits": "Broj uređivanja:",
+       "prefsnologintext2": "Molimo Vas prijavite se da biste promijenili postavke.",
        "prefs-skin": "Izgled",
        "skin-preview": "Pregled",
        "datedefault": "Nemoj postaviti",
        "gender-female": "Ženski",
        "prefs-help-gender": "Mogućnost softvera da ispravno oslovljava razlikujući spol. Ovaj će podatak biti javan.",
        "email": "Adresa elektroničke pošte *",
-       "prefs-help-realname": "Pravo ime nije obvezno. Ako ga navedete, bit će korišteno za pravnu atribuciju Vaših doprinosa.",
+       "prefs-help-realname": "Pravo ime nije obvezno. Ako ga navedete, može biti rabljeno za pripisivanje Vaših doprinosa.",
        "prefs-help-email": "E-mail adresa nije obvezna, ali je potrebna za obnovu lozinke u slučaju da ju zaboravite.",
        "prefs-help-email-others": "Također možete odabrati da vas ostali kontaktiraju preko vaše suradničke ili stranice za razgovor bez javnog otkrivanja vašeg identiteta.",
        "prefs-help-email-required": "Potrebno je navesti adresu e-pošte (e-mail).",
        "prefs-displaywatchlist": "Mogućnosti prikaza",
        "prefs-diffs": "razl",
        "prefs-help-prefershttps": "Ova mogućnost će stupiti na snagu kod sljedeće prijave.",
+       "prefswarning-warning": "Napravili ste promjene u Vašim postavkama koje još nisu snimljene.\nAko napustite ovu stranicu bez pritiska na \"$1\", postavke neće biti ažurirane.",
+       "prefs-tabs-navigation-hint": "Savjet: možete rabiti tipke sa strjelicama lijevo i desno za prebacivanje između kartica na popisu kartica.",
        "email-address-validity-valid": "Adresa e-pošte pokazuje se ispravnom",
        "email-address-validity-invalid": "Unesite valjanu adresu e-pošte",
        "userrights": "Upravljanje suradničkim pravima",
        "userrights-notallowed": "Vaš trenutačni suradnički račun nema ovlasti mijenjanja suradničkih prava.",
        "userrights-changeable-col": "Skupine koje možete promijeniti",
        "userrights-unchangeable-col": "Skupine koje ne možete promijeniti",
+       "userrights-conflict": "Sukob promjene suradničkih prava! Molimo provjerite i potvrdite svoje promjene.",
+       "userrights-removed-self": "Uspješno ste uklonili svoja vlastita prava. Kao takvi, više niste u mogućnosti pristupiti ovoj stranici.",
        "group": "Skupina:",
        "group-user": "Suradnici",
        "group-autoconfirmed": "automatski potvrđeni suradnici",
        "action-createpage": "stvaranje stranica",
        "action-createtalk": "stvaranje stranica za razgovor",
        "action-createaccount": "stvaranje ovog suradničkog računa",
+       "action-history": "Vidi povijest uređivanja ove stranice",
        "action-minoredit": "označavanje ove izmjene kao manju",
        "action-move": "premještanje ove stranice",
        "action-move-subpages": "premještanje ove stranice, i njenih podstranica",
        "windows-nonascii-filename": "Ovaj wiki ne podržava imena datoteka s posebnim znakovima.",
        "fileexists": "Datoteka s ovim imenom već postoji, pogledajte <strong>[[:$1]]</strong> ako niste sigurni želite li je uistinu promijeniti.\n[[$1|thumb]]",
        "filepageexists": "Opis stranice za ovu datoteku je već napravljen ovdje <strong>[[:$1]]</strong>, ali datoteka sa ovim nazivom trenutno ne postoji.\nSažetak koji ste naveli neće se pojaviti na stranici opisa.\nDa bi se Vaš opis ovdje našao, potrebno je da ga ručno uredite.\n[[$1|thumb]]",
-       "fileexists-extension": "Već postoji datoteka sa sličnim imenom: [[$2|thumb]]\n* Ime datoteke koju postavljate: <strong>[[:$1]]</strong>\n* Ime postojeće datoteke: <strong>[[:$2]]</strong>\nMolimo da izaberete drugo ime.",
+       "fileexists-extension": "Već postoji datoteka sa sličnim imenom: [[$2|thumb]]\n* Ime datoteke koju postavljate: <strong>[[:$1]]</strong>\n* Ime postojeće datoteke: <strong>[[:$2]]</strong>\nŽelite li možda izabrati više različito ime?",
        "fileexists-thumbnail-yes": "Datoteka je najvjerojatnije slika u smanjenoj veličini ''(thumbnail)''. [[$1|thumb]]\nMolimo provjerite datoteku <strong>[[:$1]]</strong>.\nUkoliko je ta datoteka ista kao i ova koju ste upravo pokušali snimiti, samo u višoj rezoluciji, nije nužno snimanje smanjenje slike ''(thumbnaila)'', prikazivanje smanjene slike iz izvornika radi se softverski.",
        "file-thumbnail-no": "Ime datoteke počinje s <strong>$1</strong>.\nČini se da je to slika smanjene veličine ''(minijatura)''.\nUkoliko imate ovu sliku u punoj razlučljivosti (rezoluciji) postavite tu sliku, u protivnom, molimo promijenite ime datoteke.",
        "fileexists-forbidden": "Datoteka s ovim imenom već postoji i ne može biti presnimljena.\nAko i dalje želite postaviti svoju datoteku, molimo vratite se i odaberite novo ime. [[File:$1|thumb|center|$1]]",
        "license": "Licencija:",
        "license-header": "Licencija",
        "nolicense": "Ništa nije odabrano",
+       "licenses-edit": "Uredi izbor licencija",
        "license-nopreview": "(Prikaz nije moguć)",
-       "upload_source_url": " (valjani, javno dostupni URL)",
-       "upload_source_file": "(datoteka na Vašem računalu)",
+       "upload_source_url": " (izabrali ste datoteku s valjanog, javno dostupnog URL-a)",
+       "upload_source_file": "(izabrali ste datoteku s Vašeg računala)",
+       "listfiles-delete": "izbriši",
        "listfiles-summary": "Ova stranica pokazuje sve postavljene datoteke.\nKad je filtriran po suradniku, popis prikazuje samo one datoteke čije je posljednje inačice postavio taj suradnik.",
        "listfiles_search_for": "Traži ime slike:",
        "imgfile": "datoteka",
        "unusedtemplateswlh": "druge poveznice",
        "randompage": "Slučajna stranica",
        "randompage-nopages": "Nema stranica u {{PLURAL:$2|imenskom prostoru|imenskim prostorima}}: $1.",
+       "randomincategory": "Slučajna stranica u kategoriji",
+       "randomincategory-invalidcategory": "\"$1\" nije valjano ime kategorije.",
+       "randomincategory-category": "Kategorija:",
        "randomredirect": "Slučajno preusmjeravanje",
        "randomredirect-nopages": "Nema preusmjeravanja u imenskom prostoru \"$1\".",
        "statistics": "Statistika",
        "protectedpages-indef": "Samo neograničene zaštite",
        "protectedpages-cascade": "Samo prenosiva zaštita",
        "protectedpagesempty": "Nema zaštićenih stranica koje ispunjavaju uvjete koje ste postavili.",
+       "protectedpages-page": "Stranica",
+       "protectedpages-expiry": "Istječe",
+       "protectedpages-params": "Stupanj zaštite",
+       "protectedpages-reason": "Razlog",
        "protectedtitles": "Zaštićeni naslovi",
        "protectedtitlesempty": "Nijedan naslov nije trenutačno zaštićen s tim parametrima.",
        "listusers": "Popis suradnika",
        "listgrouprights-removegroup-self": "Ukloni {{PLURAL:$2|skupinu|skupine}} iz vlastitog računa: $1",
        "listgrouprights-addgroup-self-all": "Dodaj sve skupine vlastitom računu",
        "listgrouprights-removegroup-self-all": "Uklonite sve skupine iz vlastitog računa",
+       "listgrouprights-namespaceprotection-namespace": "Imenski prostor",
        "trackingcategories-nodesc": "Opis nije dostupan.",
        "mailnologin": "Nema adrese pošiljaoca",
        "mailnologintext": "Morate biti [[Special:UserLogin|prijavljeni]]\ni imati valjanu adresu e-pošte u svojim [[Special:Preferences|postavkama]]\nda bi mogli slati poštu drugim suradnicima.",
        "import-rootpage-nosubpage": "Imenski prostor \"$1\" početne stranice ne dopušta podstranice.",
        "importlogpage": "Evidencija uvoza članaka",
        "importlogpagetext": "Administrativni uvoz stranica s poviješću uređivanja s drugih wikija.",
-       "import-logentry-upload": "uvezeno [[$1]] uvozom datoteke",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|izmjena|izmjene|izmjena}}",
-       "import-logentry-interwiki": "transwiki uvezeno $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|promjena|promjene|promjena}} od $2",
        "javascripttest": "Testiranje JavaScripta",
        "javascripttest-pagetext-noframework": "Ova je stranica rezervirana za izvršavanje JavaScript testova.",
        "spam_reverting": "Vraćam na posljednju inačicu koja ne sadrži poveznice na $1",
        "spam_blanking": "Sve inačice sadrže poveznice na $1, brišem cjelokupni sadržaj",
        "spam_deleting": "Sve inačice sadržale su poveznice na $1, brišem cjelokupni sadržaj",
-       "simpleantispam-label": "Anti-spam provjera.\n'''Ne''' ispunjavajte ovo!",
+       "simpleantispam-label": "Anti-spam provjera.\n<strong>NE</strong> ispunjavajte ovo!",
        "pageinfo-title": "Podatci o stranici \"$1\"",
        "pageinfo-not-current": "Nema podataka o uređivanju za najstarija uređivanja stranice.",
        "pageinfo-header-basic": "Osnovni podatci",
        "hours-ago": "prije $1 {{PLURAL:$1|sat|sata|sati}}",
        "minutes-ago": "prije $1 {{PLURAL:$1|minute|minuta}}",
        "seconds-ago": "prije $1 {{PLURAL:$1|sekunde|sekundi}}",
+       "monday-at": "u ponedjeljak u $1",
+       "tuesday-at": "u utorak u $1",
+       "wednesday-at": "u srijedu u $1",
+       "thursday-at": "u četvrtak u $1",
+       "friday-at": "u petak u $1",
+       "saturday-at": "u subotu u $1",
+       "sunday-at": "u nedjelju u $1",
+       "yesterday-at": "Jučer u $1",
        "bad_image_list": "Rabi se sljedeći format:\n\nSamo retci koji počinju sa zvjezdicom su prikazani. Prva poveznica u retku mora biti poveznica na nevaljanu sliku.\nSvaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se slike pojavljuju ''inline''.",
        "variantname-sr-ec": "ćirilica",
        "variantname-sr-el": "latinica",
        "confirm-watch-top": "Dodajte ovu stranicu na Vaš popis praćenih stranica",
        "confirm-unwatch-button": "U redu",
        "confirm-unwatch-top": "Ukloni ovu stranicu s popisa praćenja?",
+       "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← prethodna slika",
        "imgmultipagenext": "sljedeća slika →",
        "imgmultigo": "Kreni!",
        "imgmultigoto": "Idi na stranicu $1",
+       "img-lang-default": "(zadani jezik)",
+       "img-lang-go": "Idi",
        "ascending_abbrev": "rast",
        "descending_abbrev": "pad",
        "table_pager_next": "Sljedeća stranica",
        "watchlistedit-raw-done": "Vaš popis praćenja je snimljen.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 stranica je dodana|$1 stranice su dodane}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 stranica je uklonjena|$1 stranice su ukonjene}}:",
+       "watchlistedit-clear-title": "Očišćen popis praćenja",
+       "watchlistedit-clear-legend": "Obriši popis praćenja",
        "watchlistedit-clear-explain": "Sve stavke s popisa praćenja će biti izbrisane",
+       "watchlistedit-clear-titles": "Imena stranica:",
+       "watchlistedit-clear-submit": "Izbriši popis praćenja (ovo je nepovratno!)",
+       "watchlistedit-clear-done": "Vaš je popis praćenja obrisan.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|1 je stranica uklonjena|$1 su stranice ukonjene}}:",
+       "watchlisttools-clear": "Obriši popis praćenja",
        "watchlisttools-view": "Pregled promjena praćenih stranica",
        "watchlisttools-edit": "Pregled i uređivanje praćenih stranica",
        "watchlisttools-raw": "Uređivanje praćenih stranica u okviru za uređivanje",
        "duplicate-defaultsort": "'''Upozorenje:''' Razvrstavanje po \"$2\" poništava ranije razvrstavanje po \"$1\".",
        "version": "Inačica softvera",
        "version-extensions": "Instalirana proširenja",
-       "version-skins": "Izgledi",
+       "version-skins": "Postavljeni izgledi",
        "version-specialpages": "Posebne stranice",
        "version-parserhooks": "Kuke parsera",
        "version-variables": "Varijable",
        "version-version": "($1)",
        "version-license": "Licenca",
        "version-ext-license": "Licenca",
+       "version-ext-colheader-name": "Dodatak",
+       "version-skin-colheader-name": "Izgled",
        "version-ext-colheader-version": "Verzija",
        "version-ext-colheader-license": "Licenca",
        "version-ext-colheader-description": "Opis",
        "version-ext-colheader-credits": "Autori",
+       "version-license-title": "Licencija za $1",
+       "version-license-not-found": "Za ovaj dodatak nema detaljnih informacija o licenciji.",
        "version-poweredby-credits": "Ovaj wiki pogoni '''[https://www.mediawiki.org/ MediaWiki]''', autorska prava © 2001-$1 $2.",
        "version-poweredby-others": "ostali",
        "version-credits-summary": "Željeli bismo zahvaliti sljedećim suradnicima na njihovom doprinosu [[Special:Version|MediaWikiju]].",
        "version-entrypoints": "URL adresa instalacije",
        "version-entrypoints-header-entrypoint": "Početna adresa",
        "version-entrypoints-header-url": "URL",
+       "version-libraries": "Instalirane biblioteke",
+       "version-libraries-version": "Inačica",
        "redirect-submit": "Idi",
        "redirect-value": "Vrijednost:",
        "redirect-user": "ID suradnika",
        "tags-active-yes": "Da",
        "tags-active-no": "Ne",
        "tags-edit": "uredi",
+       "tags-delete": "izbriši",
+       "tags-activate": "pokreni",
+       "tags-deactivate": "isključi",
        "tags-hitcount": "$1 {{PLURAL:$1|promjena|promjene|promjena}}",
+       "tags-manage-no-permission": "Nemate pravo upravljati promjenama oznaka.",
+       "tags-create-heading": "Stvori novu oznaku",
+       "tags-create-tag-name": "Naziv oznake:",
+       "tags-create-reason": "Razlog:",
+       "tags-create-submit": "Stvori",
+       "tags-create-no-name": "Morate navesti ime oznake.",
+       "tags-create-already-exists": "Oznaka \"$1\" već postoji.",
+       "tags-create-warnings-below": "Želite li nastaviti stvaranje oznake?",
+       "tags-delete-title": "Izbriši oznaku",
+       "tags-delete-reason": "Razlog:",
+       "tags-delete-not-found": "Oznaka \"$1\" ne postoji.",
+       "tags-activate-title": "Pokreni oznaku",
+       "tags-activate-reason": "Razlog:",
+       "tags-activate-not-allowed": "Nije moguće pokrenuti oznaku \"$1\".",
+       "tags-activate-not-found": "Oznaka \"$1\" ne postoji.",
+       "tags-activate-submit": "Pokreni",
+       "tags-deactivate-title": "Isključi oznaku",
+       "tags-deactivate-question": "Isključit ćete oznaku \"$1\".",
+       "tags-deactivate-reason": "Razlog:",
+       "tags-deactivate-not-allowed": "Nije moguće isključiti oznaku \"$1\".",
+       "tags-deactivate-submit": "Isključi",
        "comparepages": "Usporedite stranice",
        "compare-page1": "Stranica 1",
        "compare-page2": "Stranica 2",
        "compare-revision-not-exists": "Navedena izmjena stranice ne postoji.",
        "dberr-problems": "Ispričavamo se! Ova stranica ima tehničkih poteškoća.",
        "dberr-again": "Pričekajte nekoliko minuta i ponovno učitajte.",
-       "dberr-info": "(Ne mogu se spojiti na poslužitelj baze: $1)",
-       "dberr-info-hidden": "(Ne mogu se spojiti na poslužitelj baze)",
+       "dberr-info": "(Ne mogu pristupiti bazi podataka: $1)",
+       "dberr-info-hidden": "(Ne mogu pristupiti bazi podataka)",
        "dberr-usegoogle": "U međuvremenu pokušajte tražiti putem Googlea.",
        "dberr-outofdate": "Imajte na umu da su njihova kazala našeg sadržaja možda zastarjela.",
        "dberr-cachederror": "Sljedeće je dohvaćena kopija tražene stranice, te možda nije ažurirana.",
        "htmlform-no": "Ne",
        "htmlform-yes": "Da",
        "htmlform-chosen-placeholder": "Odaberite opciju",
+       "htmlform-cloner-create": "Dodaj još",
+       "htmlform-cloner-delete": "Ukloni",
+       "htmlform-cloner-required": "Potrebna je barem jedna vrijednost.",
        "sqlite-has-fts": "$1 s podrškom pretraživanja cijelog teksta",
        "sqlite-no-fts": "$1 bez podrške pretraživanja cijelog teksta",
        "logentry-delete-delete": "$1 je {{GENDER:$2|obrisao|obrisala}} stranicu $3",
        "rightsnone": "(suradnik)",
        "revdelete-summary": "sažetak",
        "feedback-adding": "Dodajem povratne informacije na stranicu...",
+       "feedback-back": "Natrag",
        "feedback-bugcheck": "Izvrsno! Molimo provjerite da se ne radi o nekom [$1 poznatom \"bugu\"].",
        "feedback-bugnew": "Provjereno. Prijavi novi \"bug\"",
        "feedback-bugornote": "Ako ste spremni detaljno opisati tehnički problem molimo [$1 prijavite \"bug\"].\nInače, možete ispuniti jednostavan obrazac u nastavku. Vaš komentar biti će dodan na stranicu \"[$3 $2]\", zajedno s vašim suradničkim imenom i imenom internetskog preglednika koji rabite.",
        "feedback-cancel": "Odustani",
        "feedback-close": "Gotovo",
+       "feedback-error-title": "Pogrješka",
        "feedback-error1": "Pogreška: Neprepoznati rezultat od API funkcije",
        "feedback-error2": "Pogreška: Uređivanje nije uspjelo",
        "feedback-error3": "Pogreška: Nema odgovora od API funkcije",
        "feedback-message": "Poruka:",
        "feedback-subject": "Tema:",
-       "feedback-submit": "Pošaljite povratnu informaciju",
+       "feedback-submit": "Predaj",
        "feedback-thanks": "Hvala! Vaš odgovor je snimljen na stranicu \"[$2 $1]\".",
+       "feedback-thanks-title": "Hvala!",
        "searchsuggest-search": "Traži",
        "searchsuggest-containing": "sadrži....",
        "api-error-badaccess-groups": "Nemate ovlasti za postavljanje datoteka na ovu wiki.",
index 1b14141..f998e5f 100644 (file)
@@ -12,7 +12,8 @@
                        "Tlustulimu",
                        "לערי ריינהארט",
                        "아라",
-                       "Mikławš"
+                       "Mikławš",
+                       "Macofe"
                ]
        },
        "tog-underline": "Wotkazy podšmórnić:",
        "import-rootpage-nosubpage": "Mjenowy rum \"$1\" korjenjoweje strony njedowola podstrony.",
        "importlogpage": "Protokol importow",
        "importlogpagetext": "To je lisćina importowanych stronow ze stawiznami z druhich wikijow.",
-       "import-logentry-upload": "strona [[$1]] bu přez nahraće importowana",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|wersija|wersiji|wersije|wersijow}}",
-       "import-logentry-interwiki": "je stronu $1 z druheho wikija přenjesł",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|wersija|wersiji|wersije|wersijow}} z $2 {{PLURAL:$1|importowana|importowanej|importowane|importowane}}",
        "javascripttest": "JavaScriptowy test",
        "javascripttest-pagetext-noframework": "Tuta strona je za přewjedźenje javascriptowych testow přewostajena.",
        "feedback-error3": "Zmylk: Žana wotmołwa wot API",
        "feedback-message": "Powěsć:",
        "feedback-subject": "Tema:",
-       "feedback-submit": "Komentar wotpósłać",
+       "feedback-submit": "Wotpósłać",
        "feedback-thanks": "Dźakujemy so! Twój komentar je so k stronje \"[$2 $1]\" pósłał.",
        "searchsuggest-search": "Pytać",
        "searchsuggest-containing": "wobsahuje...",
index 7fb5118..36edd25 100644 (file)
@@ -37,7 +37,8 @@
                        "Csega",
                        "ViDam",
                        "Adam78",
-                       "Grin"
+                       "Grin",
+                       "Macofe"
                ]
        },
        "tog-underline": "Hivatkozások aláhúzása:",
        "feedback-error3": "Hiba: nem érkezett válasz az API-tól",
        "feedback-message": "Üzenet:",
        "feedback-subject": "Tárgy:",
-       "feedback-submit": "Visszajelzés elküldése",
+       "feedback-submit": "Elküldés",
        "feedback-thanks": "Köszönjük. A visszajelzésed elküldve a „[$2 $1]” laphoz.",
        "searchsuggest-search": "Keresés",
        "searchsuggest-containing": "tartalmazza…",
index 9738363..df1f38a 100644 (file)
@@ -12,7 +12,8 @@
                        "Yfdyh000",
                        "לערי ריינהארט",
                        "아라",
-                       "Carlosedepaula"
+                       "Carlosedepaula",
+                       "Macofe"
                ]
        },
        "tog-underline": "Sublinear ligamines:",
        "feedback-error3": "Error: Nulle responsa del API",
        "feedback-message": "Message:",
        "feedback-subject": "Subjecto:",
-       "feedback-submit": "Submitter opinion",
+       "feedback-submit": "Submitter",
        "feedback-thanks": "Gratias! Tu evalutation ha essite publicate in le pagina \"[$2 $1]\".",
        "searchsuggest-search": "Cercar",
        "searchsuggest-containing": "continente...",
index 940e34b..c2b5f9b 100644 (file)
@@ -17,7 +17,8 @@
                        "Urhixidur",
                        "Ævar Arnfjörð Bjarmason",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Undirstrika tengla:",
        "feedback-error3": "Villa: Ekkert svar frá API",
        "feedback-message": "Skilaboð:",
        "feedback-subject": "Fyrirsögn:",
-       "feedback-submit": "Senda svörun",
+       "feedback-submit": "Senda",
        "feedback-thanks": "Takk! Ábendingu þinni hefur verið bætt við á síðuna \"[$2 $1]\".",
        "searchsuggest-search": "Leita",
        "searchsuggest-containing": "sem innihalda ...",
index e49bade..4fddc66 100644 (file)
@@ -80,7 +80,9 @@
                        "Macofe",
                        "Ricordisamoa",
                        "Horcrux92",
-                       "Toadino2"
+                       "Toadino2",
+                       "Purodha",
+                       "TecnoMaster"
                ]
        },
        "tog-underline": "Sottolinea i collegamenti:",
        "unusedimages": "File non utilizzati",
        "wantedcategories": "Categorie richieste",
        "wantedpages": "Pagine più richieste",
+       "wantedpages-summary": "Elenco delle pagine inesistenti con il maggior numero di collegamenti a loro, escludendo le pagine che hanno solo i reindirizzamenti che li collegano. Per un elenco di pagine inesistenti che hanno reindirizzamenti che li collegano, vedere [[{{#special: BrokenRedirects}}]].",
        "wantedpages-badtitle": "Titolo non valido nel gruppo di risultati: $1",
        "wantedfiles": "File richiesti",
        "wantedfiletext-cat": "I seguenti file sono utilizzati, ma non esistono. I file ospitati su repository esterni potrebbero essere elencati anche se di fatto esistenti. Questi falsi positivi saranno <del>barrati</del>. Le pagine che incorporano i file che non esistono sono elencate in [[:$1]].",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|ha caricato}} una nuova versione di $3.",
        "logentry-upload-revert": "$1 {{GENDER:$2|ha caricato}} $3",
        "log-name-managetags": "Registro gestione tag",
-       "log-description-managetags": "Questa pagina elenca le azioni di gestione relative alle [[Speciale:Etichette|etichette]]. Il registro contiene solo le azioni effettuate manualmente da un amministratore; le etichette potrebbero essere create o cancellate dal programma wiki senza che ciò venga registrato qui.",
+       "log-description-managetags": "Questa pagina elenca le azioni di gestione relative alle [[Special:Tags|etichette]]. Il registro contiene solo le azioni effettuate manualmente da un amministratore; le etichette potrebbero essere create o cancellate dal programma wiki senza che ciò venga registrato qui.",
        "logentry-managetags-create": "$1 {{GENERE:$2|ha creato}} il tag \"$4\"",
        "logentry-managetags-delete": "$1 {{GENDER:$2|ha rimosso}} l'etichetta \"$4\" (da $5 {{PLURAL:$5|versione o voce di registro|versioni o voci di registro}})",
        "logentry-managetags-activate": "$1 {{GENDER:$2|ha inserito}} l'etichetta \"$4\" per l'uso da parte d'utenti e bot",
index 5a4472c..4fd5441 100644 (file)
@@ -14,7 +14,8 @@
                        "Rex",
                        "StefanusRA",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Garisen ngisoré pranala:",
        "import-rootpage-nosubpage": "Ruang nama \"$1\" di halaman turunan tidak mengizinkan subhalaman.",
        "importlogpage": "Log impor",
        "importlogpagetext": "Impor administratif kaca-kaca mawa sajarah panyuntingan saka wiki liya.",
-       "import-logentry-upload": "ngimpor [[$1]] mawa pangunggahan berkas",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|révisi|révisi}}",
-       "import-logentry-interwiki": "wis nge-transwiki $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|révisi}} saka $2",
        "javascripttest": "Panjajalan JavaScript",
        "javascripttest-pagetext-noframework": "Kaca iki disadhiyakaké kanggo nglakokaké panjajalan JavaScript.",
        "feedback-error3": "Kasalahan: Ora ana tanggepan saka API",
        "feedback-message": "Layang:",
        "feedback-subject": "Jejer:",
-       "feedback-submit": "Kirim Lebon Saran",
+       "feedback-submit": "Kirim",
        "feedback-thanks": "Nuwun! Lebon saran Sampéyan wis dipasang nèng kacané \"[$2 $1]\".",
        "searchsuggest-search": "Golèk",
        "searchsuggest-containing": "ngisi...",
index 3c5f492..0109798 100644 (file)
@@ -21,7 +21,8 @@
                        "ka.wikipedia.org sysops",
                        "לערי ריינהארט",
                        "გიორგიმელა",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "ბმულების ხაზგასმა:",
        "changeemail-submit": "ელ-ფოსტის შეცვლა",
        "changeemail-throttled": "თქვენ უკვე ძალიან ბევრჯერ სცადეთ შესვლა.\nგთხოვთ, მოიცადოთ $1, სანამ კიდევ სცდიდეთ.",
        "resettokens": "ტოკენების ჩამოყრა",
+       "resettokens-text": "თქვენ შეგიძლიათ ჩამოყაროთ ტოკენები, რომლებიც შესაძლებლობას იძლევიან შესვლას განსაზღვრულ პირად მონაცემებში დაკავშირებულს თქვენ ანგარიშთან აქ. \n\nთქვენ ეს აუცილებლად უნდა გააკეთოთ, თუ თქვენ ის შემთხვევით გააცანით სხვას ან თუკი თქვენი ანგარიში იქნა გატეხილი.",
        "resettokens-legend": "ტოკენების ჩამოყრა",
        "resettokens-tokens": "ჟეტონები:",
        "resettokens-token-label": "$1 (მიმდინარე მნიშვნელობა: $2)",
+       "resettokens-watchlist-token": "ტოკენი ვებ-არხისთვის (Atom/RSS) [[Special:Watchlist|გვერდების ცვლილებები თქვენ კონტროლის სიაში]]",
        "resettokens-resetbutton": "არჩეული ტოკენების ჩამოყრა",
        "bold_sample": "მუქი ტექსტი",
        "bold_tip": "მუქი ტექსტი",
        "feedback-error3": "შეცდომა. არ არის API-ს პასუხი .",
        "feedback-message": "შეტყობინება:",
        "feedback-subject": "თემა:",
-       "feedback-submit": "á\83¨á\83\94á\83¤á\83\90á\83¡á\83\94á\83\91á\83\98á\83¡ á\83\92á\83\90á\83\92á\83\96á\83\90á\83\95á\83\9cა",
+       "feedback-submit": "á\83\9bá\83\98á\83¦á\83\94á\83\91ა",
        "feedback-thanks": "გმადლობთ! თქვენი შეფასება განთავსებულია „[$2 $1]“ გვერდზე.",
        "searchsuggest-search": "ძიება",
        "searchsuggest-containing": "შეიცავს...",
index 9d18201..2906e05 100644 (file)
@@ -10,7 +10,8 @@
                        "Kaztrans",
                        "Balnur.s",
                        "Нұрлан Рахымжанов",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Сілтеменің астын сызу:",
        "feedback-error2": "Қате: Өңдеме сәтсіздікке ұшырады",
        "feedback-message": "Хабарлама:",
        "feedback-subject": "Тақырып:",
-       "feedback-submit": "Ð\9aеÑ\80Ñ\96 Ð±Ð°Ð¹Ð»Ð°Ð½Ñ\8bÑ\81Ñ\82Ñ\8b Ð¶іберу",
+       "feedback-submit": "Ð\96іберу",
        "feedback-thanks": "Рахмет! Сіздің кері байланысыңыз \"[$2 $1]\" бетіне қойылды.",
        "searchsuggest-search": "Іздеу",
        "searchsuggest-containing": "қамтылуда...",
index 049cc34..f0a7ef5 100644 (file)
@@ -14,7 +14,8 @@
                        "គីមស៊្រុន",
                        "តឹក ប៊ុនលី",
                        "វ័ណថារិទ្ធ",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "គូសបន្ទាត់ក្រោម​តំណភ្ជាប់៖",
        "import-upload": "ផ្ទុកឡើងទិន្នន័យ XML",
        "import-invalid-interwiki": "មិន​អាច​នាំ​ចូល​ពី​វិគី​ដែល​បាន​បញ្ជាក់​។",
        "importlogpage": "កំណត់ហេតុនៃការនាំចូល",
-       "import-logentry-upload": "បាននាំចូល [[$1]] ដោយការផ្ទុកឡើង ឯកសារ",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|កំណែ}}",
-       "import-logentry-interwiki": "បាននាំចូល$1ពីវិគីផ្សេងទៀត",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|កំណែ}} ពី $2",
        "tooltip-pt-userpage": "ទំព័រអ្នកប្រើប្រាស់​របស់អ្នក​",
        "tooltip-pt-mytalk": "ទំព័រពិភាក្សា​របស់អ្នក​",
        "feedback-error3": "បញ្ហា៖ គ្មានចម្លើយតបពី API",
        "feedback-message": "សារ​៖",
        "feedback-subject": "កម្មវត្ថុ ៖",
-       "feedback-submit": "ដាក់ស្នើមតិយោបល់",
+       "feedback-submit": "ដាក់ស្នើ",
        "feedback-thanks": "សូមអរគុណ! មតិយោបល់របស់អ្នកត្រូវបានដាក់ផ្សាយនៅលើទំព័រ \"[$2 $1]\"។",
        "searchsuggest-search": "ស្វែងរក​",
        "searchsuggest-containing": "ដែលមានពាក្យ...",
index 876b286..a3bf59e 100644 (file)
@@ -44,7 +44,8 @@
                        "Namoroka",
                        "양념파닭",
                        "콩가루",
-                       "Twotwo2019"
+                       "Twotwo2019",
+                       "SeoJeongHo"
                ]
        },
        "tog-underline": "링크에 밑줄:",
        "missingcommentheader": "'''알림:''' 글의 제목을 입력하지 않았습니다.\n다시 \"{{int:savearticle}}\" 버튼을 클릭하면 글이 제목 없이 저장됩니다.",
        "summary-preview": "요약 미리 보기:",
        "subject-preview": "주제/제목 미리 보기:",
+       "previewerrortext": "변경사항을 미리보기하는 동안 에러가 생겼습니다.",
        "blockedtitle": "사용자가 차단됨",
        "blockedtext": "'''사용자 계정 또는 IP 주소가 차단되었습니다.'''\n\n차단한 사람은 $1입니다.\n차단한 이유는 다음과 같습니다: $2\n\n* 차단이 시작된 시간: $8\n* 차단이 끝나는 시간: $6\n* 차단된 사용자: $7\n\n$1 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 대해 문의할 수 있습니다.\n[[Special:Preferences|계정 환경 설정]]에 올바른 이메일 주소가 있어야만 '이메일 보내기' 기능을 사용할 수 있습니다. 또 이메일 보내기 기능이 차단되어 있으면 이메일을 보낼 수 없습니다.\n현재 당신의 IP 주소는 $3이고, 차단 ID는 #$5입니다.\n문의할 때에 이 정보를 같이 알려주세요.",
        "autoblockedtext": "당신의 IP 주소는 $1 사용자가 차단한 사용자가 사용했던 IP이기 때문에 자동으로 차단되었습니다.\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입니다.\n문의할 때에 이 정보를 같이 알려주세요.",
        "import-rootpage-nosubpage": "루트 문서의 \"$1\" 이름공간은 하위 문서를 허용하지 않습니다.",
        "importlogpage": "가져오기 기록",
        "importlogpagetext": "다른 위키에서 가져온 문서 기록입니다.",
-       "import-logentry-upload": "사용자가 파일 올리기를 통해 [[$1]] 문서를 가져왔습니다",
        "import-logentry-upload-detail": "{{PLURAL:$1|판}} $1개를 가져왔습니다",
-       "import-logentry-interwiki": "$1 문서를 다른 위키에서 가져왔습니다",
        "import-logentry-interwiki-detail": "$2에서 {{PLURAL:$1|판}} $1개를 가져왔습니다",
        "javascripttest": "자바스크립트 테스트",
        "javascripttest-pagetext-noframework": "이 문서는 자바스크립트 테스트를 실행하기 위한 용도로 할당되어 있습니다.",
index f4fa725..1bf8e5f 100644 (file)
@@ -7,7 +7,8 @@
                        "Kaganer",
                        "Reedy",
                        "Къарачайлы",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Джибериулени черт:",
        "preview": "Ал къарау",
        "showpreview": "Ал къарау",
        "showdiff": "Къошулгъан тюрлениуле",
-       "anoneditwarning": "'''Эс бёлюгюз''': Сиз системагъа кирмегенсиз. Сизни IP-адресигиз бу бетни тюрлениу тарихине джазыллыкъды.",
+       "anoneditwarning": "<strong>Эс бёлюгюз!</strong> Сиз системагъа кирмегенсиз. Тюрлендириу этсегиз, сизни IP-адресигиз бу бетни тюрлениу тарихине джазыллыкъды эмда ачыкъ кёрюннюкдю. Сиз <strong>[$1 кирсегиз]</strong> неда <strong>[$2 тергеу джазыу къурасагъыз]</strong>, тюрлендириулеригиз аны орнуна къошулуучу атыгъыз бла байламлы боллукъдула эмда башха онглулукъларыгъыз боллукъду.",
        "anonpreviewwarning": "''Сиз тергеу джазыуугъуз бла кирмегенсиз. Бетде тюрлениулени сакълатсагъыз, бетни тюрлениу тарихине IP-адресигиз джазыллыкъды.''",
        "missingsummary": "'''Эс бёлюгюз.'''  Тюрлениулеге къысха ачыкълау джазмагъансыз.\nСиз «Бетни сакъла» дегеннге энтда бассагъыз, тюрлениуле комментарийлесиз сакъланныкъдыла.",
        "missingcommenttext": "Тюбю бла ачыкълау джазыгъыз.",
        "sectioneditnotsupported-text": "Бу бетде бёлюмлени тюрлендирирге болмайды.",
        "permissionserrors": "Эркинликлени халаты",
        "permissionserrorstext": "Бу операцияны этерге эркинлигигиз джокъду, былайдагъы {{PLURAL:$1|1=чурум|чурумла}} ючюн:",
-       "permissionserrorstext-withaction": "«'''$2'''» этерге амалыгъыз джокъду. {{PLURAL:$1|1=Чуруму|Чурумлары}}:",
+       "permissionserrorstext-withaction": "$2 операцияны этерге амалыгъыз джокъду, былайдагъы {{PLURAL:$1|1=чурум|чурумла}} ючюн:",
        "recreate-moveddeleted-warn": "'''Эс бёлюгюз! Сиз алгъын кетерилген бетни джангыдан къураргъа излейсиз'''\n\nБетни джангыдан къураргъа кереклигине сагъыш этигиз.\nБетни кетериу бла атын тюрлендирилиуню журналы тюбюнде кёргюзюлгенди.",
        "moveddeleted-notice": "Бу бет кетерилгенди.\nХапарлашдырыу ючюн тюбюрек кетериуле бла ат тюрлендириулени журналы берилгенди.",
        "log-fulllog": "Журналгъа толулай къара",
        "currentrev": "Бусагъатдагъы версия",
        "currentrev-asof": "Бусагъатдагъы версия, $1",
        "revisionasof": "$1 версиясы",
-       "revision-info": "$2 джанындан этилген $1 версия",
+       "revision-info": "$1 датадан версия; {{GENDER:$6|$2}}$7",
        "previousrevision": "← Алдагъы",
        "nextrevision": "Эндиги →",
        "currentrevisionlink": "Бусагъатдагъы версия",
        "searchrelated": "бейламлы",
        "searchall": "бютеу",
        "showingresults": "Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$1</strong> {{PLURAL:$1|1=эсеб|эсебле}} {{PLURAL:$1|1=кёргюзюлгенди|кёргюзюлгендиле}}.",
+       "search-showingresults": "{{PLURAL:$4|<strong>$3</strong> результатдан <strong>$1</strong> результаты|<strong>$3</strong> результатдан <strong>$1 — $2</strong> результатла}}",
        "search-nonefound": "Соруу бла келишген эсеб джокъду",
        "powersearch-legend": "Кенг излеу",
        "powersearch-ns": "Атла аламда излеу:",
        "recentchanges-label-bot": "Бу тюрлендириуню бот этгенди",
        "recentchanges-label-unpatrolled": "Бу тюрлендириу алкъын патруль этилинмегенди",
        "recentchanges-label-plusminus": "Бетни ёлчеми быллай бир байтха тюрленнгенди",
+       "recentchanges-legend-heading": "'''Легенда:&nbsp;'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (къарагъыз: [[Special:NewPages|джангы бетлени тизмеси]])",
        "recentchanges-legend-plusminus": "(''±123'')",
        "rcnotefrom": "Тюбюрекде <strong>$2</strong> башлаб (<strong>$1</strong> дери) тюрлендириуле кёрюнедиле",
        "booksources": "Китабланы чыкъгъан джерлери",
        "booksources-search-legend": "Китабны юсюнден информация излеу",
        "booksources-isbn": "ISBN:",
+       "booksources-search": "Изле",
        "booksources-text": "Бу бетде джангы эмда эски китаб сатхан башха сайтлагъа джибериулени тизмеси барды, эм излеген китабларыгъызны юсюнден кёбюрек билги билирге боллукъсуз.",
        "booksources-invalid-isbn": "Берилген ISBN джараусуз кибик кёрюнеди; оригинал къайнакъдан кёчюрюлген заманда халатланы контроль этигиз.",
        "specialloguserlabel": "Толтуруучу:",
        "import-invalid-interwiki": "Белгиленнген викиден импорт этелирча тюлдю.",
        "importlogpage": "Импортну журналы",
        "importlogpagetext": "Башха викиледен бетлени тюрлендириу тарихин администраторланы импорт этиую.",
-       "import-logentry-upload": "[[$1]] файл джюклениую бла импорт этилди",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|версия}}",
-       "import-logentry-interwiki": "$1 трансвикиленди",
        "import-logentry-interwiki-detail": "$2 бетден  $1 {{PLURAL:$1|версия}}",
        "javascripttest": "JavaScript тинтилиую",
        "tooltip-pt-userpage": "Къошулуучу бетигиз",
        "spambot_username": "Спамны ариулау",
        "spam_reverting": "$1 бла джибериую болмагъан ахыр версиягъа къайтылады",
        "spam_blanking": "Бютеу версияла $1 бетге джибериу тутадыла, ариуланадыла",
+       "simpleantispam-label": "Анти-спам сынау.\nМуну '''толтурМА'''!",
        "pageinfo-title": "«$1» бетни юсюнден информация",
        "pageinfo-header-basic": "Баш билгиле",
        "pageinfo-header-edits": "Тюрлениу тарих",
        "logentry-rights-rights": "$1 къошулуучу, $3 къошулуучуну членлигин $4 къауумдан $5 къауумгъа {{GENDER:$2|кёчюрдю}}",
        "logentry-rights-rights-legacy": "$1 къошулуучу, $3 къушулуучуну къауумлада членлигин {{GENDER:$2|тюрлендирди}}",
        "logentry-rights-autopromote": "$1 къошулуучу, $4 къауумдан автомат халда $5 къауумгъа {{GENDER:$2|кёчюрюлдю}}",
+       "logentry-upload-upload": "$1, $3 {{GENDER:$2|джюкледи}}",
        "rightsnone": "(джокъ)",
        "revdelete-summary": "тюрлениулени ачыкълау",
        "feedback-cancel": "Ызына алыу",
        "feedback-error2": "Халат. Тюзетиу ётмеди",
        "feedback-message": "Билдириу:",
        "feedback-subject": "Тема:",
-       "feedback-submit": "Ð\9eÑ\8eмÑ\83нгÑ\83 Ð´жибер",
+       "feedback-submit": "Ð\94жибер",
        "searchsuggest-search": "Излеу",
        "searchsuggest-containing": "ичиндегиси…",
        "api-error-badtoken": "Ич халат: терс токен.",
index 49160c4..4867ada 100644 (file)
        "missingcommentheader": "'''Opjepass:''' Do häs kein Üvverschreff för Dinge Beidrach enjejovve. Wann De noch ens op „{{int:savearticle}}“ dröcks, weed Dinge Beidrach der ohne avjespeichert.",
        "summary-preview": "Vör-Aansich vun „Koot Zosammejefass, Quell“:",
        "subject-preview": "Vör-Aansich vun de Üvverschreff:",
+       "previewerrortext": "Ene Fähler es beim Versohch opjetrodde, de Sigg met de Änderonge aanzezeije.",
        "blockedtitle": "Dä Metmaacher es jesperrt",
        "blockedtext": "'''Dinge Metmaacher-Name oder IP Adress es vun „$1“ jesperrt woode.'''\n\nAls Jrund es enjedrage: „''$2''“\n\nDo kanns heh em Wiki immer noch lässe. Do sühß ävver di Sigg heh, wann De op rude Links klicks, neu Sigge aanlääje, udder Sigge ändere wells, denn doför bes De jäz jeschperrt.\n\nDo kanns met $1 oder enem andere [[{{MediaWiki:Grouppage-sysop}}|Wiki-Köbes]] övver dat Schpärre schwaade, wann De wells.\nDo kanns ävver nor dann „''E-Mail aan dä Metmaacher''“ aanwende, wann De ald en E-Mail Adress en Dinge [[Special:Preferences|Enstellunge]] enjedrage un freijejovve häs un wann et E-mail schecke nit metjesperrt es.\n\nDun en Ding Aanfroge nenne:\n* Dä Wiki-Köbeß, dä jesperrt hät: $1\n* Der Jrond för et Sperre: $2\n* Da wood jesperrt: $8\n* De Sperr soll loufe bes: $6\n* De Nommer vun dä Sperr: #$5\n* Ding IP-Adress is jetz: $3\n* Di Sperr es wäje odde jäje: $7\n\nDo kanns och noch en et <span class=\"plainlinks\">[{{fullurl:Special:IPBlockList|&action=search&limit=&ip=%23}}$5 Logboch met de Sperre]</span> loore.",
        "autoblockedtext": "'''Ding IP Adress es automattesch jesperrt woode.'''\n<br />\n'''Se wor vun enem Metmaacher jebruch woode, dä vun „$1“ jesperrt woode es.'''\n<br />\nAls Jrund es enjedrage: „''$2''“\n\nDo kanns heh em Wiki immer noch lesse. Do sühß ävver di Sigg heh, wann De op rude Links klicks, neu Sigge aanlääje, odder Sigge ändere wells, denn doför bes De jetz jesperrt.\n\nDo kanns met $1 oder enem andere [[{{MediaWiki:Grouppage-sysop}}|Wiki-Köbes]] övver dat Schpärre schwaade, wann De wells.\nDo kanns ävver nor dann „''e-mail aan dä Metmaacher''“ aanwende, wann De ald en e-mail Adress en Dinge [[Special:Preferences|Enstellunge]] enjedrage un freijejovve häs un wann et e-mail schecke nit metjeschperrt es.\n\nDun en Dinge Aanfrore nänne:\n* Dä Wiki-Köbeß, dä jesperrt hät: $1\n* Der Jrond för et Sperre: $2\n* Da wood jesperrt: $8\n* De Sperr soll loufe bes: $6\n* De Nommer vun dä Sperr: #$5\n* Ding IP-Adress is jetz: $3\n* Di Sperr es wäje odde jäje: $7\n\nDo kanns och noch en et <span class=\"plainlinks\">[{{fullurl:Special:IPBlockList|&action=search&limit=&ip=%23}}$5 {{int:ipblocklist}}]</span> loore.",
        "log-name-pagelang": "Logbooch vum Tuusche vun Sige iehr Schprohche",
        "log-description-pagelang": "Dat heh es et Logbohch vun de Veränderonge aan de Schprohch vun de Sigge.",
        "logentry-pagelang-pagelang": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät de Schprohch vun dä Sigg „$3“ vun $4 op $5 verändert.",
-       "default-skin-not-found": "De schtandattmähßejje Bedehnbovverfläsch <code>$1</code> för et Wikki es nit ze fenge. Se weed övver dä Enndraach <code lang=\"en\" xml:lang=\"en\">$wgDefaultSkin</code> en dä Dattei <code lang=\"en\" xml:lang=\"en\">LocalSettings.php</code> om ẞööver faßjelaat.\n\n{{PLURAL:$4|Heh di Bedehnbovverfläsch es|Heh di Bedehnbovverfläsche sin|Kein Bedehnbovverfläsche sin}} doh:\n\n$2\n\nLohr och en et [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de Handbohch övver et Enschtälle vun Bedehnbovverfläsche].\n\n*'''Falls dat heh e fresch enjereesch MehdijaWikki es:'''\n*: MehdijaWikki wood velleisch övver <i lang=\"en\" xml:lang=\"en\">Git</i> enschtallehrt, udder der Quälltäx wood tiräk obb_en ander Manier enschtallehrt. Met däm Problehm heh wohr ze rääschne. Donn winneschßdens eine vun dä Bovverfläsche uss_em [https://www.mediawiki.org/wiki/Category:All_skins Verzeischneß vun de Bedehnbovverfläsche vum MehdijaWikki] enschtallehre. Dat jeihd, endämm dat De:\n*:* einzel veröffentleschte Bovverfläsche us [https://www.mediawiki.org/wiki/Special:SkinDistributor MediaWiki.org] erongerlähds un en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun dä MehdijaWikki_Enschtallazuhn holls,\n*:* winneschsdens eins vun dä Verzeischneße us <code lang=\"en\" xml:lang=\"en\">mediawiki/skins/*</code> met <i lang=\"en\" xml:lang=\"en\">Git</i> en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun Dinge MehdijaWikki_Enschtallazuhn holls,\n*:* de [https://www.mediawiki.org/wiki/Download Dattei vum MehdijaWikki] erongerlähds, woh ongerscheidlejje Bedehnbovverfläsche dren sin un Zohsäz derzoh. Uß däm Verzeischneß doh dren kam_mer Saache en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun dä MehdijaWikki_Enschtallazuhn holle.\n*: Dat sullt sesch nit met Dingem <i lang=\"en\" xml:lang=\"en\">git</i>-Verzeischneß schtühre, falls De och ene Äntweckler vum MehdijaWikki bes.\n*'''Falls dat MehdijaWikki heh jrahd obb ene neue Schtand jebraht wood:'''\n*: Bei MehdijaWikki en dä Väsjohn 1.24 un hüüter wääde de enschtallehrte Bedehnbovverfläsche nit mieh automattesch alle aanjemaat; süsch och em [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Handbohch] dernoh. Do kanns heh di {{PLURAL:$5|Reih|Reihje|kein Reihje}} en de Dattei <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">LocalSettings.php</code> eren koppehre, öm {{PLURAL:$5|di enschtallehrte Bedehnbovverfläsch|alle enschtallehrte Bedehnbovverfläsche|kein Bedehnbovverfläsch}} aanzeschallde:\n<pre lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$3</pre>\n* '''Falls de jrahd aan dä Dattei <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">LocalSettings.php</code> jät geändert häs:'''\n*: Donn de Nahme vun de Bedehnbovverfläsche en dä Dattei pröhve. Se künnte verhehrt jeschrevve sin.",
+       "default-skin-not-found": "De schtandattmähßejje Bedehnbovverfläsch <code>$1</code> för et Wikki es nit ze fenge. Se weed övver dä Enndrahch <code lang=\"en\" xml:lang=\"en\">$wgDefaultSkin</code> en dä Dattei <code lang=\"en\" xml:lang=\"en\">LocalSettings.php</code> om ẞööver faßjelaat.\n\n{{PLURAL:$4|Heh di Bedehnbovverfläsch es|Heh di Bedehnbovverfläsche sin|Kein Bedehnbovverfläsche sin}} doh:\n\n$2\n\nLohr och en et [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de Handbohch övver et Enschtälle vun Bedehnbovverfläsche].\n\n*'''Falls dat heh e fresch enjereesch MehdijaWikki es:'''\n*: MehdijaWikki wood velleisch övver <i lang=\"en\" xml:lang=\"en\">Git</i> enschtallehrt, udder der Quälltäx wood tiräk obb_en ander Manier enschtallehrt. Met däm Problehm heh wohr ze rääschne. Donn winneschßdens eine vun dä Bovverfläsche uss_em [https://www.mediawiki.org/wiki/Category:All_skins Verzeischneß vun de Bedehnbovverfläsche vum MehdijaWikki] enschtallehre. Dat jeihd, endämm dat De:\n*:* einzel veröffentleschte Bovverfläsche us [https://www.mediawiki.org/wiki/Special:SkinDistributor MediaWiki.org] erongerlähds un en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun dä MehdijaWikki_Enschtallazuhn holls,\n*:* winneschsdens eins vun dä Verzeischneße us <code lang=\"en\" xml:lang=\"en\">mediawiki/skins/*</code> met <i lang=\"en\" xml:lang=\"en\">Git</i> en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun Dinge MehdijaWikki_Enschtallazuhn holls,\n*:* de [https://www.mediawiki.org/wiki/Download Dattei vum MehdijaWikki] erongerlähds, woh ongerscheidlejje Bedehnbovverfläsche dren sin un Zohsäz derzoh. Uß däm Verzeischneß doh dren kam_mer Saache en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun dä MehdijaWikki_Enschtallazuhn holle.\n*: Dat sullt sesch nit met Dingem <i lang=\"en\" xml:lang=\"en\">git</i>-Verzeischneß schtühre, falls De och ene Äntweckler vum MehdijaWikki bes.\n*'''Falls dat MehdijaWikki heh jrahd obb ene neue Schtand jebraht wood:'''\n*: Bei MehdijaWikki en dä Väsjohn 1.24 un hüüter wääde de enschtallehrte Bedehnbovverfläsche nit mieh automattesch alle aanjemaat; süsch och em [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Handbohch] dernoh. Do kanns heh di {{PLURAL:$5|Reih|Reihje|kein Reihje}} en de Dattei <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">LocalSettings.php</code> eren koppehre, öm {{PLURAL:$5|di enschtallehrte Bedehnbovverfläsch|alle enschtallehrte Bedehnbovverfläsche|kein Bedehnbovverfläsch}} aanzeschallde:\n<pre lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$3</pre>\n* '''Falls de jrahd aan dä Dattei <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">LocalSettings.php</code> jät geändert häs:'''\n*: Donn de Nahme vun de Bedehnbovverfläsche en dä Dattei pröhve. Se künnte verhehrt jeschrevve sin.",
        "default-skin-not-found-no-skins": "De schtandattmähßejje Bedehnbovverfläsch <code>$1</code> för et Wikki es nit ze fenge. Se weed övver dä Enndraach <code lang=\"en\" xml:lang=\"en\">$wgDefaultSkin</code> en dä Dattei <code lang=\"en\" xml:lang=\"en\">LocalSettings.php</code> om ẞööver faßjelaat.\n\nEt sinn_er kein Bedehnbovverfläsche doh.\n\n*'''Falls dat heh e fresch enjereesch MehdijaWikki, es udder jrahd obb ene neue Schtand jebraht wood:'''\n*: MehdijaWikki wood velleisch övver <i lang=\"en\" xml:lang=\"en\">Git</i> enschtallehrt, udder der Quälltäx wood tiräk obb_en ander Manier enschtallehrt. Met däm Problehm heh wohr ze rääschne. Bei MehdijaWikki en dä Väsjohn 1.24 un hüüter sin kein Bedehnbovverfläsche mieh automattesch derbei. Donn winneschßdens eine vun dä Bovverfläsche uss_em [https://www.mediawiki.org/wiki/Category:All_skins Verzeischneß vun de Bedehnbovverfläsche] enschtallehre. Dat jeihd, endämm dat De:\n*:* winneschsdens eins vun dä Verzeischneße us <code lang=\"en\" xml:lang=\"en\">mediawiki/skins/*</code> met <i lang=\"en\" xml:lang=\"en\">Git</i> en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun Dinge MehdijaWikki_Enschtallazuhn holls,\n*:* einzel veröffentleschte Bovverfläsche us [https://www.mediawiki.org/wiki/Special:SkinDistributor MediaWiki.org] erongerlähds un en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun Dinge MehdijaWikki_Enschtallazuhn holls,\n*:* de [https://www.mediawiki.org/wiki/Download Dattei vum MehdijaWikki] erongerlähds, woh ongerscheidlejje Bedehnbovverfläsche dren sin un Zohsäz derzoh. Uß däm Verzeischneß doh dren kam_mer Saache en et Verzeischneß <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skins/</code> vun Dinge vun dä MehdijaWikki_Enschtallazuhn holle.\n*: Dat sullt sesch nit met Dingem <i lang=\"en\" xml:lang=\"en\">Git</i>-Verzeischneß schtühre, falls De och ene Äntweckler vum MehdijaWikki bes. Lohr em [https://www.mediawiki.org/wiki/Manual:Skin_configuration Handbohch] dernoh, wi mer Bedehnbovverfläsche aanmääd un ene Schtandatt faßlähsch.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (enjeschalldt)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''ußjeschalldt''')",
index 1313fe1..629425d 100644 (file)
@@ -13,7 +13,8 @@
                        "Ztimur",
                        "Викиней",
                        "아라",
-                       "Askar Nazyrov"
+                       "Askar Nazyrov",
+                       "Macofe"
                ]
        },
        "tog-underline": "Шилтемелердин алдын сызуу:",
        "import-invalid-interwiki": "Көрсөтүлгөн уикиден импорттоого мүмкүн эмес.",
        "importlogpage": "Импорт журналы",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|версия}}",
-       "import-logentry-interwiki": "«$1» — уики аралык импорту",
        "javascripttest": "JavaScript'ти текшерүү",
        "tooltip-pt-userpage": "Колдонуучу барагыңыз",
        "tooltip-pt-mytalk": "Баарлашуу барагыңыз",
        "feedback-error3": "Ката: API'ден жооп жок",
        "feedback-message": "Билдирүү:",
        "feedback-subject": "Тема:",
-       "feedback-submit": "Ð\9fикиÑ\80 Ð¶өнөтүү",
+       "feedback-submit": "Ð\96өнөтүү",
        "searchsuggest-search": "Издөө",
        "searchsuggest-containing": "кармагандар...",
        "api-error-badtoken": "Ички ката: анык эмес токен.",
index 6187d02..0f48e9e 100644 (file)
        "revdelete-uname-unhid": "Benotzernumm net verstoppt",
        "revdelete-restricted": "Limitatioune fir Administrateuren ageschalt",
        "revdelete-unrestricted": "Limitatioune fir Administrateuren opgehuewen",
+       "logentry-block-unblock": "$1 {{GENDER:$2|huet}} d'Spär vum {{GENDER:$4|$3}} opgehuewen",
        "logentry-import-interwiki": "$1 huet $3 vun enger anerer Wiki {{GENDER:$2|importéiert}}",
        "logentry-move-move": "$1 huet d'Säit $3 op $4 {{GENDER:$2|geréckelt}}",
        "logentry-move-move-noredirect": "$1 huet d'Säit $3 op $4 {{GENDER:$2|geréckelt}} ouni eng Viruleedung unzeleeën",
        "feedback-bugornote": "Wann Dir bereet sidd fir en technesche Problem am Detail ze beschreiwen da [$1 mellt w.e.g. e Feeler (Bug)].\nSoss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gëtt op d'Säit \"[$3 $2]\" derbäigesat, zesumme mat Ärem Benotzernumm an dem Numm vum Browser deen Dir benotzt.",
        "feedback-cancel": "Ofbriechen",
        "feedback-close": "Fäerdeg",
+       "feedback-external-bug-report-button": "Eng technesch Aufgab notifizéieren",
        "feedback-dialog-title": "Feedback schécken",
        "feedback-error-title": "Feeler",
        "feedback-error1": "Feeler: Resultat vum API gouf net erkannt",
index 64be32e..f9a5a26 100644 (file)
@@ -15,7 +15,8 @@
                        "Tibor",
                        "לערי ריינהארט",
                        "아라",
-                       "Robin0van0der0vliet"
+                       "Robin0van0der0vliet",
+                       "Macofe"
                ]
        },
        "tog-underline": "Links óngersjtriepe",
        "import-error-invalid": "De pagina\" \"$1\" is neet geïmporteerd omdet de naam óngeljig is.",
        "importlogpage": "Importlogbook",
        "importlogpagetext": "Administratieve import van pazjena's mit gesjiedenis van anger wiki's.",
-       "import-logentry-upload": "[[$1]] geïmporteerd via 'ne bestandjsupload",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|versie|versies}}",
-       "import-logentry-interwiki": "transwiki veur $1 geslaag",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versie|versies}} van $2",
        "javascripttest": "Tes JavaScript",
        "javascripttest-pagetext-noframework": "Dees pagina is gerizzerveerd veur 't oetveure van JavaScriptteste.",
        "feedback-error3": "Fout: gein reactie vanne API",
        "feedback-message": "Berich:",
        "feedback-subject": "Óngerwerp:",
-       "feedback-submit": "Slaon feedback óp",
+       "feedback-submit": "Slaon óp",
        "feedback-thanks": "Danke! Diene feedback is oppe pagina \"[$2 $1]\" geplaats.",
        "searchsuggest-search": "Zeuke",
        "searchsuggest-containing": "bevat...",
index de9f62f..f4bb3e3 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Bonevarluri",
                        "Mogoeilor",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "هوم پیوند زیرخط دار:",
        "import-rootpage-nosubpage": "نومجا \"$1\" بلگه پایه صلا زیر بلگه نه نمی یه.",
        "importlogpage": "پهرستنومه دئن",
        "importlogpagetext": "وامین اوردن بلگه یا وا ویرگارچه ویرایشت ونو د ویکی یا هنی",
-       "import-logentry-upload": "[[$1]] نه د طریق سوارکرد جانیا وامین اورد",
        "import-logentry-upload-detail": "$1 {{جمی:$1|وانئری|وانئریا}} وامین اومانه",
-       "import-logentry-interwiki": "$1 نه تراویکی کرد",
        "import-logentry-interwiki-detail": "$1 {{جمی:$1|وانئری|وانئریا}} د $2 وامین اومائنه",
        "javascripttest": "ازمایشت کردن جاوا اسکریپت",
        "javascripttest-pagetext-noframework": "ای بلگه سی انجوم دئن ازمایشتیا جاوا اسکریپت اماییه کاری بیه.",
        "logentry-managetags-create": "$1 {{GENDER:$2|سردیس \"$4\"}} نه راس کرده",
        "rightsnone": "(هيش كوم)",
        "revdelete-summary": "چکسه ویرایشت",
-       "feedback-subject": "سرون:",
-       "feedback-message": "پيغوم:",
-       "feedback-cancel": "انجوم شیوسن",
-       "feedback-submit": "کل کردن نهاهوال حون",
        "feedback-adding": "اضاف کردن هوال حون یار د بلگه....",
-       "feedback-error2": "خطا:ویرایشت خو نبی",
-       "feedback-close": "انجوم بی",
        "feedback-bugnew": "مه وارسیش کردمه. یه گل سیسرک تازه گزارشت بی",
+       "feedback-cancel": "انجوم شیوسن",
+       "feedback-close": "انجوم بی",
+       "feedback-error2": "خطا:ویرایشت خو نبی",
+       "feedback-message": "پيغوم:",
+       "feedback-subject": "سرون:",
+       "feedback-submit": "كل كردن",
        "searchsuggest-search": "پی جوری",
        "searchsuggest-containing": "د حال و بار مینونه دار...",
        "api-error-badaccess-groups": "شما سی سوار کرد جانیایا د ای ویکی اجازه ناریت.",
index 7fbec56..9713b7d 100644 (file)
        "sat": "Šeš",
        "january": "sausio",
        "february": "vasario",
-       "march": "kovo",
+       "march": "Kovo",
        "april": "balandžio",
        "may_long": "gegužės",
        "june": "birželio",
        "july": "liepos",
        "august": "rugpjūčio",
-       "september": "rugsėjo",
-       "october": "spalio",
+       "september": "Rugsėjo",
+       "october": "Spalio",
        "november": "lapkričio",
        "december": "gruodžio",
-       "january-gen": "Sausis",
-       "february-gen": "Vasaris",
+       "january-gen": "Sausio",
+       "february-gen": "Vasario",
        "march-gen": "Kovas",
        "april-gen": "Balandis",
        "may-gen": "Gegužė",
        "october-gen": "Spalis",
        "november-gen": "Lapkritis",
        "december-gen": "Gruodis",
-       "jan": "sau",
-       "feb": "vas",
-       "mar": "kov",
-       "apr": "bal",
-       "may": "geg",
-       "jun": "Eka",
-       "jul": "lie",
-       "aug": "rgp",
-       "sep": "rgs",
-       "oct": "spa",
-       "nov": "lap",
-       "dec": "grd",
+       "jan": "Sau",
+       "feb": "Vas",
+       "mar": "Kov",
+       "apr": "Bal",
+       "may": "gegužės",
+       "jun": "Birželis",
+       "jul": "Lie",
+       "aug": "Rgp",
+       "sep": "Rgs",
+       "oct": "Spa",
+       "nov": "Lap",
+       "dec": "Grd",
        "january-date": "Sausio $1",
        "february-date": "Vasario $1",
        "march-date": "Kovo $1",
        "pagecategories": "{{PLURAL:$1|Kategorija|Kategorijos}}",
        "category_header": "Puslapiai kategorijoje „$1“",
        "subcategories": "Subkategorijos",
-       "category-media-header": "Daugialypės terpės failai kategorijoje „$1“",
+       "category-media-header": "Daugialypės terpės rinkmenos kategorijoje „$1“",
        "category-empty": "''Šiuo metu ši kategorija neturi jokių puslapių ar failų.''",
        "hidden-categories": "{{PLURAL:$1|Paslėpta kategorija|Paslėptos kategorijos}}",
        "hidden-category-category": "Paslėptos kategorijos",
        "category-subcat-count-limited": "Šioje kategorijoje yra $1 {{PLURAL:$1|subkategorija|subkategorijos|subkategorijų}}.",
        "category-article-count": "{{PLURAL:$2|Šioje kategorijoje yra vienas puslapis.|{{PLURAL:$1|Rodomas|Rodomi|Rodoma}} $1 šios kategorijos {{PLURAL:$1|puslapis|puslapiai|puslapių}} (iš viso kategorijoje yra $2 {{PLURAL:$2|puslapis|puslapiai|puslapių}}).}}",
        "category-article-count-limited": "{{PLURAL:$1|Rodomas|Rodomi|Rodoma}} $1 šios kategorijos {{PLURAL:$1|puslapis|puslapiai|puslapių}}.",
-       "category-file-count": "{{PLURAL:$2|Šioje kategorijoje yra vienas failas.|{{PLURAL:$1|Rodomas|Rodomi|Rodoma}} $1 šios kategorijos {{PLURAL:$1|failas|failai|failų}} (iš viso kategorijoje yra $2 {{PLURAL:$2|failas|failai|failų}}).}}",
+       "category-file-count": "{{PLURAL:$2|Šioje kategorijoje yra viena rinkmena.|{{PLURAL:$1|Rodomas|Rodomi|Rodoma}} $1 šios kategorijos {{PLURAL:$1|rinkmena|rinkmenos|rinkmenų}} (iš viso kategorijoje yra $2 {{PLURAL:$2|rinkmena|rinkmenos|rinkmenų}}).}}",
        "category-file-count-limited": "{{PLURAL:$1|Rodomas|Rodomi|Rodoma}} $1 šios kategorijos {{PLURAL:$1|failas|failai|failų}}.",
        "listingcontinuesabbrev": "tęs.",
        "index-category": "Indeksuoti puslapiai",
        "personaltools": "Asmeniniai įrankiai",
        "articlepage": "Rodyti turinio puslapį",
        "talk": "Aptarimas",
-       "views": "Žiūrėti",
+       "views": "Peržiūros",
        "toolbox": "Įrankiai",
        "userpage": "Rodyti naudotojo puslapį",
        "projectpage": "Rodyti projekto puslapį",
        "pool-errorunknown": "Nežinoma klaida",
        "poolcounter-usage-error": "Naudojimo klaida: $1",
        "aboutsite": "Apie {{SITENAME}}",
-       "aboutpage": "Project:Apie",
+       "aboutpage": "Project:About",
        "copyright": "Turinys pateikiamas pagal  $1  jei nenurodyta kitaip.",
-       "copyrightpage": "{{ns:project}}:Autorystės teisės",
+       "copyrightpage": "{{ns:project}}:Autorinės teisės",
        "currentevents": "Naujienos",
-       "currentevents-url": "Project:Naujienos",
+       "currentevents-url": "Project:Current events",
        "disclaimers": "Atsakomybės apribojimas",
-       "disclaimerpage": "Project:Atsakomybės apribojimas",
+       "disclaimerpage": "Project:General disclaimer",
        "edithelp": "Kaip redaguoti",
        "helppage-top-gethelp": "Pagalba",
        "mainpage": "Pagrindinis puslapis",
        "mainpage-description": "Pagrindinis puslapis",
        "policy-url": "Project:Politika",
        "portal": "Bendruomenė",
-       "portal-url": "Project:Bendruomenė",
+       "portal-url": "Project:Community portal",
        "privacy": "Privatumo politika",
        "privacypage": "Project:Privatumo politika",
        "badaccess": "Teisių klaida",
        "versionrequired": "Reikalinga $1 MediaWiki versija",
        "versionrequiredtext": "Reikalinga $1 MediaWiki versija, kad pamatytumėte šį puslapį. Žiūrėkite [[Special:Version|versijos puslapį]].",
        "ok": "Gerai",
-       "retrievedfrom": "Gauta iš „$1“",
+       "retrievedfrom": "Gauta iš \"$1\"",
        "youhavenewmessages": "Jūs turite $1 ($2).",
        "youhavenewmessagesfromusers": "Jūs gavote $1 nuo {{PLURAL:$3|kito vartotojo|$3 vartotojų}} ($2).",
        "youhavenewmessagesmanyusers": "Jūs turite $1 iš daugelio vartotojų ( $2 ) .",
        "cannotdelete-title": "Negalite ištrinti puslapio \"$1\"",
        "delete-hook-aborted": "Trynimą atšaukė kabliukas.\nNebuvo duotas joks paaiškinimas.",
        "badtitle": "Blogas pavadinimas",
-       "badtitletext": "Nurodytas puslapio pavadinimas buvo neleistinas, tuščias arba neteisingai sujungtas tarpkalbinis arba tarpprojektinis pavadinimas. Jame gali būti vienas ar daugiau simbolių, neleistinų pavadinimuose",
+       "badtitletext": "Nurodytas puslapio pavadinimas buvo neleistinas, tuščias arba neteisingai sujungtas tarpkalbinis arba tarpprojektinis pavadinimas. Jame gali būti vienas ar daugiau simbolių, neleistinų pavadinimuose.",
        "perfcached": "Rodoma išsaugota duomenų kopija, todėl duomenys gali būti ne patys naujausi. Maksimaliai $1 {{PLURAL:$1|rezultatas|rezultatai|rezultatų}} yra saugoma.",
        "perfcachedts": "Rodoma išsaugota duomenų kopija, kuri buvo atnaujinta $2 $3. Maksimaliai $4 {{PLURAL:$4|rezultatas|rezultatai|rezultatų}} yra saugoma.",
        "querypage-no-updates": "Atnaujinimai šiam puslapiui dabar yra išjungti. Duomenys čia dabar nebus atnaujinti.",
        "currentrev-asof": "Dabartinė $1 versija",
        "revisionasof": "$1 versija",
        "revision-info": "$1 versija, sukurta {{GENDER:$6|$2}}$7",
-       "previousrevision": "←Ankstesnė versija",
+       "previousrevision": "← Ankstesnė versija",
        "nextrevision": "Vėlesnė versija→",
        "currentrevisionlink": "Dabartinė versija",
        "cur": "dab",
        "difference-title": "$1: Skirtumas tarp puslapio versijų",
        "difference-title-multipage": "Skirtumas tarp puslapių „$1 ir $2“",
        "difference-multipage": "(Skirtumai tarp puslapių)",
-       "lineno": "Eilutė $1:",
+       "lineno": "$1 eilutė:",
        "compareselectedversions": "Palyginti pasirinktas versijas",
        "showhideselectedversions": "Rodyti/slėpti pasirinktas versijas",
        "editundo": "atšaukti",
        "diff-multi-otherusers": "(nerodoma {{PLURAL:$1|viena tarpinė versija, sukurta|$1 tarpinės versijos, sukurtos|$1 tarpinių versijų, sukurtų}} {{PLURAL:$2|vieno naudotojo|$2 naudotojų}})",
        "diff-multi-manyusers": "(daugiau nei $2 {{PLURAL:$2|naudotojo|naudotojų|naudotojų}} $1 {{PLURAL:$1|tarpinis keitimas nėra rodomas|tarpiniai keitimai nėra rodomi|tarpinių keitimų nėra rodoma}})",
        "searchresults": "Paieškos rezultatai",
-       "searchresults-title": "Paieškos rezultatai „$1“",
+       "searchresults-title": "Paieškos rezultatai \"$1\"",
        "titlematches": "Puslapių pavadinimų atitikmenys",
        "textmatches": "Puslapio turinio atitikmenys",
        "notextmatches": "Jokių puslapių teksto atitikmenų",
        "searchprofile-everything": "Viskas",
        "searchprofile-advanced": "Išplėstinė",
        "searchprofile-articles-tooltip": "Ieškoti čia: $1",
-       "searchprofile-images-tooltip": "Ieškoti failų",
-       "searchprofile-everything-tooltip": "Ieškoti viso turinio (tame tarpe aptarimų puslapių)",
+       "searchprofile-images-tooltip": "Ieškoti rinkmenų",
+       "searchprofile-everything-tooltip": "Ieškoti viso turinio (įskaitant aptarimo puslapius)",
        "searchprofile-advanced-tooltip": "Ieškoti skirtingose vardų srityse",
        "search-result-size": "$1 ({{PLURAL:$2|1 žodis|$2 žodžiai|$2 žodžių}})",
        "search-result-category-size": "{{PLURAL:$1|1 narys|$1 narių}} ({{PLURAL:$2|1 subkategorijoje|$2 subkategorijų}}, {{PLURAL:$3|1 failas|$3 failų}})",
        "upload-curl-error28": "Per ilgai įkeliama",
        "upload-curl-error28-text": "Atsakant svetainė užtrunka per ilgai. Patikrinkite, ar svetainė veikia, palaukite truputį ir vėl pamėginkite. Galbūt jums reikėtų pamėginti ne tokiu apkrautu metu.",
        "license": "Licencija:",
-       "license-header": "Licensija",
+       "license-header": "Licencija",
        "nolicense": "Nepasirinkta",
        "licenses-edit": "Keisti licencijų parinktis",
        "license-nopreview": "(Peržiūra negalima)",
        "listfiles-delete": "trinti",
        "listfiles-summary": "Šiame specialiame puslapyje rodomos visos įkeltos rinkmenos.",
        "listfiles_search_for": "Ieškoti failo pavadinimo:",
-       "imgfile": "failas",
+       "imgfile": "rinkmena",
        "listfiles": "Failų sąrašas",
        "listfiles_thumb": "Miniatiūra",
        "listfiles_date": "Data",
        "listfiles-latestversion-yes": "Taip",
        "listfiles-latestversion-no": "Ne",
        "file-anchor-link": "Rinkmena",
-       "filehist": "Paveikslėlio istorija",
-       "filehist-help": "Paspauskite ant datos/laiko, kad pamatytumėte failą tokį, koks jis buvo tuo metu.",
+       "filehist": "Rinkmenos istorija",
+       "filehist-help": "Paspauskite ant datos/laiko, kad pamatytumėte rinkmeną tokią, kokia ji buvo tuo metu.",
        "filehist-deleteall": "trinti visus",
        "filehist-deleteone": "trinti",
        "filehist-revert": "grąžinti",
        "filehist-filesize": "Rinkmenos dydis",
        "filehist-comment": "Paaiškinimas",
        "imagelinks": "Rinkmenos naudojimas",
-       "linkstoimage": "{{PLURAL:$1|Šis puslapis|Šie puslapiai}} nurodo į šį failą:",
+       "linkstoimage": "{{PLURAL:$1|Šis puslapis|Šie puslapiai}} nurodo į šią rinkmeną:",
        "linkstoimage-more": "Daugiau nei $1 {{PLURAL:$1|puslapis|puslapiai|puslapių}} rodo į šį failą.\nŠis sąrašas rodo tik {{PLURAL:$1|puslapio|pirmų $1 puslapių}} nuorodas į šį failą.\nYra pasiekiamas ir [[Special:WhatLinksHere/$2|visas sąrašas]].",
        "nolinkstoimage": "Į rinkmeną nenurodo joks puslapis.",
        "morelinkstoimage": "Žiūrėti [[Special:WhatLinksHere/$1|daugiau nuorodų]] į šį failą.",
        "duplicatesoffile": "Šis failas turi {{PLURAL:$1|$1 dublikatą|$1 dublikatus|$1 dublikatų}} ([[Special:FileDuplicateSearch/$2|daugiau informacijos]]):",
        "sharedupload": "Ši rinkmena yra iš $1 ir gali būti naudojama kitose wiki svetainėse.",
        "sharedupload-desc-there": "Šis failas yra iš $1 ir gali būti naudojamas kituose projektuose.\nNorėdami sužinoti daugiau, žiūrėkite [$2 failo aprašymą].",
-       "sharedupload-desc-here": "Šis failas yra iš $1 ir gali būti naudojamas kituose projektuose.\nInformacija iš [$2 failo aprašymo puslapio] yra pateikiama žemiau.",
+       "sharedupload-desc-here": "Ši rinkmena yra iš $1 ir gali būti naudojama kituose projektuose.\nInformacija iš [$2 failo aprašymo puslapio] yra pateikiama žemiau.",
        "sharedupload-desc-edit": "Ši rinkmena yra iš $1 ir gali būti naudojama kituose projektuose.\nGal norite pakeisti aprašymą jos [$2 aprašymo puslapyje]?",
        "sharedupload-desc-create": "Ši rinkmena yra iš $1 ir gali būti naudojama kituose projektuose.\nGal norite pakeisti aprašymą jos [$2 aprašymo puslapyje]?",
        "filepage-nofile": "Joks failas su duotu pavadinimu neegzistuoja.",
        "shared-repo-from": "iš $1",
        "shared-repo": "bendrosios failų saugyklos",
        "shared-repo-name-wikimediacommons": "Vikiteka",
-       "upload-disallowed-here": "Jūs negalite perrašyti šio failo.",
+       "upload-disallowed-here": "Jūs negalite perrašyti šios rinkmenos.",
        "filerevert": "Sugrąžinti $1",
        "filerevert-legend": "Failo sugrąžinimas",
        "filerevert-intro": "<span class=\"plainlinks\">Jūs grąžinate '''[[Media:$1|$1]]''' į versiją $4 ($2, $3).</span>",
        "nolinkshere-ns": "Nurodytoje vardų srityje nei vienas puslapis nenurodo į '''[[:$1]]'''.",
        "isredirect": "nukreipiamasis puslapis",
        "istemplate": "įterpimas",
-       "isimage": "failo nuoroda",
+       "isimage": "rinkmenos nuoroda",
        "whatlinkshere-prev": "$1 {{PLURAL:$1|ankstesnis|ankstesni|ankstesnių}}",
        "whatlinkshere-next": "$1 {{PLURAL:$1|kitas|kiti|kitų}}",
        "whatlinkshere-links": "← nuorodos",
        "tooltip-pt-mytalk": "Jūsų aptarimo puslapis",
        "tooltip-pt-anontalk": "Pakeitimų aptarimas, darytus naudojant šį IP adresą",
        "tooltip-pt-preferences": "Mano nustatymai",
-       "tooltip-pt-watchlist": "Puslapių sąrašas, kuriuos jūs pasirinkote stebėti.",
+       "tooltip-pt-watchlist": "Puslapių sąrašas, kuriuos jūs pasirinkote stebėti",
        "tooltip-pt-mycontris": "Jūsų darytų keitimų sąrašas",
-       "tooltip-pt-login": "Rekomenduojame prisijungti, nors tai nėra privaloma.",
+       "tooltip-pt-login": "Rekomenduojame prisijungti, nors tai nėra privaloma",
        "tooltip-pt-logout": "Atsijungti",
-       "tooltip-pt-createaccount": "Esate skatinamas susikurti paskyrą ir prisijungti, tačiau, tai nėra privaloma",
+       "tooltip-pt-createaccount": "Skatiname susikurti paskyrą ir prisijungti, tačiau, tai nėra privaloma",
        "tooltip-ca-talk": "Puslapio turinio aptarimas",
        "tooltip-ca-edit": "Jūs galite redaguoti šį puslapį. Nepamirškite paspausti peržiūros mygtuką prieš išsaugodami.",
        "tooltip-ca-addsection": "Pradėti naują aptariamą temą",
        "tooltip-ca-viewsource": "Puslapis yra užrakintas. Galite pažiūrėti turinį.",
-       "tooltip-ca-history": "Ankstesnės puslapio versijos.",
+       "tooltip-ca-history": "Ankstesni patikslinimai šiame puslapyje",
        "tooltip-ca-protect": "Užrakinti šį puslapį",
        "tooltip-ca-unprotect": "Keisti šio puslapio apsaugą",
        "tooltip-ca-delete": "Ištrinti šį puslapį",
        "tooltip-ca-move": "Pervadinti puslapį",
        "tooltip-ca-watch": "Pridėti puslapį į stebimųjų sąrašą",
        "tooltip-ca-unwatch": "Pašalinti puslapį iš stebimųjų sąrašo",
-       "tooltip-search": "Ieškoti šiame projekte",
+       "tooltip-search": "Ieškoti {{SITENAME}}",
        "tooltip-search-go": "Eiti į puslapį su tokiu pavadinimu, jei toks yra",
-       "tooltip-search-fulltext": "Ieškoti puslapių su šiuo tekstu",
+       "tooltip-search-fulltext": "Ieškokite šio teksto puslapių",
        "tooltip-p-logo": "Eiti į pradinį puslapį",
        "tooltip-n-mainpage": "Eiti į pradinį puslapį",
        "tooltip-n-mainpage-description": "Eiti į pradinį puslapį",
        "tooltip-n-portal": "Apie projektą, ką galima daryti, kur ką rasti",
-       "tooltip-n-currentevents": "Raskite naujausią informaciją",
-       "tooltip-n-recentchanges": "Paskutinių keitimų sąrašas šiame projekte.",
+       "tooltip-n-currentevents": "Rasti pagrindinę informaciją apie įvykius",
+       "tooltip-n-recentchanges": "Paskutinių keitimų sąrašas wiki projekte",
        "tooltip-n-randompage": "Įkelti atsitiktinį puslapį",
-       "tooltip-n-help": "Vieta, kur rasite rūpimus atsakymus.",
-       "tooltip-t-whatlinkshere": "Puslapių sąrašas, rodančių į čia",
+       "tooltip-n-help": "Vieta, kur rasite rūpimus atsakymus",
+       "tooltip-t-whatlinkshere": "Wiki puslapių sąrašas, kuris nurodo čia",
        "tooltip-t-recentchangeslinked": "Paskutiniai keitimai puslapiuose, pasiekiamuose iš šio puslapio",
        "tooltip-feed-rss": "Šio puslapio RSS šaltinis",
        "tooltip-feed-atom": "Šio puslapio Atom šaltinis",
        "tooltip-t-contributions": "Rodyti šio naudotojo keitimų sąrašą",
        "tooltip-t-emailuser": "Siųsti laišką šiam naudotojui",
        "tooltip-t-info": "Daugiau žinių apie šį puslapį",
-       "tooltip-t-upload": "Įkelti failus",
+       "tooltip-t-upload": "Įkelti rinkmenas",
        "tooltip-t-specialpages": "Specialiųjų puslapių sąrašas",
        "tooltip-t-print": "Šio puslapio versija spausdinimui",
        "tooltip-t-permalink": "Nuolatinė nuoroda į šią puslapio versiją",
        "tooltip-ca-nstab-main": "Rodyti puslapio turinį",
        "tooltip-ca-nstab-user": "Rodyti naudotojo puslapį",
        "tooltip-ca-nstab-media": "Rodyti media puslapį",
-       "tooltip-ca-nstab-special": "Šis puslapis yra specialusis - jo negalima redaguoti.",
+       "tooltip-ca-nstab-special": "Šis puslapis yra specialusis - jo negalima redaguoti",
        "tooltip-ca-nstab-project": "Rodyti projekto puslapį",
-       "tooltip-ca-nstab-image": "Rodyti failo puslapį",
+       "tooltip-ca-nstab-image": "Rodyti rinkmenos puslapį",
        "tooltip-ca-nstab-mediawiki": "Rodyti sisteminį pranešimą",
        "tooltip-ca-nstab-template": "Rodyti šabloną",
        "tooltip-ca-nstab-help": "Rodyti pagalbos puslapį",
        "tooltip-minoredit": "Pažymėti keitimą kaip smulkų",
        "tooltip-save": "Išsaugoti pakeitimus",
        "tooltip-preview": "Pakeitimų peržiūra, prašome pažiūrėti prieš išsaugant!",
-       "tooltip-diff": "Rodo, kokius pakeitimus padarėte tekste.",
+       "tooltip-diff": "Rodo, kokius pakeitimus padarėte tekste",
        "tooltip-compareselectedversions": "Žiūrėti dviejų pasirinktų puslapio versijų skirtumus.",
        "tooltip-watch": "Pridėti šį puslapį į stebimųjų sąrašą",
        "tooltip-watchlistedit-normal-submit": "Šalinti puslapius",
        "tooltip-recreate": "Atkurti puslapį nepaisant to, kad jis buvo ištrintas",
        "tooltip-upload": "Pradėti įkėlimą",
        "tooltip-rollback": "Vienu spustelėjimu grąžinama prieš tai redagavusio naudotojo versija",
-       "tooltip-undo": "„Anuliuoti“ atmeta šį keitimą ir atveria ankstesnės versijos redagavimo formą.\nLeidžia pridėti atmetimo priežastį komentaruose",
+       "tooltip-undo": "„Anuliuoti“ atmeta šį keitimą ir atveria ankstesnės versijos redagavimo formą. Leidžia pridėti atmetimo priežastį komentaruose.",
        "tooltip-preferences-save": "Išsaugoti nustatymus",
        "tooltip-summary": "Įvesti trumpą santrauką",
        "common.css": "/** Čia įdėtas CSS bus taikomas visoms išvaizdoms */",
        "thumbsize": "Sumažintų paveikslėlių dydis:",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|puslapis|puslapiai|puslapių}}",
        "file-info": "rinkmenos dydis: $1, MIME tipas: $2",
-       "file-info-size": "$1 × $2 taškų, failo dydis: $3, MIME tipas: $4",
+       "file-info-size": "$1 × $2 taškų, rinkmenos dydis: $3, MIME tipas: $4",
        "file-info-size-pages": "$1 × $2 taškų, rinkmenos dydis: $3, MIME tipas: $4, $5 {{PLURAL:$5|puslapis|puslapiai|puslapių}}",
        "file-nohires": "Geresnė raiška negalima.",
-       "svg-long-desc": "SVG failas, formaliai $1 × $2 taškų, failo dydis: $3",
+       "svg-long-desc": "SVG rinkmena, formaliai $1 × $2 taškų, rinkmenos dydis: $3",
        "svg-long-desc-animated": "Animuotas SVG failas, formaliai $1 × $2 pikselių, failo dydis: $3",
        "svg-long-error": "Neleistinas SVG failas: $1",
        "show-big-image": "Pradinė rinkmena",
-       "show-big-image-preview": "Šios peržiūros dydis: $1 .",
-       "show-big-image-other": "{{PLURAL:$2|Kita rezoliucija|Kitos $2 rezoliucijos|Kitų $2 rezoliucijų}}: $1 .",
+       "show-big-image-preview": "Šios peržiūros dydis: $1.",
+       "show-big-image-other": "{{PLURAL:$2|Kita rezoliucija|Kitos $2 rezoliucijos|Kitų $2 rezoliucijų}}: $1.",
        "show-big-image-size": "$1 × $2 taškų",
        "file-info-gif-looped": "ciklinis",
        "file-info-gif-frames": "$1 {{PLURAL:$1|kadras|kadrai|kadrų}}",
        "yesterday-at": "Vakar $1",
        "bad_image_list": "Formatas yra toks:\n\nTik eilutės, prasidedančios *, yra įtraukiamos.\nPirmoji nuoroda eilutėje turi būti nuoroda į blogą failą.\nVisos kitos nuorodos toje pačioje eilutėje yra laikomos išimtimis, t. y. puslapiai, kuriuose leidžiama įterpti failą.",
        "metadata": "Metaduomenys",
-       "metadata-help": "Šiame faile yra papildomos informacijos, tikriausiai pridėtos skaitmeninės kameros ar skaitytuvo, naudoto jam sukurti ar perkelti į skaitmeninį formatą. Jei failas buvo pakeistas iš pradinės versijos, kai kurios detalės gali nepilnai atspindėti naują failą.",
+       "metadata-help": "Šioje rinkmenoje yra papildomos informacijos, tikriausiai pridėtos skaitmeninės kameros ar skaitytuvo, naudoto jai sukurti ar perkelti į skaitmeninį formatą. Jei rinkmena buvo pakeista iš pradinės versijos, kai kurios detalės gali nepilnai atspindėti naują rinkmeną.",
        "metadata-expand": "Rodyti išplėstinę informaciją",
        "metadata-collapse": "Slėpti išplėstinę informaciją",
        "metadata-fields": "Vaizdo metaduomenų laukai, nurodyti šiame pranešime, bus įtraukti į paveikslėlio puslapį, kai metaduomenų lentelė bus suskleista.! N! kiti bus paslėpti.!\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-primarychromaticities": "Pagrindinių spalvų chromiškumas",
        "exif-ycbcrcoefficients": "Spalvų pristatym matricos matricos koeficientai",
        "exif-referenceblackwhite": "Juodos ir baltos poros nuorodos reikšmės",
-       "exif-datetime": "Failo keitimo data ir laikas",
+       "exif-datetime": "Rinkmenos keitimo data ir laikas",
        "exif-imagedescription": "Paveikslėlio pavadinimas",
        "exif-make": "Kameros gamintojas",
        "exif-model": "Kameros modelis",
        "exif-usercomment": "Naudotojo komentarai",
        "exif-relatedsoundfile": "Susijusi garso byla",
        "exif-datetimeoriginal": "Duomenų generavimo data ir laikas",
-       "exif-datetimedigitized": "Pervedimo į skaitmeninį formatą data ir laikas",
+       "exif-datetimedigitized": "Datos ir laiko pervedimas į skaitmeninį formatą",
        "exif-subsectime": "Datos ir laiko sekundės dalys",
        "exif-subsectimeoriginal": "Duomenų generavimo datos ir laiko sekundės dalys",
        "exif-subsectimedigitized": "Pervedimo į skaitmeninį formatą datos ir laiko sekundės dalys",
index 09945cf..a902369 100644 (file)
@@ -20,7 +20,8 @@
                        "Xil",
                        "Yyy",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Pasvītrot saites:",
        "import-invalid-interwiki": "Nevar importēt no norādītās viki.",
        "importlogpage": "Importēšanas reģistrs",
        "importlogpagetext": "Administratīvās lapu importēšanas no citām Vikipēdijām ar lapas hronoloģiju.",
-       "import-logentry-upload": "importēts [[$1]], izmantojot failu augšupielādi",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|versijas|versija|versijas}}",
-       "import-logentry-interwiki": "starpvikizēts $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versijas|versija|versijas}} no $2",
        "javascripttest": "JavaScript testēšana",
        "tooltip-pt-userpage": "Tava lietotāja lapa",
        "feedback-error3": "Kļūda: Nav atbildes no API",
        "feedback-message": "Ziņojums:",
        "feedback-subject": "Temats:",
-       "feedback-submit": "Iesniegt atsauksmes",
+       "feedback-submit": "Iesniegt",
        "feedback-thanks": "Paldies! Jūsu atsauksmes ir ievietotas lapā \"[$2  $1]\".",
        "searchsuggest-search": "Meklēt",
        "searchsuggest-containing": "Meklējamā frāze:",
index 0cc6b94..ffa712d 100644 (file)
@@ -21,7 +21,8 @@
                        "बिप्लब आनन्द",
                        "सरोज कुमार ढकाल",
                        "Bijay chaurasia",
-                       "Tulsi Bhagat"
+                       "Tulsi Bhagat",
+                       "Macofe"
                ]
        },
        "tog-underline": "लिंककेँ रेखांकित करू:",
        "history": "पन्नाक इतिहास",
        "history_short": "इतिहास",
        "updatedmarker": "हमर अन्तिम आगमनसँ पहिने अद्यतन कएल",
-       "printableversion": "पà¥\8dरिà¤\82ट करबा योग्य",
+       "printableversion": "पà¥\8dरिनà¥\8dट करबा योग्य",
        "permalink": "स्थायी लिंक",
        "print": "छापू",
        "view": "देखू",
        "createacct-another-realname-tip": "मूल नाम वैकल्पिक अछि।\nजँ अहाँ एकरा देबा लेल प्रयोग करै छी, ई अहाँकेँ काजक श्रेय देबा लेल एकर प्रयोग कएल जाएत।",
        "pt-login": "सम्प्रवेश",
        "pt-login-button": "सम्प्रवेश",
-       "pt-createaccount": "à¤\96ाता à¤\96à¥\8bलà¥\82",
+       "pt-createaccount": "à¤\96ाता à¤\96à¥\8bलल à¤\9cाà¤\8f",
        "pt-userlogout": "निष्क्रमण",
        "php-mail-error-unknown": "पी.एच.पी.कऽ समाद कार्य() मे अज्ञात दोष भेल।",
        "user-mail-no-addy": "बिन ई-पत्र संकेतक ई-पत्र पठेबाक प्रयास कएल गेल।",
        "recentchangeslinked-summary": "ई विशेष पन्नासँ सम्बद्ध पन्ना सभमे (आकि कोनो विशेष वर्गक समूहमे) भेल परिवर्तनक सूची छी ।\n[[Special:Watchlist|your watchlist]]  पर पन्नासभ '''गाढ़''' अछि।",
        "recentchangeslinked-page": "पन्नाक नाम",
        "recentchangeslinked-to": "देल पन्नाक सम्बन्धी पन्नामे परिवर्तन देखाउ",
-       "upload": "फाà¤\87ल à¤\85पलà¥\8bड à¤\95रà¥\82",
+       "upload": "फाà¤\87ल à¤\85पलà¥\8bड à¤\95रà¥\80",
        "uploadbtn": "फाइल अपलोड",
        "reuploaddesc": "उपारोपण रद्द करू आ उपारोपण आवेदन-पत्रपर घुरू।",
        "upload-tryagain": "संशोधित संचिका वर्णन दिअ",
        "isimage": "फाइलकऽ जडी",
        "whatlinkshere-prev": "{{PLURAL:$1|पहिलुका|पहिलुका $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|अगुलका|अगुलका $1}}",
-       "whatlinkshere-links": "â\86\90 à¤²à¤¿à¤\82à¤\95",
+       "whatlinkshere-links": "â\86\90 à¤\9cडà¥\80सभ",
        "whatlinkshere-hideredirs": "$1 घुरबैए",
        "whatlinkshere-hidetrans": "$1 परागत",
        "whatlinkshere-hidelinks": "$1 सम्बन्ध सभ",
        "import-error-create": "\"$1\" पन्ना आयातित नै कएल गेल अछि कारण अहाँकेँ एकरा निर्माण करबाक अधिकार नै अछि।",
        "importlogpage": "लॉगक आयात",
        "importlogpagetext": "पन्ना सभक प्रशासनिक आयात दोसर विकीक सम्पादन इतिहासक संग।",
-       "import-logentry-upload": "[[$1]] आयात केलौं संचिका उपारोपण द्वारा",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|सुधार|सुधार सभ}}",
-       "import-logentry-interwiki": "विकीअन्तरण क देलौ $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|सुधार|सुधार सभ}} $2 सँ",
        "javascripttest": "जावास्क्रिप्ट परिक्षण",
        "javascripttest-pagetext-noframework": "इ पृष्ठ जावास्क्रिप्ट परीक्षण चलावए के लेल अछि।",
        "tooltip-pt-preferences": "हमर मोनपसंद",
        "tooltip-pt-watchlist": "पन्ना सभ जकर परिवर्त्तन पर अहाँक नजरि अछि",
        "tooltip-pt-mycontris": "अहाँक योगदानक सूची",
-       "tooltip-pt-login": "लà¥\89à¤\97 à¤\87न à¤\95रब à¤¨à¥\80à¤\95, à¤ªà¤°à¤\9eà¥\8dà¤\9a à¤\86वशà¥\8dयà¤\95 à¤¨à¤¹à¤¿.",
+       "tooltip-pt-login": "à¤\85हाà¤\81 à¤\95à¥\87à¤\82 à¤\96ाता à¤\96à¥\8bलà¤\95 à¤²à¥\87ल à¤ªà¥\8dरà¥\8bतà¥\8dसाहित à¤\95ल à¤\9cाà¤\8fत à¤\85à¤\9bि; à¤®à¥\81दा à¤\87 à¤\85निवारà¥\8dय à¤¨à¥\88 à¤\9bà¥\88",
        "tooltip-pt-logout": "फेर आयब",
+       "tooltip-pt-createaccount": "अहाँ कें खाता खोलक लेल प्रोत्साहित कल जाएत अछि; मुदा इ अनिवार्य नै छै",
        "tooltip-ca-talk": "विषयसूचीक पन्नाक संबंधमे वर्त्तालाप",
        "tooltip-ca-edit": "अहाँ एहि पन्नाकेँ संपादित कए सकैत छी। कृपया सुरक्षित करबासँ पहिने पूर्वप्रदर्शन बटम उपयोग करू।",
        "tooltip-ca-addsection": "नव खण्ड शुरू करू",
        "tooltip-n-currentevents": "लगक घटनाक विषयमे आधार सूचना प्राप्त करू।",
        "tooltip-n-recentchanges": "विकीमे लगक परिवर्त्तनक सूची.",
        "tooltip-n-randompage": "कोनो अनिर्धारित पन्ना लोड करू",
-       "tooltip-n-help": "पà¥\8dरापà¥\8dत à¤\95रबाà¤\95 à¤¸à¥\8dथान.",
+       "tooltip-n-help": "पता à¤²à¤\97ावà¤\8f à¤µà¤¾à¤²à¤¾ à¤¸à¥\8dथान",
        "tooltip-t-whatlinkshere": "सभ विकी-पन्नाक सूची जकर एतय लिंक अछि",
        "tooltip-t-recentchangeslinked": "ऐ पृष्ठक लागिक पन्नामे भेल नव परिवर्तन",
        "tooltip-feed-rss": "ऐ पन्ना लेल आर.एस.एस. सूचना",
        "tooltip-t-contributions": "ऐ प्रयोक्ताक योगदानक सूची देखू",
        "tooltip-t-emailuser": "ऐ प्रयोक्ताकेँ ई-पत्र पठाउ",
        "tooltip-t-info": "ई पृष्ठ के सम्बन्धमें आर बैंसी जानकारी",
-       "tooltip-t-upload": "à¤\9aितà¥\8dर à¤\86à¤\95ि à¤®à¥\80डिया à¤«à¤¾à¤\87लà¤\95à¥\87à¤\81 à¤\85पलà¥\8bड à¤\95रà¥\82",
+       "tooltip-t-upload": "à¤\9aितà¥\8dर à¤\86à¤\95ि à¤®à¥\80डिया à¤«à¤¾à¤\87लà¤\95à¥\87à¤\81 à¤\85पलà¥\8bड à¤\95रà¥\80",
        "tooltip-t-specialpages": "सभटा विशेष पन्नाक सूची",
        "tooltip-t-print": "ऐ पृष्ठक छपैबला रूप",
        "tooltip-t-permalink": "पन्नाक ऐ संवर्धनक स्थायी लिंक",
        "exif-datetime": "संचिका परिवर्तन तिथि आ समए",
        "exif-imagedescription": "चित्र शीर्षक",
        "exif-make": "कैमरा निर्माता",
-       "exif-model": "à¤\95à¥\88मरा à¤®à¥\89डल",
+       "exif-model": "à¤\95à¥\88मरा à¤®à¥\8bडल",
        "exif-software": "प्रयुक्त तंत्रांश",
        "exif-artist": "लिखैबला",
        "exif-copyright": "सर्वाधिकारी",
        "logentry-newusers-create": "$1 {{लिंग:$2|बनाएल}} एकटा प्रयोक्ता खाता",
        "logentry-newusers-create2": "$1 {{लिंग:$2|बनाएल}} {{लिंग:$4|एकटा प्रयोक्ता खाता}} $3",
        "logentry-newusers-autocreate": "खाता $1 छल {{लिंग:$2|बनाएल}} स्वतः",
+       "logentry-upload-upload": "$1 {{GENDER:$2|ए}} $3 अपलोड केलक",
        "rightsnone": "(कोनो नै)",
        "revdelete-summary": "सम्पादन सारांश",
        "feedback-adding": "पन्ना उपर प्रतिक्रिया जोडु ...",
        "feedback-error2": "त्रुटि: संपादन विफल भेल",
        "feedback-message": "संदेश:",
        "feedback-subject": "विषय:",
-       "feedback-submit": "पà¥\8dरतिà¤\95à¥\8dरिया à¤­à¥\87à¤\9cà¥\81",
+       "feedback-submit": "दिà¤\85",
        "searchsuggest-search": "ताकू",
        "searchsuggest-containing": "...सऽ युक्त",
        "api-error-badaccess-groups": "अहि विकी सें अहां कोनो प्रारूप लोड नहि क सकब.",
index 9cfa66d..d321ee9 100644 (file)
@@ -7,7 +7,8 @@
                        "The Evil IP address",
                        "Urhixidur",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Hanipika ny rohy:",
        "import-rootpage-invalid": "Lohateny tsy azo raisina ny foto-pejy nomenao:",
        "importlogpage": "laogin'ny fampidirana",
        "importlogpagetext": "Fampidirana ara-pandraharahana ny pejy miaraka amin'ny tantaram-panvany avy any amin'ny wiki hafa.",
-       "import-logentry-upload": "nampiditra [[$1]] tamin'ny fampidiran-drakitra",
-       "import-logentry-interwiki": "nampiditra $1 tamin'ny transwiki",
        "javascripttest": "Fanandramana JavaScript",
        "javascripttest-pagetext-skins": "Mifidia skin hanaovana ny fanandramana:",
        "javascripttest-qunit-intro": "Jereo ny [$1 fanoroana mikasika ny andrana] eo amin'i mediawiki.org.",
        "logentry-rights-autopromote": "{{GENDER:$2}}Lasa $5 ho azy i $1 izay $4 taloha",
        "rightsnone": "(tsy misy)",
        "revdelete-summary": "ambangovangon'ny fanovàna",
-       "feedback-subject": "Lohahevitra:",
-       "feedback-message": "Hafatra:",
-       "feedback-cancel": "Foanana",
-       "feedback-submit": "Handefa ny fanehoan-kevitra",
        "feedback-adding": "Manampy ny fahenoan-kevitra amin'ilay pejy...",
+       "feedback-bugnew": "Efa nomariniko. Hitory baogy iray",
+       "feedback-cancel": "Foanana",
+       "feedback-close": "Vita",
        "feedback-error1": "Hadisoana: Valiny avy amin'ny API tsy fantatra",
        "feedback-error2": "Hadisoana: Tsy voaòva",
        "feedback-error3": "Hadisoana: Tsy nisy valiny avy amin'ny API",
+       "feedback-message": "Hafatra:",
+       "feedback-subject": "Lohahevitra:",
+       "feedback-submit": "Alefa",
        "feedback-thanks": "Misaotra! lanefa tany amin'ilay pejy ''[$2 $1]'' ilay fanehoan-kevitrao.",
-       "feedback-close": "Vita",
-       "feedback-bugnew": "Efa nomariniko. Hitory baogy iray",
        "searchsuggest-search": "Karohy",
        "searchsuggest-containing": "misy...",
        "api-error-badaccess-groups": "Tsy afaka mampiditra rakitra eto amin'ity wiki ity ianao.",
index 6a285b3..ab5e833 100644 (file)
        "missingcommentheader": "'''Потсетување:''' Не внесовте наслов за овој коментар.\nАко повторно стиснете на „{{int:savearticle}}“, уредувањето ќе биде зачувано без наслов.",
        "summary-preview": "Изглед на описот:",
        "subject-preview": "Преглед на предметот/насловот:",
+       "previewerrortext": "Се појави грешка при обидот да се прегледаат промените.",
        "blockedtitle": "Корисникот е блокиран",
        "blockedtext": "'''Вашето корисничко име или IP-адреса е блокирано.'''\n\nБлокирањето е направено од страна на $1.\nДаденото образложение е ''$2''.\n\n* Почеток на блокирањето: $8\n* Истекување на блокирањето: $6\n* Корисникот што требало да биде блокиран: $7\n\nМоже да контактирате со $1 или некој друг [[{{MediaWiki:Grouppage-sysop}}|администратор]] за да разговарате во врска со блокирањето.\nМожете да ја искористите можноста „Е-пошта до овој корисник“ ако е назначена важечка е-поштенска адреса во [[Special:Preferences|вашите нагодувања]] и не ви е забрането да ја користите.\nВашата сегашна IP-адреса е $3, а назнака на блокирањето гласи #$5.\nВе молиме наведете ги сите подробности прикажани погоре, во вашата евентуална реакција.",
        "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, a ID на блокирањеto е $5.\nВе молиме наведете ги овие подробности доколку реагирате на блокирањето.",
index 4d523bc..dd8f3c0 100644 (file)
@@ -45,7 +45,9 @@
                        "아라",
                        "BPositive",
                        "Darshan kandolkar",
-                       "Steinsplitter"
+                       "Steinsplitter",
+                       "Macofe",
+                       "Nemo bis"
                ]
        },
        "tog-underline": "दुव्यांचे अधोरेखन:",
        "disclaimers": "उत्तरदायित्वास नकार",
        "disclaimerpage": "Project: सर्वसाधारण उत्तरदायकत्वास नकार",
        "edithelp": "संपादन साहाय्य",
-       "mainpage": "'मुखपृष्ठ",
+       "mainpage": "मुखपृष्ठ",
        "mainpage-description": "मुखपृष्ठ",
        "policy-url": "Project:नीती",
        "portal": "समाज मुखपृष्ठ",
        "feedback-error3": "त्रुटी:एपीआय तर्फे काहीच प्रत्युत्तर नाही",
        "feedback-message": "संदेश:",
        "feedback-subject": "विषय:",
-       "feedback-submit": "पà¥\8dरतिà¤\95à¥\8dरिया à¤¦à¥\8dया",
+       "feedback-submit": "सादर à¤\95रा",
        "feedback-thanks": " \"[$2 $1]\" या पानात आपला पश्चप्रदाय (फिडबॅक) टाकत आहोत.",
        "searchsuggest-search": "शोधा",
        "searchsuggest-containing": ".......हे असलेले",
index b4cdaae..7f4508b 100644 (file)
@@ -9,7 +9,8 @@
                        "Urhixidur",
                        "아라",
                        "CharlieTheCabbie",
-                       "Leli Forte"
+                       "Leli Forte",
+                       "Macofe"
                ]
        },
        "tog-underline": "Ħoloq sottolinjati:",
        "import-error-invalid": "Il-paġna \"$1\" ma ġietx impurtata minħabba li isimha hi invalida.",
        "importlogpage": "Importazzjoni",
        "importlogpagetext": "Importi amministrativi ta' paġni b'kronoloġiji ta' modifiki minn wikis oħrajn.",
-       "import-logentry-upload": "importajt [[$1]] bl-użu ta' upload.",
        "import-logentry-upload-detail": "{{PLURAL:$1|reviżjoni|$1 reviżjonijiet}}",
-       "import-logentry-interwiki": "Trasferixxejt minn wiki ieħor il-paġna $1",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|reviżjoni|$1 reviżjonijiet}} minn $2",
        "javascripttest": "Testjar tal-JavaScript",
        "javascripttest-pagetext-noframework": "Din il-paġna hi riservata għall-eżekuzzjoni tat-testijiet tal-JavaScript.",
        "feedback-error3": "Żball: L-ebda risposta mill-API",
        "feedback-message": "Messaġġ:",
        "feedback-subject": "Suġġett:",
-       "feedback-submit": "Ibgħat il-messaġġ",
+       "feedback-submit": "Ibgħat",
        "feedback-thanks": "Grazzi! Ir-rispons tiegħek ġie ippubblikat fuq il-paġna \"[$2 $1]\".",
        "searchsuggest-search": "Fittex",
        "searchsuggest-containing": "li tinkludi...",
index a3ff20d..31e0f6b 100644 (file)
@@ -15,7 +15,8 @@
                        "Ævar Arnfjörð Bjarmason <avarab@gmail.com>",
                        "לערי ריינהארט",
                        "아라",
-                       "Kolega2357"
+                       "Kolega2357",
+                       "Macofe"
                ]
        },
        "tog-underline": "Verwiezingen onderstrepen",
        "revdelete-show-file-confirm": "Bi'j der wisse van da'j de vortedaone versie van t bestaand \"<nowiki>$1</nowiki>\" van $2 um $3 bekieken willen?",
        "revdelete-show-file-submit": "Ja",
        "logdelete-selected": "{{PLURAL:$1|Ekeuzen logboekboekaksie|Ekeuzen logboekaksies}}:",
+       "revdelete-text-text": "Vortedaone versies bin nog altied zichtbaor in de geschiedenisse, mer delen van de inhoud bin niet openbaor.",
+       "revdelete-text-file": "Vortedaone versies bin nog altied zichtbaor in de bestaandsgeschiedenisse, mer delen van de inhoud bin niet openbaor.",
+       "revdelete-text-others": "Aandere beheerders kunnen de verbörgen inhoud nog altied inzien en weer zichtbaor maken, behalven as der anvullende beparkingen in-esteld bin.",
        "revdelete-confirm": "Bevestig da'j dit doon wollen, da'j de gevolgen dervan begriepen en da'j t doon in overeenstemming mit t geldende [[{{MediaWiki:Policy-url}}|beleid]].",
        "revdelete-suppress-text": "Onderdrokken ma'j '''allinnig''' gebruken in de volgende gevallen:\n* Ongepassen persoonlike informasie\n*: ''adressen en tillefoonnummers, burgerservicenummers, en gao zo mer deur.''",
        "revdelete-legend": "Stel versiebeparkingen in:",
        "feedback-error3": "Fout: gien reaksie van de API",
        "feedback-message": "Bericht:",
        "feedback-subject": "Onderwarp:",
-       "feedback-submit": "Kommentaar geven",
+       "feedback-submit": "Opslaon",
        "feedback-thanks": "Bedankt! Joew kommentaar is op de zied \"[$2 $1]\" ezet.",
        "searchsuggest-search": "Zeuken / zuken / zuiken",
        "searchsuggest-containing": "bevat...",
index 807711c..7e10184 100644 (file)
@@ -15,7 +15,9 @@
                        "ne.wikipedia.org sysops",
                        "सरोज कुमार ढकाल",
                        "아라",
-                       "Steinsplitter"
+                       "Steinsplitter",
+                       "Macofe",
+                       "बिप्लब आनन्द"
                ]
        },
        "tog-underline": "सम्बन्ध निम्न रेखाङ्कन:",
@@ -90,7 +92,7 @@
        "october": "अक्टोबर",
        "november": "नोभेम्बर",
        "december": "डिसेम्बर",
-       "january-gen": "à¤\9cà¥\87नवरà¥\80",
+       "january-gen": "जनवरी",
        "february-gen": "फेब्रुअरी",
        "march-gen": "मार्च",
        "april-gen": "एप्रील",
        "history_short": "पृष्ठको इतिहास",
        "updatedmarker": "मेरो अन्तिम भ्रमण पछि अद्यतन गरिएको",
        "printableversion": "छाप्नयोग्य संस्करण",
-       "permalink": "स्थायीलिङ्क",
+       "permalink": "स्थायी लिङ्क",
        "print": "छाप्नुहोस्",
        "view": "अवलोकन गर्ने",
        "view-foreign": " $1 हेर्नुहोस",
-       "edit": "परिवरà¥\8dतन",
+       "edit": "समà¥\8dपादन",
        "edit-local": "स्थानिय वर्णन सम्पादन गर्नुहोस्",
        "create": "सृजना गर्नुहोस्",
        "create-local": "स्थानीय वर्णन थप्नुहोस",
        "disclaimers": "अस्विकारोक्तिहरु",
        "disclaimerpage": "Project:सामान्य अस्वीकारोक्ति",
        "edithelp": "सम्पादन सहायता",
-       "mainpage": "'गृह पृष्ठ",
-       "mainpage-description": "'गृह पृष्ठ",
+       "helppage-top-gethelp": "सहायता",
+       "mainpage": "गृह पृष्ठ",
+       "mainpage-description": "गृह पृष्ठ",
        "policy-url": "Project:निति",
        "portal": "सामाजिक पोर्टल",
        "portal-url": "Project:सामाजिक पोर्टल",
        "hidetoc": "लुकाउनुहोस्",
        "collapsible-collapse": "खुम्च्याउने",
        "collapsible-expand": "फैलाउ",
+       "confirmable-confirm": "तपाईं {{GENDER:$1|लिङ्ग}} हो?",
        "confirmable-yes": "हो",
        "confirmable-no": "होइन",
        "thisisdeleted": "$1 हेर्ने या पूर्वरुपमा फर्काउने हो ?",
        "login-abort-generic": "तपाईंको प्रवेश असफल भयो - छोड़ियो",
        "loginlanguagelabel": "भाषा: $1",
        "suspicious-userlogout": "तपाईंको निर्गमन अनुरोध अस्विकार गरिन्छ किन कि यो खराब ब्राउजर वा क्यासिङ प्रोक्सिले पठाएको जस्तो देखिन्छ।",
-       "pt-login": "प्रवेश",
+       "pt-login": "प्रवेश (लग ईन)",
        "pt-login-button": "प्रवेश",
        "pt-createaccount": "खाता खोल्नुहोस्",
        "pt-userlogout": "निर्गमन (लग आउट)",
        "subject": "विषय/शीर्षक:",
        "minoredit": "यो सानो सम्पादन हो",
        "watchthis": "यो पृष्ठ अवलोकन गर्नुहोस्",
-       "savearticle": "सà¤\82ग्रह गर्ने",
+       "savearticle": "सà¤\99à¥\8dग्रह गर्ने",
        "preview": "पूर्वावलोकन",
        "showpreview": "पूर्वालोकन देखाउनुहोस्",
        "showdiff": "परिवर्तन देखाउनुहोस्",
-       "anoneditwarning": "'''चेतावनी:''' तपाईँले प्रवेश गर्नु भएको छैन।\nतपाईँको IP ठेगाना पृष्ठसम्पादन इतिहासमा दर्तागरिने छ ।",
+       "anoneditwarning": "<strong>चेतावनी:</strong> तपाईँले प्रवेश गर्नु भएको छैन । तपाईँको आइपि ठेगाना पृष्ठ सम्पादन इतिहासमा दर्ता गरिने छ र यो सबैले हेर्न सक्छन । यदि तपाईं <strong>[$1 लगईन]</strong> वा <strong>[$2 नयाँ खाता बनाउने] गर्नुभयो भने तपाईंद्वारा गरिएको सम्पादन तपाईंको प्रयोगकर्तानाममा जोडिनेछ।",
        "anonpreviewwarning": "''तपाईंले प्रवेश गर्नु भएको छैन। संग्रह (Save) गरेको खण्डमा पृष्ठको इतिहासमा तपाईंको IP ठेगाना अंकित गरिनेछ।''",
        "missingsummary": "'''यादगर्नुहोस् :''' तपाईले सम्पादन सारांश दिनुभएको छैन ।\nयदि तपाईले संग्रहगर्नुहोस्  थिच्नुभयो भने , सारांश बिना नै संग्रहित गरिने छ ।",
        "missingcommenttext": "कृपया टिप्पणी प्रविष्ठ गर्नुहोस् ।",
        "searchprofile-advanced": "उन्नत",
        "searchprofile-articles-tooltip": "$1 मा खोज्ने",
        "searchprofile-images-tooltip": "फाइलहरु खोज्ने",
-       "searchprofile-everything-tooltip": "सबै सामग्री खोज्ने(वार्तालाप समेत )",
+       "searchprofile-everything-tooltip": "सबै सामग्री खोज्ने (वार्तालाप समेत )",
        "searchprofile-advanced-tooltip": "अनुकुल नेमस्पेसमा खोज्ने",
        "search-result-size": "$1 ({{PLURAL:$2|1 शव्द|$2 शव्दहरु}})",
        "search-result-category-size": "{{PLURAL:$1|एक सदस्य|$1 सदस्यहरु}} ({{PLURAL:$2|1 उपश्रेणी|$2  उपश्रेणीहरु}}, {{PLURAL:$3|एउटा फाइल|$3 फाइलहरु}})",
        "recentchanges-label-minor": "यो साधारण सम्पादन हो",
        "recentchanges-label-bot": "यो सम्पादन बोटद्वारा गरिएको थियो",
        "recentchanges-label-unpatrolled": "यो सम्पादन अहिले सम्म पट्रोल गरिएको छैन",
+       "recentchanges-legend-heading": "'''आदर्श वाक्य:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|list of new pages]] यो पनि हेर्नुहोस्)",
        "recentchanges-legend-plusminus": "(''±१२३'')",
        "rcnotefrom": "'''$2''' देखिका परिवर्तनहरु तल ('''$1''' सम्मका देखाइन्छ)।",
        "recentchangeslinked": "सम्बन्धित परिवर्तनहरू",
        "recentchangeslinked-feed": "सम्बन्धित परिवर्तनहरू",
        "recentchangeslinked-toolbox": "सम्बन्धित परिवर्तनहरू",
-       "recentchangeslinked-title": "\"$1\"सम्वन्धित परिवर्तनसँग",
-       "recentchangeslinked-summary": "यà¥\8b à¤¸à¥\82à¤\9aà¥\80 à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f à¤ªà¥\83षà¥\8dठ (वा à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f à¤¶à¥\8dरà¥\87णà¥\80)सित à¤\9cà¥\8bड़िà¤\8fà¤\95ा  à¤­à¤°à¥\8dà¤\96रà¥\88 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤­à¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठà¤\95à¥\8b  à¤¹à¥\8b। [[Special:Watchlist|तपाà¤\88à¤\81à¤\95à¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82à¤\9aà¥\80]]à¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81 '''à¤\97ाढा à¤\85à¤\95à¥\8dषरमा''' छन्।",
+       "recentchangeslinked-title": "\"$1\" सँग सम्बन्धित परिवर्तन",
+       "recentchangeslinked-summary": "यà¥\8b à¤¸à¥\82à¤\9aà¥\80 à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f à¤ªà¥\83षà¥\8dठ (वा à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f à¤¶à¥\8dरà¥\87णà¥\80)सित à¤\9cà¥\8bडिà¤\8fà¤\95ा à¤­à¤°à¥\8dà¤\96रà¥\88 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤­à¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठà¤\95à¥\8b  à¤¹à¥\8b। [[Special:Watchlist|तपाà¤\88à¤\81à¤\95à¥\8b à¤§à¥\8dयानसà¥\82à¤\9aà¥\80]]à¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81 <strong>à¤\97ाढा à¤\85à¤\95à¥\8dषरमा</strong> छन्।",
        "recentchangeslinked-page": "पृष्ठ नाम:",
        "recentchangeslinked-to": "यसको सट्टा यो पृष्ठसँग जोडिएका पृष्ठहरुको परिवर्तन देखाउने",
        "upload": "फाइल उर्ध्वभरण",
        "suppress": "अतिदृष्टि",
        "booksources": "किताबका श्रोतहरु",
        "booksources-search-legend": "किताबका श्रोतहरु खोज्ने",
+       "booksources-search": "खोज",
        "specialloguserlabel": "निष्पादक:",
        "speciallogtitlelabel": "लक्ष्य (शीर्षक वा प्रयोगकर्ता)",
        "log": "लगहरु",
        "tooltip-pt-mycontris": "तपाईको योगदानको सूची",
        "tooltip-pt-login": "तपाईँलाई प्रवेशगर्न सुझाव दिइन्छ ; तर यो जरुरी भने छैन",
        "tooltip-pt-logout": "निर्गमन (लग आउट) गर्नुहोस्",
+       "tooltip-pt-createaccount": "तपाईंलाई खाता बनाउन र लग इन गर्न हामि प्रोत्साहित गर्छौ; तथापि, यो अनिवार्य भने छैन।",
        "tooltip-ca-talk": "सामग्री पृष्ठबारेमा छलफल",
-       "tooltip-ca-edit": "तपाईँले यो पृष्ठ सम्पादन गर्न सक्नुहुन्छ ।\nकृपया संग्रह ‍पहिले पूर्वावलोकन बटन प्रयोग गर्नुहोला ।",
+       "tooltip-ca-edit": "तपाईँले यो पृष्ठ सम्पादन गर्न सक्नुहुन्छ । कृपया सङ्ग्रह ‍गर्नु पूर्व पूर्वावलोकन बटन प्रयोग गर्नुहोला ।",
        "tooltip-ca-addsection": "नयाँ खण्ड सुरु गर्नुहोस्",
        "tooltip-ca-viewsource": "यो पृष्ठ सुरक्षित गरिएको छ। यसको श्रोत हेर्न सक्नुहुन्छ।",
        "tooltip-ca-history": "यस पृष्ठको पहिलेका पुनरावलोकनहरु",
        "tooltip-n-mainpage": "मुख्य पृष्ठमा जाने",
        "tooltip-n-mainpage-description": "मुख्य पृष्ठमा जानुहो्स्",
        "tooltip-n-portal": "आयोजनाका बारेमा , तपाईँ के गर्न सक्नुहुन्छ , सामग्री कहाँ भेट्टाउने",
-       "tooltip-n-currentevents": "हालैको घटनाको बारेमा पृष्ठभूमि जानकारी पत्तालगाउनुहोस्",
+       "tooltip-n-currentevents": "हालैको घटनाको बारेमा पृष्ठभूमि जानकारी पत्ता लगाउनुहोस्",
        "tooltip-n-recentchanges": "विकिमा गरिएका हालैका परिवर्तनहरुको सूची",
        "tooltip-n-randompage": "जुन कुनै पृष्ठ खोल्ने",
        "tooltip-n-help": "पत्तालगाउनु पर्ने स्थान",
-       "tooltip-t-whatlinkshere": "यà¥\8b à¤¸à¤¿à¤¤ à¤\9cà¥\8bड़िएका सबै विकि पृष्ठहरुको सूची",
+       "tooltip-t-whatlinkshere": "यà¥\8b à¤¸à¤\81à¤\97 à¤\9cà¥\8bडिएका सबै विकि पृष्ठहरुको सूची",
        "tooltip-t-recentchangeslinked": "यस पृष्ठमा जोडिएका पृष्ठहरुमा हालैको परिवर्तन",
        "tooltip-feed-rss": "यो पृष्ठको लागि RSS फिड",
-       "tooltip-feed-atom": "यो पृष्ठको लागि Atom फिड",
+       "tooltip-feed-atom": "यो पृष्ठको लागि एटम फिड",
        "tooltip-t-contributions": "यस प्रयोगकर्ताका योगदानहरूको सूची हेर्नुहोस्",
        "tooltip-t-emailuser": "यो प्रयोगकर्तालाई इमेल पठाउनुहोस्",
        "tooltip-t-upload": "फाइल अपलोड गर्ने",
        "spambot_username": "MediaWiki स्पाम सर-सफाइ",
        "spam_reverting": "$1 मा कडीहरू  नभएका पुरानो अवतरणमा पुनर्स्थापित गर्दै",
        "spam_blanking": "$1 का सबै अवतरणहरूमा कडीहरू  भेटिए, मेटाएर खालि गर्दै",
+       "simpleantispam-label": "ऐन्टी-स्प्याम जाँच।\nयसलाई <strong>नहीं</strong> भर्ने!",
        "pageinfo-title": " \"$1\"को लागि जाकारी",
        "pageinfo-header-basic": "साधारण जानकारी",
        "pageinfo-header-edits": "सम्पादन इतिहास",
        "file-info-size-pages": "$1 × $2 पिक्सेलहरु, फाइल आकार: $3, MIME प्रकार: $4, $5 {{PLURAL:$5|पृष्ठ|पृष्ठहरु}}",
        "file-nohires": "उच्च रिजोल्युशन अनुपलब्ध",
        "svg-long-desc": "SVG फाइल,साधारण $1 × $2 पिक्सेलहरु, फाइल आकार: $3",
-       "show-big-image": "पà¥\82रा à¤°à¤¿à¤\9cà¥\8bलà¥\8dयà¥\81शन",
-       "show-big-image-preview": "यस पूर्व रुपको आकार: $1.",
-       "show-big-image-other": "अरु रिजोल्युशनहरु: $1।",
+       "show-big-image": "मà¥\82ल à¤«à¤¾à¤\87ल",
+       "show-big-image-preview": "यस पूर्व रुपको आकार: $1",
+       "show-big-image-other": "अरु {{PLURAL:$2|resolution|रिजोल्युशनहरु}}: $1।",
        "show-big-image-size": "$1 × $2 पिक्सल",
        "file-info-gif-looped": "चकृय गरिएको",
        "file-info-gif-frames": "$1 {{PLURAL:$1|फ्रेम|फ्रेमहरु}}",
        "revdelete-uname-unhid": "प्रयोगकर्ता देखाइएको",
        "revdelete-restricted": "प्रबन्धकहरुमाथि सीमितता लागू गरियो",
        "revdelete-unrestricted": "प्रवन्धककोलागि निषेधहरु हटाइयो ।",
-       "logentry-move-move": "$1 द्वारा $3 पृष्ठलाई $4 मा सारियो",
+       "logentry-move-move": "$1 {{GENDER:$2|द्वारा}} $3 पृष्ठलाई $4 मा सारियो",
        "rightsnone": "(कुनैपनि होइन)",
        "revdelete-summary": "सम्पादन सारांश",
        "feedback-cancel": "रद्द गर्ने",
        "feedback-error2": "त्रुटि: सम्पादन असफल",
        "feedback-message": "सन्देश:",
        "feedback-subject": "विषय:",
-       "feedback-submit": "पà¥\8dरतिà¤\95à¥\83या à¤¬à¥\81à¤\9dाà¤\89नà¥\81हà¥\8bसà¥\8d",
+       "feedback-submit": "बà¥\81à¤\9dाà¤\89नà¥\87",
        "searchsuggest-search": "खोज",
        "api-error-badaccess-groups": "यस विकिमा तपाईंलाई फाइल अपलोड गर्ने अनुमति छैन।",
        "api-error-copyuploaddisabled": "यस सर्वरमा URL द्वारा अपलोड गर्ने व्यवस्था निस्क्रिय गरिएकोछ।",
index 565638a..4cad6dd 100644 (file)
        "tags-tag": "Merkenamn",
        "tags-display-header": "Utsjånad på endringslister",
        "tags-description-header": "Tyding",
+       "tags-source-header": "Kjelde",
        "tags-active-header": "Verksamt?",
        "tags-hitcount-header": "Merkte endringar",
+       "tags-actions-header": "Handlingar",
        "tags-active-yes": "Ja",
        "tags-active-no": "Nei",
+       "tags-source-extension": "Definert av ei utviding",
+       "tags-source-manual": "Brukt manuelt av brukarar og robotar",
+       "tags-source-none": "Ikkje lenger i bruk",
        "tags-edit": "endra",
+       "tags-delete": "slett",
+       "tags-activate": "slå på",
+       "tags-deactivate": "slå av",
        "tags-hitcount": "{{PLURAL:$1|éi endring|$1 endringar}}",
+       "tags-manage-no-permission": "Du har ikkje løyve til å handsama endringsmerke.",
+       "tags-create-heading": "Opprett nytt merke",
+       "tags-create-explanation": "Som standard vert nyoppretta merke gjorde tilgjengelege for brukarar og robotar.",
+       "tags-create-tag-name": "Merkenamn:",
+       "tags-create-reason": "Årsak:",
+       "tags-create-submit": "Opprett",
+       "tags-create-no-name": "Du må oppgje eit merkenamn.",
        "comparepages": "Samanlikna sider",
        "compare-page1": "Side 1",
        "compare-page2": "Side 2",
index a16176a..9303048 100644 (file)
@@ -11,7 +11,8 @@
                        "Sambiwiki",
                        "Shisir 1945",
                        "ଶିତିକଣ୍ଠ ଦାଶ",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "ତଳେ ଥିବା ଲିଙ୍କ:",
        "import-rootpage-nosubpage": "ମୂଳ ପୃଷ୍ଠାର \"$1\" ନେମସ୍ପେସ ଉପପୃଷ୍ଠାର ଅନୁମତି ଦିଏନାହିଁ ।",
        "importlogpage": "ଇତିହାସ ଆହରଣ",
        "importlogpagetext": "ଅନ୍ୟ ଉଇକିରୁ ପରିଛାଙ୍କ ଦେଇ ସମ୍ପାଦନା ଇତିହାସ ସହ କରାହୋଇଥିବା ପୃଷ୍ଠା ଆମଦାନି ।",
-       "import-logentry-upload": "ଫାଇଲ ଅପଲୋଡ଼ ଦେଇ [[$1]] ଆମଦାନି କରାଯାଇଛି",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|ଗୋଟି ସଂସ୍କରଣ|ଗୋଟି ସଂସ୍କରଣ}} ଅଣାଗଲା",
-       "import-logentry-interwiki": "$1 କୁ ଟ୍ରାନ୍ସଉଇକି କରାଗଲା",
        "import-logentry-interwiki-detail": "$2ରୁ $1 {{PLURAL:$1|ଗୋଟି ସଂସ୍କରଣ|ଗୋଟି ସଂସ୍କରଣ}} ଅଣାଗଲା",
        "javascripttest": "ଜାଭାସ୍କ୍ରିପ୍ଟ ପରଖ",
        "javascripttest-pagetext-noframework": "ଏହି ପୃଷ୍ଠାଟି ଜାଭାସ୍କ୍ରିପ୍ଟ ପରଖ ପାଇଁ ସଂରକ୍ଷଣ କରି ରଖାଯାଇଛି ।",
        "feedback-error3": "ଅସୁବିଧା: API ରୁ କିଛି ଉତ୍ତର ମିଳିଲା ନାହିଁ",
        "feedback-message": "ଖବର:",
        "feedback-subject": "ବିଷୟ:",
-       "feedback-submit": "ମତାମତ à¬¦à¬¿à¬\85ନà­\8dତà­\81",
+       "feedback-submit": "ଦାà¬\96ଲ à¬\95ରିବା",
        "feedback-thanks": "ଧନ୍ୟବାଦ ! ଆପଣଙ୍କର ମତାମତ  \"[$2 $1]\" ପୃଷ୍ଠାରେ ଦର୍ଶାଯାଇଛି ।",
        "searchsuggest-search": "ଖୋଜନ୍ତୁ",
        "searchsuggest-containing": "ଖୋଜୁଛି...",
index fa54c0e..b6c1679 100644 (file)
@@ -20,7 +20,8 @@
                        "Xqt",
                        "Ævar Arnfjörð Bjarmason",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "ਲਿੰਕ ਹੇਠ-ਲਾਈਨ:",
        "feedback-error3": "ਦੋਸ਼:API ਵੱਲੋਂ ਕੋਈ ਜੁਆਬ ਨਹੀਂ",
        "feedback-message": "ਸੁਨੇਹਾ:",
        "feedback-subject": "ਵਿਸ਼ਾ:",
-       "feedback-submit": "ਵਿà¨\9aਾਰ à¨¦à¨¿à¨\93",
+       "feedback-submit": "ਹਵਾਲà©\87 à¨\95ਰà©\8b",
        "searchsuggest-search": "ਖੋਜ",
        "api-error-badaccess-groups": "ਤੁਹਾਨੂੰ ਇਸ ਵਿਕੀ ਉੱਤੇ ਫ਼ਾਈਲਾਂ ਅੱਪਲੋਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।",
        "api-error-badtoken": "ਅੰਦਰੂਨੀ ਦੋਸ਼: ਗ਼ਲਤ ਟੋਕਨ",
index 273497b..4dde90c 100644 (file)
        "missingcommentheader": "'''Uwaga''' – treść tytułu lub nagłówka komentarza jest pusta.\nJeśli ponownie klikniesz „{{int:savearticle}}“, zmiany zostaną zapisane bez niego.",
        "summary-preview": "Podgląd opisu:",
        "subject-preview": "Podgląd nagłówka:",
+       "previewerrortext": "Wystąpił błąd podczas próby podglądu Twoich zmian.",
        "blockedtitle": "Użytkownik jest zablokowany",
        "blockedtext": "'''Twoje konto lub adres IP zostały zablokowane.'''\n\nBlokada została nałożona przez $1.\nPodany powód to: ''$2''.\n\n* Początek blokady: $8\n* Wygaśnięcie blokady: $6\n* Zablokowany został: $7\n\nW celu wyjaśnienia przyczyny zablokowania możesz się skontaktować z $1 lub innym [[{{MediaWiki:Grouppage-sysop}}|administratorem]].\nNie możesz użyć funkcji „Wyślij e‐mail do tego użytkownika”, jeśli brak jest poprawnego adresu e‐mail w Twoich [[Special:Preferences|preferencjach]] lub jeśli taka możliwość została Ci zablokowana.\nTwój obecny adres IP to $3, a numer identyfikacyjny blokady to $5.\nProsimy o podanie obu tych informacji przy wyjaśnianiu blokady.",
        "autoblockedtext": "Ten adres IP został zablokowany automatycznie, gdyż korzysta z niego inny użytkownik, zablokowany przez administratora $1.\nPowód blokady:\n\n:''$2''\n\n* Początek blokady: $8\n* Wygaśnięcie blokady: $6\n* Zablokowany został: $7\n\nMożesz skontaktować się z $1 lub jednym z pozostałych [[{{MediaWiki:Grouppage-sysop}}|administratorów]] w celu uzyskania informacji o blokadzie.\n\nNie możesz użyć funkcji „Wyślij e‐mail do tego użytkownika”, jeśli brak jest poprawnego adresu e‐mail w Twoich [[Special:Preferences|preferencjach]] lub jeśli taka możliwość została Ci zablokowana.\n\nTwój obecny adres IP to $3, a numer identyfikacyjny blokady to $5.\nProsimy o podanie obu tych numerów przy wyjaśnianiu blokady.",
index 2fa50f4..d83eb17 100644 (file)
        "missingcommentheader": "'''Ch'a arcòrda:''' A l'ha pa dàit ëd soget o d'intestassion për cost coment.\nSe a sgnaca torna «{{int:savearticle}}», soa modìfica a sarà salvà sensa gnun-a intestassion.",
        "summary-preview": "Preuva dël resumé:",
        "subject-preview": "Preuva dl'oget/intestassion:",
+       "previewerrortext": "A l'é rivaje n'eror durant ël tentativ ëd previsualisassion ëd soe modìfiche.",
        "blockedtitle": "L'utent a l'é blocà.",
        "blockedtext": "'''Sò stranòm ò pura adrëssa IP a l'é stàit blocà.'''\n\nËl blocagi a l'é stàit fàit da $1.\nComa rason a l'ha butà ''$2''.\n\n* Blocà a parte dal: $8\n* Fin al: $6\n* As veul blochesse: $7\n\nA peul butesse an contat con $1 ò pura n'àotr [[{{MediaWiki:Grouppage-sysop}}|aministrator]] për discute ëd sò blocagi.\nCh'a ten-a present ch'a podrà dovré la fonsion «mandeje un messagi ëd pòsta eletrònica a l'utent» mach s'a l'ha specificà n'adrëssa ëd vàlida ant [[Special:Preferences|sò gust]] e se sta fonsion a l'é nen ëstàita blocà 'cò chila.\nSoa adrëssa IP corenta a l'é $3, e l'identificativ dël blocagi a l'é #$5.\nPër piasì, ch'a-j buta tut e doj ant soe comunicassion ant sta question-sì.",
        "autoblockedtext": "Soa adrëssa IP a l'è stàita blocà n'automàtich ën essend ch'a l'era dovrà da n'àutr utent, che a l'é stàit blocà da $1.\nLa rason ësmonùa a l'é\n\n:''$2''\n\n* Ël blocagi a part dai: $8\n* A va a la fin ai: $6\n* As veul blochesse: $7\n\nA peul contaté $1 ò pura n'àotr dj'[[{{MediaWiki:Grouppage-sysop}}|aministrator]] për discute d'ës blocagi.\n\nCh'a varda mach ch'a peul nen dovré l'opsion ëd «mandeje un mëssagi a l'utent» se a l'ha nen n'adrëssa ëd pòsta eletrònica vàlida registrà ant [[Special:Preferences|sò gust]] o se chiel a l'é stàit blocà ëdcò dal dovrela.\n\nSoa adrëssa IP corenta a l'é $3, e sò nùmer ëd blocagi a l'é $5.\nPër piasì, ch'a buta sempe tùit ij detaj an tute j'arceste ch'a farà.",
index 64ab279..390a7ed 100644 (file)
        "percent": "$1%",
        "parentheses": "($1)",
        "brackets": "[$1]",
-       "imgmultipageprev": "â\86\90 Ù¾Ø®Ù\88اÙ\86Û\8c مخ",
+       "imgmultipageprev": "â\86\92 ØªÛ\90ر مخ",
        "imgmultipagenext": "راتلونکی مخ →",
        "imgmultigo": "ورځه!",
        "imgmultigoto": "د $1 مخ ته ورځه",
index 0616cfb..0ff7f07 100644 (file)
@@ -78,7 +78,8 @@
                        "PauloEduardo",
                        "Webysther",
                        "Fasouzafreitas",
-                       "RosaMafalda17"
+                       "RosaMafalda17",
+                       "Macofe"
                ]
        },
        "tog-underline": "Sublinhar links:",
        "feedback-error3": "Erro: A API não responde",
        "feedback-message": "Mensagem:",
        "feedback-subject": "Assunto:",
-       "feedback-submit": "Enviar Comentários",
+       "feedback-submit": "Enviar",
        "feedback-thanks": "Obrigado! O seu comentário foi adicionado à página \"[$2 $1]\".",
        "searchsuggest-search": "Pesquisa",
        "searchsuggest-containing": "contendo...",
index 1484107..ffd48c7 100644 (file)
        "missingcommentheader": "Edit summary that is shown if you enable \"Prompt me when entering a blank summary\" and add a new section without headline to a talk page.\n\nSee also:\n* {{msg-mw|Missingsummary}}\n* {{msg-mw|Savearticle}}",
        "summary-preview": "Preview of the edit summary, shown under the edit summary itself.\nShould match: {{msg-mw|summary}}.",
        "subject-preview": "Should match {{msg-mw|subject}}",
+       "previewerrortext": "When a user has the editing preference LivePreview enabled, clicked the Preview or Show Changes button in the edit page and the action did not succeed.",
        "blockedtitle": "Used as title displayed for blocked users. The corresponding message body is one of the following messages:\n* {{msg-mw|Blockedtext|notext=1}}\n* {{msg-mw|Autoblockedtext|notext=1}}",
        "blockedtext": "Text displayed to blocked users.\n\n\"email this user\" should be consistent with {{msg-mw|Emailuser}}.\n\nParameters:\n* $1 - the blocking sysop (with a link to his/her userpage)\n* $2 - the reason for the block\n* $3 - the current IP address of the blocked user\n* $4 - (Unused) the blocking sysop's username (plain text, without the link)\n* $5 - the unique numeric identifier of the applied autoblock\n* $6 - the expiry of the block\n* $7 - the intended target of the block (what the blocking user specified in the blocking form)\n* $8 - the timestamp when the block started\nSee also:\n* {{msg-mw|Grouppage-sysop}}\n* {{msg-mw|Autoblockedtext}}",
        "autoblockedtext": "Text displayed to automatically blocked users.\n\n\"email this user\" should be consistent with {{msg-mw|Emailuser}}.\n\nParameters:\n* $1 - the blocking sysop (with a link to his/her userpage)\n* $2 - the reason for the block (in case of autoblocks: {{msg-mw|autoblocker}})\n* $3 - the current IP address of the blocked user\n* $4 - (Unused) the blocking sysop's username (plain text, without the link). Use it for GENDER.\n* $5 - the unique numeric identifier of the applied autoblock\n* $6 - the expiry of the block\n* $7 - the intended target of the block (what the blocking user specified in the blocking form)\n* $8 - the timestamp when the block started\nSee also:\n* {{msg-mw|Grouppage-sysop}}\n* {{msg-mw|Blockedtext}}",
index 6dac5d6..19870a6 100644 (file)
@@ -9,7 +9,8 @@
                        "The Evil IP address",
                        "לערי ריינהארט",
                        "아라",
-                       "Fitoschido"
+                       "Fitoschido",
+                       "Macofe"
                ]
        },
        "tog-underline": "T'inkikunata uranpi sikwiy",
        "import-rootpage-nosubpage": "Saphi p'anqap \"$1\" sutisuyunpiqa urin p'anqakuna manam kanqachu.",
        "importlogpage": "Hawamanta chaskiy hallch'a",
        "importlogpagetext": "Huk wikikunamanta wiñay kawsayniyuq p'anqakunata kamachina chaskiykuna.",
-       "import-logentry-upload": "hawamanta chaskisqa [[$1]] willañiqita churkuspa",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|hukchasqa|hukchasqakuna}}",
-       "import-logentry-interwiki": "huk wikimanta chaskisqa $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|hukchasqa|hukchasqakuna}} $2-manta",
        "javascripttest": "JavaScript llanchiy",
        "javascripttest-pagetext-noframework": "Kay p'anqaqa JavaScript llanchina purichinallapaqmi kachun.",
        "feedback-error3": "Pantasqa: API nisqaqa manam kutipanchu",
        "feedback-message": "Willay:",
        "feedback-subject": "Yuyancha:",
-       "feedback-submit": "Willapuyniykita kachay",
+       "feedback-submit": "Kachay",
        "feedback-thanks": "Añaychayki! Willapuyniykiqa \"[$2 $1]\" sutiyuq p'anqaman yapasqañam.",
        "searchsuggest-search": "Maskay",
        "searchsuggest-containing": "kaykunayuq: ...",
index 871a648..a94802c 100644 (file)
@@ -9,7 +9,8 @@
                        "Urhixidur",
                        "לערי ריינהארט",
                        "Davent",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Suttastritgar colliaziuns:",
        "import-rootpage-nosubpage": "Il tip da pagina \"$1\" da la pagina principala na lubescha naginas sutpaginas.",
        "importlogpage": "Protocol dals imports",
        "importlogpagetext": "Import administrativ da paginas cun cronologia da modificaziuns dad autras wikis.",
-       "import-logentry-upload": "ha importà [[$1]] cun chargiar si ina datoteca",
        "import-logentry-upload-detail": "{{PLURAL:$1|Ina versiun|$1 versiuns}}",
-       "import-logentry-interwiki": "ha importà $1 (transwiki)",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|Ina versiun|$1 versiuns}} da $2",
        "javascripttest": "Test da JavaScript",
        "javascripttest-pagetext-noframework": "Questa pagina è reservada per exequir tests da JavaScript.",
        "feedback-error3": "Errur: Nagina resposta dal API",
        "feedback-message": "Messadi:",
        "feedback-subject": "Object:",
-       "feedback-submit": "Trametter il resun",
+       "feedback-submit": "Trametter",
        "feedback-thanks": "Grazia! Tes resun è vegnì publitgà sin la pagina \"[$2 $1]\".",
        "searchsuggest-search": "Tschertgar",
        "searchsuggest-containing": "cuntegna…",
index 2c3f2d8..8140f40 100644 (file)
@@ -77,7 +77,8 @@
                        "Purodha",
                        "Максим777",
                        "Sealle",
-                       "Macofe"
+                       "Macofe",
+                       "DonRumata"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "move-page": "$1 — переименование",
        "move-page-legend": "Переименование страницы",
        "movepagetext": "Воспользовавшись нижеприведённой формой, вы переименуете страницу, одновременно переместив на новое место её журнал изменений.\nСтарое название станет перенаправлением на новое.\nВы можете автоматически обновить перенаправления, которые вели на старое название.\nЕсли вы этого не сделаете, пожалуйста, проверьте наличие [[Special:DoubleRedirects|двойных]] и [[Special:BrokenRedirects|разорванных перенаправлений]].\nВы отвечаете за то, чтобы ссылки продолжали и далее указывать туда, куда предполагалось.\n\nОбратите внимание, что страница '''не будет''' переименована, если уже существует страница с названием, идентичным выбранному, кроме случаев, когда такая страница является перенаправлением или пуста, и при этом не имеет истории правок.\nЭто означает, что если вы сделали преименование ошибочно, вы можете переименовать страницу обратно в то название, которое у неё только что было, но вы не можете случайно затереть существующую страницу.\n\n'''Предупреждение!'''\nПереименование ''популярных'' страниц может привести к масштабным и неожиданным изменениям.\nПожалуйста, прежде чем продолжать, убедитесь, что понимаете все возможные последствия.",
-       "movepagetext-noredirectfixer": "Воспользовавшись формой ниже, вы переименуете страницу, одновременно переместив на новое место её журнал изменений.\nСтарое название станет перенаправлением на новое название.\nПожалуйста, проверьте наличие [[Special:DoubleRedirects|двойных]] и [[Special:BrokenRedirects|разорванных перенаправлений]].\nВы отвечаете за то, что бы ссылки продолжали и далее указывают туда, куда предполагалось.\n\nОбратите внимание, что страница '''не будет''' переименована, если страница с новым названием уже существует, кроме случаев, если она является перенаправлением или пуста и не имеет истории правок.\nЭто означает, что вы можете переименовать страницу обратно в то название, которое у него только что было, если вы переименовали по ошибке, но вы не можете случайно затереть существующую страницу.\n\n'''ПРЕДУПРЕЖДЕНИЕ!'''\nПереименование может привести к масштабным и неожиданным изменениям для ''популярных'' страниц.\nПожалуйста, прежде чем вы продолжите, убедитесь, что вы понимаете все возможные последствия.",
+       "movepagetext-noredirectfixer": "Воспользовавшись формой ниже, вы переименуете страницу, одновременно переместив на новое место её журнал изменений.\nСтарое название станет перенаправлением на новое название.\nПожалуйста, проверьте наличие [[Special:DoubleRedirects|двойных]] и [[Special:BrokenRedirects|разорванных перенаправлений]].\nВы отвечаете за то, чтобы ссылки продолжали и далее указывать туда, куда предполагалось.\n\nОбратите внимание, что страница <strong>не будет</strong> переименована, если страница с новым названием уже существует, кроме случаев, если она является перенаправлением или пуста и не имеет истории правок.\nЭто означает, что вы можете переименовать страницу обратно в то название, которое у него только что было, если вы переименовали по ошибке, но вы не можете случайно затереть существующую страницу.\n\n<strong>ПРЕДУПРЕЖДЕНИЕ!</strong>\nПереименование может привести к масштабным и неожиданным изменениям для популярных страниц.\nПожалуйста, прежде чем вы продолжите, убедитесь, что вы понимаете все возможные последствия.",
        "movepagetalktext": "Присоединённая страница обсуждения будет также автоматически переименована, '''кроме случаев, когда:'''\n\n*Не пустая страница обсуждения уже существует под таким же именем или\n*Вы не поставили галочку в поле ниже.\n\nВ этих случаях, вы будете вынуждены переместить или объединить страницы вручную, если это нужно.",
        "movearticle": "Переименовать страницу",
        "moveuserpage-warning": "'''Внимание.''' Вы собираетесь переименовать страницу участника. Пожалуйста, обратите внимание, что переименована будет только страница, участник '''не''' будет переименован.",
        "tags-delete-explanation-initial": "Вы собираетесь удалить метку «$1» из базы данных.",
        "tags-delete-reason": "Причина:",
        "tags-delete-submit": "Безвозвратно удалить эту метку",
+       "tags-delete-not-allowed": "Метки, определённые расширением, не могут быть удалены, если только расширения явно не даёт возможности этого делать.",
        "tags-delete-not-found": "Метка «$1» не существует.",
        "tags-activate-title": "Активировать метку",
        "tags-activate-question": "Вы собираетесь активировать метку «$1».",
        "logentry-block-unblock": "$1 разблокировал{{GENDER:$2||а}} {{GENDER:$4|$3}}",
        "logentry-block-reblock": "$1 {{GENDER:$2|изменил|изменила}} срок блокировки {{GENDER:$4|$3}} на период $5 $6",
        "logentry-suppress-block": "$1 {{GENDER:$2|заблокировал}} {{GENDER:$4|$3}} сроком на $5 $6",
+       "logentry-import-interwiki": "$1 импортировал{{GENDER:$2||а}} $3 из другой вики",
        "logentry-merge-merge": "$1 объедининил{{GENDER:$2||а}} $3 в $4 (версии до $5)",
        "logentry-move-move": "$1 {{GENDER:$2|переименовал|переименовала}} страницу $3 в $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|переименовал|переименовала}} страницу $3 в $4 без оставления перенаправления",
index d158c90..b8b776d 100644 (file)
@@ -9,7 +9,8 @@
                        "Reedy",
                        "Tkalyn",
                        "아라",
-                       "Dicto23456"
+                       "Dicto23456",
+                       "Macofe"
                ]
        },
        "tog-underline": "Підкреслёвати одказы:",
        "import-rootpage-nosubpage": "В просторї назв вказаной корїнёвой сторінкы «$1» не дозволены підсторінкы",
        "importlogpage": "Книга імпортів",
        "importlogpagetext": "На тій сторінцї ся зображують адміністраторскы імпорты сторінок враховано едітовань з іншых вікі.",
-       "import-logentry-upload": "імпортовав [[$1]] наладованём файлу",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|ревізія|ревізії|ревізій}}",
-       "import-logentry-interwiki": "міджівікі імпорт $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|ревізія|ревізії|ревізій}} з $2",
        "javascripttest": "Тестованя JavaScript",
        "javascripttest-pagetext-noframework": "Тота сторінка є резервована про тестованя JavaScript.",
        "feedback-error3": "Хыба: API не вернуло жадну одповідь",
        "feedback-message": "Повідомлїня:",
        "feedback-subject": "Предмет:",
-       "feedback-submit": "Одослати одозву",
+       "feedback-submit": "Одослати",
        "feedback-thanks": "Дякуєме! Ваш коментарь быв приданый на сторінку „[$2 $1]“.",
        "searchsuggest-search": "Глядати",
        "searchsuggest-containing": "обсягуючій...",
index f80a4b7..59c5687 100644 (file)
@@ -20,7 +20,8 @@
                        "Shubha",
                        "Vibhijain",
                        "రాకేశ్వర",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "परिसन्धेः अधो रेखाङ्कनम्:",
        "feedback-error3": "दोषः : ए पि ऐ तः प्रतिस्पन्दः न प्राप्तः",
        "feedback-message": "संदेश:",
        "feedback-subject": "विषय:",
-       "feedback-submit": "पà¥\8dरतिसà¥\8dपनà¥\8dदà¤\83 à¤ªà¥\8dरà¥\87ष्यताम्",
+       "feedback-submit": "à¤\89पसà¥\8dथाप्यताम्",
        "feedback-thanks": "धन्यवादः ! भवतः प्रतिस्पन्दः \"[ $2  $1 ]\" पृष्ठाय प्रेषितः अस्ति ।",
        "searchsuggest-search": "अन्वेषणम्",
        "searchsuggest-containing": "विद्यन्ते......",
index 47647d0..8884db7 100644 (file)
@@ -11,7 +11,8 @@
                        "Urhixidur",
                        "아라",
                        "Purodha",
-                       "Krivoshapkina"
+                       "Krivoshapkina",
+                       "Macofe"
                ]
        },
        "tog-underline": "Сигэлэри аннынан тардыы:",
        "disclaimers": "Бүк охсунуу",
        "disclaimerpage": "Project:Бүк охсунуу",
        "edithelp": "Уларытааччыларга көмө",
+       "helppage-top-gethelp": "Көмө",
        "mainpage": "Сүрүн сирэй",
        "mainpage-description": "Сүрүн сирэй",
        "policy-url": "Project:Сиэрэ",
        "prefs-personal": "Кыттааччы туруоруулара",
        "prefs-rc": "Кэлиҥҥи уларытыылар",
        "prefs-watchlist": "Кэтээһин",
+       "prefs-editwatchlist": "Кэтэбил тиһилигин уларытыы",
        "prefs-watchlist-days": "Хас хонуктааҕы уларыйыылар кэтээһин испииһэгэр көстөллөрө:",
        "prefs-watchlist-days-max": "Уһаабыта {{PLURAL:$1|биир күн|$1 күн}}",
        "prefs-watchlist-edits": "Хас уларытыыны тупсарыллыбыт кэтээһиҥҥэ көрдөрөрө:",
        "import-rootpage-nosubpage": "\"$1\" тирэх сирэй аатын далыгар сирэй үөдүҥнэрэ (подстраницалар) көҥүллэммэттэр",
        "importlogpage": "Импорт сурунаала",
        "importlogpagetext": "Сирэйдэри историяларын кытта холбуу атын биикилэртэн импортааһын.",
-       "import-logentry-upload": "[[$1]] - билэттэн импортааһын",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|барыл|барыл баар}}",
-       "import-logentry-interwiki": "биикилэр ыккардыларынааҕы $1",
        "import-logentry-interwiki-detail": "барыта $2 барылтан $1 барыл",
        "javascripttest": "JavaScript тургутуу",
        "javascripttest-pagetext-noframework": "Бу сирэй JavaScript тургутууларга анаммыт.",
        "feedback-error3": "Алҕас: API хоруйдаабата",
        "feedback-message": "Сурук:",
        "feedback-subject": "Тиэмэ:",
-       "feedback-submit": "Санаа Ñ\8dÑ\82ииÑ\82Ñ\8d",
+       "feedback-submit": "ЫÑ\8bÑ\82",
        "feedback-thanks": "Махтал! Эн санааҥ бу сирэйгэ \"[$2 $1]\" сурулунна.",
        "searchsuggest-search": "Көрдөөһүн",
        "searchsuggest-containing": "тыл баар ыстатыйалара...",
index 92fc865..2c1445d 100644 (file)
@@ -13,7 +13,8 @@
                        "Urhixidur",
                        "לערי ריינהארט",
                        "아라",
-                       "Pippinu"
+                       "Pippinu",
+                       "Macofe"
                ]
        },
        "tog-underline": "Suttalinia li culligamenti:",
        "feedback-error3": "Erruri: Nudda risposta di l'API",
        "feedback-message": "Missaggiu:",
        "feedback-subject": "Oggettu:",
-       "feedback-submit": "Manna u cummentu",
+       "feedback-submit": "Manna",
        "feedback-thanks": "Grazzî! U to cummentu fu' affissu ntâ pàggina \"[$2 $1]\".",
        "searchsuggest-search": "Risciduta",
        "searchsuggest-containing": "chi' cunteni...",
index c517d95..8ec5156 100644 (file)
@@ -1,7 +1,8 @@
 {
        "@metadata": {
                "authors": [
-                       "Songhay"
+                       "Songhay",
+                       "Macofe"
                ]
        },
        "tog-underline": "Dobu ganda-žeeriyan:",
        "deleteprotected": "War ši hin ka moɲoo woo tuusu zam'a ma jejebandi.",
        "deleting-backlinks-warning": "'''Warning:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Moo taney]] ga dobu wal'i huru moɲoo kaŋ war ga baa k'a barmay dogoo ra.",
        "rollback": "Yee banda fasalyaney \\",
-       "rollback_short": "Yee banda",
        "rollbacklink": "yee banda",
        "rollbacklinkcount": "{{PLURAL:$1|Fasalyan}} $1 yee banda",
        "rollbacklinkcount-morethan": "Kaŋ ga bisa {{PLURAL:$1|fasalyan}} $1 yee banda",
        "import-rootpage-nosubpage": "$1 maafarroo kaŋ goo linji moo se ši moo-izeyaŋ duɲe. \\",
        "importlogpage": "Taariki dam",
        "importlogpagetext": "Juwalkaw ga moɲey dam nda fasalyan taariki ka hun wiki waaniyaŋ ga.",
-       "import-logentry-upload": "na [[$1]] dam nda tuku zijandiyan",
        "import-logentry-upload-detail": "{{PLURAL:$1|Filla}} $1 ka huru",
-       "import-logentry-interwiki": "$1 huru transwiki bande \\",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|Filla}} $1 huru ka hun $2 ga",
        "javascripttest": "JavaScript šiiyan",
-       "javascripttest-title": "Goo ma $1 šii",
        "javascripttest-pagetext-noframework": "Moɲoo woo n' ka lanbandi ka JavaScript šiiyaney tee.",
        "javascripttest-pagetext-unknownframework": "Kungagoy \"$1\" šiiyan ši bayandi.",
        "javascripttest-pagetext-frameworks": "Šiiyan kungagoy šiiyaney wey affoo suuba: $1",
        "javascripttest-pagetext-skins": "Kuuru foo suuba ka šiiyaney tee nd'a:",
        "javascripttest-qunit-intro": "Guna [$1 šiiyan fahamandi tiira] mediawiki.org ga.",
-       "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit šiiyan margari",
        "tooltip-pt-userpage": "War goykaw moɲoo",
        "tooltip-pt-anonuserpage": "Goykaw moo IP aderesoo kaŋ war goo m'a fasal sanda",
        "tooltip-pt-mytalk": "War deede moɲoo",
        "logentry-upload-revert": "$1 na $3 {{GENDER:$2|zijandi}}",
        "rightsnone": "(baffoo)",
        "revdelete-summary": "duurandi fasal",
+       "feedback-adding": "Goo ma willandi tonton moɲoo ga…",
+       "feedback-bugcheck": "A boori! Koroši de wala woo manti [hasaraw bayrandi $1] affaa. \\",
+       "feedback-bugnew": "Ay n'a koroši. Hasaraw bayrandi sanba",
        "feedback-bugornote": "Nda war soolu ka dabari šenday šilbay ka tonton, [$1 hasaraw bayrandi hantum].\nNd'a manti woo, war ga hin ka goy nda takkada faalaa ne ganda. War laasaaboo ka tonton \"[$3 $2]\" moɲoo ga, war goykawmaaɲoo bande.",
-       "feedback-subject": "Teekaw",
-       "feedback-message": "Alhabar:",
        "feedback-cancel": "Naŋ",
-       "feedback-submit": "Willandi sanba",
-       "feedback-adding": "Goo ma willandi tonton moɲoo ga…",
+       "feedback-close": "A ben",
        "feedback-error1": "Firka: hunyan šibayante porogaram hantumyan gunaridoo (API) ga",
        "feedback-error2": "Firka: fasalyan kaŋ",
        "feedback-error3": "Firka: Zaabi kul ši hun API do",
+       "feedback-message": "Alhabar:",
+       "feedback-subject": "Teekaw",
+       "feedback-submit": "Sanba",
        "feedback-thanks": "Foo nda goy! War willandoo n' ka wallafandi \"[$2 $1]\" moɲoo ga.",
-       "feedback-close": "A ben",
-       "feedback-bugcheck": "A boori! Koroši de wala woo manti [hasaraw bayrandi $1] affaa. \\",
-       "feedback-bugnew": "Ay n'a koroši. Hasaraw bayrandi sanba",
        "searchsuggest-search": "Ceeci",
        "searchsuggest-containing": "goo nda…",
        "api-error-badaccess-groups": "War ši nda fondo ka tukey zijandi wikiyoo woo ga.",
index c787559..23a59ac 100644 (file)
@@ -7,7 +7,8 @@
                        "OC Ripper",
                        "לערי ריינהארט",
                        "아라",
-                       "Milicevic01"
+                       "Milicevic01",
+                       "Macofe"
                ]
        },
        "tog-underline": "Podvuci linkove:",
        "import-rootpage-nosubpage": "Imenski prostor „$1“ osnovne stranice ne dozvoljava podstranice.",
        "importlogpage": "Evidencija uvoza stranica",
        "importlogpagetext": "Administrativni uvozi stranica s historijom izmjena sa drugih wikija.",
-       "import-logentry-upload": "uvezen/a [[$1]] postavljanjem datoteke",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|revizija|revizije|revizija}}",
-       "import-logentry-interwiki": "uveženo (\"transwikied\") $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revizija|revizije|revizija}} sa $2",
        "javascripttest": "Javaskript test",
        "javascripttest-pagetext-noframework": "Ova stranica je rezervisana za izvršavanje javaskript testova.",
        "feedback-error3": "Greška: nema odgovora od API-ja",
        "feedback-message": "Poruka:",
        "feedback-subject": "Tema:",
-       "feedback-submit": "Pošalji povratnu informaciju",
+       "feedback-submit": "Unesi",
        "feedback-thanks": "Hvala! Vaša povratna informacija je postavljena na stranicu „[$2 $1]“.",
        "searchsuggest-search": "Traži",
        "searchsuggest-containing": "sadrži...",
index 0f718ac..ba0c2d1 100644 (file)
@@ -27,7 +27,8 @@
                        "Indunil Chamara",
                        "Susith Chandira Gts",
                        "Thanushka",
-                       "Thirsty"
+                       "Thirsty",
+                       "Macofe"
                ]
        },
        "tog-underline": "සබැඳි යටීර කිරීම:",
        "import-rootpage-invalid": "ලබා දුන් මූල පිටුව වැරදි ශීර්ෂයක් වේ.",
        "importlogpage": "ලඝු-සටහන් ආයාත කරන්න",
        "importlogpagetext": "අනෙකුත් විකියන්ගෙන් සංස්කරණ ඉතිහාසයන් ඇති පිටු වල පරිපාලනමය ආයාත කිරීම්.",
-       "import-logentry-upload": "ගොනු උඩුගත කිරීමක් මගින් [[$1]] ආයාත කෙරිණි",
        "import-logentry-upload-detail": " {{PLURAL:$1|සංශෝධනය|සංශෝධන $1 ක්}}",
-       "import-logentry-interwiki": "$1 අන්තර්විකීකරණය කරන ලදි",
        "import-logentry-interwiki-detail": "$2 වෙතින් {{PLURAL:$1|එක් සංශෝධනයක්|සංශෝධන $1 ක්}}",
        "javascripttest": "ජාවාස්ක්‍රිප්ට් පරික්ෂාකරමින්",
        "javascripttest-pagetext-noframework": "මෙම පිටුව ජාවාස්ක්‍රිප්ට් පරික්ෂණ සිදුකිරීම සඳහා වෙන්කර ඇත.",
        "feedback-error3": "දෝෂය: API ගෙන් ප්‍රතිචාරයක් නොමැත",
        "feedback-message": "පණිවුඩය:",
        "feedback-subject": "විෂයය:",
-       "feedback-submit": "පà·\8aâ\80\8dරතà·\92චà·\8fරය à¶ºà·\80න්න",
+       "feedback-submit": "යà·\9cමන්න",
        "feedback-thanks": "ස්තුතියි! ඔබේ ප්‍රතිචාරය \"[$2 $1]\" පිටුවට එක් කරන ලදී.",
        "searchsuggest-search": "ගවේශණය කරන්න",
        "searchsuggest-containing": "ඇතුළත් වෙමින් පවතී...",
index 313ef92..a838173 100644 (file)
@@ -28,7 +28,8 @@
                        "לערי ריינהארט",
                        "아라",
                        "Matthew Greg",
-                       "Ата"
+                       "Ата",
+                       "Macofe"
                ]
        },
        "tog-underline": "Podčiarkovať odkazy:",
        "feedback-error3": "Chyba: Žiadna odpoveď z API",
        "feedback-message": "Správa:",
        "feedback-subject": "Predmet:",
-       "feedback-submit": "Odoslať komentár",
+       "feedback-submit": "Odoslať",
        "feedback-thanks": "Ďakujeme. Váš komentár bol odoslaný na stránku „[$2 $1]“.",
        "searchsuggest-search": "Hľadať",
        "searchsuggest-containing": "obsahuje...",
index d6ef5dd..82d1756 100644 (file)
        "missingcommentheader": "'''Opozorilo:''' Niste vnesli zadeve/naslova za ta komentar.\nČe boste ponovno kliknili »{{int:savearticle}}«, bo vaše urejanje shranjeno brez le-tega.",
        "summary-preview": "Predogled povzetka",
        "subject-preview": "Predogled zadeve/naslova:",
+       "previewerrortext": "Med poskusom prikaza predogleda vaših sprememb je prišlo do napake.",
        "blockedtitle": "Uporabnik je blokiran",
        "blockedtext": "'''Urejanje z vašim uporabniškim imenom oziroma IP-naslovom je onemogočeno.'''\n\nBlokiral vas je $1.\nPodani razlog je ''$2''.\n\n* začetek blokade: $8\n* potek blokade: $6\n* blokirani uporabnik: $7\n\nO blokiranju se lahko pogovorite z uporabnikom/-co $1 ali katerim drugim [[{{MediaWiki:Grouppage-sysop}}|administratorjem]].\nVedite, da lahko ukaz »Pošlji uporabniku e-pismo« uporabite le, če ste v [[Special:Preferences|nastavitvah]] vpisali in potrdili svoj elektronski naslov in ta ni blokiran.\nVaš IP-naslov je $3, številka blokade pa #$5.\nProsimo, vključite ju v vse morebitne poizvedbe.",
        "autoblockedtext": "Vaš IP-naslov je bil samodejno blokiran, saj je bil uporabljen s strani drugega uporabnika, ki ga je blokiral $1.\nRazlog za to je bil naslednji:\n\n:''$2''\n\n* Začetek blokade: $8\n* Konec blokade: $6\n* Blokirani uporabnik: $7\n\nKontaktirate lahko $1 ali katerega od drugih [[{{MediaWiki:Grouppage-sysop}}|administratorjev]], da razpravljate o blokadi.\n\nVedite, da lahko funkcijo »{{:MediaWiki:Emailuser/sl}}« uporabljate le, če ste v svoje [[Special:Preferences|uporabniške nastavitve]] vnesli veljaven e-poštni naslov, in vam njena uporaba ni bila preprečena.\n\nVaš trenutni IP-naslov je $3, ID blokiranja pa #$5. Prosimo, vključite ta ID v vsako zastavljeno vprašanje.",
index 09b383e..abc0720 100644 (file)
@@ -26,7 +26,8 @@
                        "לערי ריינהארט",
                        "아라",
                        "Gertakapllani",
-                       "OrvenBregu"
+                       "OrvenBregu",
+                       "Macofe"
                ]
        },
        "tog-underline": "Nënvizo lidhjet:",
        "import-error-invalid": "Faqja \"$1\" nuk është importuar sepse emri i saj është i palejueshëm.",
        "importlogpage": "Regjistri i importeve",
        "importlogpagetext": "Importimet administrative të faqeve me historik redaktimi nga wiki-t e tjera.",
-       "import-logentry-upload": "importoi [[$1]] nëpërmjet ngarkimit të skedave",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|version|versione}}",
-       "import-logentry-interwiki": "transwikoji $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$!1|version|versione}} nga $2",
        "javascripttest": "Duke testuar JavaScript",
        "javascripttest-pagetext-noframework": "Kjo faqe është rezervuar për kryerjen e testimeve JavaScript.",
        "feedback-error3": "Gabim: Nuk ka përgjigje nga API",
        "feedback-message": "Mesazhi:",
        "feedback-subject": "Subjekti:",
-       "feedback-submit": "Paraqit përshtypjet",
+       "feedback-submit": "Dërgo",
        "feedback-thanks": "Faleminderit! Përshtypja juaj është postuar në faqen \"[$2 $1]\".",
        "searchsuggest-search": "Kërko",
        "searchsuggest-containing": "përmban ...",
index 688e526..22f6a80 100644 (file)
        "invalidtitle-knownnamespace": "Неисправан наслов с именским простором „$2“ и текстом „$3“",
        "invalidtitle-unknownnamespace": "Неисправан наслов с именским простором бр. $1 и текстом „$2“",
        "exception-nologin": "Нисте пријављени",
-       "exception-nologin-text": "[[Special:Userlogin|Пријавите се]] да бисте приступили овој страници или радњи.",
+       "exception-nologin-text": "Пријавите се да бисте приступили овој страници или радњи.",
        "exception-nologin-text-manual": "Морате бити $1 да бисте приступили овој страници или радњи.",
        "virus-badscanner": "Неисправна поставка: непознати скенер за вирусе: ''$1''",
        "virus-scanfailed": "неуспешно скенирање (код $1)",
        "content-failed-to-parse": "Не могу да рашчланим садржај типа $2 за модел $1: $3",
        "invalid-content-data": "Неисправни подаци садржаја",
        "content-not-allowed-here": "Садржај модела „$1“ није дозвољен на страници [[$2]]",
-       "editwarning-warning": "Ако напустите ову страницу, изгубићете све измене које сте направили.\nАко сте пријављени, можете онемогућити ово упозорење у својим подешавањима, у одељку „{{int:prefs-editing}}“.",
+       "editwarning-warning": "Ако напустите ову страницу, изгубићете све измене које сте направили. Ако сте пријављени, можете онемогућити ово упозорење у својим подешавањима, у одељку „{{int:prefs-editing}}“.",
        "editpage-notsupportedcontentformat-title": "Формат садржаја није подржан",
        "content-model-wikitext": "викитекст",
        "content-model-text": "чист текст",
        "revdelete-text-text": "Избрисане измене ће и даље бити видљиве у историји странице, али делови њиховог садржаја неће бити јавно доступну.",
        "revdelete-text-file": "Избрисане верзије датотеке ће и даље бити видљиве у историји датотеке, али делови њиховог садржаја неће бити јавно доступну.",
        "logdelete-text": "Избрисани уноси у дневницима ће и даље бити видљиви у дневницима, али делови њиховог садржаја неће бити јавно доступну.",
+       "revdelete-text-others": "Остали администратори ће и даље моћи да приступе скривеном садржају и врате га, осим ако се поставе додатна ограничења.",
        "revdelete-confirm": "Потврдите да намеравате ово урадити, да разумете последице и да то чините у складу с [[{{MediaWiki:Policy-url}}|правилима]].",
-       "revdelete-suppress-text": "Сакривање измена би требало користити '''само''' у следећим случајевима:\n* Злонамерни или погрдни подаци\n* Неприкладни лични подаци\n*: ''кућна адреса и број телефона, број банковне картице итд.''",
+       "revdelete-suppress-text": "Сакривање измена би требало користити <strong>само</strong> у следећим случајевима:\n* злонамерни или погрдни подаци\n* неприкладни лични подаци\n*: <em>кућна адреса и број телефона, број кредитне картице, ЈМБГ итд.</em>",
        "revdelete-legend": "Ограничења видљивости",
        "revdelete-hide-text": "Сакриј текст измене",
        "revdelete-hide-image": "Сакриј садржај датотеке",
        "prefs-diffs": "Разлике",
        "prefs-help-prefershttps": "Ова подешавања ће ступити на снагу при следећој пријави.",
        "prefswarning-warning": "Променили сте ваша подешавања али нисте их још сачували.\nАко не притиснете „$1“ ваша подешавања ће бити изгубљена.",
+       "prefs-tabs-navigation-hint": "Савет: можете користити типке са левом и десном стрелицом за кретање кроз картице.",
        "email-address-validity-valid": "Е-адреса је исправна",
        "email-address-validity-invalid": "Унесите исправну е-адресу",
        "userrights": "Управљање корисничким правима",
        "userrights-changeable-col": "Групе које можете да промените",
        "userrights-unchangeable-col": "Групе које не можете да промените",
        "userrights-irreversible-marker": "$1*",
+       "userrights-conflict": "Сукоб промена корисничких права! Молимо проверите ваше измене.",
        "userrights-removed-self": "Успешно сте себи скинули права. Због тога није вам дозвољен приступ овој страници.",
        "group": "Група:",
        "group-user": "Корисници",
        "license": "Лиценца:",
        "license-header": "Лиценца:",
        "nolicense": "није изабрано",
+       "licenses-edit": "Уреди избор лиценци",
        "license-nopreview": "(преглед није доступан)",
        "upload_source_url": "(ваша изабрана датотека од исправних и јавно доступних адреса)",
        "upload_source_file": "(ваша одабрана датотека са вашег рачунара)",
        "hours-ago": "Пре $1 {{PLURAL:$1|сат|сата|сати}}",
        "minutes-ago": "Пре $1 {{PLURAL:$1|минут|минута}}",
        "seconds-ago": "Пре $1 {{PLURAL:$1|секунда|секунди}}",
-       "monday-at": "Понедељак у $1",
-       "tuesday-at": "Уторак у $1",
-       "wednesday-at": "Среда у $1",
-       "thursday-at": "Четвртак у $1",
-       "friday-at": "Петак у $1",
-       "saturday-at": "Субота у $1",
-       "sunday-at": "Недеља у $1",
+       "monday-at": "у понедељак у $1",
+       "tuesday-at": "у уторак у $1",
+       "wednesday-at": "у среду у $1",
+       "thursday-at": "у четвртак у $1",
+       "friday-at": "у петак у $1",
+       "saturday-at": "у суботу у $1",
+       "sunday-at": "у недељу у $1",
        "yesterday-at": "Јуче у $1",
        "bad_image_list": "Формат је следећи:\n\nРазматрају се само набрајања (редови који почињу са звездицом).\nПрва веза у реду мора да буде веза до неисправне датотеке.\nСве даљње везе у истом реду сматрају се изузецима.",
        "variantname-zh-hans": "hans",
        "lag-warn-high": "Због преоптерећења базе података, измене новије од $1 {{PLURAL:$1|секунда|секунде}} неће бити приказане.",
        "watchlistedit-normal-title": "Уређивање списка надгледања",
        "watchlistedit-normal-legend": "Уклањање наслова са списка надгледања",
-       "watchlistedit-normal-explain": "Наслови на вашем списку надгледања су приказани испод.\nДа бисте уклонили наслов, означите кућицу до њега и кликните на „{{int:Watchlistedit-normal-submit}}“.\nМожете и да [[Special:EditWatchlist/raw|уредите сиров списак]].",
+       "watchlistedit-normal-explain": "Наслови на вашем списку надгледања су приказани испод.\nДа бисте уклонили наслов, означите квадратић до њега и кликните на „{{int:Watchlistedit-normal-submit}}“.\nМожете и да [[Special:EditWatchlist/raw|уредите сиров списак]].",
        "watchlistedit-normal-submit": "Уклони наслове",
        "watchlistedit-normal-done": "{{PLURAL:$1|1=Једна страница је уклоњена|$1 странице су уклоњене|$1 страница је уклоњено}} с вашег списка надгледања:",
        "watchlistedit-raw-title": "Измени сиров списак надгледања",
        "watchlistedit-raw-done": "Ваш списак надгледања је ажуриран.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1=Додат је један наслов|Додата су $1 наслова|Додато је $1 наслова}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 наслов је уклоњен|Уклоњена су $1 наслова|Уклоњено је $1 наслова}}:",
-       "watchlistedit-clear-title": "Ð\98Ñ\81пÑ\80азни Ñ\81пиÑ\81ак Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\9aа",
+       "watchlistedit-clear-title": "СпиÑ\81ак Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\9aа Ð¸Ñ\81пÑ\80ажÑ\9aен",
        "watchlistedit-clear-legend": "Испразни списак надгледања",
        "watchlistedit-clear-explain": "Сви наслови ће бити уклоњени из вашег списка надгледања.",
        "watchlistedit-clear-titles": "Наслови:",
        "tags-activate": "активирај",
        "tags-deactivate": "деактивирај",
        "tags-hitcount": "$1 {{PLURAL:$1|измена|измене|измена}}",
+       "tags-manage-no-permission": "Немате дозволу да мењате ознаке.",
        "tags-create-heading": "Нова ознака",
        "tags-create-tag-name": "Назив ознаке:",
        "tags-create-reason": "Разлог:",
        "tags-activate-not-found": "Ознака „$1“ не постоји.",
        "tags-activate-submit": "Активирај",
        "tags-deactivate-title": "Деактивирање ознака",
+       "tags-deactivate-question": "Деактивирате ознаку „$1“.",
        "tags-deactivate-reason": "Разлог:",
        "tags-deactivate-not-allowed": "Није могуће деактивирати ознаку „$1“.",
        "tags-deactivate-submit": "Декативирај",
        "compare-revision-not-exists": "Наведена измена не постоји.",
        "dberr-problems": "Дошло је до техничких проблема.",
        "dberr-again": "Сачекајте неколико минута и поново учитајте страницу.",
-       "dberr-info": "(не Ð¼Ð¾Ð³Ñ\83 Ð´Ð° Ñ\81е Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ñ\81а Ñ\81еÑ\80веÑ\80ом Ð±Ð°Ð·Ðµ података: $1)",
-       "dberr-info-hidden": "(не Ð¼Ð¾Ð³Ñ\83 Ð´Ð° Ñ\81е Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ñ\81а Ñ\81еÑ\80веÑ\80ом Ð±Ð°Ð·Ðµ података)",
+       "dberr-info": "(Ð\9dе Ð¼Ð¾Ð³Ñ\83 Ð¿Ñ\80иÑ\81Ñ\82Ñ\83пиÑ\82и Ð±Ð°Ð·Ð¸ података: $1)",
+       "dberr-info-hidden": "(Ð\9dе Ð¼Ð¾Ð³Ñ\83 Ð¿Ñ\80иÑ\81Ñ\82Ñ\83пиÑ\82и Ð±Ð°Ð·Ð¸ података)",
        "dberr-usegoogle": "У међувремену, покушајте да претражите помоћу Гугла.",
        "dberr-outofdate": "Имајте на уму да њихови примерци нашег садржаја могу бити застарели.",
        "dberr-cachederror": "Ово је привремено меморисан примерак стране који можда није ажуран.",
index 61b3176..5195467 100644 (file)
        "invalidtitle-knownnamespace": "Neispravan naslov s imenskim prostorom „$2“ i tekstom „$3“",
        "invalidtitle-unknownnamespace": "Neispravan naslov s imenskim prostorom br. $1 i tekstom „$2“",
        "exception-nologin": "Niste prijavljeni",
-       "exception-nologin-text": "[[Special:Userlogin|Prijavite se]] da biste pristupili ovoj stranici ili radnji.",
+       "exception-nologin-text": "Prijavite se da biste pristupili ovoj stranici ili radnji.",
        "exception-nologin-text-manual": "Morate biti $1 da biste pristupili ovoj stranici ili radnji.",
        "virus-badscanner": "Neispravna postavka: nepoznati skener za viruse: ''$1''",
        "virus-scanfailed": "neuspešno skeniranje (kod $1)",
        "content-failed-to-parse": "Ne mogu da raščlanim sadržaj tipa $2 za model $1: $3",
        "invalid-content-data": "Neispravni podaci sadržaja",
        "content-not-allowed-here": "Sadržaj modela „$1“ nije dozvoljen na stranici [[$2]]",
-       "editwarning-warning": "Ako napustite ovu stranicu, izgubićete sve izmene koje ste napravili.\nAko ste prijavljeni, možete onemogućiti ovo upozorenje u svojim podešavanjima, u odeljku „{{int:prefs-editing}}“.",
+       "editwarning-warning": "Ako napustite ovu stranicu, izgubićete sve izmene koje ste napravili. Ako ste prijavljeni, možete onemogućiti ovo upozorenje u svojim podešavanjima, u odeljku „{{int:prefs-editing}}“.",
        "editpage-notsupportedcontentformat-title": "Format sadržaja nije podržan",
        "content-model-wikitext": "vikitekst",
        "content-model-text": "čist tekst",
        "revdelete-text-file": "Izbrisane verzije datoteke će i dalje biti vidljive u istoriji datoteke, ali delovi njihovog sadržaja neće biti javno dostupnu.",
        "logdelete-text": "Izbrisani unosi u dnevnicima će i dalje biti vidljivi u dnevnicima, ali delovi njihovog sadržaja neće biti javno dostupnu.",
        "revdelete-confirm": "Potvrdite da nameravate ovo uraditi, da razumete posledice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].",
-       "revdelete-suppress-text": "Sakrivanje izmena bi trebalo koristiti '''samo''' u sledećim slučajevima:\n* Zlonamerni ili pogrdni podaci\n* Neprikladni lični podaci\n*: ''kućna adresa i broj telefona, broj bankovne kartice itd.''",
+       "revdelete-suppress-text": "Sakrivanje izmena bi trebalo koristiti <strong>samo</strong> u sledećim slučajevima:\n* zlonamerni ili pogrdni podaci\n* neprikladni lični podaci\n*: <em>kućna adresa i broj telefona, broj kreditne kartice, JMBG itd.</em>",
        "revdelete-legend": "Ograničenja vidljivosti",
        "revdelete-hide-text": "Sakrij tekst izmene",
        "revdelete-hide-image": "Sakrij sadržaj datoteke",
        "preferences": "Podešavanja",
        "mypreferences": "Podešavanja",
        "prefs-edits": "Broj izmena:",
-       "prefsnologintext2": "Morate biti $1 da biste menjali svoja podešavanja.",
+       "prefsnologintext2": "Morate biti prijavljeni da biste menjali svoja podešavanja.",
        "prefs-skin": "Tema",
        "skin-preview": "Pregledaj",
        "datedefault": "Svejedno",
        "hours-ago": "Pre $1 {{PLURAL:$1|sat|sata|sati}}",
        "minutes-ago": "Pre $1 {{PLURAL:$1|minut|minuta}}",
        "seconds-ago": "Pre $1 {{PLURAL:$1|sekunda|sekundi}}",
-       "monday-at": "Ponedeljak u $1",
-       "tuesday-at": "Utorak u $1",
-       "wednesday-at": "Sreda u $1",
-       "thursday-at": "Četvrtak u $1",
-       "friday-at": "Petak u $1",
-       "saturday-at": "Subota u $1",
-       "sunday-at": "Nedelja u $1",
+       "monday-at": "u ponedeljak u $1",
+       "tuesday-at": "u utorak u $1",
+       "wednesday-at": "u sredu u $1",
+       "thursday-at": "u četvrtak u $1",
+       "friday-at": "u petak u $1",
+       "saturday-at": "u subotu u $1",
+       "sunday-at": "u nedelju u $1",
        "yesterday-at": "Juče u $1",
        "bad_image_list": "Format je sledeći:\n\nRazmatraju se samo nabrajanja (redovi koji počinju sa zvezdicom).\nPrva veza u redu mora da bude veza do neispravne datoteke.\nSve daljnje veze u istom redu smatraju se izuzecima.",
        "variantname-zh-hans": "hans",
        "lag-warn-high": "Zbog preopterećenja baze podataka, izmene novije od $1 {{PLURAL:$1|sekunde|sekundi}} neće biti prikazane.",
        "watchlistedit-normal-title": "Uređivanje spiska nadgledanja",
        "watchlistedit-normal-legend": "Uklanjanje naslova sa spiska nadgledanja",
-       "watchlistedit-normal-explain": "Naslovi na vašem spisku nadgledanja su prikazani ispod.\nDa biste uklonili naslov, označite kućicu do njega i kliknite na „{{int:Watchlistedit-normal-submit}}“.\nMožete i da [[Special:EditWatchlist/raw|uredite sirov spisak]].",
+       "watchlistedit-normal-explain": "Naslovi na vašem spisku nadgledanja su prikazani ispod.\nDa biste uklonili naslov, označite kvadratić do njega i kliknite na „{{int:Watchlistedit-normal-submit}}“.\nMožete i da [[Special:EditWatchlist/raw|uredite sirov spisak]].",
        "watchlistedit-normal-submit": "Ukloni naslove",
        "watchlistedit-normal-done": "{{PLURAL:$1|1=Jedna stranica je uklonjena|$1 stranice su uklonjene|$1 stranica je uklonjeno}} s vašeg spiska nadgledanja:",
        "watchlistedit-raw-title": "Izmeni sirov spisak nadgledanja",
        "watchlistedit-raw-done": "Vaš spisak nadgledanja je ažuriran.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1=Dodat je jedan naslov|Dodata su $1 naslova|Dodato je $1 naslova}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 naslov je uklonjen|Uklonjena su $1 naslova|Uklonjeno je $1 naslova}}:",
-       "watchlistedit-clear-title": "Isprazni spisak nadgledanja",
+       "watchlistedit-clear-title": "Spisak nadgledanja ispražnjen",
        "watchlistedit-clear-legend": "Isprazni spisak nadgledanja",
        "watchlistedit-clear-explain": "Svi naslovi će biti uklonjeni iz vašeg spiska nadgledanja.",
        "watchlistedit-clear-titles": "Naslovi:",
        "compare-revision-not-exists": "Navedena izmena ne postoji.",
        "dberr-problems": "Došlo je do tehničkih problema.",
        "dberr-again": "Sačekajte nekoliko minuta i ponovo učitajte stranicu.",
-       "dberr-info": "(ne mogu da se povežem sa serverom baze podataka: $1)",
-       "dberr-info-hidden": "(ne mogu da se povežem sa serverom baze podataka)",
+       "dberr-info": "(Ne mogu pristupiti bazi podataka: $1)",
+       "dberr-info-hidden": "(Ne mogu pristupiti bazi podataka)",
        "dberr-usegoogle": "U međuvremenu, pokušajte da pretražite pomoću Gugla.",
        "dberr-outofdate": "Imajte na umu da njihovi primerci našeg sadržaja mogu biti zastareli.",
        "dberr-cachederror": "Ovo je privremeno memorisan primerak strane koji možda nije ažuran.",
index f33084f..2e85a81 100644 (file)
@@ -35,7 +35,8 @@
                        "Thamiziniyan",
                        "아라",
                        "Kalyanasundar",
-                       "தமிழ்த்தம்பி"
+                       "தமிழ்த்தம்பி",
+                       "Macofe"
                ]
        },
        "tog-underline": "இணைப்புகளுக்கு அடிக்கோடிடு",
        "import-rootpage-invalid": "கொடுக்கப்பட்ட மூலப்பக்கம் செல்லாத தலைப்பாகும்.",
        "importlogpage": "இறக்குமதி பதிகை",
        "importlogpagetext": "வேறு விக்கிகளிலில் தொகுப்பு வரலாற்றைக் கொண்டப் பக்கங்களின் மேலாண்மை இறக்குமதிகள்.",
-       "import-logentry-upload": "கோப்பு பதிவேற்றத்தின் மூலம் [[$1]] இறக்கப்பட்டது",
        "import-logentry-upload-detail": "{{PLURAL:$1|ஒரு திருத்தம்|$1 திருத்தங்கள்}}",
-       "import-logentry-interwiki": "transwikied$1",
        "import-logentry-interwiki-detail": "$2 இலிருந்து {{PLURAL:$1|ஒரு திருத்தம்|$1 திருத்தங்கள்}}",
        "javascripttest": "சாவாநிரல் சோதனை நடக்கின்றது",
        "javascripttest-pagetext-noframework": "இந்த பக்கம் JavaScript பரிசோதனை ஓட்டத்திற்காக ஒதுக்கப்பட்டுள்ளது",
        "feedback-error3": "பிழை: API லிருந்து பதிற்குறிப்பு எதுவும் இல்லை.",
        "feedback-message": "தகவல்:",
        "feedback-subject": "பொருள்:",
-       "feedback-submit": "à®\95à®°à¯\81தà¯\8dதà¯\88à®\9aà¯\8d à®\9aமரà¯\8dபà¯\8dபிà®\95à¯\8dà®\95வà¯\81à®®à¯\8d",
+       "feedback-submit": "à®\9aமரà¯\8dபà¯\8dபி",
        "feedback-thanks": "நன்றி! உங்கள் கருத்துகள் \"[$2 $1]\" பக்கத்தில்பதிவு செய்யப்பட்டுள்ளது .",
        "searchsuggest-search": "தேடு",
        "searchsuggest-containing": "கொண்டுள்ளது...",
index d696243..73b3b6a 100644 (file)
@@ -4,7 +4,8 @@
                        "NamwikiTL",
                        "VASANTH S.N.",
                        "VinodSBangera",
-                       "아라"
+                       "아라",
+                       "Vishwanatha Badikana"
                ]
        },
        "tog-underline": "ಲಿಂಕ್’ಲೆದ ತಿರ್ತ್ ಗೆರೆ(ಅಂಡರ್ ಲೈನ್) ಪಾಡ್’ಲೆ",
        "view-foreign": "$1ಡ್ ತೂಲೆ",
        "edit": "ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ(Edit this page)",
        "create": "ಸೃಷ್ಟಿಸಾಲೆ",
+       "create-local": "ಸ್ಥಳೀಯ ವಿವರಣೆ ಸೇರಾಲೆ",
        "editthispage": "ಈ ಪುಟೊನು ಬದಲಾಯಿಸಾಲೆ",
        "create-this-page": "ಈ ಪುಟೊನು ಸೃಷ್ಟಿಸಾಲೆ",
        "delete": "ದೆತ್ತ್ ಪಾಡ್ಲೆ",
        "ns-specialprotected": "ವಿಶೇಷ ಪುಟ‘ಕ್‘ಲೆನ್ ಸಂಪಾದನೆ ಮಲ್ಪರೆ ಆಪುಜಿ",
        "logouttext": "ಈರ್ ಇತ್ತೆ ಲಾಗ್ ಔಟ್ ಆತರ್.\nಈರ್ {{SITENAME}} ನ್ ಅನಾಮಧೇಯರಾತ್ ಉಪಯೋಗ ಮಲ್ಪೊಲಿ,ಅಥವಾ ಕೂಡ ಉಂದುವೇ ಪುದರ್‘ಡ್ ಯಾ ಬೇತೆ ಪುದರ್‘ಡ್ ಉಪಯೋಗ ಮಲ್ಪೊಲಿ.\nಗಮನಿಸಾಲೆ: ಈರೆನ ಬ್ರೌಸರ್‘ಡ್ ಮಾಜುನಾಡೆ ಮುಟ್ಟ ಕೆಲವು ಪುಟಕ್‘ಲು ಈರ್ ಇತ್ತೆಲಾ ಲಾಗ್ ಇನ್ ಆಯಿಲೆಕ್ಕನೇ ತೋಜಾವು.",
        "yourname": "ಸದಸ್ಯೆರ್ನ ಪುದರ್:",
+       "userlogin-yourname": "ಸದಸ್ಯೆರ್ನ ಪುದರ್",
+       "userlogin-yourname-ph": "ಈರೆನೆ ಸದಸ್ಯನಾಮ ಬರೆಲೆ",
        "yourpassword": "ಪಾಸ್-ವರ್ಡ್:",
+       "userlogin-yourpassword": "ಪ್ರವೇಶಪದೊ",
+       "userlogin-yourpassword-ph": "ಪ್ರವೇಶ ಪದೊನ್ ನಮೂದಿಸಾಲೆ",
+       "createacct-yourpassword-ph": "ಪ್ರವೇಶ ಪದೊನ್ ನಮೂದಿಸಾಲೆ",
        "yourpasswordagain": "ಪಾಸ್ವರ್ಡ್ ಪಿರ ಟೈಪ್ ಮಲ್ಪುಲೆ",
+       "createacct-yourpasswordagain": "ಪ್ರವೇಶಪದೊನ್ ಧೃಡೀಕರಣ ಮಲ್ಪುಲೆ",
+       "createacct-yourpasswordagain-ph": "ಪ್ರವೇಶಪದೊನು ನನ ಒರ ನಮೂದಿಸಾಲೆ",
        "remembermypassword": "ಈ ಕಂಪ್ಯೂಟರ್’ಡ್ ಎನ್ನ ಪ್ರವೇಶ ಪದೊನು ನೆನಪು ದೀಲ",
+       "userlogin-remembermypassword": "ಎನನ್ ಲಾಗಿನ್ ಆತೇ ದೀಡ್ಲೆ",
        "yourdomainname": "ಈರೆನ ಕಾರ್ಯಕ್ಷೇತ್ರ",
        "login": "ಲಾಗ್ ಇನ್",
        "nav-login-createaccount": "ಲಾಗ್-ಇನ್ / ಅಕೌಂಟ್ ಸೃಷ್ಟಿ ಮಲ್ಪುಲೆ",
        "logout": "ಲಾಗ್ ಔಟ್",
        "userlogout": "ಲಾಗ್ ಔಟ್",
        "notloggedin": "ಲಾಗಿನ್ ಆತ್‘ಜ್ಜರ್",
+       "userlogin-noaccount": "ಈರೆನ ಖಾತೆ ಇಜ್ಜೇ?",
+       "userlogin-joinproject": "{{SITENAME}}ಗ್ ಸೇರ್ಲೆ",
        "nologin": "ಈರೆನ ಖಾತೆ ಇಜ್ಜೇ?'''$1'''",
        "nologinlink": "ಪೊಸ ಖಾತೆ ಸುರು ಮಲ್ಪುಲೆ",
        "createaccount": "ಪೊಸ ಅಕ್ಕೌಂಟ್ ಸುರು ಮಲ್ಪುಲೆ",
        "gotaccount": "ಈರೆನ ಖಾತೆ ಉಂಡೇ?'''$1'''",
        "gotaccountlink": "ಲಾಗಿನ್ ಆಲೆ",
        "userlogin-resetlink": "ಈರೆನ ಲಾಗಿನ್ ವಿವರ ಮರತ್ತ್ಂಡೇ?",
+       "userlogin-resetpassword-link": "ಈರೆನೆ ಪ್ರವೇಶಪದೊ ಮರತ್ತ್‍ಂಡಾ?",
+       "userlogin-helplink2": "ಲಾಗಿನ್ ಆವೊರೆ ಸಹಾಯ",
+       "createacct-emailoptional": "ಮಿಂಚಂಚೆ ವಿಳಾಸೊ (ಐಚ್ಛಿಕ)",
+       "createacct-email-ph": "ಇರೆನ ಇ-ಅಂಚೆ ವಿಳಾಸೊನ್ ನಮೂದಿಸಾಲೆ.",
        "createaccountmail": "ಇ ಮೈಲ್ ಮೂಲಕ",
        "createaccountreason": "ಕಾರಣ",
+       "createacct-submit": "ಪೊಸ ಖಾತೆ ಸುರು ಮಲ್ಪುಲೆ",
+       "createacct-benefit-body1": "{{PLURAL:$1|ಸಂಪಾದನೆ|ಸಂಪಾದನೆಲು}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|ಪುಟ|ಪುಟಕ್ಕುಲು}}",
+       "createacct-benefit-body3": "{{PLURAL:$1|ಕೊಡುಗೆ|ಕೊಡುಗೆಲು}}",
        "badretype": "ಈರ್ ಕೊರ್ನ ಪ್ರವೇಶ ಪದೆ ಬೇತೆ ಬೇತೆ ಅತ್ಂಡ್",
        "userexists": "ಈರ್ ಕೊರ್ನ ಸದಸ್ಯರ ಪುದರ್ ಬಳಕೆಡ್ ಉಂಡು. ದಯದೀದ್ ಬೇತೆ ಪುದರ್ ಕೊರ್ಲೆ",
        "loginerror": "ಲಾಗಿನ್ ದೋಷ",
        "login-abort-generic": "ಇರೆನ ಲಾಗ್ ಇನ್ ವಿಫಲ ವಾತ್‘ಂಡ್",
        "loginlanguagelabel": "ಭಾಷೆ: $1",
        "pt-login": "ಲಾಗಿನ್",
+       "pt-login-button": "ಲಾಗಿನ್ ಆಲೆ",
        "pt-createaccount": "ಪೊಸ ಖಾತೆ ಸುರು ಮಲ್ಪುಲೆ",
+       "pt-userlogout": "ಲಾಗ್ ಔಟ್",
        "changepassword": "ಪ್ರವೇಶಪದೊನ್ ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ",
        "resetpass_header": "ಈ ಖಾತೆದ ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ",
        "oldpassword": "ಪರ ಪ್ರವೇಶಪದ",
        "userpage-userdoesnotexist": "ಬಳಕೆದಾರ ಖಾತೆ \"<nowiki>$1</nowiki>\" ದಾಖಲಾತ್‘ಜ್ಜಿ. ಈರ್ ಉಂದುವೇ ಪುಟನ್ ಸಂಪಾದನೆ ಮಲ್ಪರ ಉಂಡಾಂದ್ ಖಾತ್ರಿ ಮಲ್ತೊನಿ.",
        "previewnote": "'''ಉಂದು ಕೇವಲ ಮುನ್ನೋಟ; ಪುಟೊನು ನನಲ ಒರಿಪಾದಿಜಿ ಪನ್ಪುನೇನ್ ಮರಪೊರ್ಚಿ!'''",
        "editing": "$1 ಲೇಖನೊನು ಈರ್ ಸಂಪಾದನೆ ಮಲ್ತೊಂದುಲ್ಲರ್",
+       "creating": "$1 ನ್ನು ಸೃಷ್ಟಿಸಾವೊದುಂಡು",
        "editingsection": "$1 (ವಿಭಾಗೊನು) ಸಂಪಾದನೆ ಮಲ್ತೊಂದುಲ್ಲರ್",
        "yourtext": "ಇರೆನ ಸಂಪಾದನೆ",
        "yourdiff": "ವ್ಯತ್ಯಾಸೊಲು",
        "copyrightwarning": "ದಯಮಲ್ತ್’ದ್ ಗಮನಿಸ್’ಲೆ: {{SITENAME}} ಸೈಟ್’ಡ್ ಇರೆನ ಪೂರಾ ಕಾಣಿಕೆಲುಲಾ $2 ಅಡಿಟ್ ಬಿಡುಗಡೆ ಆಪುಂಡು (ಮಾಹಿತಿಗ್ $1 ನ್ ತೂಲೆ). ಇರೆನ ಸಂಪಾದನೆಲೆನ್ ಬೇತೆಕುಲು ನಿರ್ಧಾಕ್ಷಿಣ್ಯವಾದ್ ಬದಲ್ ಮಲ್ತ್’ದ್ ಬೇತೆ ಕಡೆಲೆಡ್ ಪಟ್ಟೆರ್. ಇಂದೆಕ್ ಇರೆನ ಒಪ್ಪಿಗೆ ಇತ್ತ್’ನ್ಡ ಮಾತ್ರ ಮುಲ್ಪ ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ.<br />\nಅತ್ತಂದೆ ಇರೆನ ಸಂಪಾದನೆಲೆನ್ ಈರ್ ಸ್ವತಃ ಬರೆತರ್, ಅತ್ತ್’ನ್ಡ ಕೃತಿಸ್ವಾಮ್ಯತೆ ಇಜ್ಜಂದಿನ ಕಡೆರ್ದ್ ದೆತೊನ್ದರ್ ಪಂಡ್’ದ್ ಪ್ರಮಾಣಿಸೊಂದುಲ್ಲರ್.\n'''ಕೃತಿಸ್ವಾಮ್ಯತೆದ ಅಡಿಟುಪ್ಪುನಂಚಿನ ಕೃತಿಲೆನ್ ಒಪ್ಪಿಗೆ ಇಜ್ಜಂದೆ ಮುಲ್ಪ ಪಾಡೊಚಿ!'''",
-       "templatesused": "à²\88 à²ªà³\81à²\9fà³\8aà²\9fà³\81 à²\89ಪಯà³\8bà²\97 à²®à²²à³\8dತಿನ à²«à²²à²\95à³\8aಲà³\81:",
+       "templatesused": "à²\88 à²ªà³\81à²\9fà³\8aà²\9fà³\8d à²\89ಪಯà³\8bà²\97 à²®à²²à³\8dತಿನ {{PLURAL:$1|à²\9fà³\86à²\82ಪà³\8dಲà³\87à²\9fà³\81|à²\9fà³\86à²\82ಪà³\8dಲà³\87à²\9fà³\81à²\97ಳà³\81}}:",
        "templatesusedpreview": "ಈ ಮುನ್ನೋಟೊಡು ಉಪಯೋಗ ಮಲ್ತಿನ ಟೆಂಪ್ಲೇಟ್’ಲು:",
        "template-protected": "(ಸಂರಕ್ಷಿತ)",
        "template-semiprotected": "(ಅರೆ-ಸಂರಕ್ಷಿತ)",
        "currentrev": "ಇತ್ತೆದ ಆವೃತ್ತಿ",
        "currentrev-asof": "$1 ದ ಮುಟ್ಟ ಇತ್ತೆದ ಆವೃತ್ತಿ",
        "revisionasof": "$1 ದಿನೊತ ಆವೃತ್ತಿ",
+       "revision-info": "ಬದಲಾವಣೆ $1 ಲೆಕ್ಕೊ {{GENDER:$6|$2}} ಇಂಬೆರೆಡ್‍ದ್$7",
        "previousrevision": "←ದುಂಬುದ ಆವೃತ್ತಿ",
        "nextrevision": "ಪೊಸ ಮರು-ಆವೃತ್ತಿ",
        "currentrevisionlink": "ಇತ್ತೆದ ಆವೃತ್ತಿ",
        "mergehistory-from": "ಮೂಲ ಪುಟ",
        "mergehistory-reason": "ಕಾರಣ:",
        "revertmerge": "ಅನ್-ಮರ್ಜ್ ಮಲ್ಪುಲೆ",
-       "history-title": "\"$1\" ಪುಟೊತ ಆವೃತ್ತಿ ಇತಿಹಾಸ",
+       "history-title": "\"$1\" ಪುಟೊತ ಆವೃತ್ತಿ ಇತಿಹಾಸ",
        "lineno": "$1 ನೇ ಸಾಲ್:",
        "compareselectedversions": "ಆಯ್ಕೆ ಮಲ್ತಿನ ಆವೃತ್ತಿಲೆನ್ ಹೊಂದಾಣಿಕೆ ಮಲ್ತ್ ತೂಲೆ",
        "editundo": "ದುಂಬುದಲೆಕ",
        "notextmatches": "ವಾ ಪುಟೊತ ಪಠ್ಯೊಡುಲಾ ಹೋಲಿಕೆ ಇಜ್ಜಿ",
        "prevn": "ದುಂಬುದ {{PLURAL:$1|$1}}",
        "nextn": "ಬೊಕ್ಕದ {{PLURAL:$1|$1}}",
+       "shown-title": "ಪ್ರತಿ ಪುಟೊಡುಲಾ $1 {{PLURAL:$1|result|results}} ತೋಜಿಪಾವು",
        "viewprevnext": "ತೂಲೆ ($1 {{int:pipe-separator}} $2) ($3)",
        "searchprofile-articles": "ಲೇಖನ ಪುಟೊ",
        "searchprofile-images": "ಬಹುಮಾಧ್ಯಮ",
        "search-interwiki-more": "(ಮಸ್ತ್)",
        "searchrelated": "ಸ೦ಬ೦ಧ ಇತ್ತಿನ",
        "searchall": "ಮಾತಾ",
+       "search-nonefound": "ಈರೆನ ವಿಚಾರಣೆಗ್ ತಕ್ಕುದಾಯಿನ ಪಲಿತಾಂಶೊಲು ಇಜ್ಜಿ.",
        "powersearch-legend": "ಅಡ್ವಾನ್ಸ್’ಡ್ ಸರ್ಚ್",
        "powersearch-ns": "ನೇಮ್-ಸ್ಪೇಸ್’ಲೆಡ್ ನಾಡ್ಲೆ",
        "powersearch-toggleall": "ಮಾತಾ",
        "preferences": "ಪ್ರಾಶಸ್ತ್ಯೊಲು",
-       "mypreferences": "à²\8eನà³\8dನ à²ªà³\8dರಾಶಸà³\8dತà³\8dಯಲು",
+       "mypreferences": "ಪà³\8dರಾಶಸà³\8dತà³\8dಯà³\8aಲು",
        "prefs-rc": "ಇಂಚಿಪದ ಬದಲಾವಣೆಲು",
        "prefs-resetpass": "ಪ್ರವೇಶಪದೊನ್ ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ",
        "prefs-changeemail": "ಇ-ಅಂಚೆ ವಿಳಾಸೊನು ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ",
        "recentchanges-feed-description": "ಈ ಫೀಡ್’ಡ್ ವಿಕಿಕ್ ಇಂಚಿಪ್ಪ ಆತಿನಂಚಿನ ಬದಲಾವಣೆಲೆನ್ ಟ್ರ್ಯಾಕ್ ಮಲ್ಪುಲೆ.",
        "recentchanges-label-newpage": "ಇರ್ನ ಈ ಬದಲಾವಣೆ ಪೊಸ ಪುಟೊನು ಸುರು ಮಲ್ಪುಂಡು",
        "recentchanges-label-minor": "ಉಂದು ಎಲ್ಯ ಬದಲಾವಣೆ",
+       "recentchanges-label-bot": "ಈ ಸಂಪಾದನೆನ್ ಒಂಜಿ ಬಾಟ್ ಮಲ್ತ್‍ದುಂಡು",
+       "recentchanges-label-unpatrolled": "ಈ ಸಂಪಾದನೆನ್ ನನಲಾ ಪರೀಕ್ಷೆ ಮಲ್ತ್‍ದಿಜ್ಜಿ.",
        "rclistfrom": "$3 $2 ರ್ದ್ ಶುರುವಾತಿನ ಪೊಸ ಬದಲಾವಣೆಲೆನ್ ತೊಜ್ಪಾವು",
        "rcshowhideminor": "$1 ಎಲ್ಯೆಲ್ಯ ಬದಲಾವಣೆಲು",
+       "rcshowhideminor-show": "ತೋಜಾಲೆ",
        "rcshowhideminor-hide": "ದೆಂಗಾವು",
        "rcshowhidebots": "$1 ಬಾಟ್",
        "rcshowhidebots-show": "ತೊಜಾವು",
+       "rcshowhidebots-hide": "ದೆಂಗಾಲೆ",
        "rcshowhideliu": "ಲಾಗ್-ಇನ್ ಆತಿನಂಚಿನ ಸದಸ್ಯೆರ್ $1",
        "rcshowhideliu-hide": "ದೆಂಗಾವು",
        "rcshowhideanons": "ಅನಾಮಧೇಯ ಸದಸ್ಯೆರ್ $1",
+       "rcshowhideanons-show": "ತೋಜಾಲೆ",
        "rcshowhideanons-hide": "ದೆಂಗಾವು",
        "rcshowhidepatr": "$1 ಪರೀಕ್ಷಿಸಾದಿನ ಸಂಪಾದನೆಲು",
        "rcshowhidemine": "ಎನ್ನ ಸಂಪಾದನೆಲೆನ್ $1",
+       "rcshowhidemine-show": "ತೋಜಾಲೆ",
        "rcshowhidemine-hide": "ದೆಂಗಾವು",
        "rclinks": "ದುಂಬುದ $2 ದಿನೊಲೆಡ್ ಮಲ್ತಿನ $1 ಕಡೆತ ಬದಲಾವಣೆಲೆನ್ ತೂಲೆ <br />$3",
        "diff": "ವ್ಯತ್ಯಾಸ",
        "newpageletter": "ಪೊ",
        "boteditletter": "ಬಾ",
        "rc_categories_any": "ಒವ್ವೇ",
+       "rc-change-size-new": "$1 {{ಬಹುವಚನೊ:$1|ಬೈಟ್|ಬೈಟ್‍ಲು}}ಬದಲಾವಣೆದ ಬುಕ್ಕೊ",
        "newsectionsummary": "\n/* $1 */ಪೊಸ ವಿಭಾಗ",
        "rc-enhanced-expand": "ವಿವರೊಲೆನ್ ತೊಜ್ಪಾವು (ಜಾವ ಸ್ಕ್ರಿಪ್ಟ್ ಬೋಡಾಪುಂಡು)",
        "rc-enhanced-hide": "ವಿವರೊಲೆನ್ ದೆಂಗಾವು",
        "filehist-comment": "ಕಮೆಂಟ್",
        "imagelinks": "ಫೈಲ್ ಲಿಂಕ್’ಲು",
        "linkstoimage": "ಈ ಫೈಲ್’ಗ್ ತಿರ್ತ್’ದ ಈ {{PLURAL:$1|ಪುಟ|$1 ಪುಟೊಲು}} ಲಿಂಕ್ ಕೊರ್ಪುಂಡು.",
+       "nolinkstoimage": "ಈ ಫೈಲ್‍ಗ್ ಸಂಪರ್ಕ ಉಪ್ಪುನ ವಾ ಪುಟಲಾ ಇಜ್ಜಿ.",
        "sharedupload": "ಈ ಫೈಲ್’ನ್ ಮಸ್ತ್ ಜನ ಪಟ್ಟ್’ದುಲ್ಲೆರ್ ಅಂಚೆನೆ ಉಂದು ಮಸ್ತ್ ಪ್ರೊಜೆಕ್ಟ್’ಲೆಡ್ ಉಪಯೋಗಡುಪ್ಪು.",
        "upload-disallowed-here": "ಈರ್ ಈ ಕಡತನ್ ಕುಡ ಬರೆವರೆ ಸಾದ್ಯ ಇಜ್ಜಿ.",
        "filedelete-comment": "ಕಾರಣ",
        "pager-older-n": "{{PLURAL:$1|ಪರತ್ತ್ ೧|ಪರತ್ತ್ $1}}",
        "booksources": "ಪುಸ್ತಕೊಲ್ದ ಮೂಲ",
        "booksources-search-legend": "ಪುಸ್ತಕೊದ ಮೂಲೊನು ನಾಡ್ಲ",
+       "booksources-search": "ನಾಡ್‘ಲೆ",
        "log": "ದಾಖಲೆಲು",
        "allpages": "ಪೂರಾ ಪೂಟೊಲು",
        "allpagesfrom": "ಇಂದೆರ್ದ್ ಶುರುವಾಪುನ ಪುಟೊಲೆನ್ ತೊಜ್ಪಾವು:",
        "allpagesto": "ಇಂದೆರ್ದ್ ಅಂತ್ಯ ಆಪುನ ಪುಟೊಲೆನ್ ತೊಜ್ಪಾವು:",
        "allarticles": "ಪೂರಾ ಲೇಖನೊಲು",
        "allpagessubmit": "ಪೋ",
+       "categories": "ವರ್ಗೊಲು",
        "listgrouprights-members": "(ಸದಸ್ಯೆರ್ನ ಪಟ್ಟಿ)",
        "emailuser": "ಈ ಸದಸ್ಯೆರೆಗ್ ಇ-ಮೈಲ್ ಕಡಪುಡ್ಲೆ",
        "watchlist": "ವೀಕ್ಷಣಾ ಪಟ್ಟಿ",
        "nolinkshere": "'''[[:$1]]''' ಗ್ ವಾ ಪುಟೊಲುಲಾ ಲಿಂಕ್ ಕೊರ್ಪುಜಿ.",
        "isredirect": "ಪುನರ್ನಿರ್ದೇಶನ ಪುಟ",
        "istemplate": "ಸೇರ್ಪಡೆ",
-       "isimage": "à²\9aಿತà³\8dರ à²\95à³\8aà²\82ಡಿ",
+       "isimage": "ಫà³\88ಲà³\8dâ\80\8dದ à²²à²¿à³¦à²\95à³\8d",
        "whatlinkshere-prev": "{{PLURAL:$1|ದುಂಬುದ|ದುಂಬುದ $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|ಬೊಕ್ಕದ|ಬೊಕ್ಕದ $1}}",
        "whatlinkshere-links": "← ಲಿಂಕ್’ಲು",
        "metadata-help": "ಈ ಫೈಲ್’ಡ್ ಜಾಸ್ತಿ ಮಾಹಿತಿ ಉಂಡು. ಪ್ರಾಯಶಃ ಫೈಲ್’ನ್ ಉಂಡು ಮಲ್ಪೆರೆ ಉಪಯೋಗ ಮಲ್ತಿನ ಡಿಜಿಟಲ್ ಕ್ಯಾಮೆರರ್ದ್ ಅತ್ತ್’ನ್ಡ ಸ್ಕ್ಯಾನರ್ ರ್ದ್ ಈ ಮಾಹಿತಿ ಬೈದ್’ನ್ಡ್.\nಮೂಲಪ್ರತಿರ್ದ್ ಈ ಫೈಲ್ ಬದಲಾದಿತ್ತ್’ನ್ಡ, ಈ ಮಾಹಿತಿ ಬದಲಾತಿನ ಫೈಲ್’ದ ವಿವರೊಲೆಗ್ ಸರಿಯಾದ್ ಹೊಂದಂದೆ ಉಪ್ಪು.",
        "metadata-expand": "ವಿಸ್ತಾರವಾಯಿನ ವಿವರೊಲೆನ್ ತೊಜ್ಪಾವು",
        "metadata-collapse": "ವಿಸ್ತಾರವಾಯಿನ ವಿವರೊಲೆನ್ ದೆಂಗಾವು",
-       "metadata-fields": "à²\88 à²¸à²\82ದà³\87ಶà³\8aಡà³\81 à²ªà²\9fà³\8dà²\9fಿ à²®à²²à³\8dತಿನà²\82à²\9aಿನ EXIF à²®à³\86à²\9fಡà³\87à²\9f à²®à²¾à²¹à²¿à²¤à²¿à²¨à³\8d à²\9aಿತà³\8dರ à²ªà³\81à²\9fà³\8aà²\95à³\81 à²¸à³\87ರà³\8dಪಾಯà³\86ರà³\86 à²\86ವà³\8aà²\82ದà³\81à²\82ಡà³\81. à²ªà³\81à²\9fà³\8aà²\9fà³\81 à²®à³\86à²\9fಡà³\87à²\9f à²®à²¾à²¹à²¿à²¤à²¿à²¦ à²ªà²\9fà³\8dà²\9fಿನà³\8d à²¦à³\86ಪà³\8dಪà³\81ನà²\97 à²\89à²\82ದà³\81 à²¤à³\8bà²\9cà³\81à²\82ಡà³\81.\nà²\92ರಿದನವà³\81 à²®à³\82ಲಸà³\8dಥಿತಿà²\9fà³\8d à²\85à²\97à³\8bà²\9aರವಾದà³\81ಪà³\8dಪà³\81à²\82ಡà³\81.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "à²\88 à²¸à²\82ದà³\87ಶà³\8aಡà³\81 à²ªà²\9fà³\8dà²\9fಿ à²®à²²à³\8dತಿನà²\82à²\9aಿನ EXIF à²®à²¿à²¤à³\8dತ à²¦à²°à³\8dà²\9cà³\86ದ à²®à²¾à²¹à²¿à²¤à²¿à²¨à³\8d à²\9aಿತà³\8dರ à²ªà³\81à²\9fà³\8aà²\95à³\81 à²¸à³\87ರà³\8dಪಾಯà³\86ರà³\86 à²\86ವà³\8aà²\82ದà³\81à²\82ಡà³\81. à²ªà³\81à²\9fà³\8aà²\9fà³\81 à²®à²¿à²¤à³\8dತ à²¦à²°à³\8dà²\9cà³\86 à²®à²¾à²¹à²¿à²¤à²¿à²¦ à²ªà²\9fà³\8dà²\9fಿನà³\8d à²¦à³\86ಪà³\8dಪà³\81ನà²\97 à²\89à²\82ದà³\81 à²¤à³\8bà²\9cà³\81à²\82ಡà³\81.\nà²\92ರಿದನವà³\81 à²®à³\82ಲಸà³\8dಥಿತಿà²\9fà³\8d à²\85à²\97à³\8bà²\9aರವಾದà³\81ಪà³\8dಪà³\81à²\82ಡà³\81.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude \n* gpsaltitude",
        "exif-datetime": "ಕಡೊತೊನು ಬದಲಾವಣೆ ಮಲ್ತ್‍ನ ದಿನಾಂಕೊ ಬೊಕ್ಕ ಸಮಯೊ",
        "exif-make": "ಕ್ಯಾಮೆರಾದ ತಯಾರೆಕೆರ್",
        "exif-model": "ಕ್ಯಾಮೆರಾ ಮಾದರಿ",
        "watchlisttools-view": "ಪ್ರಸ್ತುತ ಬದಲಾವಣೆಲ್ ತೋಜಾಲೆ",
        "watchlisttools-edit": "ವೀಕ್ಷಣಾಪಟ್ಟಿನ್ ತೂಲೆ ಬೊಕ್ಕ ಎಡಿಟ್ ಮಲ್ಪುಲೆ",
        "specialpages": "ವಿಷೇಶ ಪುಟೊಲು",
+       "tag-list-wrapper": "([[ವಿಸೇಸೊ:ಟ್ಯಾಗುಲು|{{ಬಹುವಚನೊ:$1|ಟ್ಯಾಗ್|ಟ್ಯಾಗುಲು}}]]:$2)",
        "logentry-delete-delete": "$1 {{GENDER:$2|ಮಾಜಾದ್‍ಂಡ್}} ಪುಟ $3",
+       "logentry-newusers-create": "ಬಳಕೆದಾರ ಖಾತೆ $1 ನ್ನು {{GENDER:$2|ಸೃಷ್ಟಿ ಮಲ್ತ್‍ದುಂಡು}}",
+       "logentry-upload-upload": "$1 {{GENDER:$2|ಅಪ್ಲೋಡ್ ಮಲ್ತ್‍ದೆರ್}} $3",
        "searchsuggest-search": "ನಾಡ್‍ಲೆ"
 }
index bdd91a3..752e794 100644 (file)
@@ -21,7 +21,8 @@
                        "రహ్మానుద్దీన్",
                        "రాకేశ్వర",
                        "వైజాసత్య",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "లంకె క్రీగీత:",
        "feedback-error3": "లోపం: API నుండి ప్రతిస్పందన లేదు",
        "feedback-message": "సందేశం:",
        "feedback-subject": "విషయం:",
-       "feedback-submit": "à°ªà±\8dరతిసà±\8dà°ªà°\82దననà±\81 à°¦à°¾à°\96à°²à±\81à°\9aà±\87యి",
+       "feedback-submit": "దాà°\96à°²à±\81à°\9aà±\86à°¯à±\8dయి",
        "feedback-thanks": "కృతజ్ఞతలు! మీ ప్రతిస్పందనను “[$2 $1]” పేజీలో చేర్చాం.",
        "searchsuggest-search": "వెతుకు",
        "searchsuggest-containing": "కలిగియున్న...",
index 9995f12..44b6978 100644 (file)
@@ -10,7 +10,8 @@
                        "Soroush",
                        "Urhixidur",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Пайвандҳо хаткашида:",
        "import-invalid-interwiki": "Аз викии мушаххасшуда наметавон воридот кард.",
        "importlogpage": "Вориди гузоришҳо",
        "importlogpagetext": "Ворид кардани саҳифаҳо бо ҳамроҳи таърихчаи вироиши онҳо аз викиҳои дигар.",
-       "import-logentry-upload": "[[$1]] аз тариқи боргузории парванда, ворид шуд",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|нусха|нусха}}",
-       "import-logentry-interwiki": "$1 трансвикишуда",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|нусха|нусха}} аз $2",
        "tooltip-pt-userpage": "Саҳифаи корбарии шумо",
        "tooltip-pt-anonuserpage": "Саҳифаи корбари IP, ки бо он шумо вироиш мекунед",
        "feedback-close": "Анҷом шуд.",
        "feedback-message": "Пайём:",
        "feedback-subject": "Мавзӯъ:",
-       "feedback-submit": "Ирсоли Пешниҳод",
+       "feedback-submit": "Ирсол",
        "expandtemplates": "Бастдодани шаблонҳо",
        "expand_templates_intro": "Ин саҳифаи вижа матнеро дарёфт карда ва тамоми шаблонҳои ба кор рафта дар онро ба таври бозгаште баст медиҳад. Ҳамчунин тобеҳои таҷзеҳ\n<nowiki>{{</nowiki>#language:...}}, ва мутағйирҳое чун\n<nowiki>{{</nowiki>CURRENTDAY}}&mdash;ро ҳам баст медиҳад – дар воқеъ тақрибан ҳар чиро ки дохили ду акулот бошад.\nИн кор бо садо задани марҳилаи таҷзеҳи марбут дар худи МедиаВики сурат мегирад.",
        "expand_templates_title": "Унвони мавзӯъ, барои {{FULLPAGENAME}} ва ғайра.:",
index d098897..8d6541c 100644 (file)
@@ -21,7 +21,8 @@
                        "จักรกฤช วงศ์สระหลวง (Jakkrit Vongsraluang) / PaePae",
                        "วรากร อึ้งวิเชียร (Varakorn Ungvichian)",
                        "아라",
-                       "Pphongpan355"
+                       "Pphongpan355",
+                       "Macofe"
                ]
        },
        "tog-underline": "การขีดเส้นใต้ลิงก์:",
        "import-rootpage-nosubpage": "เนมสเปซ \"$1\" ของหน้าต้นทางไม่อนุญาตหน้าย่อย",
        "importlogpage": "ปูมการนำเข้า",
        "importlogpagetext": "นำเข้าไฟล์จากวิกิอื่น โดยผ่านทางผู้ดูแลระบบ",
-       "import-logentry-upload": "นำเข้า [[$1]] ผ่านการอัปโหลดแล้ว",
        "import-logentry-upload-detail": "นำเข้า $1 {{PLURAL:$1|รุ่นการแก้ไข|รุ่นการแก้ไข}}",
-       "import-logentry-interwiki": "นำเข้าข้ามวิกิ $1 แล้ว",
        "import-logentry-interwiki-detail": "นำเข้า $1 {{PLURAL:$1|รุ่นการแก้ไข|รุ่นการแก้ไข}}จาก $2",
        "javascripttest": "การทดสอบจาวาสคริปต์",
        "javascripttest-pagetext-noframework": "หน้านี้สงวนไว้สำหรับดำเนินงานการทดสอบจาวาสคริปต์",
        "feedback-close": "เสร็จสิ้น",
        "feedback-message": "ข้อความ:",
        "feedback-subject": "เรื่อง:",
-       "feedback-submit": "สà¹\88à¸\87à¸\84ำà¸\95ิà¸\8aม",
+       "feedback-submit": "à¸\95à¸\81ลà¸\87",
        "feedback-thanks": "ขอบคุณ! ผลป้อนกลับของคุณถูกโพสต์ไปยังหน้า \"[$2 $1]\" แล้ว",
        "searchsuggest-search": "ค้นหา",
        "searchsuggest-containing": "มี...",
index 5988482..1b0d831 100644 (file)
@@ -69,7 +69,8 @@
                        "BatuhanBensoy",
                        "Mavrikant",
                        "Ayrıntılı Bilgi",
-                       "Gokalpselamet"
+                       "Gokalpselamet",
+                       "Macofe"
                ]
        },
        "tog-underline": "Bağlantıların altını çiz:",
        "feedback-error3": "Hata: API'den yanıt yok",
        "feedback-message": "Mesaj:",
        "feedback-subject": "Konu:",
-       "feedback-submit": "Geribildirimi Gönder",
+       "feedback-submit": "Gönder",
        "feedback-thanks": "Teşekkürler! Görüşleriniz \"[$2 $1]\" sayfasında paylaşılmıştır.",
        "searchsuggest-search": "Ara",
        "searchsuggest-containing": "içeren...",
index 493f5d3..295dae9 100644 (file)
@@ -21,7 +21,8 @@
                        "Рашат Якупов",
                        "Умар",
                        "아라",
-                       "Derslek"
+                       "Derslek",
+                       "Macofe"
                ]
        },
        "tog-underline": "Сылтамаларның астына сызу:",
        "loginlanguagelabel": "Тел: $1",
        "suspicious-userlogout": "Сезнең эшчәнлекне бетерү соравыгыз кире кагылды, чөнки ул ялгыш браузер яисә кэшлаучы прокси аша җибәрелергэ мөмкин.",
        "pt-login": "Керү",
+       "pt-login-button": "Керү",
        "pt-createaccount": "Яңа кулланучыны теркәү",
        "pt-userlogout": "Чыгу",
        "php-mail-error-unknown": "PHP mail() функциясендә билгесез хата",
        "suppress": "Яшерү",
        "booksources": "Китап чыганаклары",
        "booksources-search-legend": "Китап чыганакларыны эзләү",
+       "booksources-search": "Эзләү",
        "booksources-text": "Әлеге биттә күрсәтелгән сылтамалар ярәмендә сезнең кызыксындырган китап буенча өстәмә мәгълүматлар табарга мөмкин. Болар интернет-кибетләр һәм китапханә җыентыгында эзләүче системалар.",
        "booksources-invalid-isbn": "Бирелгән ISBN саны бәлки хаталдыр. Зинһар, бирелгән саннарны яңадан тикшерегез.",
        "specialloguserlabel": "Кулланучы:",
        "feedback-error3": "Хата: APIдан җавап юк.",
        "feedback-message": "Хәбәр:",
        "feedback-subject": "Тема:",
-       "feedback-submit": "Фикер җибәрү",
+       "feedback-submit": "Җибәрү",
        "feedback-thanks": "Рәхмәт! Сезнең фикер \"[$2 $1]\" сәхифәсенә куелды.",
        "searchsuggest-search": "Эзләү",
        "searchsuggest-containing": "эчтәлек...",
index 10942fc..2432fdf 100644 (file)
@@ -9,7 +9,8 @@
                        "Sahran",
                        "Tel'et",
                        "بىلگە",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "ئۇلانما ئاستى سىزىقى:",
        "import-rootpage-nosubpage": "\"$1\" ئات بوشلۇقىنىڭ غول بېتى تارماق بەتكە يول قويمايدۇ.",
        "importlogpage": "ئەكىرىش خاتىرىسى",
        "importlogpagetext": "باشقا wiki دىن تارىخ خاتىرىسىنى قوشۇپ باشقۇرغۇچى سۈپىتىدە ئەكىرىش.",
-       "import-logentry-upload": "ھۆججەت يۈكلەپ [[$1]] ئەكىرىلدى",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|تۈزىتىش|تۈزىتىش}}",
-       "import-logentry-interwiki": "wiki ھالقىغان $1",
        "import-logentry-interwiki-detail": "$2 دىن كەلگەن $1 {{PLURAL:$1|تۈزىتىش|تۈزىتىش}}",
        "javascripttest": "JavaScript سىناش",
        "javascripttest-pagetext-noframework": "بۇ بەت JavaScript ئىجرا قىلىپ سىناشقا قالدۇرۇلغان.",
        "feedback-error3": "خاتالىق: API دىن ئىنكاس يوق",
        "feedback-message": "ئۇچۇر:",
        "feedback-subject": "تېما:",
-       "feedback-submit": "قايتۇرما ئىنكاس يوللا",
+       "feedback-submit": "تاپشۇر",
        "feedback-thanks": "كۆپ رەھمەت! قايتۇرما ئىنكاسىڭىز \"[$2 $1]\" بەتكە يوللاندى.",
        "searchsuggest-search": "ئىزدەش",
        "searchsuggest-containing": "ئىچىدە…",
index a9553cc..2aad56e 100644 (file)
@@ -17,7 +17,8 @@
                        "Urhixidur",
                        "Vajotwo",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Sotołinea i cołegamenti:",
        "import-rootpage-nosubpage": "El namespace \"$1\" de ła pàjina prinsipałe nó 'l permete de 'ver sotopajine.",
        "importlogpage": "Inportassion",
        "importlogpagetext": "Registro de łe inportazion d'ufiçio de pàxene provenienti da altre wiki, conplete de cronołogia.",
-       "import-logentry-upload": "gà inportà $1 tramite caricamento de file",
        "import-logentry-upload-detail": "{{PLURAL:$1|una revixion importà|$1 revixion importae}}",
-       "import-logentry-interwiki": "gà trasferìo da altra wiki ła pàxena $1",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|una revixion importà|$1 revixion importae}} da $2",
        "javascripttest": "Sperimentasion JavaScript",
        "javascripttest-pagetext-noframework": "Sta pàjina ła xe riservà a l'execusion de test de JavaScript.",
        "feedback-error3": "Errore: Nisuna risposta da ła API",
        "feedback-message": "Messajo:",
        "feedback-subject": "Ogeto:",
-       "feedback-submit": "Invia feedback",
+       "feedback-submit": "Manda",
        "feedback-thanks": "Grasie! El to feedback el xe sta publicà a ła pàjina \"[$2 $1]\".",
        "searchsuggest-search": "Serca",
        "searchsuggest-containing": "che contien...",
index d7cd777..939fbe3 100644 (file)
@@ -5,7 +5,8 @@
                        "Srtxg",
                        "Urhixidur",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Sorlignî les loyéns:",
        "xml-error-string": "$1 al roye $2, colone $3 (octet $4): $5",
        "importlogpage": "Djournå des ristitchaedjes",
        "importlogpagetext": "Ristitchaedjes (import) administratifs di pådjes avou leus istorikes di candjmints, a pårti d' ôtes wikis.",
-       "import-logentry-upload": "a ristitchî [[$1]] avou èn eberwetaedje di fitchî",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|modêye|modêyes}}",
-       "import-logentry-interwiki": "a ristitchî $1 foû d' èn ôte wiki",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|modêye|modêyes}} foû di $2",
        "tooltip-pt-userpage": "Pådje d' uzeu da minne",
        "tooltip-pt-anonuserpage": "Li pådje d' uzeu po l' adresse IP ki vos eployîz pol moumint",
        "logentry-newusers-create2": "$1 a-st ahivé on conte d' uzeu $3",
        "logentry-newusers-autocreate": "li conte $1 a stî ahivé otomaticmint",
        "rightsnone": "(nouk)",
-       "feedback-subject": "Sudjet",
-       "feedback-message": "Messaedje",
-       "feedback-cancel": "Rinoncî",
-       "feedback-submit": "Evoyî l' vosse",
        "feedback-adding": "Vosse messaedje a stî håyné sol pådje...",
-       "feedback-error2": "Aroke : Li candjaedje n' a nén stî",
+       "feedback-cancel": "Rinoncî",
        "feedback-close": "Fwait",
+       "feedback-error2": "Aroke : Li candjaedje n' a nén stî",
+       "feedback-message": "Messaedje",
+       "feedback-subject": "Sudjet",
+       "feedback-submit": "Evoyî",
        "searchsuggest-search": "Cweri",
        "searchsuggest-containing": "ki contént...",
        "api-error-badaccess-groups": "Vos n' avoz nén l' droet d' eberweter des fitchîs so ç' wiki cial",
index 238aca4..0bab496 100644 (file)
@@ -12,7 +12,8 @@
                        "לערי ריינהארט",
                        "פוילישער",
                        "아라",
-                       "Har-wradim"
+                       "Har-wradim",
+                       "Amire80"
                ]
        },
        "tog-underline": "שטרייכט אונטער לינקען",
        "userlogin-yourname": "באַניצער נאָמען",
        "userlogin-yourname-ph": "גיט אריין אייער באניצער נאמען",
        "createacct-another-username-ph": "אריינגעבן באניצער נאמען",
-       "yourpassword": "פאסווארט",
+       "yourpassword": "פּאַסװאָרט",
        "userlogin-yourpassword": "פאַסווארט",
        "userlogin-yourpassword-ph": "אַרײַנגעבן אײַער פאַסווארט",
        "createacct-yourpassword-ph": "אַרײַנגעבן א פאַסווארט",
        "username": "{{GENDER:$1|באַניצער־נאָמען}}:",
        "prefs-memberingroups": "{{GENDER:$2|מיטגליד}} אין {{PLURAL:$1|גרופע|גרופעס}}:",
        "prefs-registration": "אײַנשרײַבן צײַט:",
-       "yourrealname": "עכטער נאמען *:",
+       "yourrealname": "עכטער נאָמען:",
        "yourlanguage": "שפּראַך:",
        "yourvariant": "אינהאַלט שפּראַך וואַריאַנט:",
        "prefs-help-variant": "אײַער פרעפֿערירטער וואַריאַנט אדער ארטאגראַפֿיע צו צייגן די אינהאַלט בלעטער פֿון דער וויקי.",
index bbad72d..4f4ffd0 100644 (file)
@@ -5,7 +5,8 @@
                        "Kaganer",
                        "Meno25",
                        "Urhixidur",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Ìfàlàsábẹ́ àwọn àjápọ̀:",
        "import-rootpage-nosubpage": "Orúkọàyè \"$1\" fún ipasẹ̀ ojúewé kò gba ojúewé abẹ́ ní àyè.",
        "importlogpage": "Ìgbéwọlé àkọọ́lẹ̀",
        "importlogpagetext": "Ìkówọlé olùmójútó àwọn ojúewé pẹ̀lú ìtàn àtúnṣe láti àwọn wiki míràn.",
-       "import-logentry-upload": "ìkówọlé [[$1]] pẹ̀lú ìrùsókè fáìlì",
        "import-logentry-upload-detail": "{{PLURAL:$1|Àtúnyẹ̀wò|Àwọn àtúnyẹ̀wò}} $1",
-       "import-logentry-interwiki": "mú $1 wá láti inú wiki míràn",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|Àtúnyẹ̀wò|Àwọn àtúnyẹ̀wò}} $1 láti $2",
        "javascripttest": "Ìdánwò JavaScript",
        "javascripttest-pagetext-noframework": "Ojúewé yìí jẹ́ dídásílẹ̀ fún ṣíṣe ìdánwò JavaScript.",
        "feedback-error3": "Àsìṣe: Kò sí ìdáhùn látọ̀dọ̀ API",
        "feedback-message": "Ìránṣẹ́:",
        "feedback-subject": "Oríọ̀rọ̀:",
-       "feedback-submit": "Ìfisílẹ̀ ìdáhùn",
+       "feedback-submit": "Fúnsílẹ̀",
        "feedback-thanks": "Adúpẹ́! Ìdáhùn yín ti jẹ́ fífikún sí ojúewé \"[$2 $1]\".",
        "searchsuggest-search": "Ṣàwárí",
        "searchsuggest-containing": "tó ní...",
index d413434..987ceba 100644 (file)
        "searcharticle": "執行",
        "history": "頁面歷史",
        "history_short": "歷史",
-       "updatedmarker": "自我最後一次訪問以後的更新",
+       "updatedmarker": "自我最後一次造訪以來的更新",
        "printableversion": "可列印版",
        "permalink": "靜態連結",
        "print": "列印",
        "missingcommentheader": "<strong>提醒:</strong>您未填寫此評論的主旨/標題。\n若您再點選 \"{{int:savearticle}}\" 一次,將略過主旨/標題直接儲存您的評論。",
        "summary-preview": "摘要預覽:",
        "subject-preview": "主旨/標題預覽:",
+       "previewerrortext": "嘗試預覽您的變更時發生錯誤。",
        "blockedtitle": "使用者已被封鎖",
        "blockedtext": "<strong>您的使用者名稱或 IP 位址以被封鎖。</strong>\n\n您被 $1 封鎖,\n原因爲 <em>$2</em>。\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯絡 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"Email 給此使用者\" 的功能來聯絡相關管理員。\n您目前的 IP 位址是 $3,此次封鎖的 ID 為 #$5。\n請您在詢問時附註以上詳細訊息。",
        "autoblockedtext": "因先前的另一位使用者被 $1 封鎖,您的 IP 位址已被自動封鎖。\n原因是:\n\n:<em>$2</em>\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯絡 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"Email 給此使用者\" 的功能來聯絡相關管理員。\n您目前的 IP 位址是 $3,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
        "userpage-userdoesnotexist-view": "使用者帳號 \"$1\" 尚未註冊。",
        "blocked-notice-logextract": "此使用者目前已被封鎖。\n以下為最近的封鎖紀錄以供參考:",
        "clearyourcache": "<strong>注意:</strong>在您儲存之後您必須清除瀏覽器快取才可看到最新的變動。\n* <strong>Firefox / Safari:</strong>按住 <em>Shift</em> 時點選 <em>重新整理</em>,或按 <em>Ctrl-F5</em> 或 <em>Ctrl-R</em> (Mac 則為 <em>⌘-R</em>) \n* <strong>Google Chrome:</strong>按 <em>Ctrl-Shift-R</em> (Mac 則為 <em>⌘-Shift-R</em>) \n* <strong>Internet Explorer:</strong>按住 <em>Ctrl</em> 時點選 <em>重新整理</em>,或按 <em>Ctrl-F5</em>\n* <strong>Opera:</strong>進入 <em>工具 → 偏好設定</em> 中清除快取。",
-       "usercssyoucanpreview": "<strong>提示:</strong>在儲存之前使用 「{{int:showpreview}}」 按鈕來測試您的新 CSS 。",
-       "userjsyoucanpreview": "<strong>提示:</strong>在儲存之前使用 「{{int:showpreview}}」 按鈕來測試您的新 JavaScript 。",
+       "usercssyoucanpreview": "<strong>提示:</strong>在儲存之前使用 \"{{int:showpreview}}\" 按鈕來測試您的新 CSS 。",
+       "userjsyoucanpreview": "<strong>提示:</strong>在儲存之前使用 \"{{int:showpreview}}\" 按鈕來測試您的新 JavaScript 。",
        "usercsspreview": "<strong>您目前正預覽您的使用者 CSS,CSS 還尚未儲存!</strong>",
        "userjspreview": "<strong>您目前正預覽您的使用者 JavaScript,JavaScript 還尚未儲存!</strong>",
        "sitecsspreview": "<strong>您目前正預覽此 CSS,CSS 還尚未儲存!</strong>",
        "rev-suppressed-diff-view": "檢視差異的其中一個修訂已被 <strong>禁止顯示</strong>。\n您可繼續檢視差異,可至 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 禁止顯示日誌] 取得詳細資訊。",
        "rev-delundel": "更改顯示設定",
        "rev-showdeleted": "顯示",
-       "revisiondelete": "刪除/取消刪除修訂",
+       "revisiondelete": "刪除/還原刪除修訂",
        "revdelete-nooldid-title": "無效的目標修訂",
        "revdelete-nooldid-text": "您尚未指定目標修訂執行此動作、指定的修訂不存在,或您嘗試隱藏目前的修訂。",
        "revdelete-no-file": "指定的檔案不存在。",
        "upload-file-error": "內部錯誤",
        "upload-file-error-text": "嘗試在伺服器上建立暫存檔案時發生內部錯誤。\n請連絡 [[Special:ListUsers/sysop|管理員]]。",
        "upload-misc-error": "不明的上傳錯誤",
-       "upload-misc-error-text": "上傳時發生不明錯誤。\n請檢查您的 URL 是否有效且可存取,然後再重試一次。\n如果仍有問題,請聯絡 [[Special:ListUsers/sysop|管理員]]。",
+       "upload-misc-error-text": "上傳時發生不明錯誤。\n請檢查您的 URL 是否有效且可存取,然後再重試一次。\n如果仍有問題,請聯絡[[Special:ListUsers/sysop|管理員]]。",
        "upload-too-many-redirects": "該 URL 重新導向至太多其他位址",
        "upload-http-error": "發生 HTTP 錯誤:$1",
        "upload-copy-upload-invalid-domain": "此網域不允許複製上傳的檔案。",
        "http-timed-out": "HTTP 請求已逾時。",
        "http-curl-error": "擷取 URL 時錯誤:$1",
        "http-bad-status": "進行 HTTP 請求發生問題:$1 $2",
-       "upload-curl-error6": "無法連線 URL",
-       "upload-curl-error6-text": "無法連線指定的 URL。\n請重新檢查 URL 是否正確,且確認網站是否正常運作。",
+       "upload-curl-error6": "無法連線 URL",
+       "upload-curl-error6-text": "無法連線至指定的 URL 。\n請重新檢查 URL 是否正確,且確認網站是否正常運作。",
        "upload-curl-error28": "上傳逾時",
        "upload-curl-error28-text": "網站超出回應時間限制。\n請檢查該網站是否正常運作,並稍候一會再試一次。\n建議您可在非網路尖峰時段再嘗試連線。",
        "license": "授權條款:",
        "nolinkstoimage": "沒有頁面連結到此檔案。",
        "morelinkstoimage": "檢視連結到這個檔案的[[Special:WhatLinksHere/$1|更多連結]]。",
        "linkstoimage-redirect": "$1 (檔案重新導向) $2",
-       "duplicatesoffile": "以ä¸\8b $1 å\80\8bæª\94æ¡\88è\88\87æ­¤æª\94æ¡\88é\87\8dè¦\86 ([[Special:FileDuplicateSearch/$2|äº\86解詳細資訊]]):",
+       "duplicatesoffile": "以ä¸\8b $1 å\80\8bæª\94æ¡\88è\88\87æ­¤æª\94æ¡\88é\87\8dè¤\87 ([[Special:FileDuplicateSearch/$2|ç\9e­解詳細資訊]]):",
        "sharedupload": "此檔案來自 $1 且可能被其他專案所使用。",
-       "sharedupload-desc-there": "此檔案來自 $1 且可能被其他專案所使用。\n請參考 [$2 檔案描述頁面] 解進一步資訊。",
+       "sharedupload-desc-there": "此檔案來自 $1 且可能被其他專案所使用。\n請參考 [$2 檔案描述頁面] 解進一步資訊。",
        "sharedupload-desc-here": "此檔案來自 $1 且可能被其他專案所使用。\n在下方顯示其 [$2 檔案描述頁面] 的描述內容。",
        "sharedupload-desc-edit": "此檔案來自 $1 且可能被其他專案所使用。\n您可在該檔案的 [$2 檔案描述頁面] 上編輯內容描述。",
        "sharedupload-desc-create": "此檔案來自 $1 且可能被其他專案所使用。\n若您想要編輯內容描述可至 [$2 檔案描述頁面]。",
        "filedelete-nofile-old": "查無 <strong>$1</strong> 擁有指定的屬性的封存版本。",
        "filedelete-otherreason": "其它/額外的原因:",
        "filedelete-reason-otherlist": "其它原因",
-       "filedelete-reason-dropdown": "*常è¦\8bç\9a\84å\88ªé\99¤å\8e\9få\9b \n** ä¾µç\8a¯ç\89\88æ¬\8a\n** æª\94æ¡\88é\87\8dè¦\86",
+       "filedelete-reason-dropdown": "*常è¦\8bç\9a\84å\88ªé\99¤å\8e\9få\9b \n** ä¾µç\8a¯ç\89\88æ¬\8a\n** æª\94æ¡\88é\87\8dè¤\87",
        "filedelete-edit-reasonlist": "編輯刪除原因",
        "filedelete-maintenance": "維護期間檔案刪除和還原暫停使用。",
        "filedelete-maintenance-title": "無法刪除檔案",
        "mostlinkedtemplates": "被引用最多的頁面",
        "mostcategories": "最多分類的頁面",
        "mostimages": "被連結最多的檔案",
-       "mostinterwikis": "最多跨 Wiki 的頁面",
+       "mostinterwikis": "最多跨 Wiki 連結的頁面",
        "mostrevisions": "最多修訂的頁面",
        "prefixindex": "所有頁面與字首",
        "prefixindex-namespace": "所有含字首的頁面 ($1 命名空間)",
        "mailnologin": "沒有傳送位址",
        "mailnologintext": "您必須先 [[Special:UserLogin|登入]]\n並在 [[Special:Preferences|偏好設定]]\n中設定一個有效的電子郵件地址才可以傳送郵件給其他使用者。",
        "emailuser": "Email 此使用者",
-       "emailuser-title-target": "Email 給此{{GENDER:$1|使用者}}",
-       "emailuser-title-notarget": "E-mail 使用者",
+       "emailuser-title-target": "E-mail 聯絡此{{GENDER:$1|使用者}}",
+       "emailuser-title-notarget": "E-mail 聯絡使用者",
        "emailpage": "E-mail 給使用者",
        "emailpagetext": "您可以使用以下表格傳送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件位址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
        "defemailsubject": "{{SITENAME}} 使用者 \"$1\" 寄來的電子郵件",
        "noemailtext": "此使用者尚未指定一個有效的電子郵件地址。",
        "nowikiemailtext": "此使用者選擇不接收其他使用者的信件。",
        "emailnotarget": "收件人不存在或無效的使用者名稱。",
-       "emailtarget": "輸入收件人使用者名稱",
+       "emailtarget": "輸入收件人使用者名稱",
        "emailusername": "使用者名稱:",
        "emailusernamesubmit": "送出",
        "email-legend": "傳送電子郵件給另一位 {{SITENAME}} 的使用者",
        "emailto": "收件人:",
        "emailsubject": "主旨:",
        "emailmessage": "訊息:",
-       "emailsend": "å\82³é\80\81",
+       "emailsend": "å¯\84å\87º",
        "emailccme": "傳送一份訊息副本到我的電子郵件信箱。",
        "emailccsubject": "您寄給 $1 的訊息副本:$2",
        "emailsent": "已寄出電子郵件",
        "lockdb": "鎖定資料庫",
        "unlockdb": "解除鎖定資料庫",
        "lockdbtext": "鎖定資料庫將會中止所有使用者編輯頁面、更改偏好設定、編輯監視清單與其他需要更動到資料庫的操作。\n請確認您是否要這樣做,並在維護作業結束時解除資料庫的鎖定。",
-       "unlockdbtext": "解除鎖定資料庫會恢復所有使用者編輯頁面、更改偏好設定、編輯監視清單與其他需要更動到資料庫的操作。\n請確認您是否要這樣做。",
+       "unlockdbtext": "解除鎖定資料庫會還原所有使用者編輯頁面、更改偏好設定、編輯監視清單與其他需要更動到資料庫的操作。\n請確認您是否要這樣做。",
        "lockconfirm": "是的,我想要鎖定資料庫。",
        "unlockconfirm": "是的,我想要解除鎖定資料庫。",
        "lockbtn": "鎖定資料庫",
        "redirect-not-exists": "查無值",
        "fileduplicatesearch": "搜尋重複檔案",
        "fileduplicatesearch-summary": "依據雜湊值 (Hash) 來搜尋重複的檔案。",
-       "fileduplicatesearch-legend": "æ\90\9cå°\8bé\87\8dè¦\86",
+       "fileduplicatesearch-legend": "æ\90\9cå°\8bé\87\8dè¤\87",
        "fileduplicatesearch-filename": "檔案名稱:",
        "fileduplicatesearch-submit": "搜尋",
        "fileduplicatesearch-info": "$1 × $2 像素<br />檔案大小:$3<br />MIME 類型:$4",
diff --git a/maintenance/jsduck/CustomTags.rb b/maintenance/jsduck/CustomTags.rb
deleted file mode 100644 (file)
index 2de3ac0..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-# Custom tags for JSDuck 5.x
-# See also:
-# - https://github.com/senchalabs/jsduck/wiki/Tags
-# - https://github.com/senchalabs/jsduck/wiki/Custom-tags
-# - https://github.com/senchalabs/jsduck/wiki/Custom-tags/7f5c32e568eab9edc8e3365e935bcb836cb11f1d
-require 'jsduck/tag/tag'
-
-class CommonTag < JsDuck::Tag::Tag
-  def initialize
-    @html_position = POS_DOC + 0.1
-    @repeatable = true
-  end
-
-  def parse_doc(scanner, position)
-    if @multiline
-      return { :tagname => @tagname, :doc => :multiline }
-    else
-      text = scanner.match(/.*$/)
-      return { :tagname => @tagname, :doc => text }
-    end
-  end
-
-  def process_doc(context, tags, position)
-    context[@tagname] = tags
-  end
-
-  def format(context, formatter)
-    context[@tagname].each do |tag|
-      tag[:doc] = formatter.format(tag[:doc])
-    end
-  end
-end
-
-class SourceTag < CommonTag
-  def initialize
-    @tagname = :source
-    @pattern = "source"
-    super
-  end
-
-  def to_html(context)
-    context[@tagname].map do |source|
-      <<-EOHTML
-        <h3 class='pa'>Source</h3>
-        #{source[:doc]}
-      EOHTML
-    end.join
-  end
-end
-
-class SeeTag < CommonTag
-  def initialize
-    @tagname = :see
-    @pattern = "see"
-    super
-  end
-
-  def format(context, formatter)
-    position = context[:files][0]
-    context[@tagname].each do |tag|
-      tag[:doc] = '<li>' + render_long_see(tag[:doc], formatter, position) + '</li>'
-    end
-  end
-
-  def to_html(context)
-    <<-EOHTML
-      <h3 class="pa">Related</h3>
-      <ul>
-      #{ context[@tagname].map { |tag| tag[:doc] }.join("\n") }
-      </ul>
-    EOHTML
-  end
-
-  def render_long_see(tag, formatter, position)
-    if tag =~ /\A([^\s]+)( .*)?\Z/m
-      name = $1
-      doc = $2 ? ': ' + $2 : ''
-      return formatter.format("{@link #{name}} #{doc}")
-    else
-      JsDuck::Logger.warn(nil, 'Unexpected @see argument: "' + tag + '"', position)
-      return tag
-    end
-  end
-end
-
-class ContextTag < CommonTag
-  def initialize
-    @tagname = :context
-    @pattern = 'context'
-    super
-  end
-
-  def format(context, formatter)
-    position = context[:files][0]
-    context[@tagname].each do |tag|
-      tag[:doc] = render_long_context(tag[:doc], formatter, position)
-    end
-  end
-
-  def to_html(context)
-    <<-EOHTML
-      <h3 class="pa">Context</h3>
-      #{ context[@tagname].last[:doc] }
-    EOHTML
-  end
-
-  def render_long_context(tag, formatter, position)
-    if tag =~ /\A([^\s]+)/m
-      name = $1
-      return formatter.format("`context` : {@link #{name}}")
-    else
-      JsDuck::Logger.warn(nil, 'Unexpected @context argument: "' + tag + '"', position)
-      return tag
-    end
-  end
-end
diff --git a/maintenance/jsduck/custom_tags.rb b/maintenance/jsduck/custom_tags.rb
new file mode 100644 (file)
index 0000000..39589a0
--- /dev/null
@@ -0,0 +1,120 @@
+# Custom tags for JSDuck 5.x
+# See also:
+# - https://github.com/senchalabs/jsduck/wiki/Tags
+# - https://github.com/senchalabs/jsduck/wiki/Custom-tags
+# - https://github.com/senchalabs/jsduck/wiki/Custom-tags/7f5c32e568eab9edc8e3365e935bcb836cb11f1d
+require 'jsduck/tag/tag'
+
+class CommonTag < JsDuck::Tag::Tag
+  def initialize
+    @html_position = POS_DOC + 0.1
+    @repeatable = true
+  end
+
+  def parse_doc(scanner, _position)
+    if @multiline
+      return { tagname: @tagname, doc: :multiline }
+    else
+      text = scanner.match(/.*$/)
+      return { tagname: @tagname, doc: text }
+    end
+  end
+
+  def process_doc(context, tags, _position)
+    context[@tagname] = tags
+  end
+
+  def format(context, formatter)
+    context[@tagname].each do |tag|
+      tag[:doc] = formatter.format(tag[:doc])
+    end
+  end
+end
+
+class SourceTag < CommonTag
+  def initialize
+    @tagname = :source
+    @pattern = 'source'
+    super
+  end
+
+  def to_html(context)
+    context[@tagname].map do |source|
+      <<-EOHTML
+        <h3 class='pa'>Source</h3>
+        #{source[:doc]}
+      EOHTML
+    end.join
+  end
+end
+
+class SeeTag < CommonTag
+  def initialize
+    @tagname = :see
+    @pattern = 'see'
+    super
+  end
+
+  def format(context, formatter)
+    position = context[:files][0]
+    context[@tagname].each do |tag|
+      tag[:doc] = '<li>' + render_long_see(tag[:doc], formatter, position) + '</li>'
+    end
+  end
+
+  def to_html(context)
+    <<-EOHTML
+      <h3 class="pa">Related</h3>
+      <ul>
+      #{ context[@tagname].map { |tag| tag[:doc] }.join("\n") }
+      </ul>
+    EOHTML
+  end
+
+  def render_long_see(tag, formatter, position)
+    match = /\A([^\s]+)( .*)?\Z/m.match(tag)
+
+    if match
+      name = match[1]
+      doc = match[2] ? ': ' + match[2] : ''
+      return formatter.format("{@link #{name}} #{doc}")
+    else
+      JsDuck::Logger.warn(nil, 'Unexpected @see argument: "' + tag + '"', position)
+      return tag
+    end
+  end
+end
+
+class ContextTag < CommonTag
+  def initialize
+    @tagname = :context
+    @pattern = 'context'
+    super
+  end
+
+  def format(context, formatter)
+    position = context[:files][0]
+    context[@tagname].each do |tag|
+      tag[:doc] = render_long_context(tag[:doc], formatter, position)
+    end
+  end
+
+  def to_html(context)
+    <<-EOHTML
+      <h3 class="pa">Context</h3>
+      #{ context[@tagname].last[:doc] }
+    EOHTML
+  end
+
+  def render_long_context(tag, formatter, position)
+    match = /\A([^\s]+)/m.match(tag)
+
+    if match
+      name = match[1]
+      return formatter.format("`context` : {@link #{name}}")
+    else
+      JsDuck::Logger.warn(nil, 'Unexpected @context argument: "' + tag + '"', position)
+      return tag
+    end
+  end
+end
index b2f7497..e1b6ac6 100644 (file)
@@ -36,42 +36,51 @@ class RefreshLinks extends Maintenance {
                $this->addOption( 'new-only', 'Only affect articles with just a single edit' );
                $this->addOption( 'redirects-only', 'Only fix redirects, not all links' );
                $this->addOption( 'old-redirects-only', 'Only fix redirects with no redirect table entry' );
-               $this->addOption( 'm', 'Maximum replication lag', false, true );
                $this->addOption( 'e', 'Last page id to refresh', false, true );
+               $this->addOption( 'dfn-chunk-size', 'Maximum number of existent IDs to check per ' .
+                       'query, default 100000', false, true );
                $this->addArg( 'start', 'Page_id to start from, default 1', false );
                $this->setBatchSize( 100 );
        }
 
        public function execute() {
-               $max = $this->getOption( 'm', 0 );
+               // Note that there is a difference between not specifying the start
+               // and end IDs and using the minimum and maximum values from the page
+               // table. In the latter case, deleteLinksFromNonexistent() will not
+               // delete entries for nonexistent IDs that fall outside the range.
+               $start = (int)$this->getArg( 0 ) ?: null;
+               $end = (int)$this->getOption( 'e' ) ?: null;
+               $dfnChunkSize = (int)$this->getOption( 'dfn-chunk-size', 100000 );
                if ( !$this->hasOption( 'dfn-only' ) ) {
-                       $start = $this->getArg( 0, 1 );
                        $new = $this->getOption( 'new-only', false );
-                       $end = $this->getOption( 'e', 0 );
                        $redir = $this->getOption( 'redirects-only', false );
                        $oldRedir = $this->getOption( 'old-redirects-only', false );
-                       $this->doRefreshLinks( $start, $new, $max, $end, $redir, $oldRedir );
+                       $this->doRefreshLinks( $start, $new, $end, $redir, $oldRedir );
+                       $this->deleteLinksFromNonexistent( null, null, $this->mBatchSize, $dfnChunkSize );
+               } else {
+                       $this->deleteLinksFromNonexistent( $start, $end, $this->mBatchSize, $dfnChunkSize );
                }
-               $this->deleteLinksFromNonexistent( $max, $this->mBatchSize );
        }
 
        /**
         * Do the actual link refreshing.
-        * @param int $start Page_id to start from
+        * @param int|null $start Page_id to start from
         * @param bool $newOnly Only do pages with 1 edit
-        * @param int $maxLag Max DB replication lag
-        * @param int $end Page_id to stop at
+        * @param int|null $end Page_id to stop at
         * @param bool $redirectsOnly Only fix redirects
         * @param bool $oldRedirectsOnly Only fix redirects without redirect entries
         */
-       private function doRefreshLinks( $start, $newOnly = false, $maxLag = false,
-               $end = 0, $redirectsOnly = false, $oldRedirectsOnly = false
+       private function doRefreshLinks( $start, $newOnly = false,
+               $end = null, $redirectsOnly = false, $oldRedirectsOnly = false
        ) {
                global $wgParser, $wgUseTidy;
 
                $reportingInterval = 100;
                $dbr = wfGetDB( DB_SLAVE );
-               $start = intval( $start );
+
+               if ( $start === null ) {
+                       $start = 1;
+               }
 
                // Give extensions a chance to optimize settings
                wfRunHooks( 'MaintenanceRefreshLinksInit', array( $this ) );
@@ -89,15 +98,10 @@ class RefreshLinks extends Maintenance {
 
                        $conds = array(
                                "page_is_redirect=1",
-                               "rd_from IS NULL"
+                               "rd_from IS NULL",
+                               self::intervalCond( $dbr, 'page_id', $start, $end ),
                        );
 
-                       if ( $end == 0 ) {
-                               $conds[] = "page_id >= $start";
-                       } else {
-                               $conds[] = "page_id BETWEEN $start AND $end";
-                       }
-
                        $res = $dbr->select(
                                array( 'page', 'redirect' ),
                                'page_id',
@@ -124,7 +128,8 @@ class RefreshLinks extends Maintenance {
                                array( 'page_id' ),
                                array(
                                        'page_is_new' => 1,
-                                       "page_id >= $start" ),
+                                       self::intervalCond( $dbr, 'page_id', $start, $end ),
+                               ),
                                __METHOD__
                        );
                        $num = $res->numRows();
@@ -253,14 +258,58 @@ class RefreshLinks extends Maintenance {
         * Removes non-existing links from pages from pagelinks, imagelinks,
         * categorylinks, templatelinks, externallinks, interwikilinks, langlinks and redirect tables.
         *
-        * @param int $maxLag
+        * @param int|null $start Page_id to start from
+        * @param int|null $end Page_id to stop at
         * @param int $batchSize The size of deletion batches
+        * @param int $chunkSize Maximum number of existent IDs to check per query
         *
         * @author Merlijn van Deen <valhallasw@arctus.nl>
         */
-       private function deleteLinksFromNonexistent( $maxLag = 0, $batchSize = 100 ) {
+       private function deleteLinksFromNonexistent( $start = null, $end = null, $batchSize = 100,
+               $chunkSize = 100000
+       ) {
                wfWaitForSlaves();
+               $this->output( "Deleting illegal entries from the links tables...\n" );
+               $dbr = wfGetDB( DB_SLAVE );
+               do {
+                       // Find the start of the next chunk. This is based only
+                       // on existent page_ids.
+                       $nextStart = $dbr->selectField(
+                               'page',
+                               'page_id',
+                               self::intervalCond( $dbr, 'page_id', $start, $end ),
+                               __METHOD__,
+                               array( 'ORDER BY' => 'page_id', 'OFFSET' => $chunkSize )
+                       );
+
+                       if ( $nextStart !== false ) {
+                               // To find the end of the current chunk, subtract one.
+                               // This will serve to limit the number of rows scanned in
+                               // dfnCheckInterval(), per query, to at most the sum of
+                               // the chunk size and deletion batch size.
+                               $chunkEnd = $nextStart - 1;
+                       } else {
+                               // This is the last chunk. Check all page_ids up to $end.
+                               $chunkEnd = $end;
+                       }
+
+                       $fmtStart = $start !== null ? "[$start" : '(-INF';
+                       $fmtChunkEnd = $chunkEnd !== null ? "$chunkEnd]" : 'INF)';
+                       $this->output( "  Checking interval $fmtStart, $fmtChunkEnd\n" );
+                       $this->dfnCheckInterval( $start, $chunkEnd, $batchSize );
+
+                       $start = $nextStart;
 
+               } while ( $nextStart !== false );
+       }
+
+       /**
+        * @see RefreshLinks::deleteLinksFromNonexistent()
+        * @param int|null $start Page_id to start from
+        * @param int|null $end Page_id to stop at
+        * @param int $batchSize The size of deletion batches
+        */
+       private function dfnCheckInterval( $start = null, $end = null, $batchSize = 100 ) {
                $dbw = wfGetDB( DB_MASTER );
                $dbr = wfGetDB( DB_SLAVE );
 
@@ -277,18 +326,14 @@ class RefreshLinks extends Maintenance {
                );
 
                foreach ( $linksTables as $table => $field ) {
-                       $this->output( "Retrieving illegal entries from $table... " );
-
-                       $start = 0;
+                       $this->output( "    $table: 0" );
                        $counter = 0;
-                       $this->output( "0.." );
-
                        do {
                                $ids = $dbr->selectFieldValues(
                                        $table,
                                        $field,
                                        array(
-                                               "$field >= {$dbr->addQuotes( $start )}",
+                                               self::intervalCond( $dbr, $field, $start, $end ),
                                                "$field NOT IN ({$dbr->selectSQLText( 'page', 'page_id' )})",
                                        ),
                                        __METHOD__,
@@ -300,16 +345,40 @@ class RefreshLinks extends Maintenance {
                                        $counter += $numIds;
                                        wfWaitForSlaves();
                                        $dbw->delete( $table, array( $field => $ids ), __METHOD__ );
-                                       $this->output( $counter . ".." );
+                                       $this->output( ", $counter" );
                                        $start = $ids[$numIds - 1] + 1;
                                }
 
-                       } while ( $numIds >= $batchSize );
+                       } while ( $numIds >= $batchSize && ( $end === null || $start <= $end ) );
+
+                       $this->output( " deleted.\n" );
 
-                       $this->output( "\n" );
                        wfWaitForSlaves();
                }
        }
+
+       /**
+        * Build a SQL expression for a closed interval (i.e. BETWEEN).
+        *
+        * By specifying a null $start or $end, it is also possible to create
+        * half-bounded or unbounded intervals using this function.
+        *
+        * @param IDatabase $db Database connection
+        * @param string $var Field name
+        * @param mixed $start First value to include or null
+        * @param mixed $end Last value to include or null
+        */
+       private static function intervalCond( IDatabase $db, $var, $start, $end ) {
+               if ( $start === null && $end === null ) {
+                       return "$var IS NOT NULL";
+               } elseif ( $end === null ) {
+                       return "$var >= {$db->addQuotes( $start )}";
+               } elseif ( $start === null ) {
+                       return "$var <= {$db->addQuotes( $end )}";
+               } else {
+                       return "$var BETWEEN {$db->addQuotes( $start )} AND {$db->addQuotes( $end )}";
+               }
+       }
 }
 
 $maintClass = 'RefreshLinks';
index a9f7d8b..9e9ad32 100644 (file)
@@ -58,6 +58,9 @@ class ShowJobs extends Maintenance {
                                foreach ( $queue->getAllDelayedJobs() as $job ) {
                                        $this->output( $job->toString() . " status=delayed\n" );
                                }
+                               foreach ( $queue->getAllAbandonedJobs() as $job ) {
+                                       $this->output( $job->toString() . " status=abandoned\n" );
+                               }
                        }
                } elseif ( $this->hasOption( 'group' ) ) {
                        foreach ( $group->getQueueTypes() as $type ) {
index 2c80a85..448f502 100644 (file)
@@ -791,6 +791,12 @@ return array(
                'scripts' => 'resources/src/mediawiki/mediawiki.template.js',
                'targets' => array( 'desktop', 'mobile' ),
        ),
+       'mediawiki.template.mustache' => array(
+               'scripts' => array(
+                       'resources/lib/mustache/mustache.js',
+                       'resources/src/mediawiki/mediawiki.template.mustache.js',
+               ),
+       ),
        'mediawiki.apipretty' => array(
                'styles' => 'resources/src/mediawiki/mediawiki.apipretty.css',
                'targets' => array( 'desktop', 'mobile' ),
@@ -1079,10 +1085,19 @@ return array(
                        'mediawiki.jqueryMsg',
                ),
                'messages' => array(
+                       // Keep the uses message keys in sync with EditPage#setHeaders
+                       'creating',
+                       'editconflict',
+                       'editing',
+                       'editingcomment',
+                       'editingsection',
+                       'pagetitle',
                        'otherlanguages',
                        'tooltip-p-lang',
                        'summary-preview',
+                       'subject-preview',
                        'parentheses',
+                       'previewerrortext',
                ),
        ),
        'mediawiki.action.edit.stash' => array(
diff --git a/resources/lib/mustache/mustache.js b/resources/lib/mustache/mustache.js
new file mode 100644 (file)
index 0000000..dbc9823
--- /dev/null
@@ -0,0 +1,578 @@
+/*!
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
+ * http://github.com/janl/mustache.js
+ */
+
+/*global define: false*/
+
+(function (global, factory) {
+  if (typeof exports === "object" && exports) {
+    factory(exports); // CommonJS
+  } else if (typeof define === "function" && define.amd) {
+    define(['exports'], factory); // AMD
+  } else {
+    factory(global.Mustache = {}); // <script>
+  }
+}(this, function (mustache) {
+
+  var Object_toString = Object.prototype.toString;
+  var isArray = Array.isArray || function (object) {
+    return Object_toString.call(object) === '[object Array]';
+  };
+
+  function isFunction(object) {
+    return typeof object === 'function';
+  }
+
+  function escapeRegExp(string) {
+    return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
+  }
+
+  // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577
+  // See https://github.com/janl/mustache.js/issues/189
+  var RegExp_test = RegExp.prototype.test;
+  function testRegExp(re, string) {
+    return RegExp_test.call(re, string);
+  }
+
+  var nonSpaceRe = /\S/;
+  function isWhitespace(string) {
+    return !testRegExp(nonSpaceRe, string);
+  }
+
+  var entityMap = {
+    "&": "&amp;",
+    "<": "&lt;",
+    ">": "&gt;",
+    '"': '&quot;',
+    "'": '&#39;',
+    "/": '&#x2F;'
+  };
+
+  function escapeHtml(string) {
+    return String(string).replace(/[&<>"'\/]/g, function (s) {
+      return entityMap[s];
+    });
+  }
+
+  var whiteRe = /\s*/;
+  var spaceRe = /\s+/;
+  var equalsRe = /\s*=/;
+  var curlyRe = /\s*\}/;
+  var tagRe = /#|\^|\/|>|\{|&|=|!/;
+
+  /**
+   * Breaks up the given `template` string into a tree of tokens. If the `tags`
+   * argument is given here it must be an array with two string values: the
+   * opening and closing tags used in the template (e.g. [ "<%", "%>" ]). Of
+   * course, the default is to use mustaches (i.e. mustache.tags).
+   *
+   * A token is an array with at least 4 elements. The first element is the
+   * mustache symbol that was used inside the tag, e.g. "#" or "&". If the tag
+   * did not contain a symbol (i.e. {{myValue}}) this element is "name". For
+   * all text that appears outside a symbol this element is "text".
+   *
+   * The second element of a token is its "value". For mustache tags this is
+   * whatever else was inside the tag besides the opening symbol. For text tokens
+   * this is the text itself.
+   *
+   * The third and fourth elements of the token are the start and end indices,
+   * respectively, of the token in the original template.
+   *
+   * Tokens that are the root node of a subtree contain two more elements: 1) an
+   * array of tokens in the subtree and 2) the index in the original template at
+   * which the closing tag for that section begins.
+   */
+  function parseTemplate(template, tags) {
+    if (!template)
+      return [];
+
+    var sections = [];     // Stack to hold section tokens
+    var tokens = [];       // Buffer to hold the tokens
+    var spaces = [];       // Indices of whitespace tokens on the current line
+    var hasTag = false;    // Is there a {{tag}} on the current line?
+    var nonSpace = false;  // Is there a non-space char on the current line?
+
+    // Strips all whitespace tokens array for the current line
+    // if there was a {{#tag}} on it and otherwise only space.
+    function stripSpace() {
+      if (hasTag && !nonSpace) {
+        while (spaces.length)
+          delete tokens[spaces.pop()];
+      } else {
+        spaces = [];
+      }
+
+      hasTag = false;
+      nonSpace = false;
+    }
+
+    var openingTagRe, closingTagRe, closingCurlyRe;
+    function compileTags(tags) {
+      if (typeof tags === 'string')
+        tags = tags.split(spaceRe, 2);
+
+      if (!isArray(tags) || tags.length !== 2)
+        throw new Error('Invalid tags: ' + tags);
+
+      openingTagRe = new RegExp(escapeRegExp(tags[0]) + '\\s*');
+      closingTagRe = new RegExp('\\s*' + escapeRegExp(tags[1]));
+      closingCurlyRe = new RegExp('\\s*' + escapeRegExp('}' + tags[1]));
+    }
+
+    compileTags(tags || mustache.tags);
+
+    var scanner = new Scanner(template);
+
+    var start, type, value, chr, token, openSection;
+    while (!scanner.eos()) {
+      start = scanner.pos;
+
+      // Match any text between tags.
+      value = scanner.scanUntil(openingTagRe);
+
+      if (value) {
+        for (var i = 0, valueLength = value.length; i < valueLength; ++i) {
+          chr = value.charAt(i);
+
+          if (isWhitespace(chr)) {
+            spaces.push(tokens.length);
+          } else {
+            nonSpace = true;
+          }
+
+          tokens.push([ 'text', chr, start, start + 1 ]);
+          start += 1;
+
+          // Check for whitespace on the current line.
+          if (chr === '\n')
+            stripSpace();
+        }
+      }
+
+      // Match the opening tag.
+      if (!scanner.scan(openingTagRe))
+        break;
+
+      hasTag = true;
+
+      // Get the tag type.
+      type = scanner.scan(tagRe) || 'name';
+      scanner.scan(whiteRe);
+
+      // Get the tag value.
+      if (type === '=') {
+        value = scanner.scanUntil(equalsRe);
+        scanner.scan(equalsRe);
+        scanner.scanUntil(closingTagRe);
+      } else if (type === '{') {
+        value = scanner.scanUntil(closingCurlyRe);
+        scanner.scan(curlyRe);
+        scanner.scanUntil(closingTagRe);
+        type = '&';
+      } else {
+        value = scanner.scanUntil(closingTagRe);
+      }
+
+      // Match the closing tag.
+      if (!scanner.scan(closingTagRe))
+        throw new Error('Unclosed tag at ' + scanner.pos);
+
+      token = [ type, value, start, scanner.pos ];
+      tokens.push(token);
+
+      if (type === '#' || type === '^') {
+        sections.push(token);
+      } else if (type === '/') {
+        // Check section nesting.
+        openSection = sections.pop();
+
+        if (!openSection)
+          throw new Error('Unopened section "' + value + '" at ' + start);
+
+        if (openSection[1] !== value)
+          throw new Error('Unclosed section "' + openSection[1] + '" at ' + start);
+      } else if (type === 'name' || type === '{' || type === '&') {
+        nonSpace = true;
+      } else if (type === '=') {
+        // Set the tags for the next time around.
+        compileTags(value);
+      }
+    }
+
+    // Make sure there are no open sections when we're done.
+    openSection = sections.pop();
+
+    if (openSection)
+      throw new Error('Unclosed section "' + openSection[1] + '" at ' + scanner.pos);
+
+    return nestTokens(squashTokens(tokens));
+  }
+
+  /**
+   * Combines the values of consecutive text tokens in the given `tokens` array
+   * to a single token.
+   */
+  function squashTokens(tokens) {
+    var squashedTokens = [];
+
+    var token, lastToken;
+    for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
+      token = tokens[i];
+
+      if (token) {
+        if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {
+          lastToken[1] += token[1];
+          lastToken[3] = token[3];
+        } else {
+          squashedTokens.push(token);
+          lastToken = token;
+        }
+      }
+    }
+
+    return squashedTokens;
+  }
+
+  /**
+   * Forms the given array of `tokens` into a nested tree structure where
+   * tokens that represent a section have two additional items: 1) an array of
+   * all tokens that appear in that section and 2) the index in the original
+   * template that represents the end of that section.
+   */
+  function nestTokens(tokens) {
+    var nestedTokens = [];
+    var collector = nestedTokens;
+    var sections = [];
+
+    var token, section;
+    for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
+      token = tokens[i];
+
+      switch (token[0]) {
+      case '#':
+      case '^':
+        collector.push(token);
+        sections.push(token);
+        collector = token[4] = [];
+        break;
+      case '/':
+        section = sections.pop();
+        section[5] = token[2];
+        collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;
+        break;
+      default:
+        collector.push(token);
+      }
+    }
+
+    return nestedTokens;
+  }
+
+  /**
+   * A simple string scanner that is used by the template parser to find
+   * tokens in template strings.
+   */
+  function Scanner(string) {
+    this.string = string;
+    this.tail = string;
+    this.pos = 0;
+  }
+
+  /**
+   * Returns `true` if the tail is empty (end of string).
+   */
+  Scanner.prototype.eos = function () {
+    return this.tail === "";
+  };
+
+  /**
+   * Tries to match the given regular expression at the current position.
+   * Returns the matched text if it can match, the empty string otherwise.
+   */
+  Scanner.prototype.scan = function (re) {
+    var match = this.tail.match(re);
+
+    if (!match || match.index !== 0)
+      return '';
+
+    var string = match[0];
+
+    this.tail = this.tail.substring(string.length);
+    this.pos += string.length;
+
+    return string;
+  };
+
+  /**
+   * Skips all text until the given regular expression can be matched. Returns
+   * the skipped string, which is the entire tail if no match can be made.
+   */
+  Scanner.prototype.scanUntil = function (re) {
+    var index = this.tail.search(re), match;
+
+    switch (index) {
+    case -1:
+      match = this.tail;
+      this.tail = "";
+      break;
+    case 0:
+      match = "";
+      break;
+    default:
+      match = this.tail.substring(0, index);
+      this.tail = this.tail.substring(index);
+    }
+
+    this.pos += match.length;
+
+    return match;
+  };
+
+  /**
+   * Represents a rendering context by wrapping a view object and
+   * maintaining a reference to the parent context.
+   */
+  function Context(view, parentContext) {
+    this.view = view == null ? {} : view;
+    this.cache = { '.': this.view };
+    this.parent = parentContext;
+  }
+
+  /**
+   * Creates a new context using the given view with this context
+   * as the parent.
+   */
+  Context.prototype.push = function (view) {
+    return new Context(view, this);
+  };
+
+  /**
+   * Returns the value of the given name in this context, traversing
+   * up the context hierarchy if the value is absent in this context's view.
+   */
+  Context.prototype.lookup = function (name) {
+    var cache = this.cache;
+
+    var value;
+    if (name in cache) {
+      value = cache[name];
+    } else {
+      var context = this, names, index;
+
+      while (context) {
+        if (name.indexOf('.') > 0) {
+          value = context.view;
+          names = name.split('.');
+          index = 0;
+
+          while (value != null && index < names.length)
+            value = value[names[index++]];
+        } else if (typeof context.view == 'object') {
+          value = context.view[name];
+        }
+
+        if (value != null)
+          break;
+
+        context = context.parent;
+      }
+
+      cache[name] = value;
+    }
+
+    if (isFunction(value))
+      value = value.call(this.view);
+
+    return value;
+  };
+
+  /**
+   * A Writer knows how to take a stream of tokens and render them to a
+   * string, given a context. It also maintains a cache of templates to
+   * avoid the need to parse the same template twice.
+   */
+  function Writer() {
+    this.cache = {};
+  }
+
+  /**
+   * Clears all cached templates in this writer.
+   */
+  Writer.prototype.clearCache = function () {
+    this.cache = {};
+  };
+
+  /**
+   * Parses and caches the given `template` and returns the array of tokens
+   * that is generated from the parse.
+   */
+  Writer.prototype.parse = function (template, tags) {
+    var cache = this.cache;
+    var tokens = cache[template];
+
+    if (tokens == null)
+      tokens = cache[template] = parseTemplate(template, tags);
+
+    return tokens;
+  };
+
+  /**
+   * High-level method that is used to render the given `template` with
+   * the given `view`.
+   *
+   * The optional `partials` argument may be an object that contains the
+   * names and templates of partials that are used in the template. It may
+   * also be a function that is used to load partial templates on the fly
+   * that takes a single argument: the name of the partial.
+   */
+  Writer.prototype.render = function (template, view, partials) {
+    var tokens = this.parse(template);
+    var context = (view instanceof Context) ? view : new Context(view);
+    return this.renderTokens(tokens, context, partials, template);
+  };
+
+  /**
+   * Low-level method that renders the given array of `tokens` using
+   * the given `context` and `partials`.
+   *
+   * Note: The `originalTemplate` is only ever used to extract the portion
+   * of the original template that was contained in a higher-order section.
+   * If the template doesn't use higher-order sections, this argument may
+   * be omitted.
+   */
+  Writer.prototype.renderTokens = function (tokens, context, partials, originalTemplate) {
+    var buffer = '';
+
+    // This function is used to render an arbitrary template
+    // in the current context by higher-order sections.
+    var self = this;
+    function subRender(template) {
+      return self.render(template, context, partials);
+    }
+
+    var token, value;
+    for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
+      token = tokens[i];
+
+      switch (token[0]) {
+      case '#':
+        value = context.lookup(token[1]);
+
+        if (!value)
+          continue;
+
+        if (isArray(value)) {
+          for (var j = 0, valueLength = value.length; j < valueLength; ++j) {
+            buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);
+          }
+        } else if (typeof value === 'object' || typeof value === 'string') {
+          buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);
+        } else if (isFunction(value)) {
+          if (typeof originalTemplate !== 'string')
+            throw new Error('Cannot use higher-order sections without the original template');
+
+          // Extract the portion of the original template that the section contains.
+          value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);
+
+          if (value != null)
+            buffer += value;
+        } else {
+          buffer += this.renderTokens(token[4], context, partials, originalTemplate);
+        }
+
+        break;
+      case '^':
+        value = context.lookup(token[1]);
+
+        // Use JavaScript's definition of falsy. Include empty arrays.
+        // See https://github.com/janl/mustache.js/issues/186
+        if (!value || (isArray(value) && value.length === 0))
+          buffer += this.renderTokens(token[4], context, partials, originalTemplate);
+
+        break;
+      case '>':
+        if (!partials)
+          continue;
+
+        value = isFunction(partials) ? partials(token[1]) : partials[token[1]];
+
+        if (value != null)
+          buffer += this.renderTokens(this.parse(value), context, partials, value);
+
+        break;
+      case '&':
+        value = context.lookup(token[1]);
+
+        if (value != null)
+          buffer += value;
+
+        break;
+      case 'name':
+        value = context.lookup(token[1]);
+
+        if (value != null)
+          buffer += mustache.escape(value);
+
+        break;
+      case 'text':
+        buffer += token[1];
+        break;
+      }
+    }
+
+    return buffer;
+  };
+
+  mustache.name = "mustache.js";
+  mustache.version = "0.8.2";
+  mustache.tags = [ "{{", "}}" ];
+
+  // All high-level mustache.* functions use this writer.
+  var defaultWriter = new Writer();
+
+  /**
+   * Clears all cached templates in the default writer.
+   */
+  mustache.clearCache = function () {
+    return defaultWriter.clearCache();
+  };
+
+  /**
+   * Parses and caches the given template in the default writer and returns the
+   * array of tokens it contains. Doing this ahead of time avoids the need to
+   * parse templates on the fly as they are rendered.
+   */
+  mustache.parse = function (template, tags) {
+    return defaultWriter.parse(template, tags);
+  };
+
+  /**
+   * Renders the `template` with the given `view` and `partials` using the
+   * default writer.
+   */
+  mustache.render = function (template, view, partials) {
+    return defaultWriter.render(template, view, partials);
+  };
+
+  // This is here for backwards compatibility with 0.4.x.
+  mustache.to_html = function (template, view, partials, send) {
+    var result = mustache.render(template, view, partials);
+
+    if (isFunction(send)) {
+      send(result);
+    } else {
+      return result;
+    }
+  };
+
+  // Export the escaping function so that the user may override it.
+  // See https://github.com/janl/mustache.js/issues/244
+  mustache.escape = escapeHtml;
+
+  // Export these mainly for testing, but also for advanced usage.
+  mustache.Scanner = Scanner;
+  mustache.Context = Context;
+  mustache.Writer = Writer;
+
+}));
index 5ce3666..6f79e37 100644 (file)
@@ -5,5 +5,15 @@
                ]
        },
        "ooui-outline-control-move-down": "Skuif item af",
-       "ooui-outline-control-move-up": "Skuif item op"
+       "ooui-outline-control-move-up": "Skuif item op",
+       "ooui-outline-control-remove": "Verwyder item",
+       "ooui-toolbar-more": "Meer",
+       "ooui-toolgroup-expand": "Meer",
+       "ooui-toolgroup-collapse": "Minder",
+       "ooui-dialog-message-accept": "Regso",
+       "ooui-dialog-message-reject": "Kanselleer",
+       "ooui-dialog-process-error": "Iets het verkeerd gegaan",
+       "ooui-dialog-process-dismiss": "Sluit",
+       "ooui-dialog-process-retry": "Probeer weer",
+       "ooui-dialog-process-continue": "Gaan voort"
 }
index 8b73233..4ca5ab7 100644 (file)
        "ooui-outline-control-move-up": "वस्तुलाई माथि सार्ने",
        "ooui-outline-control-remove": "वस्तुलाई हटाउने",
        "ooui-toolbar-more": "थप",
+       "ooui-toolgroup-expand": "थप",
+       "ooui-toolgroup-collapse": "कम",
        "ooui-dialog-message-accept": "हुन्छ",
-       "ooui-dialog-message-reject": "रद्द गर्ने"
+       "ooui-dialog-message-reject": "रद्द गर्ने",
+       "ooui-dialog-process-dismiss": "खारेज गर्ने",
+       "ooui-dialog-process-retry": "पुन प्रयास गर्नुहोस",
+       "ooui-dialog-process-continue": "जारी राख्ने"
 }
index 7af5bc9..8c7a1e7 100644 (file)
@@ -4,7 +4,19 @@
                        "Amikeco",
                        "Babanwalia",
                        "Bouron",
-                       "Nasir8891"
+                       "Nasir8891",
+                       "Satdeep gill"
                ]
-       }
+       },
+       "ooui-outline-control-move-down": "ਨੀਚੇ ਲੈਕੇ ਜਾਓ",
+       "ooui-outline-control-move-up": "ਉੱਤੇ ਲੈਕੇ ਜਾਓ",
+       "ooui-toolbar-more": "ਹੋਰ",
+       "ooui-toolgroup-expand": "ਹੋਰ",
+       "ooui-toolgroup-collapse": "ਥੋੜੇ",
+       "ooui-dialog-message-accept": "ਠੀਕ ਹੈ",
+       "ooui-dialog-message-reject": "ਰੱਦ ਕਰੋ",
+       "ooui-dialog-process-error": "ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ",
+       "ooui-dialog-process-dismiss": "ਰੱਦ ਕਰੋ",
+       "ooui-dialog-process-retry": "ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ",
+       "ooui-dialog-process-continue": "ਜਾਰੀ ਰੱਖੋ"
 }
index 6be1e61..388fba8 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-bell {
        background-image: url("themes/mediawiki/images/icons/bell.png");
index 2e38c15..9e7a72d 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-article {
        background-image: url("themes/mediawiki/images/icons/article-ltr.png");
index 020ebfb..184344b 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-table {
        background-image: url("themes/mediawiki/images/icons/table.png");
index 44d383a..bb9813a 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-edit {
        background-image: url("themes/mediawiki/images/icons/edit-ltr.png");
index 62f9a65..bcf3849 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-indent {
        background-image: url("themes/mediawiki/images/icons/indent-ltr.png");
index 1acf7ea..f0b350b 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-bigger {
        background-image: url("themes/mediawiki/images/icons/bigger-ltr.png");
index 5497de0..ad042ee 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-beta {
        background-image: url("themes/mediawiki/images/icons/beta.png");
index ff1c994..1e0846a 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-stripeFlow {
        background-image: url("themes/mediawiki/images/icons/stripeFlow-ltr.png");
index 4d2b8f2..74bd655 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-map {
        background-image: url("themes/mediawiki/images/icons/map-ltr.png");
index ff8ed55..0653745 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-image {
        background-image: url("themes/mediawiki/images/icons/image-ltr.png");
index f62e46e..bf74367 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-block {
        background-image: url("themes/mediawiki/images/icons/block.png");
index 2f487b3..8ea1759 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-arrowNext {
        background-image: url("themes/mediawiki/images/icons/arrow-ltr.png");
index 8af9eb1..f76c887 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-userActive {
        background-image: url("themes/mediawiki/images/icons/userActive-ltr.png");
index e8df47a..75a310f 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-icon-logoCC {
        background-image: url("themes/mediawiki/images/icons/logo-cc.png");
index e38270c..de9c822 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:19:18Z
+ * Date: 2015-03-25T22:24:23Z
  */
 .oo-ui-progressBarWidget-slide-frames from {
        margin-left: -40%;
@@ -70,6 +70,7 @@
        display: inline-block;
        vertical-align: middle;
        font: inherit;
+       white-space: nowrap;
        -webkit-touch-callout: none;
        -webkit-user-select: none;
           -moz-user-select: none;
        top: 0;
        right: 0;
 }
-.oo-ui-menuLayout-after .oo-ui-menuLayout-menu {
-       top: 0;
-       right: 0;
-       bottom: 0;
-}
-.oo-ui-menuLayout-bottom .oo-ui-menuLayout-menu {
-       right: 0;
-       bottom: 0;
-       left: 0;
-}
-.oo-ui-menuLayout-before .oo-ui-menuLayout-menu {
-       bottom: 0;
-       left: 0;
-       top: 0;
-}
 .oo-ui-menuLayout-top .oo-ui-menuLayout-content {
        right: 0 !important;
        bottom: 0 !important;
        left: 0 !important;
 }
+.oo-ui-menuLayout-after .oo-ui-menuLayout-menu {
+       top: 0;
+       right: 0;
+       bottom: 0;
+}
 .oo-ui-menuLayout-after .oo-ui-menuLayout-content {
        bottom: 0 !important;
        left: 0 !important;
        top: 0 !important;
 }
+.oo-ui-menuLayout-bottom .oo-ui-menuLayout-menu {
+       right: 0;
+       bottom: 0;
+       left: 0;
+}
 .oo-ui-menuLayout-bottom .oo-ui-menuLayout-content {
        left: 0 !important;
        top: 0 !important;
        right: 0 !important;
 }
+.oo-ui-menuLayout-before .oo-ui-menuLayout-menu {
+       bottom: 0;
+       left: 0;
+       top: 0;
+}
 .oo-ui-menuLayout-before .oo-ui-menuLayout-content {
        top: 0 !important;
        right: 0 !important;
        pointer-events: none;
 }
 .oo-ui-toolbar-bar {
-       border-bottom: 4px solid rgba(0, 0, 0, 0.15);
+       border-bottom: 2px solid rgba(0, 0, 0, 0.15);
        background: #ffffff;
 }
 .oo-ui-toolbar-bar .oo-ui-toolbar-bar {
        height: 2.5em;
        padding: 0.5em;
        font-size: 1em;
-       font-family: sans-serif;
        -webkit-box-sizing: border-box;
           -moz-box-sizing: border-box;
                box-sizing: border-box;
        padding: 0.5em 0.5em 0.5em 0.9em;
        margin: 0;
        font-size: 1em;
-       font-family: sans-serif;
        background-color: #ffffff;
        color: black;
        border: solid 1px #cccccc;
 .oo-ui-window {
        line-height: 1em;
        background: transparent;
-       font-family: sans-serif;
        font-size: 0.8em;
 }
 .oo-ui-window-frame {
index 45872b6..9a9aa6d 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:18:59Z
+ * Date: 2015-03-25T22:24:05Z
  */
 /**
  * @class
index a8afca6..56ff6fa 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.3
+ * OOjs UI v0.9.4
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-03-19T23:18:59Z
+ * Date: 2015-03-25T22:24:05Z
  */
 ( function ( OO ) {
 
@@ -1574,7 +1574,11 @@ OO.ui.Element.prototype.scrollElementIntoView = function ( config ) {
 };
 
 /**
- * Container for elements.
+ * Layouts are containers for elements and are used to arrange other widgets of arbitrary type in a way
+ * that is centrally controlled and can be updated dynamically. Layouts can be, and usually are, combined.
+ * See {@link OO.ui.FieldsetLayout FieldsetLayout}, {@link OO.ui.FieldLayout FieldLayout}, {@link OO.ui.FormLayout FormLayout},
+ * {@link OO.ui.PanelLayout PanelLayout}, {@link OO.ui.StackLayout StackLayout}, {@link OO.ui.PageLayout PageLayout},
+ * and {@link OO.ui.BookletLayout BookletLayout} for more information and examples.
  *
  * @abstract
  * @class
@@ -3252,9 +3256,10 @@ OO.ui.WindowManager.prototype.updateWindowSize = function ( win ) {
 OO.ui.WindowManager.prototype.toggleGlobalEvents = function ( on ) {
        on = on === undefined ? !!this.globalEvents : !!on;
 
-       var $body = $( this.getElementDocument().body ),
-               // We could have multiple window managers open to only modify
-               // the body class at the bottom of the stack
+       var scrollWidth, bodyMargin,
+               $body = $( this.getElementDocument().body ),
+               // We could have multiple window managers open so only modify
+               // the body css at the bottom of the stack
                stackDepth = $body.data( 'windowManagerGlobalEvents' ) || 0 ;
 
        if ( on ) {
@@ -3264,7 +3269,12 @@ OO.ui.WindowManager.prototype.toggleGlobalEvents = function ( on ) {
                                'orientationchange resize': this.onWindowResizeHandler
                        } );
                        if ( stackDepth === 0 ) {
-                               $body.css( 'overflow', 'hidden' );
+                               scrollWidth = window.innerWidth - document.documentElement.clientWidth;
+                               bodyMargin = parseFloat( $body.css( 'margin-right' ) ) || 0;
+                               $body.css( {
+                                       overflow: 'hidden',
+                                       'margin-right': bodyMargin + scrollWidth
+                               } );
                        }
                        stackDepth++;
                        this.globalEvents = true;
@@ -3276,7 +3286,10 @@ OO.ui.WindowManager.prototype.toggleGlobalEvents = function ( on ) {
                } );
                stackDepth--;
                if ( stackDepth === 0 ) {
-                       $( this.getElementDocument().body ).css( 'overflow', '' );
+                       $body.css( {
+                               overflow: '',
+                               'margin-right': ''
+                       } );
                }
                this.globalEvents = false;
        }
@@ -3894,6 +3907,7 @@ OO.ui.TabIndexedElement.prototype.setTabIndex = function ( tabIndex ) {
  * Update the `tabindex` attribute, in case of changes to tab index or
  * disabled state.
  *
+ * @private
  * @chainable
  */
 OO.ui.TabIndexedElement.prototype.updateTabIndex = function () {
@@ -3942,8 +3956,9 @@ OO.ui.TabIndexedElement.prototype.getTabIndex = function () {
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$button] Button node, assigned to #$button, omit to use a generated `<a>`
- * @cfg {boolean} [framed=true] Render button with a frame
+ * @cfg {jQuery} [$button] The button element created by the class.
+ *  If this configuration is omitted, the button element will use a generated `<a>`.
+ * @cfg {boolean} [framed=true] Render the button with a frame
  * @cfg {string} [accessKey] Button's access key
  */
 OO.ui.ButtonElement = function OoUiButtonElement( config ) {
@@ -3978,6 +3993,11 @@ OO.initClass( OO.ui.ButtonElement );
 /**
  * Cancel mouse down events.
  *
+ * This property is usually set to `true` to prevent the focus from changing when the button is clicked.
+ * Classes such as {@link OO.ui.DraggableElement DraggableElement} and {@link OO.ui.ButtonOptionWidget ButtonOptionWidget}
+ * use a value of `false` so that dragging behavior is possible and mousedown events can be handled by a
+ * parent widget.
+ *
  * @static
  * @inheritable
  * @property {boolean}
@@ -3987,6 +4007,8 @@ OO.ui.ButtonElement.static.cancelButtonMouseDownEvents = true;
 /* Events */
 
 /**
+ * A 'click' event is emitted when the button element is clicked.
+ *
  * @event click
  */
 
@@ -3995,7 +4017,9 @@ OO.ui.ButtonElement.static.cancelButtonMouseDownEvents = true;
 /**
  * Set the button element.
  *
- * If an element is already set, it will be cleaned up before setting up the new element.
+ * This method is used to retarget a button mixin so that its functionality applies to
+ * the specified button element instead of the one created by the class. If a button element
+ * is already set, the method will remove the mixin’s effect on that element.
  *
  * @param {jQuery} $button Element to use as button
  */
@@ -4127,7 +4151,7 @@ OO.ui.ButtonElement.prototype.isFramed = function () {
 };
 
 /**
- * Toggle frame.
+ * Render the button with or without a frame. Omit the `framed` parameter to toggle the button frame on and off.
  *
  * @param {boolean} [framed] Make button framed, omit to toggle
  * @chainable
@@ -4146,7 +4170,7 @@ OO.ui.ButtonElement.prototype.toggleFramed = function ( framed ) {
 };
 
 /**
- * Set access key.
+ * Set the button's access key.
  *
  * @param {string} accessKey Button's access key, use empty string to remove
  * @chainable
@@ -4169,7 +4193,11 @@ OO.ui.ButtonElement.prototype.setAccessKey = function ( accessKey ) {
 };
 
 /**
- * Set active state.
+ * Set the button to its 'active' state.
+ *
+ * The active state occurs when a {@link OO.ui.ButtonOptionWidget ButtonOptionWidget} or
+ * a {@link OO.ui.ToggleButtonWidget ToggleButtonWidget} is pressed. This method does nothing
+ * for other button types.
  *
  * @param {boolean} [value] Make button active
  * @chainable
@@ -5386,21 +5414,28 @@ OO.ui.LabelElement.prototype.setLabelContent = function ( label ) {
 };
 
 /**
- * Mixin that adds a menu showing suggested values for a OO.ui.TextInputWidget.
+ * LookupElement is a mixin that creates a {@link OO.ui.TextInputMenuSelectWidget menu} of suggested values for
+ * a {@link OO.ui.TextInputWidget text input widget}. Suggested values are based on the characters the user types
+ * into the text input field and, in general, the menu is only displayed when the user types. If a suggested value is chosen
+ * from the lookup menu, that value becomes the value of the input field.
+ *
+ * Note that a new menu of suggested items is displayed when a value is chosen from the lookup menu. If this is
+ * not the desired behavior, disable lookup menus with the #setLookupsDisabled method, then set the value, then
+ * re-enable lookups.
+ *
+ * See the [OOjs UI demos][1] for an example.
  *
- * Subclasses that set the value of #lookupInput from #onLookupMenuItemChoose should
- * be aware that this will cause new suggestions to be looked up for the new value. If this is
- * not desired, disable lookups with #setLookupsDisabled, then set the value, then re-enable lookups.
+ * [1]: https://tools.wmflabs.org/oojs-ui/oojs-ui/demos/index.html#widgets-apex-vector-ltr
  *
  * @class
  * @abstract
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$overlay] Overlay for dropdown; defaults to relative positioning
- * @cfg {jQuery} [$container=this.$element] Element to render menu under
- * @cfg {boolean} [allowSuggestionsWhenEmpty=false] Whether suggestions will be requested
- *   and shown when the user has not typed anything yet.
+ * @cfg {jQuery} [$overlay] Overlay for the lookup menu; defaults to relative positioning
+ * @cfg {jQuery} [$container=this.$element] The container element. The lookup menu is rendered beneath the specified element.
+ * @cfg {boolean} [allowSuggestionsWhenEmpty=false] Request and display a lookup menu when the text input is empty.
+ *  By default, the lookup menu is not generated and displayed until the user begins to type.
  */
 OO.ui.LookupElement = function OoUiLookupElement( config ) {
        // Configuration initialization
@@ -5445,6 +5480,7 @@ OO.ui.LookupElement = function OoUiLookupElement( config ) {
 /**
  * Handle input focus event.
  *
+ * @protected
  * @param {jQuery.Event} e Input focus event
  */
 OO.ui.LookupElement.prototype.onLookupInputFocus = function () {
@@ -5455,6 +5491,7 @@ OO.ui.LookupElement.prototype.onLookupInputFocus = function () {
 /**
  * Handle input blur event.
  *
+ * @protected
  * @param {jQuery.Event} e Input blur event
  */
 OO.ui.LookupElement.prototype.onLookupInputBlur = function () {
@@ -5465,6 +5502,7 @@ OO.ui.LookupElement.prototype.onLookupInputBlur = function () {
 /**
  * Handle input mouse down event.
  *
+ * @protected
  * @param {jQuery.Event} e Input mouse down event
  */
 OO.ui.LookupElement.prototype.onLookupInputMouseDown = function () {
@@ -5480,6 +5518,7 @@ OO.ui.LookupElement.prototype.onLookupInputMouseDown = function () {
 /**
  * Handle input change event.
  *
+ * @protected
  * @param {string} value New input value
  */
 OO.ui.LookupElement.prototype.onLookupInputChange = function () {
@@ -5491,6 +5530,7 @@ OO.ui.LookupElement.prototype.onLookupInputChange = function () {
 /**
  * Handle the lookup menu being shown/hidden.
  *
+ * @protected
  * @param {boolean} visible Whether the lookup menu is now visible.
  */
 OO.ui.LookupElement.prototype.onLookupMenuToggle = function ( visible ) {
@@ -5506,6 +5546,7 @@ OO.ui.LookupElement.prototype.onLookupMenuToggle = function ( visible ) {
 /**
  * Handle menu item 'choose' event, updating the text input value to the value of the clicked item.
  *
+ * @protected
  * @param {OO.ui.MenuOptionWidget|null} item Selected item
  */
 OO.ui.LookupElement.prototype.onLookupMenuItemChoose = function ( item ) {
@@ -5517,6 +5558,7 @@ OO.ui.LookupElement.prototype.onLookupMenuItemChoose = function ( item ) {
 /**
  * Get lookup menu.
  *
+ * @private
  * @return {OO.ui.TextInputMenuSelectWidget}
  */
 OO.ui.LookupElement.prototype.getLookupMenu = function () {
@@ -5537,6 +5579,7 @@ OO.ui.LookupElement.prototype.setLookupsDisabled = function ( disabled ) {
 /**
  * Open the menu. If there are no entries in the menu, this does nothing.
  *
+ * @private
  * @chainable
  */
 OO.ui.LookupElement.prototype.openLookupMenu = function () {
@@ -5549,6 +5592,7 @@ OO.ui.LookupElement.prototype.openLookupMenu = function () {
 /**
  * Close the menu, empty it, and abort any pending request.
  *
+ * @private
  * @chainable
  */
 OO.ui.LookupElement.prototype.closeLookupMenu = function () {
@@ -5564,6 +5608,7 @@ OO.ui.LookupElement.prototype.closeLookupMenu = function () {
  *
  * If lookups have been disabled with #setLookupsDisabled, this function does nothing.
  *
+ * @private
  * @chainable
  */
 OO.ui.LookupElement.prototype.populateLookupMenu = function () {
@@ -5602,6 +5647,7 @@ OO.ui.LookupElement.prototype.populateLookupMenu = function () {
 /**
  * Select and highlight the first selectable item in the menu.
  *
+ * @private
  * @chainable
  */
 OO.ui.LookupElement.prototype.initializeLookupMenuSelection = function () {
@@ -5614,6 +5660,7 @@ OO.ui.LookupElement.prototype.initializeLookupMenuSelection = function () {
 /**
  * Get lookup menu items for the current query.
  *
+ * @private
  * @return {jQuery.Promise} Promise object which will be passed menu items as the first argument of
  *   the done event. If the request was aborted to make way for a subsequent request, this promise
  *   will not be rejected: it will remain pending forever.
@@ -5641,13 +5688,13 @@ OO.ui.LookupElement.prototype.getLookupMenuItems = function () {
                                // for that request.
                                widget.popPending();
                        } )
-                       .done( function ( data ) {
+                       .done( function ( response ) {
                                // If this is an old request (and aborting it somehow caused it to still succeed),
                                // ignore its success completely
                                if ( ourRequest === widget.lookupRequest ) {
                                        widget.lookupQuery = null;
                                        widget.lookupRequest = null;
-                                       widget.lookupCache[ value ] = widget.getLookupCacheDataFromResponse( data );
+                                       widget.lookupCache[ value ] = widget.getLookupCacheDataFromResponse( response );
                                        deferred.resolve( widget.getLookupMenuOptionsFromData( widget.lookupCache[ value ] ) );
                                }
                        } )
@@ -5666,6 +5713,8 @@ OO.ui.LookupElement.prototype.getLookupMenuItems = function () {
 
 /**
  * Abort the currently pending lookup request, if any.
+ *
+ * @private
  */
 OO.ui.LookupElement.prototype.abortLookupRequest = function () {
        var oldRequest = this.lookupRequest;
@@ -5681,6 +5730,7 @@ OO.ui.LookupElement.prototype.abortLookupRequest = function () {
 /**
  * Get a new request object of the current lookup query value.
  *
+ * @protected
  * @abstract
  * @return {jQuery.Promise} jQuery AJAX object, or promise object with an .abort() method
  */
@@ -5695,8 +5745,9 @@ OO.ui.LookupElement.prototype.getLookupRequest = function () {
  * The return value of this function will be cached, and any further queries for the given value
  * will use the cache rather than doing API requests.
  *
+ * @protected
  * @abstract
- * @param {Mixed} data Response from server
+ * @param {Mixed} response Response from server
  * @return {Mixed} Cached result data
  */
 OO.ui.LookupElement.prototype.getLookupCacheDataFromResponse = function () {
@@ -5708,6 +5759,7 @@ OO.ui.LookupElement.prototype.getLookupCacheDataFromResponse = function () {
  * Get a list of menu option widgets from the (possibly cached) data returned by
  * #getLookupCacheDataFromResponse.
  *
+ * @protected
  * @abstract
  * @param {Mixed} data Cached result data, usually an array
  * @return {OO.ui.MenuOptionWidget[]} Menu items
@@ -7631,7 +7683,7 @@ OO.ui.ProcessDialog.prototype.attachActions = function () {
  */
 OO.ui.ProcessDialog.prototype.executeAction = function ( action ) {
        var process = this;
-       OO.ui.ProcessDialog.super.prototype.executeAction.call( this, action )
+       return OO.ui.ProcessDialog.super.prototype.executeAction.call( this, action )
                .fail( function ( errors ) {
                        process.showErrors( errors || [] );
                } );
@@ -7752,8 +7804,9 @@ OO.ui.ProcessDialog.prototype.getTeardownProcess = function ( data ) {
  * @constructor
  * @param {OO.ui.Widget} fieldWidget Field widget
  * @param {Object} [config] Configuration options
- * @cfg {string} [align='left'] Alignment mode, either 'left', 'right', 'top' or 'inline'
- * @cfg {string} [help] Explanatory text shown as a '?' icon.
+ * @cfg {string} [align='left'] Alignment of the label: 'left', 'right', 'top' or 'inline'
+ * @cfg {string} [help] Help text. When help text is specified, a help icon will appear
+ *  in the upper-right corner of the rendered field.
  */
 OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) {
        // Allow passing positional parameters inside the config object
@@ -7824,6 +7877,7 @@ OO.mixinClass( OO.ui.FieldLayout, OO.ui.LabelElement );
 /**
  * Handle field disable events.
  *
+ * @private
  * @param {boolean} value Field is disabled
  */
 OO.ui.FieldLayout.prototype.onFieldDisable = function ( value ) {
@@ -7833,6 +7887,7 @@ OO.ui.FieldLayout.prototype.onFieldDisable = function ( value ) {
 /**
  * Handle label mouse click events.
  *
+ * @private
  * @param {jQuery.Event} e Mouse click event
  */
 OO.ui.FieldLayout.prototype.onLabelClick = function () {
@@ -7841,7 +7896,7 @@ OO.ui.FieldLayout.prototype.onLabelClick = function () {
 };
 
 /**
- * Get the field.
+ * Get the widget contained by the field.
  *
  * @return {OO.ui.Widget} Field widget
  */
@@ -7929,9 +7984,36 @@ OO.ui.ActionFieldLayout = function OoUiActionFieldLayout( fieldWidget, buttonWid
 OO.inheritClass( OO.ui.ActionFieldLayout, OO.ui.FieldLayout );
 
 /**
- * Layout made of a fieldset and optional legend.
+ * FieldsetLayouts are composed of one or more {@link OO.ui.FieldLayout FieldLayouts},
+ * which each contain an individual widget and, optionally, a label. Each Fieldset can be
+ * configured with a label as well. For more information and examples,
+ * please see the [OOjs UI documentation on MediaWiki][1].
+ *
+ *     @example
+ *     // Example of a fieldset layout
+ *     var input1 = new OO.ui.TextInputWidget( {
+ *         placeholder: 'A text input field'
+ *     } );
  *
- * Just add OO.ui.FieldLayout items.
+ *     var input2 = new OO.ui.TextInputWidget( {
+ *         placeholder: 'A text input field'
+ *     } );
+ *
+ *     var fieldset = new OO.ui.FieldsetLayout( {
+ *         label: 'Example of a fieldset layout'
+ *     } );
+ *
+ *     fieldset.addItems( [
+ *         new OO.ui.FieldLayout( input1, {
+ *             label: 'Field One'
+ *         } ),
+ *         new OO.ui.FieldLayout( input2, {
+ *             label: 'Field Two'
+ *         } )
+ *     ] );
+ *     $( 'body' ).append( fieldset.$element );
+ *
+ * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Layouts/Fields_and_Fieldsets
  *
  * @class
  * @extends OO.ui.Layout
@@ -7941,7 +8023,7 @@ OO.inheritClass( OO.ui.ActionFieldLayout, OO.ui.FieldLayout );
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {OO.ui.FieldLayout[]} [items] Items to add
+ * @cfg {OO.ui.FieldLayout[]} [items] An array of fields to add to the fieldset. See OO.ui.FieldLayout for more information about fields.
  */
 OO.ui.FieldsetLayout = function OoUiFieldsetLayout( config ) {
        // Configuration initialization
@@ -7989,7 +8071,43 @@ OO.mixinClass( OO.ui.FieldsetLayout, OO.ui.LabelElement );
 OO.mixinClass( OO.ui.FieldsetLayout, OO.ui.GroupElement );
 
 /**
- * Layout with an HTML form.
+ * FormLayouts are used to wrap {@link OO.ui.FieldsetLayout FieldsetLayouts} when you intend to use browser-based
+ * form submission for the fields instead of handling them in JavaScript. Form layouts can be configured with an
+ * HTML form action, an encoding type, and a method using the #action, #enctype, and #method configs, respectively.
+ *
+ *     @example
+ *     // Example of a form layout that wraps a fieldset layout
+ *     var input1 = new OO.ui.TextInputWidget( {
+ *         placeholder: 'Username'
+ *     } );
+ *     var input2 = new OO.ui.TextInputWidget( {
+ *         placeholder: 'Password',
+ *         type: 'password'
+ *     } );
+ *     var submit = new OO.ui.ButtonInputWidget( {
+ *         label: 'Submit'
+ *     } );
+ *
+ *     var fieldset = new OO.ui.FieldsetLayout( {
+ *         label: 'A form layout'
+ *     } );
+ *     fieldset.addItems( [
+ *         new OO.ui.FieldLayout( input1, {
+ *             label: 'Username',
+ *             align: 'top'
+ *         } ),
+ *         new OO.ui.FieldLayout( input2, {
+ *             label: 'Password',
+ *             align: 'top'
+ *         } ),
+ *         new OO.ui.FieldLayout( submit )
+ *     ] );
+ *     var form = new OO.ui.FormLayout( {
+ *         items: [ fieldset ],
+ *         action: '/api/formhandler',
+ *         method: 'get'
+ *     } )
+ *     $( 'body' ).append( form.$element );
  *
  * @class
  * @extends OO.ui.Layout
@@ -8000,7 +8118,7 @@ OO.mixinClass( OO.ui.FieldsetLayout, OO.ui.GroupElement );
  * @cfg {string} [method] HTML form `method` attribute
  * @cfg {string} [action] HTML form `action` attribute
  * @cfg {string} [enctype] HTML form `enctype` attribute
- * @cfg {OO.ui.FieldsetLayout[]} [items] Items to add
+ * @cfg {OO.ui.FieldsetLayout[]} [items] Fieldset layouts to add to the form layout.
  */
 OO.ui.FormLayout = function OoUiFormLayout( config ) {
        // Configuration initialization
@@ -8036,6 +8154,8 @@ OO.mixinClass( OO.ui.FormLayout, OO.ui.GroupElement );
 /* Events */
 
 /**
+ * A 'submit' event is emitted when the form is submitted.
+ *
  * @event submit
  */
 
@@ -8048,6 +8168,7 @@ OO.ui.FormLayout.static.tagName = 'form';
 /**
  * Handle form submit events.
  *
+ * @private
  * @param {jQuery.Event} e Submit event
  * @fires submit
  */
@@ -8702,7 +8823,18 @@ OO.ui.BookletLayout.prototype.selectFirstSelectablePage = function () {
 };
 
 /**
- * Layout that expands to cover the entire area of its parent, with optional scrolling and padding.
+ * PanelLayouts expand to cover the entire area of their parent. They can be configured with scrolling, padding,
+ * and a frame, and are often used together with {@link OO.ui.StackLayout StackLayouts}.
+ *
+ *     @example
+ *     // Example of a panel layout
+ *     var panel = new OO.ui.PanelLayout( {
+ *         expanded: false,
+ *         framed: true,
+ *         padded: true,
+ *         $content: $( '<p>A panel layout with padding and a frame.</p>' )
+ *     } );
+ *     $( 'body' ).append( panel.$element );
  *
  * @class
  * @extends OO.ui.Layout
@@ -8710,9 +8842,9 @@ OO.ui.BookletLayout.prototype.selectFirstSelectablePage = function () {
  * @constructor
  * @param {Object} [config] Configuration options
  * @cfg {boolean} [scrollable=false] Allow vertical scrolling
- * @cfg {boolean} [padded=false] Pad the content from the edges
- * @cfg {boolean} [expanded=true] Expand size to fill the entire parent element
- * @cfg {boolean} [framed=false] Wrap in a frame to visually separate from outside content
+ * @cfg {boolean} [padded=false] Add padding between the content and the edges of the panel.
+ * @cfg {boolean} [expanded=true] Expand the panel to fill the entire parent element.
+ * @cfg {boolean} [framed=false] Render the panel with a frame to visually separate it from outside content.
  */
 OO.ui.PanelLayout = function OoUiPanelLayout( config ) {
        // Configuration initialization
@@ -9712,6 +9844,9 @@ OO.ui.ItemWidget.prototype.setElementGroup = function ( group ) {
  * @constructor
  * @param {OO.ui.OutlineSelectWidget} outline Outline to control
  * @param {Object} [config] Configuration options
+ * @cfg {Object} [abilities] List of abilties
+ * @cfg {boolean} [abilities.move=true] Allow moving movable items
+ * @cfg {boolean} [abilities.remove=true] Allow removing removable items
  */
 OO.ui.OutlineControlsWidget = function OoUiOutlineControlsWidget( outline, config ) {
        // Allow passing positional parameters inside the config object
@@ -9748,6 +9883,7 @@ OO.ui.OutlineControlsWidget = function OoUiOutlineControlsWidget( outline, confi
                icon: 'remove',
                title: OO.ui.msg( 'ooui-outline-control-remove' )
        } );
+       this.abilities = { move: true, remove: true };
 
        // Events
        outline.connect( this, {
@@ -9766,6 +9902,7 @@ OO.ui.OutlineControlsWidget = function OoUiOutlineControlsWidget( outline, confi
                .addClass( 'oo-ui-outlineControlsWidget-movers' )
                .append( this.removeButton.$element, this.upButton.$element, this.downButton.$element );
        this.$element.append( this.$icon, this.$group, this.$movers );
+       this.setAbilities( config.abilities || {} );
 };
 
 /* Setup */
@@ -9787,6 +9924,25 @@ OO.mixinClass( OO.ui.OutlineControlsWidget, OO.ui.IconElement );
 
 /* Methods */
 
+/**
+ * Set abilities.
+ *
+ * @param {Object} abilities List of abilties
+ * @param {boolean} [abilities.move] Allow moving movable items
+ * @param {boolean} [abilities.remove] Allow removing removable items
+ */
+OO.ui.OutlineControlsWidget.prototype.setAbilities = function ( abilities ) {
+       var ability;
+
+       for ( ability in this.abilities ) {
+               if ( abilities[ability] !== undefined ) {
+                       this.abilities[ability] = !!abilities[ability];
+               }
+       }
+
+       this.onOutlineChange();
+};
+
 /**
  *
  * @private
@@ -9796,8 +9952,8 @@ OO.ui.OutlineControlsWidget.prototype.onOutlineChange = function () {
        var i, len, firstMovable, lastMovable,
                items = this.outline.getItems(),
                selectedItem = this.outline.getSelectedItem(),
-               movable = selectedItem && selectedItem.isMovable(),
-               removable = selectedItem && selectedItem.isRemovable();
+               movable = this.abilities.move && selectedItem && selectedItem.isMovable(),
+               removable = this.abilities.remove && selectedItem && selectedItem.isRemovable();
 
        if ( movable ) {
                i = -1;
@@ -12619,7 +12775,36 @@ OO.inheritClass( OO.ui.MenuOptionWidget, OO.ui.DecoratedOptionWidget );
 OO.ui.MenuOptionWidget.static.scrollIntoViewOnSelect = true;
 
 /**
- * Section to group one or more items in a OO.ui.MenuSelectWidget.
+ * MenuSectionOptionWidgets are used inside {@link OO.ui.MenuSelectWidget menu select widgets} to group one or more related
+ * {@link OO.ui.MenuOptionWidget menu options}. MenuSectionOptionWidgets cannot be highlighted or selected.
+ *
+ *     @example
+ *     var myDropdown = new OO.ui.DropdownWidget( {
+ *         menu: {
+ *             items: [
+ *                 new OO.ui.MenuSectionOptionWidget( {
+ *                     label: 'Dogs'
+ *                 } ),
+ *                 new OO.ui.MenuOptionWidget( {
+ *                     data: 'corgi',
+ *                     label: 'Welsh Corgi'
+ *                 } ),
+ *                 new OO.ui.MenuOptionWidget( {
+ *                     data: 'poodle',
+ *                     label: 'Standard Poodle'
+ *                 } ),
+ *                 new OO.ui.MenuSectionOptionWidget( {
+ *                     label: 'Cats'
+ *                 } ),
+ *                 new OO.ui.MenuOptionWidget( {
+ *                     data: 'lion',
+ *                     label: 'Lion'
+ *                 } )
+ *             ]
+ *         }
+ *     } );
+ *     $( 'body' ).append( myDropdown.$element );
+ *
  *
  * @class
  * @extends OO.ui.DecoratedOptionWidget
@@ -13228,10 +13413,16 @@ OO.ui.ProgressBarWidget.prototype.setProgress = function ( progress ) {
 };
 
 /**
- * Search widget.
+ * SearchWidgets combine a {@link OO.ui.TextInputWidget text input field}, where users can type a search query,
+ * and a {@link OO.ui.TextInputMenuSelectWidget menu} of search results, which is displayed beneath the query
+ * field. Unlike {@link OO.ui.LookupElement lookup menus}, search result menus are always visible to the user.
+ * Users can choose an item from the menu or type a query into the text field to search for a matching result item.
+ * In general, search widgets are used inside a separate {@link OO.ui.Dialog dialog} window.
  *
- * Search widgets combine a query input, placed above, and a results selection widget, placed below.
- * Results are cleared and populated each time the query is changed.
+ * Each time the query is changed, the search result menu is cleared and repopulated. Please see
+ * the [OOjs UI demos][1] for an example.
+ *
+ * [1]: https://tools.wmflabs.org/oojs-ui/oojs-ui/demos/#dialogs-mediawiki-vector-ltr
  *
  * @class
  * @extends OO.ui.Widget
@@ -13288,11 +13479,19 @@ OO.inheritClass( OO.ui.SearchWidget, OO.ui.Widget );
 /* Events */
 
 /**
+ * A 'highlight' event is emitted when an item is highlighted. The highlight indicates which
+ * item will be selected. When a user mouses over a menu item, it is highlighted. If a search
+ * string is typed into the query field instead, the first menu item that matches the query
+ * will be highlighted.
+
  * @event highlight
  * @param {Object|null} item Item data or null if no item is highlighted
  */
 
 /**
+ * A 'select' event is emitted when an item is selected. A menu item is selected when it is clicked,
+ * or when a user types a search query, a menu result is highlighted, and the user presses enter.
+ *
  * @event select
  * @param {Object|null} item Item data or null if no item is selected
  */
@@ -13302,6 +13501,7 @@ OO.inheritClass( OO.ui.SearchWidget, OO.ui.Widget );
 /**
  * Handle query key down events.
  *
+ * @private
  * @param {jQuery.Event} e Key down event
  */
 OO.ui.SearchWidget.prototype.onQueryKeydown = function ( e ) {
@@ -13324,6 +13524,7 @@ OO.ui.SearchWidget.prototype.onQueryKeydown = function ( e ) {
  *
  * Clears existing results. Subclasses should repopulate items according to new query.
  *
+ * @private
  * @param {string} value New value
  */
 OO.ui.SearchWidget.prototype.onQueryChange = function () {
@@ -13336,6 +13537,7 @@ OO.ui.SearchWidget.prototype.onQueryChange = function () {
  *
  * Selects highlighted item.
  *
+ * @private
  * @param {string} value New value
  */
 OO.ui.SearchWidget.prototype.onQueryEnter = function () {
@@ -13346,6 +13548,7 @@ OO.ui.SearchWidget.prototype.onQueryEnter = function () {
 /**
  * Handle select widget highlight events.
  *
+ * @private
  * @param {OO.ui.OptionWidget} item Highlighted item
  * @fires highlight
  */
@@ -13356,6 +13559,7 @@ OO.ui.SearchWidget.prototype.onResultsHighlight = function ( item ) {
 /**
  * Handle select widget select events.
  *
+ * @private
  * @param {OO.ui.OptionWidget} item Selected item
  * @fires select
  */
@@ -13373,9 +13577,9 @@ OO.ui.SearchWidget.prototype.getQuery = function () {
 };
 
 /**
- * Get the results list.
+ * Get the search results menu.
  *
- * @return {OO.ui.SelectWidget} Select list
+ * @return {OO.ui.SelectWidget} Menu of search results
  */
 OO.ui.SearchWidget.prototype.getResults = function () {
        return this.results;
index 84bde7d..4aa839c 100644 (file)
@@ -9,16 +9,23 @@
         */
        function doLivePreview( e ) {
                var isDiff, api, request, postData, copySelectors, section,
-                       $wikiPreview, $wikiDiff, $editform, $copyElements, $spinner;
-
-               e.preventDefault();
+                       $wikiPreview, $wikiDiff, $editform, $copyElements, $spinner, $errorBox;
 
                isDiff = ( e.target.name === 'wpDiff' );
                $wikiPreview = $( '#wikiPreview' );
                $wikiDiff = $( '#wikiDiff' );
                $editform = $( '#editform' );
+               $errorBox = $( '.errorbox' );
                section = $editform.find( '[name="wpSection"]' ).val();
 
+               // Show changes for a new section is not yet supported
+               if ( isDiff && section === 'new' ) {
+                       return;
+               }
+               e.preventDefault();
+
+               // Remove any previously displayed errors
+               $errorBox.remove();
                // Show #wikiPreview if it's hidden to be able to scroll to it
                // (if it is hidden, it's also empty, so nothing changes in the rendering)
                $wikiPreview.show();
                        summary: $editform.find( '#wpSummary' ).textSelection( 'getContents' )
                };
 
+               if ( section !== '' ) {
+                       postData.sectionpreview = '';
+                       if ( section === 'new' ) {
+                               postData.section = section;
+                               postData.sectiontitle = postData.summary;
+                       }
+               }
+
                if ( isDiff ) {
                        $wikiPreview.hide();
 
                                prop: 'text|displaytitle|modules|categorieshtml|templates|langlinks|limitreporthtml',
                                disableeditsection: true
                        } );
-                       if ( section !== '' ) {
-                               postData.sectionpreview = '';
-                       }
                        request = api.post( postData );
                        request.done( function ( response ) {
-                               var li, newList, $content, $parent, $list;
+                               var li, newList, $displaytitle, $content, $parent, $list;
                                if ( response.parse.modules ) {
                                        mw.loader.load( response.parse.modules.concat(
                                                response.parse.modulescripts,
                                                response.parse.modulemessages ) );
                                }
                                if ( response.parse.displaytitle ) {
-                                       $( '#firstHeading' ).html( response.parse.displaytitle );
+                                       $displaytitle = $( $.parseHTML( response.parse.displaytitle ) );
+                                       $( '#firstHeading' ).msg(
+                                               mw.config.get( 'wgEditMessage', 'editing' ),
+                                               $displaytitle
+                                       );
+                                       document.title = mw.msg(
+                                               'pagetitle',
+                                               mw.msg(
+                                                       mw.config.get( 'wgEditMessage', 'editing' ),
+                                                       $displaytitle.text()
+                                               )
+                                       );
                                }
                                if ( response.parse.categorieshtml ) {
                                        $( '#catlinks' ).replaceWith( response.parse.categorieshtml['*'] );
                                                newList.push( li );
                                        } );
 
-                                       $editform.find( '.mw-editfooter-list' ).detach().empty().append( newList ).appendTo( '.templatesUsed' );
+                                       $editform.find( '.templatesUsed .mw-editfooter-list' ).detach().empty().append( newList ).appendTo( '.templatesUsed' );
                                }
                                if ( response.parse.limitreporthtml ) {
                                        $( '.limitreport' ).html( response.parse.limitreporthtml['*'] );
                        } );
                }
                request.done( function ( response ) {
+                       var isSubject = ( section === 'new' ),
+                               summaryMsg = isSubject ? 'subject-preview' : 'summary-preview';
                        if ( response.parse.parsedsummary ) {
-                               // TODO implement special behavior for section === 'new'
                                $editform.find( '.mw-summary-preview' )
                                        .empty()
                                        .append(
-                                               mw.message( 'summary-preview' ).parse(),
+                                               mw.message( summaryMsg ).parse(),
                                                ' ',
                                                $( '<span>' ).addClass( 'comment' ).html(
                                                        // There is no equivalent to rawParams
                                opacity: 1
                        }, 'fast' );
                } );
+               request.fail( function ( code, result ) {
+                       var errorMsg = 'API error: ' +  code;
+                       if ( code === 'http' ) {
+                               errorMsg = 'HTTP error: ';
+                               if ( result.exception ) {
+                                       errorMsg += result.exception;
+                               } else {
+                                       errorMsg += result.textStatus;
+                               }
+                       }
+                       $errorBox = $( '<div>' )
+                               .addClass( 'errorbox' )
+                               .html( '<strong>' + mw.message( 'previewerrortext' ).escaped() + '</strong><br>' )
+                               .append( document.createTextNode( errorMsg ) );
+                       $wikiDiff.hide();
+                       $wikiPreview.hide().before( $errorBox );
+               } );
        }
 
        $( function () {
                // Do not enable on user .js/.css pages, as there's no sane way of "previewing"
                // the scripts or styles without reloading the page.
-               // Do not enable for ProofreadPage Index page editors, which have no textbox
-               if ( $( '#mw-userjsyoucanpreview' ).length || $( '#mw-usercssyoucanpreview' ).length || $( '#wpTextbox1' ).length === 0 ) {
+               if ( $( '#mw-userjsyoucanpreview' ).length || $( '#mw-usercssyoucanpreview' ).length ) {
                        return;
                }
 
                }
 
                if ( !$( '.mw-summary-preview' ).length ) {
-                       $( '.editCheckboxes' ).before(
+                       $( '#wpSummary' ).after(
                                $( '<div>' ).addClass( 'mw-summary-preview' )
                        );
                }
diff --git a/resources/src/mediawiki/mediawiki.template.mustache.js b/resources/src/mediawiki/mediawiki.template.mustache.js
new file mode 100644 (file)
index 0000000..dcc3842
--- /dev/null
@@ -0,0 +1,14 @@
+/*global Mustache */
+( function ( mw, $ ) {
+       // Register mustache compiler
+       mw.template.registerCompiler( 'mustache', {
+               compile: function ( src ) {
+                       return {
+                               render: function ( data ) {
+                                       return $.parseHTML( Mustache.render( src, data ) );
+                               }
+                       };
+               }
+       } );
+
+}( mediaWiki, jQuery ) );
index 406a67e..03bff66 100644 (file)
@@ -10,7 +10,7 @@
 # https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
 #
 Given(/^I go to Create account page at (.+)$/) do |path|
-  visit(CreateAccountPage, :using_params => { :page_title => path })
+  visit(CreateAccountPage, using_params: { page_title: path })
 end
 
 Then(/^form has Create account button$/) do
index 065ee26..504d345 100644 (file)
@@ -6,7 +6,7 @@ end
 
 Given(/^I am on the (.+) page$/) do |article|
   article = article.gsub(/ /, '_')
-  visit(ZtargetPage, :using_params => { :article_name => article })
+  visit(ZtargetPage, using_params: { article_name: article })
 end
 
 Given(/^I create page "(.*?)" with content "(.*?)"$/) do |page_title, page_content|
index 1f76e55..bff5bdd 100644 (file)
@@ -14,19 +14,19 @@ Given(/^I am at Log in page$/) do
 end
 
 When(/^I log in with incorrect password$/) do
-  on(LoginPage).login_with(user, "incorrect password", false)
+  on(LoginPage).login_with(user, 'incorrect password', false)
 end
 
 When(/^I log in with incorrect username$/) do
-  on(LoginPage).login_with("incorrect username", password, false)
+  on(LoginPage).login_with('incorrect username', password, false)
 end
 
 When(/^I log in without entering credentials$/) do
-  on(LoginPage).login_with("", "", false)
+  on(LoginPage).login_with('', '', false)
 end
 
 When(/^I log in without entering password$/) do
-  on(LoginPage).login_with(user, "", false)
+  on(LoginPage).login_with(user, '', false)
 end
 
 Then(/^error box should be visible$/) do
index 6a8ca69..98b893a 100644 (file)
@@ -12,7 +12,7 @@
 class CreateAccountPage
   include PageObject
 
-  page_url "<%=params[:page_title]%>"
+  page_url '<%=params[:page_title]%>'
 
-  button(:create_account, id: "wpCreateaccount")
+  button(:create_account, id: 'wpCreateaccount')
 end
index 237441e..b0f6bff 100644 (file)
@@ -1,8 +1,8 @@
 class EditPage
   include PageObject
 
-  text_area(:edit_page_content, id: "wpTextbox1")
-  button(:preview_button, id: "wpPreview")
-  button(:show_changes_button, id: "wpDiff")
-  button(:save_button, id: "wpSave")
+  text_area(:edit_page_content, id: 'wpTextbox1')
+  button(:preview_button, id: 'wpPreview')
+  button(:show_changes_button, id: 'wpDiff')
+  button(:save_button, id: 'wpSave')
 end
index 9aa34d3..90762d2 100644 (file)
@@ -12,7 +12,7 @@
 class FileDoesNotExistPage
   include PageObject
 
-  page_url "File:<%=params[:page_name]%>"
+  page_url 'File:<%=params[:page_name]%>'
 
-  div(:file_does_not_exist_message, id: "mw-imagepage-nofile")
+  div(:file_does_not_exist_message, id: 'mw-imagepage-nofile')
 end
index fd000e6..9a1805f 100644 (file)
@@ -1,5 +1,5 @@
 class LoginErrorPage
   include PageObject
 
-  div(:error_box, class: "errorbox")
+  div(:error_box, class: 'errorbox')
 end
index ef58d91..6d76b01 100644 (file)
@@ -1,18 +1,18 @@
 class MainPage
   include PageObject
 
-  page_url ""
+  page_url ''
 
   a(:edit_link, href: /action=edit/)
-  li(:help_link, id: "n-help")
-  div(:page_content, id: "content")
-  li(:page_information_link, id: "t-info")
-  li(:permanent_link_link, id: "t-permalink")
+  li(:help_link, id: 'n-help')
+  div(:page_content, id: 'content')
+  li(:page_information_link, id: 't-info')
+  li(:permanent_link_link, id: 't-permalink')
   a(:printable_version_link, href: /printable=yes/)
-  li(:random_page_link, id: "n-randompage")
-  li(:recent_changes_link, id: "n-recentchanges")
-  li(:related_changes_link, id: "t-recentchangeslinked")
-  li(:special_pages_link, id: "t-specialpages")
+  li(:random_page_link, id: 'n-randompage')
+  li(:recent_changes_link, id: 'n-recentchanges')
+  li(:related_changes_link, id: 't-recentchangeslinked')
+  li(:special_pages_link, id: 't-specialpages')
   a(:view_history_link, href: /action=history/)
-  li(:what_links_here_link, id: "t-whatlinkshere")
+  li(:what_links_here_link, id: 't-whatlinkshere')
 end
index 0644f4c..83c3952 100644 (file)
 class PreferencesAppearancePage
   include PageObject
 
-  page_url "Special:Preferences#mw-prefsection-rendering"
+  page_url 'Special:Preferences#mw-prefsection-rendering'
 
-  checkbox(:auto_number_check, id: "mw-input-wpnumberheadings")
-  radio_button(:cologne_blue, id: "mw-input-wpskin-cologneblue")
-  radio_button(:day_mo_year_radio, id: "mw-input-wpdate-dmy")
-  checkbox(:dont_show_aft_check, id: "mw-input-wparticlefeedback-disable")
-  checkbox(:exclude_from_experiments_check, id: "mw-input-wpvector-noexperiments")
-  checkbox(:hidden_categories_check, id: "mw-input-wpshowhiddencats")
-  radio_button(:iso_8601_radio, id: "mw-input-wpdate-ISO_8601")
-  span(:local_time_span, id: "wpLocalTime")
-  radio_button(:mo_day_year_radio, id: "mw-input-wpdate-mdy")
-  radio_button(:modern, id: "mw-input-wpskin-modern")
-  radio_button(:monobook, id: "mw-input-wpskin-monobook")
-  radio_button(:no_preference_radio, id: "mw-input-wpdate-default")
-  text_field(:other_offset, id: "mw-input-wptimecorrection-other")
+  checkbox(:auto_number_check, id: 'mw-input-wpnumberheadings')
+  radio_button(:cologne_blue, id: 'mw-input-wpskin-cologneblue')
+  radio_button(:day_mo_year_radio, id: 'mw-input-wpdate-dmy')
+  checkbox(:dont_show_aft_check, id: 'mw-input-wparticlefeedback-disable')
+  checkbox(:exclude_from_experiments_check, id: 'mw-input-wpvector-noexperiments')
+  checkbox(:hidden_categories_check, id: 'mw-input-wpshowhiddencats')
+  radio_button(:iso_8601_radio, id: 'mw-input-wpdate-ISO_8601')
+  span(:local_time_span, id: 'wpLocalTime')
+  radio_button(:mo_day_year_radio, id: 'mw-input-wpdate-mdy')
+  radio_button(:modern, id: 'mw-input-wpskin-modern')
+  radio_button(:monobook, id: 'mw-input-wpskin-monobook')
+  radio_button(:no_preference_radio, id: 'mw-input-wpdate-default')
+  text_field(:other_offset, id: 'mw-input-wptimecorrection-other')
   a(:restore_default_link, href: /reset/)
-  select_list(:size_select, id: "mw-input-wpimagesize")
-  select_list(:threshold_select, id: "mw-input-wpstubthreshold")
-  select_list(:time_offset_select, id: "mw-input-wptimecorrection")
-  table(:time_offset_table, id: "mw-htmlform-timeoffset")
-  select_list(:thumb_select, id: "mw-input-wpthumbsize")
-  select_list(:underline_select, id: "mw-input-wpunderline")
-  radio_button(:vector, id: "mw-input-wpskin-vector")
-  radio_button(:year_mo_day_radio, id: "mw-input-wpdate-ymd")
+  select_list(:size_select, id: 'mw-input-wpimagesize')
+  select_list(:threshold_select, id: 'mw-input-wpstubthreshold')
+  select_list(:time_offset_select, id: 'mw-input-wptimecorrection')
+  table(:time_offset_table, id: 'mw-htmlform-timeoffset')
+  select_list(:thumb_select, id: 'mw-input-wpthumbsize')
+  select_list(:underline_select, id: 'mw-input-wpunderline')
+  radio_button(:vector, id: 'mw-input-wpskin-vector')
+  radio_button(:year_mo_day_radio, id: 'mw-input-wpdate-ymd')
 end
index e8dcfae..25c384f 100644 (file)
 class PreferencesEditingPage
   include PageObject
 
-  page_url "Special:Preferences#mw-prefsection-rendering"
+  page_url 'Special:Preferences#mw-prefsection-rendering'
 
-  select_list(:edit_area_font_style_select, id: "mw-input-wpeditfont")
-  checkbox(:edit_section_double_click_check, id: "mw-input-wpeditondblclick")
-  checkbox(:edit_section_edit_link, id: "mw-input-wpeditsectiononrightclick")
-  checkbox(:edit_section_right_click_check, id: "mw-input-wpeditsectiononrightclick")
-  checkbox(:forced_edit_summary_check, id: "mw-input-wpforceeditsummary")
-  checkbox(:live_preview_check, id: "mw-input-wpuselivepreview")
-  checkbox(:preview_on_first_check, id: "mw-input-wppreviewonfirst")
-  checkbox(:preview_on_top_check, id: "mw-input-wppreviewontop")
-  checkbox(:show_edit_toolbar_check, id: "mw-input-wpshowtoolbar")
-  checkbox(:unsaved_changes_check, id: "mw-input-wpuseeditwarning")
+  select_list(:edit_area_font_style_select, id: 'mw-input-wpeditfont')
+  checkbox(:edit_section_double_click_check, id: 'mw-input-wpeditondblclick')
+  checkbox(:edit_section_edit_link, id: 'mw-input-wpeditsectiononrightclick')
+  checkbox(:edit_section_right_click_check, id: 'mw-input-wpeditsectiononrightclick')
+  checkbox(:forced_edit_summary_check, id: 'mw-input-wpforceeditsummary')
+  checkbox(:live_preview_check, id: 'mw-input-wpuselivepreview')
+  checkbox(:preview_on_first_check, id: 'mw-input-wppreviewonfirst')
+  checkbox(:preview_on_top_check, id: 'mw-input-wppreviewontop')
+  checkbox(:show_edit_toolbar_check, id: 'mw-input-wpshowtoolbar')
+  checkbox(:unsaved_changes_check, id: 'mw-input-wpuseeditwarning')
 end
index aa6848c..b305ee2 100644 (file)
 class PreferencesPage
   include PageObject
 
-  page_url "Special:Preferences"
+  page_url 'Special:Preferences'
 
-  a(:appearance_link, id: "preftab-rendering")
-  a(:editing_link, id: "preftab-editing")
-  a(:user_profile_link, id: "preftab-personal")
-  button(:save_button, id: "prefcontrol")
+  a(:appearance_link, id: 'preftab-rendering')
+  a(:editing_link, id: 'preftab-editing')
+  a(:user_profile_link, id: 'preftab-personal')
+  button(:save_button, id: 'prefcontrol')
 end
index 7688bba..9e95eb5 100644 (file)
 class PreferencesUserProfilePage
   include PageObject
 
-  page_url "Special:Preferences#mw-prefsection-personal"
+  page_url 'Special:Preferences#mw-prefsection-personal'
 
-  table(:basic_info_table, id: "mw-htmlform-info")
-  link(:change_password_link, text: "Change password")
-  table(:email_table, id: "mw-htmlform-email")
-  radio_button(:gender_female_radio, id: "mw-input-wpgender-male")
-  radio_button(:gender_male_radio, id: "mw-input-wpgender-female")
-  radio_button(:gender_undefined_radio, id: "mw-input-wpgender-unknown")
-  select_list(:lang_select, id: "mw-input-wplanguage")
-  checkbox(:remember_password_check, id: "mw-input-wprememberpassword")
-  text_field(:signature_field, id: "mw-input-wpnickname")
-  table(:signature_table, id: "mw-htmlform-signature")
+  table(:basic_info_table, id: 'mw-htmlform-info')
+  link(:change_password_link, text: 'Change password')
+  table(:email_table, id: 'mw-htmlform-email')
+  radio_button(:gender_female_radio, id: 'mw-input-wpgender-male')
+  radio_button(:gender_male_radio, id: 'mw-input-wpgender-female')
+  radio_button(:gender_undefined_radio, id: 'mw-input-wpgender-unknown')
+  select_list(:lang_select, id: 'mw-input-wplanguage')
+  checkbox(:remember_password_check, id: 'mw-input-wprememberpassword')
+  text_field(:signature_field, id: 'mw-input-wpnickname')
+  table(:signature_table, id: 'mw-htmlform-signature')
 end
index 1e21b9e..da789e5 100644 (file)
@@ -1,7 +1,7 @@
 class ZtargetPage < MainPage
   include PageObject
 
-  page_url "<%=params[:article_name]%>"
+  page_url '<%=params[:article_name]%>'
 
-  a(:link_target_page_link, text: "link to the test target page")
+  a(:link_target_page_link, text: 'link to the test target page')
 end
index e49c391..0253284 100644 (file)
@@ -430,7 +430,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
        protected function insertPage( $pageName, $text = 'Sample page for unit test.' ) {
                $title = Title::newFromText( $pageName, 0 );
 
-               $user = User::newFromName( 'WikiSysop' );
+               $user = User::newFromName( 'UTSysop' );
                $comment = __METHOD__ . ': Sample page for unit test.';
 
                // Avoid memory leak...?
@@ -501,7 +501,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                                'UTPageSummary',
                                EDIT_NEW,
                                false,
-                               User::newFromName( 'UTSysop' )
+                               $user
                        );
                }
        }
index 7114cc9..99c7f64 100644 (file)
@@ -14,4 +14,8 @@ class WellProtectedClass {
        public function getProperty() {
                return $this->property;
        }
+
+       protected function whatSecondArg( $a, $b = false ) {
+               return $b;
+       }
 }
diff --git a/tests/phpunit/data/templates/foobar.mustache b/tests/phpunit/data/templates/foobar.mustache
new file mode 100644 (file)
index 0000000..a042389
--- /dev/null
@@ -0,0 +1 @@
+hello world!
diff --git a/tests/phpunit/data/templates/foobar_args.mustache b/tests/phpunit/data/templates/foobar_args.mustache
new file mode 100644 (file)
index 0000000..cfbe3d0
--- /dev/null
@@ -0,0 +1 @@
+hello {{planet}}!
index 1f35ead..2526fcc 100644 (file)
@@ -141,56 +141,52 @@ class OutputPageTest extends MediaWikiTestCase {
                        // Load module script only
                        array(
                                array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS ),
-                               '<script>var _mwq = _mwq || []; _mwq.push( function ( mw ) {' .
-                               ' document.write("\u003Cscript src=\"http://127.0.0.1:8080/w/load.php?debug=' .
-                               'false\u0026amp;lang=en\u0026amp;modules=test.foo\u0026amp;only=scripts\u0026' .
-                               'amp;skin=fallback\u0026amp;*\"\u003E\u003C/script\u003E"); } );</script>
+                               '<script>if(window.mw){
+document.write("\u003Cscript src=\"http://127.0.0.1:8080/w/load.php?debug=false\u0026amp;lang=en\u0026amp;modules=test.foo\u0026amp;only=scripts\u0026amp;skin=fallback\u0026amp;*\"\u003E\u003C/script\u003E");
+}</script>
 '
                        ),
                        array(
                                // Don't condition wrap raw modules (like the startup module)
                                array( 'test.raw', ResourceLoaderModule::TYPE_SCRIPTS ),
-                               '<script src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;' .
-                               'modules=test.raw&amp;only=scripts&amp;skin=fallback&amp;*"></script>
+                               '<script src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.raw&amp;only=scripts&amp;skin=fallback&amp;*"></script>
 '
                        ),
                        // Load module styles only
                        // This also tests the order the modules are put into the url
                        array(
                                array( array( 'test.baz', 'test.foo', 'test.bar' ), ResourceLoaderModule::TYPE_STYLES ),
-                               '<link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&amp;' .
-                               'lang=en&amp;modules=test.bar%2Cbaz%2Cfoo&amp;only=styles&amp;skin=fallback&amp;*">
+                               '<link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.bar%2Cbaz%2Cfoo&amp;only=styles&amp;skin=fallback&amp;*">
 '
                        ),
                        // Load private module (only=scripts)
                        array(
                                array( 'test.quux', ResourceLoaderModule::TYPE_SCRIPTS ),
-                               '<script>var _mwq = _mwq || []; _mwq.push( function ( mw ) {' .
-                               ' mw.test.baz({token:123});mw.loader.state({"test.quux":"ready"});
-' . ' } );</script>
+                               '<script>if(window.mw){
+mw.test.baz({token:123});mw.loader.state({"test.quux":"ready"});
+
+}</script>
 '
                        ),
                        // Load private module (combined)
                        array(
                                array( 'test.quux', ResourceLoaderModule::TYPE_COMBINED ),
-                               '<script>var _mwq = _mwq || []; _mwq.push( function ( mw ) {' .
-                               ' mw.loader.implement("test.quux",function($,jQuery){mw.test.baz({token:123});}' .
-                               ',{"css":[".mw-icon{transition:none}\n"]},{},{});
-' . ' } );</script>
+                               '<script>if(window.mw){
+mw.loader.implement("test.quux",function($,jQuery){mw.test.baz({token:123});},{"css":[".mw-icon{transition:none}\n"]},{},{});
+
+}</script>
 '
                        ),
                        // Load module script with ESI
                        array(
                                array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS, true ),
-                               '<script><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&amp;' .
-                               'lang=en&amp;modules=test.foo&amp;only=scripts&amp;skin=fallback&amp;*" /></script>
+                               '<script><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.foo&amp;only=scripts&amp;skin=fallback&amp;*" /></script>
 '
                        ),
                        // Load module styles with ESI
                        array(
                                array( 'test.foo', ResourceLoaderModule::TYPE_STYLES, true ),
-                               '<style><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&amp;' .
-                               'lang=en&amp;modules=test.foo&amp;only=styles&amp;skin=fallback&amp;*" /></style>
+                               '<style><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.foo&amp;only=styles&amp;skin=fallback&amp;*" /></style>
 ',
                        ),
                        // Load no modules
@@ -201,22 +197,18 @@ class OutputPageTest extends MediaWikiTestCase {
                        // noscript group
                        array(
                                array( 'test.noscript', ResourceLoaderModule::TYPE_STYLES ),
-                               '<noscript><link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=' .
-                               'false&amp;lang=en&amp;modules=test.noscript&amp;only=styles&amp;skin=fallback' .
-                               '&amp;*"></noscript>
+                               '<noscript><link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.noscript&amp;only=styles&amp;skin=fallback&amp;*"></noscript>
 '
                        ),
                        // Load two modules in separate groups
                        array(
                                array( array( 'test.group.foo', 'test.group.bar' ), ResourceLoaderModule::TYPE_COMBINED ),
-                               '<script>var _mwq = _mwq || []; _mwq.push( function ( mw ) { ' .
-                               'document.write("\u003Cscript src=\"http://127.0.0.1:8080/w/load.php?debug=false' .
-                               '\u0026amp;lang=en\u0026amp;modules=test.group.bar\u0026amp;skin=fallback\u0026' .
-                               'amp;*\"\u003E\u003C/script\u003E"); } );</script>
-<script>var _mwq = _mwq || []; _mwq.push( function ( mw ) { document.write(' .
-                               '"\u003Cscript src=\"http://127.0.0.1:8080/w/load.php?debug=false\u0026amp;' .
-                               'lang=en\u0026amp;modules=test.group.foo\u0026amp;skin=fallback\u0026amp;*\\' .
-                               '"\u003E\u003C/script\u003E"); } );</script>
+                               '<script>if(window.mw){
+document.write("\u003Cscript src=\"http://127.0.0.1:8080/w/load.php?debug=false\u0026amp;lang=en\u0026amp;modules=test.group.bar\u0026amp;skin=fallback\u0026amp;*\"\u003E\u003C/script\u003E");
+}</script>
+<script>if(window.mw){
+document.write("\u003Cscript src=\"http://127.0.0.1:8080/w/load.php?debug=false\u0026amp;lang=en\u0026amp;modules=test.group.foo\u0026amp;skin=fallback\u0026amp;*\"\u003E\u003C/script\u003E");
+}</script>
 '
                        ),
                );
@@ -225,6 +217,11 @@ class OutputPageTest extends MediaWikiTestCase {
        /**
         * @dataProvider provideMakeResourceLoaderLink
         * @covers OutputPage::makeResourceLoaderLink
+        * @covers ResourceLoader::makeLoaderImplementScript
+        * @covers ResourceLoader::makeModuleResponse
+        * @covers ResourceLoader::makeInlineScript
+        * @covers ResourceLoader::makeLoaderStateScript
+        * @covers ResourceLoader::createLoaderURL
         */
        public function testMakeResourceLoaderLink( $args, $expectedHtml ) {
                $this->setMwGlobals( array(
index e737056..d63541b 100644 (file)
@@ -5,6 +5,28 @@
  */
 class PrefixSearchTest extends MediaWikiLangTestCase {
 
+       public function addDBData() {
+               $this->insertPage( 'Sandbox' );
+               $this->insertPage( 'Bar' );
+               $this->insertPage( 'Example' );
+               $this->insertPage( 'Example Bar' );
+               $this->insertPage( 'Example Foo' );
+               $this->insertPage( 'Example Foo/Bar' );
+               $this->insertPage( 'Example/Baz' );
+               $this->insertPage( 'Redirect test', '#REDIRECT [[Redirect Test]]' );
+               $this->insertPage( 'Redirect Test' );
+               $this->insertPage( 'Redirect Test Worse Result' );
+               $this->insertPage( 'Redirect test2', '#REDIRECT [[Redirect Test2]]' );
+               $this->insertPage( 'Redirect TEST2', '#REDIRECT [[Redirect Test2]]' );
+               $this->insertPage( 'Redirect Test2' );
+               $this->insertPage( 'Redirect Test2 Worse Result' );
+
+               $this->insertPage( 'Talk:Sandbox' );
+               $this->insertPage( 'Talk:Example' );
+
+               $this->insertPage( 'User:Example' );
+       }
+
        protected function setUp() {
                parent::setUp();
 
@@ -12,8 +34,6 @@ class PrefixSearchTest extends MediaWikiLangTestCase {
                        $this->markTestSkipped( 'Main namespace does not support wikitext.' );
                }
 
-               $this->insertPages();
-
                // Avoid special pages from extensions interferring with the tests
                $this->setMwGlobals( 'wgSpecialPages', array() );
        }
@@ -33,28 +53,6 @@ class PrefixSearchTest extends MediaWikiLangTestCase {
                }
        }
 
-       public function insertPages() {
-               $this->insertPage( 'Sandbox' );
-               $this->insertPage( 'Bar' );
-               $this->insertPage( 'Example' );
-               $this->insertPage( 'Example Bar' );
-               $this->insertPage( 'Example Foo' );
-               $this->insertPage( 'Example Foo/Bar' );
-               $this->insertPage( 'Example/Baz' );
-               $this->insertPage( 'Redirect test', '#REDIRECT [[Redirect Test]]' );
-               $this->insertPage( 'Redirect Test' );
-               $this->insertPage( 'Redirect Test Worse Result' );
-               $this->insertPage( 'Redirect test2', '#REDIRECT [[Redirect Test2]]' );
-               $this->insertPage( 'Redirect TEST2', '#REDIRECT [[Redirect Test2]]' );
-               $this->insertPage( 'Redirect Test2' );
-               $this->insertPage( 'Redirect Test2 Worse Result' );
-
-               $this->insertPage( 'Talk:Sandbox' );
-               $this->insertPage( 'Talk:Example' );
-
-               $this->insertPage( 'User:Example' );
-       }
-
        public static function provideSearch() {
                return array(
                        array( array(
index ccfccd1..81854ff 100644 (file)
@@ -4,27 +4,60 @@
  * @group Templates
  */
 class TemplateParserTest extends MediaWikiTestCase {
-       /**
-        * @covers TemplateParser::compile
-        */
-       public function testTemplateCompilation() {
-               $this->assertRegExp(
-                       '/^<\?php return function/',
-                       TemplateParser::compile( "test" ),
-                       'compile a simple mustache template'
-               );
+
+       protected $templateDir;
+
+       protected function setUp() {
+               parent::setUp();
+
+               $this->setMwGlobals( array(
+                       'wgSecretKey' => 'foo',
+                       'wgMemc' => new EmptyBagOStuff(),
+               ) );
+
+               $this->templateDir = dirname( __DIR__ ) . '/data/templates/';
        }
 
        /**
-        * @covers TemplateParser::compile
+        * @dataProvider provideProcessTemplate
+        * @covers TemplateParser::processTemplate
+        * @covers TemplateParser::getTemplate
+        * @covers TemplateParser::getTemplateFilename
         */
-       public function testTemplateCompilationWithVariable() {
-               $this->assertRegExp(
-                       '/return \'\'\.htmlentities\(\(string\)\(\(isset\(\$in\[\'value\'\]\) && '
-                               . 'is_array\(\$in\)\) \? \$in\[\'value\'\] : null\), ENT_QUOTES, '
-                               . '\'UTF-8\'\)\.\'\';/',
-                       TemplateParser::compile( "{{value}}" ),
-                       'compile a mustache template with an escaped variable'
+       public function testProcessTemplate( $name, $args, $result, $exception = false ) {
+               if ( $exception ) {
+                       $this->setExpectedException( $exception );
+               }
+               $tp = new TemplateParser( $this->templateDir );
+               $this->assertEquals( $result, $tp->processTemplate( $name, $args ) );
+       }
+
+       public static function provideProcessTemplate() {
+               return array(
+                       array(
+                               'foobar',
+                               array(),
+                               "hello world!\n"
+                       ),
+                       array(
+                               'foobar_args',
+                               array(
+                                       'planet' => 'world',
+                               ),
+                               "hello world!\n",
+                       ),
+                       array(
+                               '../foobar',
+                               array(),
+                               false,
+                               'UnexpectedValueException'
+                       ),
+                       array(
+                               'nonexistenttemplate',
+                               array(),
+                               false,
+                               'RuntimeException',
+                       )
                );
        }
 }
index d4ad363..84c0f9b 100644 (file)
@@ -31,7 +31,7 @@ class TestingAccessWrapper {
                $classReflection = new ReflectionClass( $this->object );
                $methodReflection = $classReflection->getMethod( $method );
                $methodReflection->setAccessible( true );
-               return $methodReflection->invoke( $this->object, $args );
+               return $methodReflection->invokeArgs( $this->object, $args );
        }
 
        public function __set( $name, $value ) {
index 8da8e42..7e5b91a 100644 (file)
@@ -27,4 +27,8 @@ class TestingAccessWrapperTest extends MediaWikiTestCase {
                $this->assertSame( 2, $this->wrapped->property );
                $this->assertSame( 2, $this->raw->getProperty() );
        }
+
+       function testCallMethodTwoArgs() {
+               $this->assertSame( 'two', $this->wrapped->whatSecondArg( 'one', 'two' ) );
+       }
 }
index 1a90d6e..988a59e 100644 (file)
@@ -2,11 +2,6 @@
 
 /**
  * @group ContentHandler
- * @group Database
- *
- * @note Declare that we are using the database, because otherwise we'll fail in
- * the "databaseless" test run. This is because the LinkHolderArray used by the
- * parser needs database access.
  */
 class ContentHandlerTest extends MediaWikiTestCase {
 
@@ -36,6 +31,8 @@ class ContentHandlerTest extends MediaWikiTestCase {
                // Reset namespace cache
                MWNamespace::getCanonicalNamespaces( true );
                $wgContLang->resetNamespaces();
+               // And LinkCache
+               LinkCache::destroySingleton();
        }
 
        protected function tearDown() {
@@ -44,6 +41,8 @@ class ContentHandlerTest extends MediaWikiTestCase {
                // Reset namespace cache
                MWNamespace::getCanonicalNamespaces( true );
                $wgContLang->resetNamespaces();
+               // And LinkCache
+               LinkCache::destroySingleton();
 
                parent::tearDown();
        }
@@ -83,6 +82,7 @@ class ContentHandlerTest extends MediaWikiTestCase {
         */
        public function testGetForTitle( $title, $expectedContentModel ) {
                $title = Title::newFromText( $title );
+               LinkCache::singleton()->addBadLinkObj( $title );
                $handler = ContentHandler::getForTitle( $title );
                $this->assertEquals( $expectedContentModel, $handler->getModelID() );
        }
@@ -139,6 +139,7 @@ class ContentHandlerTest extends MediaWikiTestCase {
        public function testGetPageLanguage( $title, $expected ) {
                if ( is_string( $title ) ) {
                        $title = Title::newFromText( $title );
+                       LinkCache::singleton()->addBadLinkObj( $title );
                }
 
                $expected = wfGetLangObj( $expected );
@@ -292,7 +293,7 @@ class ContentHandlerTest extends MediaWikiTestCase {
                $expectedModelId, $expectedNativeData, $shouldFail
        ) {
                $title = Title::newFromText( $title );
-
+               LinkCache::singleton()->addBadLinkObj( $title );
                try {
                        $content = ContentHandler::makeContent( $data, $title, $modelId, $format );
 
index 9afc54d..122995a 100644 (file)
@@ -18,7 +18,7 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
                );
        }
 
-       public static function getModules() {
+       private static function getModules() {
                $base = array(
                        'localBasePath' => realpath( dirname( __FILE__ ) ),
                );
@@ -45,10 +45,16 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
                                        'templates/template_awesome.handlebars',
                                ),
                        ),
+
+                       'aliasFooFromBar' => $base + array(
+                               'templates' => array(
+                                       'foo.foo' => 'templates/template.bar',
+                               ),
+                       ),
                );
        }
 
-       public static function providerGetTemplates() {
+       public static function providerTemplateDependencies() {
                $modules = self::getModules();
 
                return array(
@@ -57,39 +63,42 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
                                array(),
                        ),
                        array(
-                               $modules['templateModuleHandlebars'],
+                               $modules['htmlTemplateModule'],
                                array(
-                                       'templates/template_awesome.handlebars' => "wow\n",
+                                       'mediawiki.template',
                                ),
                        ),
                        array(
-                               $modules['htmlTemplateModule'],
+                               $modules['templateModuleHandlebars'],
                                array(
-                                       'templates/template.html' => "<strong>hello</strong>\n",
-                                       'templates/template2.html' => "<div>goodbye</div>\n",
+                                       'mediawiki.template',
+                                       'mediawiki.template.handlebars',
                                ),
                        ),
                        array(
-                               $modules['aliasedHtmlTemplateModule'],
+                               $modules['aliasFooFromBar'],
                                array(
-                                       'foo.html' => "<strong>hello</strong>\n",
-                                       'bar.html' => "<div>goodbye</div>\n",
+                                       'mediawiki.template',
+                                       'mediawiki.template.foo',
                                ),
                        ),
                );
        }
 
-       public static function providerGetModifiedTime() {
-               $modules = self::getModules();
-
-               return array(
-                       // Check the default value when no templates present in module is 1
-                       array( $modules['noTemplateModule'], 1 ),
-               );
+       /**
+        * @dataProvider providerTemplateDependencies
+        * @covers ResourceLoaderFileModule::__construct
+        * @covers ResourceLoaderFileModule::getDependencies
+        */
+       public function testTemplateDependencies( $module, $expected ) {
+               $rl = new ResourceLoaderFileModule( $module );
+               $this->assertEquals( $rl->getDependencies(), $expected );
        }
 
        /**
+        * @covers ResourceLoaderFileModule::getAllStyleFiles
         * @covers ResourceLoaderFileModule::getAllSkinStyleFiles
+        * @covers ResourceLoaderFileModule::getSkinStyleFiles
         */
        public function testGetAllSkinStyleFiles() {
                $baseParams = array(
@@ -132,6 +141,81 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
                );
        }
 
+       /**
+        * Strip @noflip annotations from CSS code.
+        * @param string $css
+        * @return string
+        */
+       private static function stripNoflip( $css ) {
+               return str_replace( '/*@noflip*/ ', '', $css );
+       }
+
+       /**
+        * What happens when you mix @embed and @noflip?
+        * This really is an integration test, but oh well.
+        *
+        * @covers ResourceLoaderFileModule::getStyles
+        * @covers ResourceLoaderFileModule::getStyleFiles
+        */
+       public function testMixedCssAnnotations(  ) {
+               $basePath = __DIR__ . '/../../data/css';
+               $testModule = new ResourceLoaderFileModule( array(
+                       'localBasePath' => $basePath,
+                       'styles' => array( 'test.css' ),
+               ) );
+               $expectedModule = new ResourceLoaderFileModule( array(
+                       'localBasePath' => $basePath,
+                       'styles' => array( 'expected.css' ),
+               ) );
+
+               $contextLtr = $this->getResourceLoaderContext( 'en', 'ltr' );
+               $contextRtl = $this->getResourceLoaderContext( 'he', 'rtl' );
+
+               // Since we want to compare the effect of @noflip+@embed against the effect of just @embed, and
+               // the @noflip annotations are always preserved, we need to strip them first.
+               $this->assertEquals(
+                       $expectedModule->getStyles( $contextLtr ),
+                       self::stripNoflip( $testModule->getStyles( $contextLtr ) ),
+                       "/*@noflip*/ with /*@embed*/ gives correct results in LTR mode"
+               );
+               $this->assertEquals(
+                       $expectedModule->getStyles( $contextLtr ),
+                       self::stripNoflip( $testModule->getStyles( $contextRtl ) ),
+                       "/*@noflip*/ with /*@embed*/ gives correct results in RTL mode"
+               );
+       }
+
+       public static function providerGetTemplates() {
+               $modules = self::getModules();
+
+               return array(
+                       array(
+                               $modules['noTemplateModule'],
+                               array(),
+                       ),
+                       array(
+                               $modules['templateModuleHandlebars'],
+                               array(
+                                       'templates/template_awesome.handlebars' => "wow\n",
+                               ),
+                       ),
+                       array(
+                               $modules['htmlTemplateModule'],
+                               array(
+                                       'templates/template.html' => "<strong>hello</strong>\n",
+                                       'templates/template2.html' => "<div>goodbye</div>\n",
+                               ),
+                       ),
+                       array(
+                               $modules['aliasedHtmlTemplateModule'],
+                               array(
+                                       'foo.html' => "<strong>hello</strong>\n",
+                                       'bar.html' => "<div>goodbye</div>\n",
+                               ),
+                       ),
+               );
+       }
+
        /**
         * @dataProvider providerGetTemplates
         * @covers ResourceLoaderFileModule::getTemplates
@@ -142,6 +226,15 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
                $this->assertEquals( $rl->getTemplates(), $expected );
        }
 
+       public static function providerGetModifiedTime() {
+               $modules = self::getModules();
+
+               return array(
+                       // Check the default value when no templates present in module is 1
+                       array( $modules['noTemplateModule'], 1 ),
+               );
+       }
+
        /**
         * @dataProvider providerGetModifiedTime
         * @covers ResourceLoaderFileModule::getModifiedTime
index d756ce3..e43db78 100644 (file)
@@ -5,8 +5,6 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
        protected function setUp() {
                parent::setUp();
 
-               // $wgResourceLoaderLESSFunctions, $wgResourceLoaderLESSImportPaths; $wgResourceLoaderLESSVars;
-
                $this->setMwGlobals( array(
                        'wgResourceLoaderLESSFunctions' => array(
                                'test-sum' => function ( $frame, $less ) {
@@ -28,15 +26,12 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
                ) );
        }
 
-       /* Provider Methods */
        public static function provideValidModules() {
                return array(
                        array( 'TEST.validModule1', new ResourceLoaderTestModule() ),
                );
        }
 
-       /* Test Methods */
-
        /**
         * Ensures that the ResourceLoaderRegisterModules hook is called when a new
         * ResourceLoader object is constructed.
@@ -95,42 +90,10 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
         * @param string $css
         * @return string
         */
-       private function stripNoflip( $css ) {
+       private static function stripNoflip( $css ) {
                return str_replace( '/*@noflip*/ ', '', $css );
        }
 
-       /**
-        * What happens when you mix @embed and @noflip?
-        * This really is an integration test, but oh well.
-        */
-       public function testMixedCssAnnotations(  ) {
-               $basePath = __DIR__ . '/../../data/css';
-               $testModule = new ResourceLoaderFileModule( array(
-                       'localBasePath' => $basePath,
-                       'styles' => array( 'test.css' ),
-               ) );
-               $expectedModule = new ResourceLoaderFileModule( array(
-                       'localBasePath' => $basePath,
-                       'styles' => array( 'expected.css' ),
-               ) );
-
-               $contextLtr = $this->getResourceLoaderContext( 'en', 'ltr' );
-               $contextRtl = $this->getResourceLoaderContext( 'he', 'rtl' );
-
-               // Since we want to compare the effect of @noflip+@embed against the effect of just @embed, and
-               // the @noflip annotations are always preserved, we need to strip them first.
-               $this->assertEquals(
-                       $expectedModule->getStyles( $contextLtr ),
-                       $this->stripNoflip( $testModule->getStyles( $contextLtr ) ),
-                       "/*@noflip*/ with /*@embed*/ gives correct results in LTR mode"
-               );
-               $this->assertEquals(
-                       $expectedModule->getStyles( $contextLtr ),
-                       $this->stripNoflip( $testModule->getStyles( $contextRtl ) ),
-                       "/*@noflip*/ with /*@embed*/ gives correct results in RTL mode"
-               );
-       }
-
        /**
         * @dataProvider providePackedModules
         * @covers ResourceLoader::makePackedModulesString
@@ -192,6 +155,7 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
        /**
         * @dataProvider provideAddSource
         * @covers ResourceLoader::addSource
+        * @covers ResourceLoader::getSources
         */
        public function testAddSource( $name, $info, $expected ) {
                $rl = new ResourceLoader;
index 38a9b51..7e23e2f 100644 (file)
                        lang: 'en',
                        number: 987654321.654321,
                        result: '987,654,321.654',
-                       description: 'formatnum test for English, decimal seperator'
+                       description: 'formatnum test for English, decimal separator'
                },
                {
                        lang: 'ar',
                        number: 987654321.654321,
                        result: '٩٨٧٬٦٥٤٬٣٢١٫٦٥٤',
-                       description: 'formatnum test for Arabic, with decimal seperator'
+                       description: 'formatnum test for Arabic, with decimal separator'
                },
                {
                        lang: 'ar',
                        number: '٩٨٧٦٥٤٣٢١٫٦٥٤٣٢١',
                        result: 987654321,
                        integer: true,
-                       description: 'formatnum test for Arabic, with decimal seperator, reverse'
+                       description: 'formatnum test for Arabic, with decimal separator, reverse'
                },
                {
                        lang: 'ar',
                        lang: 'nl',
                        number: 987654321.654321,
                        result: '987.654.321,654',
-                       description: 'formatnum test for Nederlands, decimal seperator'
+                       description: 'formatnum test for Nederlands, decimal separator'
                },
                {
                        lang: 'nl',
index a068846..d9df650 100644 (file)
@@ -22,7 +22,7 @@
        QUnit.test( 'mw.language.commafy test', 9, function ( assert ) {
                // Number grouping patterns are as per http://cldr.unicode.org/translation/number-patterns
                assert.equal( mw.language.commafy( 1234.567, '###0.#####' ), '1234.567', 'Pattern with no digit grouping separator defined' );
-               assert.equal( mw.language.commafy( 123456789.567, '###0.#####' ), '123456789.567', 'Pattern with no digit grouping seperator defined, bigger decimal part' );
+               assert.equal( mw.language.commafy( 123456789.567, '###0.#####' ), '123456789.567', 'Pattern with no digit grouping separator defined, bigger decimal part' );
                assert.equal( mw.language.commafy( 0.567, '###0.#####' ), '0.567', 'Decimal part 0' );
                assert.equal( mw.language.commafy( '.567', '###0.#####' ), '0.567', 'Decimal part missing. replace with zero' );
                assert.equal( mw.language.commafy( 1234, '##,#0.#####' ), '12,34', 'Pattern with no fractional part' );