Merge "Clear the stat cache in addMissingMetadata() to avoid more POSTs"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 28 Jul 2015 13:45:00 +0000 (13:45 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 28 Jul 2015 13:45:00 +0000 (13:45 +0000)
235 files changed:
.jscsrc
.jshintignore
Gruntfile.js
RELEASE-NOTES-1.26
autoload.php
composer.json
includes/DefaultSettings.php
includes/GlobalFunctions.php
includes/HttpFunctions.php
includes/OutputPage.php
includes/PHPVersionCheck.php
includes/User.php
includes/api/i18n/de.json
includes/api/i18n/en.json
includes/api/i18n/es.json
includes/api/i18n/eu.json
includes/api/i18n/he.json
includes/api/i18n/lb.json
includes/api/i18n/ru.json
includes/api/i18n/uk.json
includes/api/i18n/vi.json
includes/api/i18n/zh-hans.json
includes/cache/LinkCache.php
includes/changetags/ChangeTags.php
includes/debug/logger/LegacyLogger.php
includes/debug/logger/LegacySpi.php
includes/debug/logger/LoggerFactory.php
includes/debug/logger/MonologSpi.php
includes/debug/logger/NullSpi.php
includes/debug/logger/Spi.php
includes/debug/logger/monolog/LegacyFormatter.php
includes/filebackend/SwiftFileBackend.php
includes/htmlform/HTMLAdvancedSelectNamespace.php [new file with mode: 0644]
includes/htmlform/HTMLAdvancedSelectNamespaceWithButton.php [new file with mode: 0644]
includes/htmlform/HTMLCheckField.php
includes/htmlform/HTMLForm.php
includes/htmlform/HTMLFormField.php
includes/htmlform/HTMLFormFieldWithButton.php
includes/htmlform/HTMLSelectAndOtherField.php
includes/htmlform/HTMLSelectOrOtherField.php
includes/htmlform/HTMLTitleTextField.php
includes/htmlform/HTMLUserTextField.php
includes/htmlform/OOUIHTMLForm.php
includes/htmlform/VFormHTMLForm.php
includes/installer/DatabaseUpdater.php
includes/installer/Installer.php
includes/installer/i18n/bn.json
includes/installer/i18n/bs.json
includes/installer/i18n/vi.json
includes/installer/i18n/zh-hant.json
includes/libs/MultiHttpClient.php
includes/libs/objectcache/APCBagOStuff.php
includes/registration/ExtensionRegistry.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/site/CachingSiteStore.php
includes/specials/SpecialAllMessages.php
includes/specials/SpecialBlock.php
includes/specials/SpecialBlockList.php
includes/specials/SpecialChangeContentModel.php
includes/specials/SpecialRandomInCategory.php
includes/specials/SpecialSearch.php
includes/specials/SpecialStatistics.php
includes/specials/SpecialVersion.php
includes/specials/SpecialWatchlist.php
includes/upload/UploadFromUrl.php
includes/widget/NamespaceInputWidget.php
includes/widget/TitleInputWidget.php
includes/widget/UserInputWidget.php
languages/Language.php
languages/Names.php
languages/i18n/ar.json
languages/i18n/ast.json
languages/i18n/azb.json
languages/i18n/bcl.json
languages/i18n/be-tarask.json
languages/i18n/bgn.json
languages/i18n/bho.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/dty.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/ia.json
languages/i18n/ie.json
languages/i18n/ilo.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/km.json
languages/i18n/ksh.json
languages/i18n/lb.json
languages/i18n/lrc.json
languages/i18n/lt.json
languages/i18n/luz.json
languages/i18n/mg.json
languages/i18n/mk.json
languages/i18n/nap.json
languages/i18n/ne.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/ru.json
languages/i18n/sah.json
languages/i18n/scn.json
languages/i18n/si.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/tt-cyrl.json
languages/i18n/uk.json
languages/i18n/vi.json
languages/i18n/yi.json
languages/i18n/yue.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesBcc.php
languages/messages/MessagesBgn.php
languages/messages/MessagesLuz.php [new file with mode: 0644]
languages/messages/MessagesLv.php
maintenance/jsduck/external.js
maintenance/parse.php
resources/Resources.php
resources/ResourcesOOUI.php
resources/lib/jquery.i18n/CREDITS [new file with mode: 0644]
resources/lib/jquery.i18n/GPL-LICENSE [new file with mode: 0644]
resources/lib/jquery.i18n/MIT-LICENSE [new file with mode: 0644]
resources/lib/jquery.i18n/README.md [new file with mode: 0644]
resources/lib/jquery.i18n/package.json [new file with mode: 0644]
resources/lib/jquery.i18n/src/jquery.i18n.emitter.bidi.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/jquery.i18n.emitter.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/jquery.i18n.fallbacks.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/jquery.i18n.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/jquery.i18n.language.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/jquery.i18n.messagestore.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/jquery.i18n.parser.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/bs.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/dsb.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/fi.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/ga.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/he.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/hsb.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/hu.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/hy.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/la.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/ml.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/os.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/ru.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/sl.js [new file with mode: 0644]
resources/lib/jquery.i18n/src/languages/uk.js [new file with mode: 0644]
resources/lib/mustache/LICENSE [new file with mode: 0644]
resources/lib/oojs-ui/i18n/arq.json
resources/lib/oojs-ui/i18n/as.json
resources/lib/oojs-ui/i18n/ast.json
resources/lib/oojs-ui/i18n/be-tarask.json
resources/lib/oojs-ui/i18n/bn.json
resources/lib/oojs-ui/i18n/ckb.json
resources/lib/oojs-ui/i18n/da.json
resources/lib/oojs-ui/i18n/dty.json [new file with mode: 0644]
resources/lib/oojs-ui/i18n/eo.json
resources/lib/oojs-ui/i18n/et.json
resources/lib/oojs-ui/i18n/eu.json
resources/lib/oojs-ui/i18n/fa.json
resources/lib/oojs-ui/i18n/fi.json
resources/lib/oojs-ui/i18n/fr.json
resources/lib/oojs-ui/i18n/gu.json
resources/lib/oojs-ui/i18n/hu.json
resources/lib/oojs-ui/i18n/hy.json
resources/lib/oojs-ui/i18n/id.json
resources/lib/oojs-ui/i18n/ja.json
resources/lib/oojs-ui/i18n/jv.json
resources/lib/oojs-ui/i18n/ka.json
resources/lib/oojs-ui/i18n/ko.json
resources/lib/oojs-ui/i18n/li.json [new file with mode: 0644]
resources/lib/oojs-ui/i18n/ml.json
resources/lib/oojs-ui/i18n/ms.json
resources/lib/oojs-ui/i18n/nl.json
resources/lib/oojs-ui/i18n/oc.json
resources/lib/oojs-ui/i18n/or.json
resources/lib/oojs-ui/i18n/pl.json
resources/lib/oojs-ui/i18n/pms.json
resources/lib/oojs-ui/i18n/pt-br.json
resources/lib/oojs-ui/i18n/ru.json
resources/lib/oojs-ui/i18n/sah.json
resources/lib/oojs-ui/i18n/sk.json
resources/lib/oojs-ui/i18n/sl.json
resources/lib/oojs-ui/i18n/sv.json
resources/lib/oojs-ui/i18n/ta.json
resources/lib/oojs-ui/i18n/uk.json
resources/lib/oojs-ui/i18n/vi.json
resources/lib/oojs-ui/oojs-ui-apex-noimages.css
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-mediawiki-noimages.css
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/themes/apex/images/indicators/clear.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/indicators/clear.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/indicators.json
resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/indicators.json
resources/lib/oojs/oojs.jquery.js
resources/src/mediawiki.legacy/shared.css
resources/src/mediawiki.less/mediawiki.ui/mixins.less
resources/src/mediawiki.special/mediawiki.special.search.css
resources/src/mediawiki.special/mediawiki.special.search.js
resources/src/mediawiki.special/mediawiki.special.watchlist.css [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.less [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.less [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.NamespaceInputWidget.js
resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.js
resources/src/mediawiki.widgets/mw.widgets.TitleOptionWidget.js
resources/src/mediawiki.widgets/mw.widgets.UserInputWidget.js
resources/src/mediawiki/mediawiki.searchSuggest.js
resources/src/moment-local-dmy.js [new file with mode: 0644]
resources/src/startup.js
tests/phpunit/includes/resourceloader/ResourceLoaderStartUpModuleTest.php
tests/phpunit/includes/specials/SpecialSearchTest.php
tests/qunit/data/generateJqueryMsgData.php
tests/qunit/data/mediawiki.jqueryMsg.data.js

diff --git a/.jscsrc b/.jscsrc
index 98b81db..6a3c564 100644 (file)
--- a/.jscsrc
+++ b/.jscsrc
@@ -3,5 +3,17 @@
 
        "disallowQuotedKeysInObjects": null,
        "requireSpacesInsideParentheses": null,
-       "requireSpacesInsideArrayBrackets": null
+       "requireSpacesInsideArrayBrackets": null,
+
+       "excludeFiles": [
+               "docs/**",
+               "extensions/**",
+               "node_modules/**",
+               "resources/lib/**",
+               "resources/src/jquery.tipsy/**",
+               "resources/src/jquery/jquery.farbtastic.js",
+               "resources/src/mediawiki.libs/**",
+               "skins/**",
+               "vendor/**"
+       ]
 }
index 1882151..fdde7d0 100644 (file)
@@ -8,4 +8,5 @@ resources/lib/**
 resources/src/jquery.tipsy/**
 resources/src/jquery/jquery.farbtastic.js
 resources/src/mediawiki.libs/**
-tests/frontend/node_modules/**
+skins/**
+vendor/**
index 868fa4a..e1e5e4a 100644 (file)
@@ -19,34 +19,16 @@ module.exports = function ( grunt ) {
                        options: {
                                jshintrc: true
                        },
-                       all: [
-                               '*.js',
-                               '{includes,languages,resources,tests}/**/*.js'
-                       ]
+                       all: '.'
                },
                jscs: {
-                       all: [
-                               '<%= jshint.all %>',
-                               // Auto-generated file with JSON (double quotes)
-                               '!tests/qunit/data/mediawiki.jqueryMsg.data.js',
-                               // Skip functions are stored as script files but wrapped in a function when
-                               // executed. node-jscs trips on the would-be "Illegal return statement".
-                               '!resources/src/*-skip.js'
-
-                       // Exclude all files ignored by jshint
-                       ].concat( grunt.file.read( '.jshintignore' ).split( '\n' ).reduce( function ( patterns, pattern ) {
-                               // Filter out empty lines
-                               if ( pattern.length && pattern[0] !== '#' ) {
-                                       patterns.push( '!' + pattern );
-                               }
-                               return patterns;
-                       }, [] ) )
+                       all: '.'
                },
                jsonlint: {
                        all: [
                                '.jscsrc',
-                               '{languages,maintenance,resources}/**/*.json',
-                               'package.json'
+                               '**/*.json',
+                               '!{docs/js,extensions,node_modules,skins,vendor}/**'
                        ]
                },
                banana: {
@@ -56,10 +38,9 @@ module.exports = function ( grunt ) {
                },
                watch: {
                        files: [
-                               '<%= jscs.all %>',
-                               '<%= jsonlint.all %>',
-                               '.jshintignore',
-                               '.jshintrc'
+                               '.js*',
+                               '**/*',
+                               '!{docs,extensions,node_modules,skins,vendor}/**'
                        ],
                        tasks: 'test'
                },
index ec6bca5..f22a546 100644 (file)
@@ -42,6 +42,11 @@ production.
 * Added new hooks 'EnhancedChangesListModifyLineData' &
   'EnhancedChangesListModifyBlockLineData', to modify the data used to build
   lines in enhanced recentchanges and watchlist.
+* Caches that need purging ability now use the WANObjectCache interface.
+  This corresponds to a new $wgMainWANCache setting, which defaults to using
+  the $wgMainCacheType settings.
+* Callers needing fast light-weight data stores use $wgMainStash to select
+  the store type from $wgObjectCaches. The default is the local database.
 
 ==== External libraries ====
 * Update es5-shim from v4.0.0 to v4.1.5.
@@ -84,6 +89,7 @@ changes to languages because of Phabricator reports.
 * Languages added:
 ** dty (डोटेली/Doteli), thanks to translators जनक राज भट्ट, बिप्लब आनन्द,
    मेश सिंह बोहरा, and राम प्रसाद जोशी
+** luz (لئری جئنوٙڤی / Southern Luri)
 
 === Other changes in 1.26 ===
 * ChangeTags::tagDescription() will return false if the interface message
index a8940c4..4109740 100644 (file)
@@ -478,6 +478,8 @@ $wgAutoloadLocalClasses = array(
        'GitInfo' => __DIR__ . '/includes/GitInfo.php',
        'GlobalDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
        'GlobalVarConfig' => __DIR__ . '/includes/config/GlobalVarConfig.php',
+       'HTMLAdvancedSelectNamespace' => __DIR__ . '/includes/htmlform/HTMLAdvancedSelectNamespace.php',
+       'HTMLAdvancedSelectNamespaceWithButton' => __DIR__ . '/includes/htmlform/HTMLAdvancedSelectNamespaceWithButton.php',
        'HTMLApiField' => __DIR__ . '/includes/htmlform/HTMLApiField.php',
        'HTMLAutoCompleteSelectField' => __DIR__ . '/includes/htmlform/HTMLAutoCompleteSelectField.php',
        'HTMLButtonField' => __DIR__ . '/includes/htmlform/HTMLButtonField.php',
index c40b802..5740921 100644 (file)
@@ -21,7 +21,7 @@
                "leafo/lessphp": "0.5.0",
                "liuggio/statsd-php-client": "1.0.12",
                "mediawiki/at-ease": "1.0.0",
-               "oojs/oojs-ui": "0.12.0",
+               "oojs/oojs-ui": "0.12.1",
                "php": ">=5.3.3",
                "psr/log": "1.0.0",
                "wikimedia/cdb": "1.0.1",
index baefef9..2517bc5 100644 (file)
@@ -1021,7 +1021,7 @@ $wgSVGConverterPath = '';
 /**
  * Don't scale a SVG larger than this
  */
-$wgSVGMaxSize = 2048;
+$wgSVGMaxSize = 5120;
 
 /**
  * Don't read SVG metadata beyond this point.
@@ -7712,6 +7712,16 @@ $wgVirtualRestConfig = array(
        )
 );
 
+/**
+ * Controls the percentage of zero-result search queries with suggestions that
+ * run the suggestion automatically. Must be a number between 0 and 1.  This
+ * can be lowered to reduce query volume at the expense of result quality.
+ *
+ * @var float
+ * @since 1.26
+ */
+$wgSearchRunSuggestedQueryPercent = 1;
+
 /**
  * For really cool vim folding this needs to be at the end:
  * vim: foldmarker=@{,@} foldmethod=marker
index 6f354c3..167305d 100644 (file)
@@ -1254,12 +1254,16 @@ function wfLogProfilingData() {
 
        $config = $context->getConfig();
        if ( $config->get( 'StatsdServer' ) ) {
-               $statsdServer = explode( ':', $config->get( 'StatsdServer' ) );
-               $statsdHost = $statsdServer[0];
-               $statsdPort = isset( $statsdServer[1] ) ? $statsdServer[1] : 8125;
-               $statsdSender = new SocketSender( $statsdHost, $statsdPort );
-               $statsdClient = new StatsdClient( $statsdSender );
-               $statsdClient->send( $context->getStats()->getBuffer() );
+               try {
+                       $statsdServer = explode( ':', $config->get( 'StatsdServer' ) );
+                       $statsdHost = $statsdServer[0];
+                       $statsdPort = isset( $statsdServer[1] ) ? $statsdServer[1] : 8125;
+                       $statsdSender = new SocketSender( $statsdHost, $statsdPort );
+                       $statsdClient = new StatsdClient( $statsdSender, true, false );
+                       $statsdClient->send( $context->getStats()->getBuffer() );
+               } catch ( Exception $ex ) {
+                       MWExceptionHandler::logException( $ex );
+               }
        }
 
        # Profiling must actually be enabled...
index 825cd06..7b43a2d 100644 (file)
@@ -252,7 +252,7 @@ class MWHttpRequest {
                $this->parsedUrl = wfParseUrl( $this->url );
 
                if ( !$this->parsedUrl || !Http::isValidURI( $this->url ) ) {
-                       $this->status = Status::newFatal( 'http-invalid-url' );
+                       $this->status = Status::newFatal( 'http-invalid-url', $url );
                } else {
                        $this->status = Status::newGood( 100 ); // continue
                }
index e832b82..a551fe1 100644 (file)
@@ -3433,11 +3433,11 @@ class OutputPage extends ContextSource {
                        $lang = $this->getTitle()->getPageLanguage();
                        if ( $lang->hasVariants() ) {
                                $variants = $lang->getVariants();
-                               foreach ( $variants as $_v ) {
-                                       $tags["variant-$_v"] = Html::element( 'link', array(
+                               foreach ( $variants as $variant ) {
+                                       $tags["variant-$variant"] = Html::element( 'link', array(
                                                'rel' => 'alternate',
-                                               'hreflang' => wfBCP47( $_v ),
-                                               'href' => $this->getTitle()->getLocalURL( array( 'variant' => $_v ) ) )
+                                               'hreflang' => wfBCP47( $variant ),
+                                               'href' => $this->getTitle()->getLocalURL( array( 'variant' => $variant ) ) )
                                        );
                                }
                                # x-default link per https://support.google.com/webmasters/answer/189077?hl=en
@@ -3952,7 +3952,14 @@ class OutputPage extends ContextSource {
         * @since 1.25
         */
        public function enableOOUI() {
-               OOUI\Theme::setSingleton( new OOUI\MediaWikiTheme() );
+               $themes = ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
+               // Make keys (skin names) lowercase for case-insensitive matching.
+               $themes = array_change_key_case( $themes, CASE_LOWER );
+               $skinName = strtolower( $this->getSkin()->getSkinName() );
+               $theme = isset( $themes[ $skinName ] ) ? $themes[ $skinName ] : 'MediaWiki';
+               // For example, 'OOUI\MediaWikiTheme'.
+               $themeClass = "OOUI\\{$theme}Theme";
+               OOUI\Theme::setSingleton( new $themeClass() );
                OOUI\Element::setDefaultDir( $this->getLanguage()->getDir() );
                $this->addModuleStyles( array(
                        'oojs-ui.styles',
index d11d021..9dec950 100644 (file)
 /**
  * Check php version and that external dependencies are installed, and
  * display an informative error if either condition is not satisfied.
+ *
+ * @note Since we can't rely on anything, the minimum PHP versions and MW current
+ * version are hardcoded here
  */
 function wfEntryPointCheck( $entryPoint ) {
+       $mwVersion = '1.26';
+       $minimumVersionPHP = '5.3.3';
+       $phpVersion = PHP_VERSION;
+
        if ( !function_exists( 'version_compare' )
-               || version_compare( PHP_VERSION, '5.3.3' ) < 0
-               || !file_exists( dirname( __FILE__ ) . '/../vendor/autoload.php' )
+               || version_compare( $phpVersion, $minimumVersionPHP ) < 0
        ) {
-               wfPHPVersionError( $entryPoint );
+               wfPHPVersionError( $entryPoint, $mwVersion, $minimumVersionPHP, $phpVersion );
+       }
+
+       if ( !file_exists( dirname( __FILE__ ) . '/../vendor/autoload.php' ) ) {
+               wfMissingVendorError( $entryPoint, $mwVersion );
        }
 }
 
@@ -49,47 +59,39 @@ function wfEntryPointCheck( $entryPoint ) {
  *   - api.php
  *   - mw-config/index.php
  *   - cli
- *
- * @note Since we can't rely on anything, the minimum PHP versions and MW current
- * version are hardcoded here
+ * @param string $mwVersion The number of the MediaWiki version used
+ * @param string $title HTML code to be put within an <h2> tag
+ * @param string $shortText
+ * @param string $longText
+ * @param string $longHtml
  */
-function wfPHPVersionError( $type ) {
-       $mwVersion = '1.26';
-       $minimumVersionPHP = '5.3.3';
-
-       $phpVersion = PHP_VERSION;
+function wfGenericError( $type, $mwVersion, $title, $shortText, $longText, $longHtml ) {
        $protocol = isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0';
-       $message = "MediaWiki $mwVersion requires at least "
-               . "PHP version $minimumVersionPHP, you are using PHP $phpVersion. Installing some "
-               . " external dependencies (e.g. via composer) is also required.";
 
        if ( $type == 'cli' ) {
-               $finalOutput = "Error: You are missing some external dependencies or are using on older PHP version. \n"
-                       . "MediaWiki $mwVersion needs PHP $minimumVersionPHP or higher.\n\n"
-                       . "Check if you have a newer php executable with a different name, such as php5.\n\n"
-                       . "MediaWiki now also has some external dependencies that need to be installed\n"
-                       . "via composer or from a separate git repo. Please see\n"
-                       . "https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries\n"
-                       . "for help on installing the required components.";
-       } elseif ( $type == 'index.php' || $type == 'mw-config/index.php' ) {
-               $pathinfo = pathinfo( $_SERVER['SCRIPT_NAME'] );
-               if ( $type == 'mw-config/index.php' ) {
-                       $dirname = dirname( $pathinfo['dirname'] );
-               } else {
-                       $dirname = $pathinfo['dirname'];
-               }
-               $encLogo = htmlspecialchars(
-                       str_replace( '//', '/', $dirname . '/' ) .
-                       'resources/assets/mediawiki.png'
-               );
-
+               $finalOutput = $longText;
+       } else {
                header( "$protocol 500 MediaWiki configuration Error" );
-               header( 'Content-type: text/html; charset=UTF-8' );
                // Don't cache error pages!  They cause no end of trouble...
                header( 'Cache-control: none' );
                header( 'Pragma: no-cache' );
 
-               $finalOutput = <<<HTML
+               if ( $type == 'index.php' || $type == 'mw-config/index.php' ) {
+                       $pathinfo = pathinfo( $_SERVER['SCRIPT_NAME'] );
+                       if ( $type == 'mw-config/index.php' ) {
+                               $dirname = dirname( $pathinfo['dirname'] );
+                       } else {
+                               $dirname = $pathinfo['dirname'];
+                       }
+                       $encLogo = htmlspecialchars(
+                               str_replace( '//', '/', $dirname . '/' ) .
+                               'resources/assets/mediawiki.png'
+                       );
+                       $shortHtml = htmlspecialchars( $shortText );
+
+                       header( 'Content-type: text/html; charset=UTF-8' );
+
+                       $finalOutput = <<<HTML
 <!DOCTYPE html>
 <html lang="en" dir="ltr">
        <head>
@@ -120,10 +122,43 @@ function wfPHPVersionError( $type ) {
                <h1>MediaWiki {$mwVersion} internal error</h1>
                <div class='error'>
                <p>
-                       {$message}
+                       {$shortHtml}
                </p>
-               <h2>Supported PHP versions</h2>
+               <h2>{$title}</h2>
                <p>
+                       {$longHtml}
+               </p>
+               </div>
+       </body>
+</html>
+HTML;
+               // Handle everything that's not index.php
+               } else {
+                       // So nothing thinks this is JS or CSS
+                       $finalOutput = ( $type == 'load.php' ) ? "/* $shortText */" : $shortText;
+               }
+       }
+       echo "$finalOutput\n";
+       die( 1 );
+}
+
+/**
+ * Display an error for the minimum PHP version requirement not being satisfied.
+ *
+ * @param string $type See wfGenericError
+ * @param string $mwVersion See wfGenericError
+ * @param string $minimumVersionPHP The minimum PHP version supported by MediaWiki
+ * @param string $phpVersion The current PHP version
+ */
+function wfPHPVersionError( $type, $mwVersion, $minimumVersionPHP, $phpVersion ) {
+       $shortText = "MediaWiki $mwVersion requires at least "
+               . "PHP version $minimumVersionPHP, you are using PHP $phpVersion.";
+
+       $longText = "Error: You might be using on older PHP version. \n"
+               . "MediaWiki $mwVersion needs PHP $minimumVersionPHP or higher.\n\n"
+               . "Check if you have a newer php executable with a different name, such as php5.\n\n";
+
+       $longHtml = <<<HTML
                        Please consider <a href="http://www.php.net/downloads.php">upgrading your copy of PHP</a>.
                        PHP versions less than 5.3.0 are no longer supported by the PHP Group and will not receive
                        security or bugfix updates.
@@ -134,24 +169,31 @@ function wfPHPVersionError( $type ) {
                        of MediaWiki from our website.  See our
                        <a href="https://www.mediawiki.org/wiki/Compatibility#PHP">compatibility page</a>
                        for details of which versions are compatible with prior versions of PHP.
-               </p>
-               <h2>External dependencies</h2>
-               <p>
+HTML;
+       wfGenericError( $type, $mwVersion, 'Supported PHP versions', $shortText, $longText, $longHtml );
+}
+
+/**
+ * Display an error for the vendor/autoload.php file not being found.
+ *
+ * @param string $type See wfGenericError
+ * @param string $mwVersion See wfGenericError
+ */
+function wfMissingVendorError( $type, $mwVersion ) {
+       $shortText = "Installing some external dependencies (e.g. via composer) is also required.";
+
+       $longText = "Error: You are missing some external dependencies. \n"
+               . "MediaWiki now also has some external dependencies that need to be installed\n"
+               . "via composer or from a separate git repo. Please see\n"
+               . "https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries\n"
+               . "for help on installing the required components.";
+
+       $longHtml = <<<HTML
                        MediaWiki now also has some external dependencies that need to be installed via
                        composer or from a separate git repo. Please see
                        <a href="https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries">mediawiki.org</a>
                        for help on installing the required components.
-               </p>
-               </div>
-       </body>
-</html>
 HTML;
-       // Handle everything that's not index.php
-       } else {
-               // So nothing thinks this is JS or CSS
-               $finalOutput = ( $type == 'load.php' ) ? "/* $message */" : $message;
-               header( "$protocol 500 MediaWiki configuration Error" );
-       }
-       echo "$finalOutput\n";
-       die( 1 );
+
+       wfGenericError( $type, $mwVersion, 'External dependencies', $shortText, $longText, $longHtml );
 }
index 4c044bd..cefbe62 100644 (file)
@@ -3689,7 +3689,7 @@ class User implements IDBAccessObject {
                        $from = ( $this->queryFlagsUsed & self::READ_LATEST ) ? 'master' : 'slave';
                        throw new MWException(
                                "CAS update failed on user_touched for user ID '{$this->mId}' (read from $from);" .
-                               "the version of the user to be saved is older than the current version."
+                               " the version of the user to be saved is older than the current version."
                        );
                }
 
index efde89b..e3cc09b 100644 (file)
        "apihelp-expandtemplates-param-title": "Titel der Seite.",
        "apihelp-expandtemplates-param-text": "Zu konvertierender Wikitext.",
        "apihelp-expandtemplates-param-revid": "Versionsnummer, die für die Anzeige von <nowiki>{{REVISIONID}}</nowiki> und ähnlichen Variablen verwendet wird.",
+       "apihelp-expandtemplates-paramvalue-prop-wikitext": "Der expandierte Wikitext.",
+       "apihelp-expandtemplates-paramvalue-prop-parsetree": "Der XML-Parserbaum der Eingabe.",
        "apihelp-expandtemplates-param-includecomments": "Ob HTML-Kommentare in der Ausgabe eingeschlossen werden sollen.",
        "apihelp-expandtemplates-param-generatexml": "XML-Parserbaum erzeugen (ersetzt durch $1prop=parsetree).",
        "apihelp-expandtemplates-example-simple": "Den Wikitext <kbd><nowiki>{{Project:Spielwiese}}</nowiki></kbd> expandieren.",
        "apihelp-parse-paramvalue-prop-templates": "Gibt die Vorlagen im geparsten Wikitext zurück.",
        "apihelp-parse-paramvalue-prop-images": "Gibt die Bilder im geparsten Wikitext zurück.",
        "apihelp-parse-paramvalue-prop-externallinks": "Gibt die externen Links im geparsten Wikitext zurück.",
+       "apihelp-parse-paramvalue-prop-revid": "Ergänzt die Versionskennung der geparsten Seite.",
+       "apihelp-parse-paramvalue-prop-displaytitle": "Ergänzt den Titel des geparsten Wikitextes.",
        "apihelp-parse-param-section": "Gibt nur den Inhalt dieses Abschnittes zurück oder erstellt einen neuen Abschnitt, wenn <kbd>new</kbd> angegeben wird.\n\n<kbd>new</kbd> wird nur ausgewertet, wenn auch <var>text</var> angegeben wurde.",
        "apihelp-parse-param-sectiontitle": "Überschrift des neuen Abschnittes, wenn <var>section</var> = <kbd>new</kbd> ist.\n\nAnders als beim Bearbeiten der Seite wird der Parameter nicht durch die <var>summary</var> ersetzt, wenn er weggelassen oder leer ist.",
        "apihelp-parse-param-disableeditsection": "Lässt Abschnittsbearbeitungslinks in der Parserausgabe weg.",
index 6c7ce81..0279ba4 100644 (file)
        "apihelp-emailuser-param-subject": "Subject header.",
        "apihelp-emailuser-param-text": "Mail body.",
        "apihelp-emailuser-param-ccme": "Send a copy of this mail to me.",
-       "apihelp-emailuser-example-email": "Send an email to the User <kbd>WikiSysop</kbd> with the text <kbd>Content</kbd>.",
+       "apihelp-emailuser-example-email": "Send an email to user <kbd>WikiSysop</kbd> with the text <kbd>Content</kbd>.",
 
        "apihelp-expandtemplates-description": "Expands all templates in wikitext.",
        "apihelp-expandtemplates-param-title": "Title of page.",
        "apihelp-options-param-reset": "Resets preferences to the site defaults.",
        "apihelp-options-param-resetkinds": "List of types of options to reset when the <var>$1reset</var> option is set.",
        "apihelp-options-param-change": "List of changes, formatted name=value (e.g. skin=vector). Value cannot contain pipe characters. If no value is given (not even an equals sign), e.g., optionname|otheroption|..., the option will be reset to its default value.",
-       "apihelp-options-param-optionname": "A name of a option which should be set to the value given by <var>$1optionvalue</var>.",
-       "apihelp-options-param-optionvalue": "A value of the option specified by <var>$1optionname</var>, can contain pipe characters.",
+       "apihelp-options-param-optionname": "The name of the option that should be set to the value given by <var>$1optionvalue</var>.",
+       "apihelp-options-param-optionvalue": "The value for the option specified by <var>$1optionname</var>, can contain pipe characters.",
        "apihelp-options-example-reset": "Reset all preferences.",
        "apihelp-options-example-change": "Change <kbd>skin</kbd> and <kbd>hideminor</kbd> preferences.",
        "apihelp-options-example-complex": "Reset all preferences, then set <kbd>skin</kbd> and <kbd>nickname</kbd>.",
        "apihelp-query+backlinks-param-namespace": "The namespace to enumerate.",
        "apihelp-query+backlinks-param-dir": "The direction in which to list.",
        "apihelp-query+backlinks-param-filterredir": "How to filter for redirects. If set to <kbd>nonredirects</kbd> when <var>$1redirect</var> is enabled, this is only applied to the second level.",
-       "apihelp-query+backlinks-param-limit": "How many total pages to return. If <var>$1redirect</var> is enabled, limit applies to each level separately (which means up to 2 * <var>$1limit</var> results may be returned).",
+       "apihelp-query+backlinks-param-limit": "How many total pages to return. If <var>$1redirect</var> is enabled, the limit applies to each level separately (which means up to 2 * <var>$1limit</var> results may be returned).",
        "apihelp-query+backlinks-param-redirect": "If linking page is a redirect, find all pages that link to that redirect as well. Maximum limit is halved.",
        "apihelp-query+backlinks-example-simple": "Show links to <kbd>Main page<kbd>.",
        "apihelp-query+backlinks-example-generator": "Get information about pages linking to <kbd>Main page<kbd>.",
        "apihelp-query+categorymembers-param-start": "Timestamp to start listing from. Can only be used with <kbd>$1sort=timestamp</kbd>.",
        "apihelp-query+categorymembers-param-end": "Timestamp to end listing at. Can only be used with <kbd>$1sort=timestamp</kbd>.",
        "apihelp-query+categorymembers-param-starthexsortkey": "Sortkey to start listing from, as returned by <kbd>$1prop=sortkey</kbd>. Can only be used with <kbd>$1sort=sortkey</kbd>.",
-       "apihelp-query+categorymembers-param-endhexsortkey": "Sortkey to end listing from, as returned by <kbd>$1prop=sortkey</kbd>. Can only be used with <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-endhexsortkey": "Sortkey to end listing at, as returned by <kbd>$1prop=sortkey</kbd>. Can only be used with <kbd>$1sort=sortkey</kbd>.",
        "apihelp-query+categorymembers-param-startsortkeyprefix": "Sortkey prefix to start listing from. Can only be used with <kbd>$1sort=sortkey</kbd>. Overrides <var>$1starthexsortkey</var>.",
-       "apihelp-query+categorymembers-param-endsortkeyprefix": "Sortkey prefix to end listing BEFORE (not at, if this value occurs it will not be included!). Can only be used with $1sort=sortkey. Overrides $1endhexsortkey.",
+       "apihelp-query+categorymembers-param-endsortkeyprefix": "Sortkey prefix to end listing <strong>before</strong> (not <strong>at</strong>; if this value occurs it will not be included!). Can only be used with $1sort=sortkey. Overrides $1endhexsortkey.",
        "apihelp-query+categorymembers-param-startsortkey": "Use $1starthexsortkey instead.",
        "apihelp-query+categorymembers-param-endsortkey": "Use $1endhexsortkey instead.",
        "apihelp-query+categorymembers-example-simple": "Get first 10 pages in <kbd>Category:Physics</kbd>.",
        "apihelp-query+deletedrevs-param-excludeuser": "Don't list revisions by this user.",
        "apihelp-query+deletedrevs-param-namespace": "Only list pages in this namespace.",
        "apihelp-query+deletedrevs-param-limit": "The maximum amount of revisions to list.",
-       "apihelp-query+deletedrevs-param-prop": "Which properties to get:\n;revid:Adds the revision ID of the deleted revision.\n;parentid:Adds the revision ID of the previous revision to the page.\n;user:Adds the user who made the revision.\n;userid:Adds the user ID whom made the revision.\n;comment:Adds the comment of the revision.\n;parsedcomment:Adds the parsed comment of the revision.\n;minor:Tags if the revision is minor.\n;len:Adds the length (bytes) of the revision.\n;sha1:Adds the SHA-1 (base 16) of the revision.\n;content:Adds the content of the revision.\n;token:<span class=\"apihelp-deprecated\">Deprecated.</span> Gives the edit token.\n;tags:Tags for the revision.",
+       "apihelp-query+deletedrevs-param-prop": "Which properties to get:\n;revid:Adds the revision ID of the deleted revision.\n;parentid:Adds the revision ID of the previous revision to the page.\n;user:Adds the user who made the revision.\n;userid:Adds the ID of the user who made the revision.\n;comment:Adds the comment of the revision.\n;parsedcomment:Adds the parsed comment of the revision.\n;minor:Tags if the revision is minor.\n;len:Adds the length (bytes) of the revision.\n;sha1:Adds the SHA-1 (base 16) of the revision.\n;content:Adds the content of the revision.\n;token:<span class=\"apihelp-deprecated\">Deprecated.</span> Gives the edit token.\n;tags:Tags for the revision.",
        "apihelp-query+deletedrevs-example-mode1": "List the last deleted revisions of the pages <kbd>Main Page</kbd> and <kbd>Talk:Main Page</kbd>, with content (mode 1).",
        "apihelp-query+deletedrevs-example-mode2": "List the last 50 deleted contributions by <kbd>Bob</kbd> (mode 2).",
        "apihelp-query+deletedrevs-example-mode3-main": "List the first 50 deleted revisions in the main namespace (mode 3).",
 
        "apihelp-query+exturlusage-description": "Enumerate pages that contain a given URL.",
        "apihelp-query+exturlusage-param-prop": "Which pieces of information to include:\n;ids:Adds the ID of page.\n;title:Adds the title and namespace ID of the page.\n;url:Adds the URL used in the page.",
-       "apihelp-query+exturlusage-param-protocol": "Protocol of the URL. If empty and <var>$1query</var> set, the protocol is <kbd>http</kbd>. Leave both this and <var>$1query</var> empty to list all external links.",
+       "apihelp-query+exturlusage-param-protocol": "Protocol of the URL. If empty and <var>$1query</var> is set, the protocol is <kbd>http</kbd>. Leave both this and <var>$1query</var> empty to list all external links.",
        "apihelp-query+exturlusage-param-query": "Search string without protocol. See [[Special:LinkSearch]]. Leave empty to list all external links.",
        "apihelp-query+exturlusage-param-namespace": "The page namespaces to enumerate.",
        "apihelp-query+exturlusage-param-limit": "How many pages to return.",
        "apihelp-query+filearchive-param-dir": "The direction in which to list.",
        "apihelp-query+filearchive-param-sha1": "SHA1 hash of image. Overrides $1sha1base36.",
        "apihelp-query+filearchive-param-sha1base36": "SHA1 hash of image in base 36 (used in MediaWiki).",
-       "apihelp-query+filearchive-param-prop": "Which image information to get:\n;sha1:Adds SHA-1 hash for the image.\n;timestamp:Adds timestamp for the uploaded version.\n;user:Adds user who uploaded the image version.\n;size:Adds the size of the image in bytes and the height, width and page count (if applicable).\n;dimensions:Alias for size.\n;description:Adds description the image version.\n;parseddescription:Parse the description on the version.\n;mime:Adds MIME of the image.\n;mediatype:Adds the media type of the image.\n;metadata:Lists Exif metadata for the version of the image.\n;bitdepth:Adds the bit depth of the version.\n;archivename:Adds the filename of the archive version for non-latest versions.",
+       "apihelp-query+filearchive-param-prop": "Which image information to get:\n;sha1:Adds SHA-1 hash for the image.\n;timestamp:Adds timestamp for the uploaded version.\n;user:Adds user who uploaded the image version.\n;size:Adds the size of the image in bytes and the height, width and page count (if applicable).\n;dimensions:Alias for size.\n;description:Adds description of the image version.\n;parseddescription:Parse the description of the version.\n;mime:Adds MIME of the image.\n;mediatype:Adds the media type of the image.\n;metadata:Lists Exif metadata for the version of the image.\n;bitdepth:Adds the bit depth of the version.\n;archivename:Adds the filename of the archive version for non-latest versions.",
        "apihelp-query+filearchive-example-simple": "Show a list of all deleted files.",
 
        "apihelp-query+filerepoinfo-description": "Return meta information about image repositories configured on the wiki.",
        "apihelp-query+revisions+base-param-parse": "Parse revision content (requires $1prop=content). For performance reasons, if this option is used, $1limit is enforced to 1.",
        "apihelp-query+revisions+base-param-section": "Only retrieve the content of this section number.",
        "apihelp-query+revisions+base-param-diffto": "Revision ID to diff each revision to. Use <kbd>prev</kbd>, <kbd>next</kbd> and <kbd>cur</kbd> for the previous, next and current revision respectively.",
-       "apihelp-query+revisions+base-param-difftotext": "Text to diff each revision to. Only diffs a limited number of revisions. Overrides <var>$1diffto</var>. If <var>$1section</var> is set, only that section will be diffed against this text",
+       "apihelp-query+revisions+base-param-difftotext": "Text to diff each revision to. Only diffs a limited number of revisions. Overrides <var>$1diffto</var>. If <var>$1section</var> is set, only that section will be diffed against this text.",
        "apihelp-query+revisions+base-param-contentformat": "Serialization format used for <var>$1difftotext</var> and expected for output of content.",
 
        "apihelp-query+search-description": "Perform a full text search.",
        "apihelp-rsd-description": "Export an RSD (Really Simple Discovery) schema.",
        "apihelp-rsd-example-simple": "Export the RSD schema.",
 
-       "apihelp-setnotificationtimestamp-description": "Update the notification timestamp for watched pages.\n\nThis affects the highlighting of changed pages in the watchlist and history, and the sending of email when the \"Email me when a page on my watchlist is changed\" preference is enabled.",
+       "apihelp-setnotificationtimestamp-description": "Update the notification timestamp for watched pages.\n\nThis affects the highlighting of changed pages in the watchlist and history, and the sending of email when the \"{{int:tog-enotifwatchlistpages}}\" preference is enabled.",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "Work on all watched pages.",
        "apihelp-setnotificationtimestamp-param-timestamp": "Timestamp to which to set the notification timestamp.",
        "apihelp-setnotificationtimestamp-param-torevid": "Revision to set the notification timestamp to (one page only).",
        "apihelp-tag-param-add": "Tags to add. Only manually defined tags can be added.",
        "apihelp-tag-param-remove": "Tags to remove. Only tags that are either manually defined or completely undefined can be removed.",
        "apihelp-tag-param-reason": "Reason for the change.",
-       "apihelp-tag-example-rev": "Add the <kbd>vandalism</kbd> tag from revision ID 123 without specifying a reason",
+       "apihelp-tag-example-rev": "Add the <kbd>vandalism</kbd> tag to revision ID 123 without specifying a reason",
        "apihelp-tag-example-log": "Remove the <kbd>spam</kbd> tag from log entry ID 123 with the reason <kbd>Wrongly applied</kbd>",
 
        "apihelp-tokens-description": "Get tokens for data-modifying actions.\n\nThis module is deprecated in favor of [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
index 78cbae4..885bc77 100644 (file)
@@ -24,7 +24,7 @@
        "apihelp-main-param-requestid": "Cualquier valor dado aquí se incluirá en la respuesta. Se puede utilizar para distinguir solicitudes.",
        "apihelp-main-param-servedby": "Incluir el nombre del host que ha servido la solicitud en los resultados.",
        "apihelp-main-param-curtimestamp": "Incluir la marca de tiempo actual en el resultado.",
-       "apihelp-block-description": "Bloquear usuario",
+       "apihelp-block-description": "Bloquear a un usuario.",
        "apihelp-block-param-user": "El nombre de usuario, dirección IP o intervalo de IP que quieres bloquear.",
        "apihelp-block-param-expiry": "Fecha de expiración. Puede ser relativa (por ejemplo, <kbd>5 meses</kbd> o <kbd>2 semanas</kbd>) o absoluta (por ejemplo, <kbd>2014-09-18T12:34:56Z</kbd>). Si se establece en <kbd>infinito</kbd>, <kbd>indefinido</kbd>, o <kbd>nunca</kbd>, el bloqueo será permanente.",
        "apihelp-block-param-reason": "Razón para el bloqueo.",
@@ -50,7 +50,7 @@
        "apihelp-compare-param-fromid": "ID de la primera página a comparar.",
        "apihelp-compare-param-fromrev": "Primera revisión para comparar.",
        "apihelp-compare-param-totitle": "Segundo título para comparar.",
-       "apihelp-compare-param-toid": "Segunda página de IDENTIFICACIÓN para comparar.",
+       "apihelp-compare-param-toid": "Segunda identificador de página para comparar.",
        "apihelp-compare-param-torev": "Segunda revisión para comparar.",
        "apihelp-compare-example-1": "Crear una diferencia entre las revisiones 1 y 2.",
        "apihelp-createaccount-description": "Crear una nueva cuenta de usuario.",
        "apihelp-managetags-example-delete": "Eliminar la etiqueta <kbd>vandlaismo</kbd> con el motivo <kbd>mal deletreado</kbd>",
        "apihelp-managetags-example-activate": "Activar una etiqueta llamada <kbd>spam</kbd> con el motivo <kbd>Para utilizar en patrullaje de edición</kbd>",
        "apihelp-managetags-example-deactivate": "Desactivar una etiqueta llamada <kbd>spam</kbd> con el motivo <kbd>Para utilizar en patrullaje de edición</kbd>",
-       "apihelp-move-description": "Mover una página.",
+       "apihelp-move-description": "Trasladar una página.",
        "apihelp-move-param-from": "Título de la página a renombrar. No se puede utilizar con <var>$1fromid</var>.",
        "apihelp-move-param-fromid": "ID de la página a renombrar. No se puede utilizar con <var>$1from</var>.",
        "apihelp-move-param-to": "Título para cambiar el nombre de la página.",
        "apihelp-query+allcategories-example-size": "Lista las categorías con información sobre el número de páginas de cada una.",
        "apihelp-query+alldeletedrevisions-description": "Listar todas las revisiones eliminadas por un usuario o en un espacio de nombres.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Solo puede usarse con <var>$3user</var>.",
-       "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "No puede ser utilizado con <var>$3user</var>.",
+       "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "No puede utilizarse con <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-param-start": "El sello de tiempo para comenzar la enumeración",
        "apihelp-query+alldeletedrevisions-param-end": "El sello de tiempo para detener la enumeración",
        "apihelp-query+alldeletedrevisions-param-from": "Empezar a listar en este título.",
        "apihelp-query+deletedrevs-example-mode3-talk": "Listar las primeras 50 páginas en el espacio de nombres {{ns:talk}} (modo 3).",
        "apihelp-query+disabled-description": "Se ha desactivado el módulo de consulta.",
        "apihelp-query+duplicatefiles-example-simple": "Buscar duplicados de [[:File:Alber Einstein Head.jpg]].",
-       "apihelp-query+duplicatefiles-example-generated": "Buscar duplicados en todos los ficheros.",
+       "apihelp-query+duplicatefiles-example-generated": "Buscar duplicados en todos los archivos.",
        "apihelp-query+embeddedin-description": "Encuentra todas las páginas que transcluyen el título dado.",
        "apihelp-query+embeddedin-param-title": "Título a buscar. No puede usarse en conjunto con $1pageid.",
        "apihelp-query+embeddedin-param-filterredir": "Cómo filtrar las redirecciones.",
index b418f1d..2bb9890 100644 (file)
@@ -1,7 +1,8 @@
 {
        "@metadata": {
                "authors": [
-                       "Subi"
+                       "Subi",
+                       "Sator"
                ]
        },
        "apihelp-block-description": "Blokeatu erabiltzaile bat.",
@@ -35,6 +36,7 @@
        "apihelp-query+allusers-param-activeusers": "Bakarrik zerrendatu azken {{PLURAL:$1|eguneko|$1 egunetako}} erabiltzaile aktiboak.",
        "apihelp-query+imageinfo-param-urlheight": "$1urlwidth-en antzekoa.",
        "apihelp-query+imageusage-example-simple": "Erakutsi [[:File:Albert Einstein Head.jpg]] darabilten orriak",
+       "apihelp-query+langlinks-param-inlanguagecode": "Hizkuntza izenak aurkitzeko hizkuntza kodea.",
        "apihelp-query+prefixsearch-param-search": "Bilatu katea.",
        "apihelp-query+protectedtitles-example-simple": "Zerrendatu babestutako izenburuak",
        "apihelp-query+recentchanges-example-simple": "Zerrendatu aldaketa berriak.",
index 26d11de..ce0df65 100644 (file)
        "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-starttimestamp": "חותם־הזמן של תחילת תהליך העריכה, משמש לזיהוי התנגשויות. אפשר לקבל ערך מתאים באמצעות <var>[[Special:ApiHelp/main|curtimestamp]]</var> בעת תחילת תהליך העריכה (למשל בזמן טעינת תוכן הדף לעריכה).",
        "apihelp-edit-param-recreate": "לעקוב את כל הטעויות על כך שהדף נמחק בינתיים.",
        "apihelp-edit-param-createonly": "לא לערוך את הדף אם הוא כבר קיים.",
        "apihelp-edit-param-nocreate": "לזרוק שגיאה אם הדף אינו קיים.",
        "apihelp-edit-param-watch": "הוספת העמוד לרשימת המעקב של המשתמש הנוכחי.",
        "apihelp-edit-param-unwatch": "הסרת הדף מרשימת המעקב של של המשתמש הנוכחי.",
        "apihelp-edit-param-watchlist": "להוסיף את הדף לרשימת המעקב של המשתמש הנוכחי או להסיר אותו משם, להשתמש בהעדפות, או לא לשנות את מצב המעקב.",
+       "apihelp-edit-param-md5": "גיבוב MD5 של הפרמטר $1text או צירוף של הפטמטרים $1prependtext ו־$1appendtext. אם זה מוגדר, העריכה לא תיעשה אלא אם כן הגיבוב נכון.",
        "apihelp-edit-param-prependtext": "הוספת הטקסט הזה לתחילת הדף. דורס את $1text.",
+       "apihelp-edit-param-appendtext": "הוספת הטקסט הזה לסוף הדף. דורס את $1text.\n\nיש להשתמש ב־$1section=new כדי להוסיף פסקה חדשה, ולא בפרמטר הזה.",
+       "apihelp-edit-param-undo": "לבטל את הגרסה הזאת. דורס את $1text‏, $1prependtext ו־$1appendtext.",
+       "apihelp-edit-param-undoafter": "ביטול כל הגרסאות מ־$1undo עד כאן. אם זה לא מוגדר, לבטל רק גרסה אחת.",
        "apihelp-edit-param-redirect": "לפתור הפניות אוטומטית.",
        "apihelp-edit-param-contentformat": "תסדיר להסדרת תוכן שמשמש את טקסט הקלט.",
+       "apihelp-edit-param-contentmodel": "מודל התוכן של התוכן החדש.",
+       "apihelp-edit-param-token": "האסימון תמיד צריך להישלח בתור הפרמטר האחרון, או לפחות אחרי הפרמטר $1text parameter.",
        "apihelp-edit-example-edit": "עריכת דף",
+       "apihelp-edit-example-prepend": "הוספת <kbd>_&#95;NOTOC_&#95;</kbd> לתחילת העמוד.",
+       "apihelp-edit-example-undo": "ביטול גרסאות מ־13579 עד 13585 עם תקציר אוטומטי.",
        "apihelp-emailuser-description": "שליחת דוא\"ל למשתמש.",
        "apihelp-emailuser-param-target": "לאיזה משתמש לשלוח דוא\"ל.",
        "apihelp-emailuser-param-subject": "כותרת נושא.",
        "apihelp-emailuser-param-text": "גוף הדואר.",
        "apihelp-emailuser-param-ccme": "שליחת עותק של הדואר הזה אליי.",
+       "apihelp-emailuser-example-email": "שליחת דוא\"ל למשתמש <kbd>WikiSysop</kbd> עם הטקסט <kbd>Content</kbd>.",
        "apihelp-expandtemplates-description": "הרחבת כל התבניות בקוד הוויקי.",
        "apihelp-expandtemplates-param-title": "כותרת הדף.",
        "apihelp-expandtemplates-param-text": "איזה קוד ויקי להמיר.",
+       "apihelp-expandtemplates-param-revid": "מזהה גרסה, עבור <nowiki>{{REVISIONID}}</nowiki> ומשתנים דומים.",
        "apihelp-expandtemplates-param-prop": "אילו חלקי מידע לקבל.\n\nיש לשים לכך שאם לא נבחרו ערכים, התוצאה תכיל את קוד הוויקי, אבל הפלט יהיה בתסדיר מיושן.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "קוד הוויקי המורחב.",
+       "apihelp-expandtemplates-paramvalue-prop-categories": "קטגוריות כלשהן שקיימות בקלט ואינן מיוצגות בפלט הוויקיטקסט.",
+       "apihelp-expandtemplates-paramvalue-prop-properties": "מאפייני דף המוגדרים במילות קסם מורחבות בקוד ויקי.",
+       "apihelp-expandtemplates-paramvalue-prop-volatile": "האם הפלט הוא נדיף ואין להשתמש בו במקום אחר בעמוד.",
+       "apihelp-expandtemplates-paramvalue-prop-ttl": "הזמן המרבי שאחריו המטמונים של התוצאה צריכים לפוג.",
        "apihelp-expandtemplates-paramvalue-prop-modules": "כל יחידות ה־ResourceLoader שפונקציות מפענח ביקשו לוסיף לפלט. יש לבקש את <kbd>jsconfigvars</kbd> או את <kbd>encodedjsconfigvars</kbd> יחד עם <kbd>modules</kbd>.",
        "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה.",
        "apihelp-expandtemplates-paramvalue-prop-encodedjsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה בתור מחרוזת JSON.",
        "apihelp-expandtemplates-paramvalue-prop-parsetree": "עץ פענוח XML של הקלט.",
        "apihelp-expandtemplates-param-includecomments": "האם לכלול הערות HTML בפלט.",
        "apihelp-expandtemplates-param-generatexml": "יצירת עץ פענוח XML (מוחלף ב־$1prop=parsetree).",
+       "apihelp-expandtemplates-example-simple": "להרחיב את קוד הוויקי <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>.",
        "apihelp-feedcontributions-description": "החזרת הזנת תרומות משתמש.",
        "apihelp-feedcontributions-param-feedformat": "תסדיר ההזנה.",
        "apihelp-feedcontributions-param-user": "לקבל תרומות של אילו משמשים.",
        "apihelp-filerevert-param-filename": "שם קובץ היעד, ללא התחילית File:.",
        "apihelp-filerevert-param-comment": "הערת העלאה.",
        "apihelp-filerevert-param-archivename": "שם הארכיון של הגרסה שאליה ישוחזר הקובץ.",
+       "apihelp-filerevert-example-revert": "לשחזר את <kbd>Wiki.png</kbd> לגרסה מ־<kbd>2011-03-05T15:27:40Z</kbd>.",
        "apihelp-help-description": "הצגת עזרה עבור היחידות שצוינו.",
        "apihelp-help-param-modules": "עזרה של אילו יחידות להציג (ערכים של הפרמטרים <var>action</var> ו־<var>format</var>, או <kbd>main</kbd>). אפשר להגדיר תת־יחידות עם <kbd>+</kbd>.",
        "apihelp-help-param-submodules": "לכלול עזרה לתת־יחידות ליחידה שצוינה.",
        "apihelp-help-param-recursivesubmodules": "לכלול עזרה לתת־יחידות באופן רקורסיבי.",
        "apihelp-help-param-helpformat": "תסדיר פלט העזרה.",
+       "apihelp-help-param-wrap": "לעטוף את הפלט במבנה תשובת API תקני.",
        "apihelp-help-param-toc": "לכלול תוכן עניינים בפלט HTML.",
        "apihelp-help-example-main": "עזרה ליחידה הראשית.",
        "apihelp-help-example-recursive": "כל העזרה בדף אחד.",
        "apihelp-import-param-namespace": "לייבא למרחב השם הזה. לא ניתן להשתמש בזה יחד עם <var>$1rootpage</var>.",
        "apihelp-import-param-rootpage": "לייבא בתור תת־משנה של הדף הזה. לא ניתן להשתמש בזה יחד עם <var>$1namespace</var>.",
        "apihelp-import-example-import": "לייבא את [[meta:Help:ParserFunctions]] למרחב השם 100 עם היסטוריה מלאה.",
+       "apihelp-login-description": "להיכנס ולקבל עוגיות אימות.\n\nבמקרה של כניסה מוצלחת, העוגיות הדרושות תיכללנה בכותרות תשובות של HTTP. במקרה של כניסה לא מוצלחת, הניסיונות הבאים עשויים להיות חנוקים כדי להגביל תקיפות ניחוש ססמה אוטומטי.",
        "apihelp-login-param-name": "שם משתמש.",
        "apihelp-login-param-password": "ססמה.",
        "apihelp-login-param-domain": "שם מתחם (רשות).",
        "apihelp-logout-description": "יציאה וניקוי של נתוני הפעילות.",
        "apihelp-logout-example-logout": "הוצאת המשתמש הנוכחי.",
        "apihelp-managetags-description": "ביצוע פעולות ניהוליות הקשורות בשינוי תגיות.",
+       "apihelp-managetags-param-operation": "איזו פעולה לבצע:\n;create:יצירת תג שינוי חדש לשימוש ידני.\n;delete:הסרת תג שינוי ממסד הנתונים, כולל הסרת התג מכל הגרסאות, עיולי שינויים אחרונים ועיולי יומן שהוא משמש בהן.\n;activate:הפעלת תג שינוי, ואפשור למשתמש להחיל אותו ידנית.\n;deactivate:כיבוי תג שינוי, ומניעה ממשתמשים להחיל אותו ידנית.",
+       "apihelp-managetags-param-tag": "תג ליצירה, מחיקה, הפעלה או כיבוי. ליצירת תג, התג לא צריך להיות קיים. למחיקת תג, התג צריך להיות קיים. להפעלת תג, התג צריך להתקיים ולא להיות בשימוש של הרחבה. לכיבוי תג, התג צריך להיות קיים ומוגדר ידנית.",
+       "apihelp-managetags-param-reason": "סיבה אופציונלית ליצירה, מחיקה, הפעלה או כיבוי של תג.",
+       "apihelp-managetags-param-ignorewarnings": "האם להתעלם מכל האזהרות שמופיעות תוך כדי הפעולה.",
+       "apihelp-managetags-example-create": "יצירת תג בשם <kbd>spam</kbd> עם הסיבה <kbd>For use in edit patrolling</kbd>",
+       "apihelp-managetags-example-delete": "מחיקת התג <kbd>vandlaism</kbd> עם הסיבה <kbd>Misspelt</kbd>",
+       "apihelp-managetags-example-activate": "הפעלת התג <kbd>spam</kbd> עם הסיבה <kbd>For use in edit patrolling</kbd>",
+       "apihelp-managetags-example-deactivate": "כיבוי התג <kbd>spam</kbd> עם הסיבה <kbd>No longer required</kbd>",
        "apihelp-move-description": "העברת עמוד.",
+       "apihelp-move-param-from": "שם הדף ששמו ישונה. לא יכול לשמש יחד עם <var>$1fromid</var>.",
+       "apihelp-move-param-fromid": "מזהה הדף של הדף שצריך לשנות את שמו. לא יכול לשמש עם <var>$1from</var>.",
        "apihelp-move-param-to": "לאיזו כותרת לשנות את שם הדף.",
        "apihelp-move-param-reason": "הסיבה לשינוי השם.",
        "apihelp-move-param-movetalk": "שינוי שם דף השיחה, אם הוא קיים.",
        "apihelp-opensearch-param-format": "תסדיר הפלט.",
        "apihelp-opensearch-param-warningsaserror": "אם אזהרות מוּעלות עם <kbd>format=json</kbd>, להחזיר שגיאת API במקום להתעלם מהן.",
        "apihelp-opensearch-example-te": "חיפוש דפים שמתחילים ב־<kbd>Te</kbd>.",
+       "apihelp-options-description": "שינוי העדפות של המשתמש הנוכחי.\n\nרק אפשרויות שמוגדרות בליבה או באחת מההרחבות המותקנות, או אפשרויות עם מפתחות עם התחילית \"<span dir=\"ltr\">userjs-</span>\" (שמיועדות לשימוש תסריטי משתמשים) יכולות להיות מוגדרות.",
        "apihelp-options-param-reset": "אתחול ההעדפות לבררות המחדל של האתר.",
+       "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>$1optionname</var>, יכול להכיל תווי מקל.",
        "apihelp-options-example-reset": "אתחול כל ההעדפות.",
+       "apihelp-options-example-change": "לשנות את ההעדפות <kbd>skin</kbd> ו־<kbd>hideminor</kbd>.",
+       "apihelp-options-example-complex": "לאתחל את כל ההעדפות ואז להגדיר את <kbd>skin</kbd> ואת <kbd>nickname</kbd>.",
        "apihelp-paraminfo-description": "קבלת מידע על יחידות של API.",
        "apihelp-paraminfo-param-modules": "רשימה של שמות יחידות (ערכים של הפרמטרים <var>action</var> ו־<var>format</var>, או <kbd>main</kbd>). אפשר להגדיר תת־יחידות עם <kbd>+</kbd>.",
        "apihelp-paraminfo-param-helpformat": "תסדיר מחרוזות העזרה.",
        "apihelp-paraminfo-param-formatmodules": "רשימת שמות תסדירים (ערכים של הפרמטר <var>format</var>). יש להשתמש ב־<var>$1modules</var> במקום זה.",
        "apihelp-paraminfo-example-1": "הצגת מידע עבור <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>‏, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>‏, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>‏, ו־<kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
        "apihelp-parse-description": "מפענח את התוכן ומחזיר פלט מפענח.\n\nר' את יחידת ה־prop השיונות של <kbd>[[Special:ApiHelp/query|action=query]]</kbd> כדי לקבל מידע על הגרסה הנוכחית של הדף.\n\nיש מספר דרכים לציין טקסט לפענוח:\n# ציון דף או גרסה באמצעות <var>$1page</var>‏, <var>$1pageid</var>, או <var>$1oldid</var>.\n# ציון התוכן במפורש, באמצעות <var>$1text</var>‏, <var>$1title</var>, ו־<var>$1contentmodel</var>.\n# ציון רק של  התקציר לפענוח. ל־<var>$1prop</var> צריך לתת ערך ריק.",
+       "apihelp-parse-param-title": "שם הדף שהטקסט שייך אליו. אם זה מושמט, יש לציין את <var>$1contentmodel</var>, ו־[[API]] ישמש ככותרת.",
+       "apihelp-parse-param-text": "הטקסט לפענוח. יש להשתמש ב־<var>$1title</var> או ב־<var>$1contentmodel</var>.",
        "apihelp-parse-param-summary": "התקציר שצריך לפענח.",
+       "apihelp-parse-param-page": "פענוח תוכן הדף הזה. לא יכול לשמש יחד עם <var>$1text</var> ו־<var>$1title</var>.",
+       "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-prop": "אילו פריטי מידע לקבל:",
        "apihelp-parse-paramvalue-prop-text": "נותן טקסט מפוענח של קוד הוויקי.",
        "apihelp-parse-paramvalue-prop-langlinks": "נותן קישורי שפה בקוד הוויקי המפוענח.",
        "apihelp-parse-paramvalue-prop-sections": "מתן הפסקאות בקוד הוויקי המפוענח.",
        "apihelp-parse-paramvalue-prop-revid": "הוספת מזהה הגרסה של הדף המפוענח.",
        "apihelp-parse-paramvalue-prop-displaytitle": "הוספת הכותרת של קוד הוויקי המפוענח.",
+       "apihelp-parse-paramvalue-prop-headitems": "נותן פריטים לשים ב־<code>&lt;head&gt;</code> של הדף.",
+       "apihelp-parse-paramvalue-prop-headhtml": "נותן את ה־<code>&lt;head&gt;</code> המפוענח של הדף.",
        "apihelp-parse-paramvalue-prop-modules": "מצן יחידות ResourceLoader שמשמשות בדף. יש לבקש את <kbd>jsconfigvars</kbd> או את <kbd>encodedjsconfigvars</kbd> יחד עם <kbd>modules</kbd>.",
        "apihelp-parse-paramvalue-prop-jsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה.",
        "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה בתור מחרוזת JSON.",
+       "apihelp-parse-paramvalue-prop-indicators": "נותן את ה־HTML של מחווני מצב דף שמשמשים בדף.",
        "apihelp-parse-paramvalue-prop-iwlinks": "מתן קישורי בינוויקי בקוד הוויקי המפוענח.",
        "apihelp-parse-paramvalue-prop-wikitext": "מתן קוד הוויקי המקורי שפוענח.",
+       "apihelp-parse-paramvalue-prop-properties": "נותן מאפיינים שונים שמוגדרים בקוד הוויקי המפוענח.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "נותן דו\"ח הגבלות בדרך מובנית. לא נותן שום נתונים כאשר מוגדר <var>$1disablepp</var>.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "נותן את גרסת ה־HTML של דו\"ח ההגבלות. לא נותן שום נתונים כאשר מוגדר <var>$1disablepp</var>.",
+       "apihelp-parse-paramvalue-prop-parsetree": "עץ פענוח XML של תוכן הגרסה (דורש מודל תוכן <code>$1</code>)",
+       "apihelp-parse-param-pst": "לעשות התמרה לפני שמירה על הקלט לפני פענוחו. תקין רק בשימוש עם טקסט.",
+       "apihelp-parse-param-onlypst": "לעשות התמרה לפני שמירה (pre-save transform‏, PST) על הקלט, אבל לא לפענח אותו. מחזיר את אותו קוד הוויקי אחרי החלת PST. תקף רק בשימוש עם <var>$1text</var>.",
+       "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": "להשמיט את דו\"ח הקדם־מעבד (\"NewPP limit report\") מפלט המפענח.",
        "apihelp-parse-param-disableeditsection": "להשמיט את קישורי עריכת הפסקאות מפלט המפענח.",
+       "apihelp-parse-param-generatexml": "יצירת עץ פענוח של XML (נדרש מודל תוכן <code>$1</code>; מוחלף ב־<kbd>$2prop=parsetree</kbd>).",
        "apihelp-parse-param-preview": "לפענח במצב תצוגה מקדימה.",
        "apihelp-parse-param-sectionpreview": "לפענח במצב תצוגה מקדימה של פסקה (מדליק גם את מצב תצוגה מקדימה).",
        "apihelp-parse-param-disabletoc": "להשמיט את תוכן העניינים בפלט.",
        "apihelp-parse-param-contentformat": "תסדיר הסדרת תוכן שישמש לטקסט הקלט. תקף רק עם $1text.",
+       "apihelp-parse-param-contentmodel": "מודל התוכן של טקסט הקלט. אם זה מושמט, יש לציין את $1title והערך ההתחלתי יהיה המודל של הכותרת שצוינה. תקין רק כאשר משמש עם $1text.",
        "apihelp-parse-example-page": "לפענח דף.",
        "apihelp-parse-example-text": "לפענח קוד ויקי.",
        "apihelp-parse-example-texttitle": "לפענח קוד, עם ציון כותרת דף.",
        "apihelp-protect-param-watch": "אם זה מוגדר, הוספת הדף שהגנה נוספת אליו או מוסרת ממנו לרשימת המעקב של המשתמש הנוכחי.",
        "apihelp-protect-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.",
        "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": "אחזור נתונים ממדיה־ויקי ועליה.\n\nכל שינויי הנתונים יצטרכו תחילה להשתמש ב־query כדי לקבל אסימון למניעת שימוש לרעה מאתרים זדוניים.",
        "apihelp-query-param-prop": "אילו מאפיינים לקבל על הדפים בשאילתה.",
        "apihelp-query-param-list": "אילו רשימות לקבל.",
        "apihelp-query-param-meta": "אילו מטא־נתונים לקבל.",
+       "apihelp-query-param-indexpageids": "לכלול פסקת pageids נוספת עם רשימת כל מזהי הדף שהוחזרו.",
+       "apihelp-query-param-export": "יצוא הגרסאות הנוכחיות של כל הדפים הנתונים המחוללים.",
        "apihelp-query-param-exportnowrap": "להחזיר את ה־XML של היצוא בלי לעטוף אותו בתוצאת XML (אותו תסדיר כמו [[Special:Export]]). אפשר להשתמש בזה רק עם $1export.",
+       "apihelp-query-param-iwurl": "האם לקבל את ה־URL המלא אם הכותרת היא קישור בינוויקי.",
+       "apihelp-query-param-rawcontinue": "להחזיר נתוני <samp>query-continue</samp> גולמיים להמשך.",
+       "apihelp-query-example-revisions": "אחזור [[Special:ApiHelp/query+siteinfo|site info]] ו־[[Special:ApiHelp/query+revisions|revisions]] של <kbd>Main Page</kbd>.",
+       "apihelp-query-example-allpages": "אחזור גרסאת של דפים שמתחילים ב־<kbd>API/</kbd>.",
        "apihelp-query+allcategories-description": "למנות את כל הקטגוריות.",
        "apihelp-query+allcategories-param-from": "מאיזו קטגוריה להתחיל למנות.",
        "apihelp-query+allcategories-param-to": "באיזו קטגוריה להפסיק למנות.",
        "apihelp-query+allcategories-param-limit": "כמה קטגוריות להחזיר.",
        "apihelp-query+allcategories-param-prop": "אילו מאפיינים לקבל:\n;size:הוספת מספר הדפים בקטגוריה.\n;hidden:מתייג קטגוריות מוסתרות עם _&#95;HIDDENCAT_&#95;.",
        "apihelp-query+allcategories-example-size": "רשימת קטגוריות עם מידע על מספר הדפים בכל אחת מהן.",
+       "apihelp-query+allcategories-example-generator": "אחזור מידע על דף הקטגוריה עצמו עבור קטגוריות שמתחילות ב־<kbd>List</kbd>.",
        "apihelp-query+alldeletedrevisions-description": "רשימת כל הגרסאות המחוקות על־ידי משתמש או במרחב.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "יכול לשמש רק <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "לא יכול לשמש עם <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-param-user": "לרשום רק גרסאות מאת המשתמש הזה.",
        "apihelp-query+alldeletedrevisions-param-excludeuser": "לא לרשום גרסאות מאת המשתמש הזה.",
        "apihelp-query+alldeletedrevisions-param-namespace": "לרשום רק דפים במרחב השם הזה.",
+       "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "<strong>לתשומת לבך:</strong> בשל [[mw:Manual:$wgMiserMode|מצב חיסכון]], שימוש ב־<var>$1user</var> וב־<var>$1namespace</var> ביחד עלול להניב החזרה של פחות מ־<var>$1limit</var> תוצאות לפני המשך; במצבים קיצוניים יכולות להיות מוחזרות אפס תוצאות.",
+       "apihelp-query+alldeletedrevisions-param-generatetitles": "בעת שימוש בתור מחולל, לחולל כותרת במקום מזהי גרסה.",
+       "apihelp-query+alldeletedrevisions-example-user": "לרשום את 50 התרומות המחוקות האחרונות של משתמש <kbd>Example<kbd>.",
+       "apihelp-query+alldeletedrevisions-example-ns-main": "רשימת 50 הגרסאות המחוקות הראשונות במרחב הראשי.",
        "apihelp-query+allfileusages-description": "לרשום את כל שימושי הקובץ, כולל בלתי־קיימים.",
-       "apihelp-query+allfileusages-param-from": "×\9e×\90×\99×\96×\95 ×\9b×\95תרת קובץ להתחיל למנות.",
+       "apihelp-query+allfileusages-param-from": "×\9e×\90×\99×\96×\94 ×©×\9d קובץ להתחיל למנות.",
        "apihelp-query+allfileusages-param-to": "שם הקובץ שבו תסתיים המנייה.",
        "apihelp-query+allfileusages-param-prefix": "חיפוש כל שמות הקבצים שמתחילים עם הערך הזה.",
+       "apihelp-query+allfileusages-param-unique": "להציג רק שמות קבצים ייחודיים. לא יכול לשמש עם $1prop=ids.\nבעת שימוש בתור מחולל, נותן דפי יעד במקום דפי מקור.",
+       "apihelp-query+allfileusages-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהי הדף של הדפים המשתמשים (לא יכול לשמש עם $1unique).\n;title:הוספת שם הקובץ.",
        "apihelp-query+allfileusages-param-limit": "כמה פריטים להחזיר בסך הכול.",
        "apihelp-query+allfileusages-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+allfileusages-example-B": "רשימת שמות קבצים, כולל חסרים, עם מזהי הדפים שהם מופיעים בהם, החל מ־<kbd>B</kbd>.",
        "apihelp-query+allfileusages-example-unique": "רשימת שמות קבצים ייחודיים.",
        "apihelp-query+allfileusages-example-unique-generator": "קבלת כל שמות הקבצים, כולל חסרים.",
        "apihelp-query+allfileusages-example-generator": "קבלת דפים שמכילים את הקבצים.",
        "apihelp-query+allimages-description": "למנות את כל התמונות לפי הסדר.",
        "apihelp-query+allimages-param-sort": "לפי איזה מאפיין למיין.",
        "apihelp-query+allimages-param-dir": "באיזה כיוון לרשום.",
-       "apihelp-query+allimages-param-from": "×\9e×\90×\99×\96×\95 ×\9b×\95תרת תמונה להתחיל למנות. יכול לשמש רק עם $1sort=name.",
+       "apihelp-query+allimages-param-from": "×\9e×\90×\99×\96×\94 ×©×\9d תמונה להתחיל למנות. יכול לשמש רק עם $1sort=name.",
        "apihelp-query+allimages-param-to": "כותרת תמונה שבה תסתיים המניי. יכול לשמש רק עם $1sort=name.",
-       "apihelp-query+allimages-param-start": "×\91איזה חותם־זמן להתחיל למנות. יכול לשמש רק עם $1sort=timestamp.",
+       "apihelp-query+allimages-param-start": "×\9eאיזה חותם־זמן להתחיל למנות. יכול לשמש רק עם $1sort=timestamp.",
        "apihelp-query+allimages-param-end": "באיזה חותם זמן להפסיק לרשום. אפשר להשתמש בזה רק עם $1sort=timestamp.",
+       "apihelp-query+allimages-param-prefix": "חיפוש כל שמות התמונות שמתחילים בערך הזה. יכול לשמש רק עם $1sort=name.",
        "apihelp-query+allimages-param-minsize": "להגביל לתמונות עם מספר כזה של בתים לפחות.",
        "apihelp-query+allimages-param-maxsize": "להגביל לתמונות עם מספר כזה לכל היותר של בתים.",
        "apihelp-query+allimages-param-sha1": "גיבוב SHA1 של תמונה. דריסת $1sha1base36.",
        "apihelp-query+allimages-param-sha1base36": "גיבוב SHA1 של התמונה בבסיס 36 (הבסיס בו נעשה שימוש במדיה־ויקי).",
        "apihelp-query+allimages-param-user": "להחזיר רק קבצים שהועלו על־ידי המשתמש הזה. יכול לשמש רק עם $1sort=timestamp. לא יכול לשמש יחד עם $1filterbots.",
+       "apihelp-query+allimages-param-filterbots": "איך לסנן קבצים שמעלים בוטים. יכול לשמש רק עם $1sort=timestamp. לא יכול לשמש יחד עם $1user.",
+       "apihelp-query+allimages-param-mime": "אילו סוגי MIME לחבפש, למשל <kbd>image/jpeg</kbd>.",
        "apihelp-query+allimages-param-limit": "כמה תמונות להחזיר בסך הכול.",
        "apihelp-query+allimages-example-B": "הצגת רשימה של קבצים שמתחילים באות <kbd>B</kbd>.",
+       "apihelp-query+allimages-example-recent": "הצגת רשימת קבצים שהועלו לאחרונה, דומה ל־[[Special:NewFiles]].",
+       "apihelp-query+allimages-example-mimetypes": "להציג רשימה של קבצות שסוג ה־MIME שלהם הוא <kbd>image/png</kbd> או <kbd>image/png</kbd>.",
        "apihelp-query+allimages-example-generator": "הצגת מידע על 4 קבצים המתחילים באות <kbd>T</kbd>.",
        "apihelp-query+alllinks-description": "למנות את כל הקישורים שמצביעים למרחב שם נתון.",
-       "apihelp-query+alllinks-param-from": "×\9e×\90×\99×\96×\95 ×\9b×\95תרת ×\94ק×\99ש×\95ר ×\9c×\94ת×\97×\99×\9c ×\90ת ×\94×\9e× ×\99×\99×\94.",
+       "apihelp-query+alllinks-param-from": "×\9e×\90×\99×\96×\94 ×©×\9d ×§×\99ש×\95ר ×\9c×\94ת×\97×\99×\9c ×\9c×\9e× ×\95ת.",
        "apihelp-query+alllinks-param-to": "כותרת הקישור שבו תסתיים המנייה.",
        "apihelp-query+alllinks-param-prefix": "חיפוש כל הכותרות המקושרות שמתחילות בערך הזה.",
+       "apihelp-query+alllinks-param-unique": "להציג רק שמות מקושרים ייחודיים. לא יכול לשמש עם <kbd>$1prop=ids</kbd>.\nבעת שימוש בתור מחולל, נותן דפי יעד במקום דפי מקור.",
+       "apihelp-query+alllinks-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהי הדף של הדף המקשר (לא יכול לשמש עם <var>$1unique</var>).\n;title:הוספת שם הקישור.",
        "apihelp-query+alllinks-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+alllinks-param-limit": "כמה פריטים להחזיר בסך הכול.",
        "apihelp-query+alllinks-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+alllinks-example-B": "רשימת כותרות מקושרות, כולל חסרות, עם מזהי הדפים שהן מופיעות בהם, החל מ־<kbd>B</kbd>.",
        "apihelp-query+alllinks-example-unique": "רשימת כותרות מקושרים ייחודיות.",
        "apihelp-query+alllinks-example-unique-generator": "קבלת כל הכותרות המקושרות, וסימון החסרות.",
        "apihelp-query+alllinks-example-generator": "קבלת דפים שמכילים את הקישורים.",
        "apihelp-query+allmessages-description": "החזרת הודעות מהאתר הזה.",
+       "apihelp-query+allmessages-param-messages": "אילו הודעות לפלוט. כתיבת <kbd>*</kbd> (בררת מחדל) תפלוט את כל ההודעות.",
        "apihelp-query+allmessages-param-prop": "אלו מאפיינים לקבל.",
+       "apihelp-query+allmessages-param-enableparser": "יש להגדיר כדי להפעיל את המפענח, יעשה קדם־עיבוד לקוד ויקי של ההודעה (יחליף מילות קסם, יטפל בתבניות, וכו').",
        "apihelp-query+allmessages-param-nocontent": "אם זה מוגדר, לא לכלול את תוכן ההודעות בפלט.",
+       "apihelp-query+allmessages-param-includelocal": "לכלול גם הודעות מקומיות, כלומר הודעות שאינן קיימות בתכנה, אבל כן קיימות בתור דף מדיה־ויקי.\nזה רושם את כל דפי MediaWiki: כך שזה ירשום גם דפים שאינם באמת הודעות, כגון [[MediaWiki:Common.js|Common.js]].",
        "apihelp-query+allmessages-param-args": "ארגומנטים שיוחלפו לתוך ההודעה.",
        "apihelp-query+allmessages-param-filter": "החזרה רק של הודעות עם שמות שמכילים את המחרוזת הזאת.",
        "apihelp-query+allmessages-param-customised": "להחזיר רק הודעות במצב ההתאמה הזה.",
        "apihelp-query+allmessages-param-lang": "החזרת הודעת בשפה הזאת.",
        "apihelp-query+allmessages-param-from": "החזרת הודעת החל מההודעה הזאת.",
        "apihelp-query+allmessages-param-to": "החזרת הודעות עד ההודעה הזאת.",
+       "apihelp-query+allmessages-param-title": "שם דף לשימוש בתור הֶקשר בעת ענוח הודעה (עבור האפשרות $1enableparser).",
        "apihelp-query+allmessages-param-prefix": "החזרת הודעת עם התחילית הזאת.",
+       "apihelp-query+allmessages-example-ipb": "להציג הודעות שמתחילות ב־<kbd dir=\"ltr\">ipb-</kbd>.",
+       "apihelp-query+allmessages-example-de": "להציג את ההודעות <kbd>august</kbd> ו־<kbd>mainpage</kbd> בגרמנית.",
        "apihelp-query+allpages-description": "למנות את כל הדפים לפי הסדר במרחב שם נתון.",
-       "apihelp-query+allpages-param-from": "×\9e×\90×\99×\96×\95 ×\9b×\95תרת ×\94×\93×£ ×\9c×\94ת×\97×\99×\9c ×\90ת ×\94×\9e× ×\99×\99×\94.",
+       "apihelp-query+allpages-param-from": "×\9e×\90×\99×\96×\94 ×©×\9d ×\93×£ ×\9c×\94ת×\97×\99×\9c ×\9c×\9e× ×\95ת.",
        "apihelp-query+allpages-param-to": "כותרת הדף שבו תסתיים המנייה.",
        "apihelp-query+allpages-param-prefix": "חיפוש כל שמות הדפים שמתחילים בערך הזה.",
        "apihelp-query+allpages-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+allpages-param-minsize": "להגביל לדפים עם מספר כזה לפחות של בתים.",
        "apihelp-query+allpages-param-maxsize": "להגביל לדפים שיש בהם לכל היותר מספר כזה של בתים.",
        "apihelp-query+allpages-param-prtype": "להגביל רק לדפים מוגנים.",
+       "apihelp-query+allpages-param-prlevel": "לסנו הגנות לפי רמת ההגנה (חייב לשמש עם $1prtype= parameter).",
+       "apihelp-query+allpages-param-prfiltercascade": "לסנן הגנות לפי דירוגיות (לא תקף כאשר $1prtype אינו מוגדר).",
        "apihelp-query+allpages-param-limit": "כמה דפים להחזיר בסך הכול.",
        "apihelp-query+allpages-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+allpages-param-filterlanglinks": "סינון על סמך קיום קישורים לשוניים בדף. יש לשים לב לכך שזה אולי לא יתייחס לקישורים לשוניים שנוספו על־ידי הרחבות.",
+       "apihelp-query+allpages-param-prexpiry": "לפי איזו תפוגת הגנה לסנן את הדף הזה:\n;indefinite:לקבל רק דפים מוגנית לצמיתות.\n;definite:לקבל רק דפים עם תפוגת הגנה מוגדרת.\n;all:לקבל דפים עם תפוגת הגנה כלשהי.",
        "apihelp-query+allpages-example-B": "להציג רשימה של דפים במתחילים באות <kbd>B</kbd>.",
        "apihelp-query+allpages-example-generator": "להציג מידע על 4 דפים שמתחילים באות <kbd>T</kbd>.",
        "apihelp-query+allpages-example-generator-revisions": "להציג את תוכן של 2 הדפים הראשונים שמתחילים ב־<kbd>Re</kbd> ושאינם דפי הפניה.",
        "apihelp-query+allredirects-param-from": "מאיזו כותרת הפניה להתחיל את מנייה.",
        "apihelp-query+allredirects-param-to": "כותרת ההפניה שהמנייה תיפסק בה.",
        "apihelp-query+allredirects-param-prefix": "חיפוש על דפי היעד שמתחילים בערך הזה.",
+       "apihelp-query+allredirects-param-unique": "להציג רק דפים ייחודיים. לא יכול לשמש עם $1prop=ids|fragment|interwiki.\nבעת שימוש בתור מחולל, נותן דפי יעד במקום דפי מקור.",
+       "apihelp-query+allredirects-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהה הדף של הדף המפנה (לא יכול לשמש עם <var>$1unique</var>).\n;title:הוספת כותרת ההפניה.\n;fragment:הוספת המובאה מההפניה, אם יש (לא יכול לשמש עם <var>$1unique</var>).\n;interwiki:הוספת תחילית הבינוויקי מההפניה, אם יש (לא יכול לשמש עם <var>$1unique</var>).",
        "apihelp-query+allredirects-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+allredirects-param-limit": "כמה פריטים להחזיר בסך הכול.",
        "apihelp-query+allredirects-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+allredirects-example-B": "רשימת דפי יעד, כולל חסרים, עם מזהי הדפים שהם מופיעים בהם, החל מ־<kbd>B</kbd>.",
        "apihelp-query+allredirects-example-unique": "רשימת דפי יעד ייחודיים.",
        "apihelp-query+allredirects-example-unique-generator": "קבלת על דפי היעד, תוך כדי סימון החסרים.",
        "apihelp-query+allredirects-example-generator": "קבלת דפים שמכילים את ההפניות.",
        "apihelp-query+alltransclusions-description": "רשימת כל ההכללות (דפים שמוטבעים באמצעות &#123;&#123;x&#125;&#125;), כולל כאלה שאינם קיימים.",
-       "apihelp-query+alltransclusions-param-from": "×\9e×\90×\99×\96×\95 ×\9b×\95תרת ×\94×\94×\9b×\9c×\9c×\94 ×\9c×\94ת×\97×\99×\9c ×\90ת ×\94×\9e× ×\99×\99×\94.",
+       "apihelp-query+alltransclusions-param-from": "×\9e×\90×\99×\96×\95 ×\9b×\95תרת ×\94×\94×\9b×\9c×\9c×\94 ×\9c×\94ת×\97×\99×\9c ×\9c×\9e× ×\95ת.",
        "apihelp-query+alltransclusions-param-to": "כותרת ההכללה שהמנייה תיפסק בה.",
+       "apihelp-query+alltransclusions-param-prefix": "חיפוש כל הכותרות המוכללות שמתחילות הערך הזה.",
+       "apihelp-query+alltransclusions-param-unique": "להציג רק שמות מוכללים ייחודיים. לא יכול לשמש עם $1prop=ids.\nבעת שימוש בתור מחולל, נותן דפי יעד במקום דפי מקור.",
+       "apihelp-query+alltransclusions-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהי הדף של הדפים המכלילים (לא יכול לשמש עם $1unique).\n;title:הוספת כותרת ההכללה.",
        "apihelp-query+alltransclusions-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+alltransclusions-param-limit": "כמה פריטים להחזיר בסך הכול.",
        "apihelp-query+alltransclusions-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+alltransclusions-example-B": "רשימת כותרות מוכללות, כולל חסרות, עם מזהי הדפים שהן מופיעות בהם, החל מ־<kbd>B</kbd>.",
        "apihelp-query+alltransclusions-example-unique": "רשימת כותרת מוכללות ייחודיות.",
        "apihelp-query+alltransclusions-example-unique-generator": "קבלת כל כל הכותרות המוכללות, תוך כדי סימון החסרות.",
        "apihelp-query+alltransclusions-example-generator": "קבלת דפים שמכילים את ההכללות.",
        "apihelp-query+allusers-description": "למנות את כל המשתמשים הרשומים.",
        "apihelp-query+allusers-param-from": "מאיזה שם משתמש להתחיל למנות.",
        "apihelp-query+allusers-param-to": "באיזה שם משתמש להפסיק למנות.",
+       "apihelp-query+allusers-param-prefix": "חיפוש כל המשתמשים שמתחילים בערך הזה.",
        "apihelp-query+allusers-param-dir": "באיזה כיוון למיין.",
+       "apihelp-query+allusers-param-group": "לכלול רק משתמשים בקבוצות הנתונות.",
+       "apihelp-query+allusers-param-excludegroup": "לא לכלול משתמשים בקבוצות הנתונות.",
+       "apihelp-query+allusers-param-rights": "לכלול רק משתמשים עם ההרשאות הנתונות. לא כולל הרשאות שניתנו בקבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
        "apihelp-query+allusers-param-prop": "אילו פרטי מידע לכלול:\n;blockinfo:הוספת מידע עם החסימה הנוכחית של משתמש.\n;groups:הוספת קבוצות שמשתמש חבר בהן. זה משתמש ביותר משאבי דפדפן ויכול להחזיר פחות תוצאות מהמגבלה.\n;implicitgroups:לרשום את כל הקבוצות שהמשתמש חבר בהן אוטומטית.\n;rights:רשימת הההרשאות שיש למשתמש.\n;editcount:הוספת מניין העריכות של המשתמש .\n;registration:הוספת חותם־הזמן של זמן הרישום של המשתמש (יכול להיות ריק).",
+       "apihelp-query+allusers-param-limit": "כמה שמות משתמש בסך הכול לשנות.",
+       "apihelp-query+allusers-param-witheditsonly": "לרשום רק משתמשים שעשו עריכות.",
+       "apihelp-query+allusers-param-activeusers": "לרשום רק משתמשים שהיו פעילים {{PLURAL:$1|ביום האחרון|ביומיים האחרונים|ב־$1 הימים האחרונים}}.",
+       "apihelp-query+allusers-example-Y": "לרשום משתמשים שמתחילים ב־<kbd>Y</kbd>.",
        "apihelp-query+backlinks-description": "מציאת כל הדפים שמקשרים לדף הנתון.",
        "apihelp-query+backlinks-param-title": "איזו כותרת לחפש. לא ניתן להשתמש בזה יחד עם <var>$1pageid</var>.",
+       "apihelp-query+backlinks-param-pageid": "מזהה דף לחיפוש. לא ניתן להשתמש בזה יחד עם <var>$1title</var>.",
        "apihelp-query+backlinks-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+backlinks-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+backlinks-param-filterredir": "איך לסנן הפניות. אם זה מוגדר ל־<kbd>nonredirects</kbd> כש־<var>$1redirect</var> מופעל, זה חל רק על הרמה השנייה.",
+       "apihelp-query+backlinks-param-limit": "כמה דפים להחזיר בסך הכול. אם <var>$1redirect</var> מופעל, ההגבלה חלה על כל רמה בנפרד (כלומר יכולות להיות מוחזרות עד <span dir=\"ltr\">2 * <var>$1limit</var></span> תוצאות).",
+       "apihelp-query+backlinks-param-redirect": "אם הדף המקשר הוא הפניה, למצוא גם את כל הדפים שמקשרים לאותה ההפניה. ההגבלה המרבית מוקטנת בחצי.",
+       "apihelp-query+backlinks-example-simple": "הצגת קישורים ל־<kbd>Main Page</kbd>.",
+       "apihelp-query+backlinks-example-generator": "קבל מידע על דפים שמקשרים ל־<kbd>Main page<kbd>.",
+       "apihelp-query+blocks-description": "לרשום את כל המשתמשים וכתובות ה־IP שנחסמו.",
        "apihelp-query+blocks-param-start": "מאיזה חותם‏־זמן להתחיל למנות.",
        "apihelp-query+blocks-param-end": "באיזה חותם זמן להפסיק למנות.",
+       "apihelp-query+blocks-param-ids": "רשימת מזהי חסימות לרשום (לא חובה).",
+       "apihelp-query+blocks-param-users": "רשימת משתמשים לחיפוש (לא חובה).",
+       "apihelp-query+blocks-param-ip": "קבלת כל החסימות שחלות על טווח ה־IP או ה־CIDR הזה, כולל חסימות טווח.\nלא יכול לשמש יחד עם <var>$3users</var>. טווחי CIDR רחבים מ־IPv4/$1 או IPv6/$2 אינם מתקבלים.",
+       "apihelp-query+blocks-param-limit": "המספר המרבי של חסימות לרשום.",
        "apihelp-query+blocks-param-prop": "אילו מאפיינים לקבל:\n;id:הוספת מזהה החסימה.\n;user:הוספת שם המשתמש שנחסם.\n;userid:הוספת המזהה של המשמש שנחסם.\n;by:הוספת שם המשתמש שחסם.\n;byid:הוספת מזהה המשתמש שחסם.\n;timestamp:הוספת חותם־הזמן של החסימה.\n;expiry:הוספת חותם־הזמן של תפוגת החסימה.\n;reason:הוספת הסיבה שניתנה לחסימה.\n;range:הוספת טווח כתובות ה־IP שהחסימה משפיעה עליהן.\n;flags:מתייג את ההחרמה (autoblock‏, anononly, וכו'.).",
+       "apihelp-query+blocks-param-show": "להציג רק פריטים שמתאימים לאמות המידה האלו.\nלמשל, כדי לראות רק חסימות ללא לצמיתות על כתובות IP יש להגדיר <kbd>$1show=ip|!temp</kbd>.",
+       "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-categories": "לרשום רק את הקטגוריות האלו. שימושי לבדיקה עם דף מסוים נמצא בקטגוריה מסוימת.",
        "apihelp-query+categories-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+categories-example-simple": "קבלת רשימת קטגוריות שהם <kbd>Albert Einstein</kbd> שייך אליהן.",
+       "apihelp-query+categories-example-generator": "קבלת מידע על כל הקטגוריות שמשמשות בדף <kbd>Albert Einstein</kbd>.",
+       "apihelp-query+categoryinfo-description": "החזרת מידע על הקטגוריות הנתונות.",
+       "apihelp-query+categoryinfo-example-simple": "קבחצ מידע על <kbd>Category:Foo</kbd> ועל <kbd>Category:Bar</kbd>.",
        "apihelp-query+categorymembers-description": "רשימת כל הדפים בקטגוריה נתונה.",
        "apihelp-query+categorymembers-param-title": "איזו קטגוריה למנות (נדרש). חייב לכלול את התחילית <kbd>{{ns:category}}:</kbd>. לא יכול לשמש יחד עם <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "מזהה הדף של הקטגוריה שצריך למנות. לא יכול לשמש יחד עם <var>$1title</var>.",
        "apihelp-query+categorymembers-param-dir": "באיזה כיוון למיין.",
        "apihelp-query+categorymembers-param-start": "מאיזה חותם־זמן להתחיל לרשום. יכול לשמש רק עם <kbd>$1sort=timestamp</kbd>.",
        "apihelp-query+categorymembers-param-end": "באיזה חותם־זמן לסיים לרשום. יכול לשמש רק עם <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-starthexsortkey": "מפתח מיון להתחיל לרשום ממנו, כפי שמוחזר על־ידי <kbd>$1prop=sortkey</kbd. יכול לשמש רק עם <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-endhexsortkey": "מפתח מיון לסיים לרשום ממנו, כפי שמוחזר על־ידי <kbd>$1prop=sortkey</kbd>. יכול לשמש רק עם <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-startsortkeyprefix": "תחילית מפתח מיון להתחיל לרשום ממנה. יכול לשמש רק עם <kbd>$1sort=sortkey</kbd>.  דורס את <var>$1starthexsortkey</var>.",
+       "apihelp-query+categorymembers-param-endsortkeyprefix": "תחילית מפתח מיון שהרשימה תסתיים <strong>לפניה</strong> (לא בה, אם הערך הזה מוגדר, הוא לא ייכלל!). יכול לשמש רק עם $1sort=sortkey. דורס את $1endhexsortkey.",
        "apihelp-query+categorymembers-param-startsortkey": "כדאי להשתמש ב־$1starthexsortkey במקום.",
        "apihelp-query+categorymembers-param-endsortkey": "כדאי להשתמש ב־$1endhexsortkey במקום.",
        "apihelp-query+categorymembers-example-simple": "קבלת עשרת העמודים הראשונים שתחת <kbd>קטגוריה:פיזיקה</kbd>.",
+       "apihelp-query+categorymembers-example-generator": "קבל מידע על הדף עבור 10 הדפים הראשונים ב־<kbd>Category:Physics</kbd>.",
+       "apihelp-query+contributors-description": "קבלת רשימה של תורמים שנכנסו לחשבון ומניין של תורמים אלמוניים לדף.",
+       "apihelp-query+contributors-param-group": "לכלול רק משתמשים בקבוצות הנתונות. לא כולל קבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
+       "apihelp-query+contributors-param-excludegroup": "לא לכלול משתמשים בקבוצות הנתונות. לא כולל קבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
+       "apihelp-query+contributors-param-rights": "לכלול רק משתמשים עם ההרשאות הנתונות. לא כולל הרשאות שניתנו בקבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
+       "apihelp-query+contributors-param-excluderights": "לא לכלול משתמשים עם ההרשאות הנתונות. לא כולל הרשאות שניתנו בקבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
        "apihelp-query+contributors-param-limit": "כמה תורמים להחזיר.",
        "apihelp-query+contributors-example-simple": "הצגת תורמים לדף <kbd>עמוד ראשי</kbd>.",
        "apihelp-query+deletedrevisions-description": "קבלת מידע על גרסה מחוקה.\n\nיכול לשמש במספר דרכים:\n# קבלת גרסאות מחוקות עבור ערכת דפים, על־ידי הגדרת שמות או מזהי דף. ממוין לפי שם וחותם־זמן.\n# קבלת מידע על ערכת גרסאות מחוקות באמצעות הגדרת המזהים שלהם עם revid־ים. ממוין לפי מזהה גרסה.",
-       "apihelp-query+deletedrevisions-param-start": "×\91×\90×\99×\96×\94 ×\97×\95ת×\9dÖ¾×\96×\9e×\9f ×\9c×\94ת×\97×\99×\9c ×\9c×\9e× ×\95ת. ×\9c×\90 ×ª×§×£ ×\91×¢×\99×\91×\95ר רשימת מזהי גרסה.",
+       "apihelp-query+deletedrevisions-param-start": "×\9e×\90×\99×\96×\94 ×\97×\95ת×\9dÖ¾×\96×\9e×\9f ×\9c×\94ת×\97×\99×\9c ×\9c×\9e× ×\95ת. ×\9c×\90 ×ª×§×£ ×\91×¢×\99×\91×\95×\93 רשימת מזהי גרסה.",
        "apihelp-query+deletedrevisions-param-end": "באיזה חותם־זמן להפסיק למנות. לא תקף בעת עיבוד רשימת מזהי גרסה.",
        "apihelp-query+deletedrevisions-param-tag": "לרשום רק גרסאות עם התג הזה.",
        "apihelp-query+deletedrevisions-param-user": "לרשום רק גרסאות מאת המשתמש הזה.",
        "apihelp-query+deletedrevisions-param-excludeuser": "לא לרשום גרסאות מאת המשתמש הזה.",
+       "apihelp-query+deletedrevisions-example-titles": "רשימת גרסאות מחוקות של הדפים <kbd>Main Page</kbd> ו־<kbd>Talk:Main Page</kbd>, עם תוכן.",
+       "apihelp-query+deletedrevisions-example-revids": "קבלת מידע לגרסה המחוקה <kbd>123456</kbd>.",
        "apihelp-query+deletedrevs-description": "רשימת גרסאות מחוקות.\n\nפועל בשלושה אופנים:\n# רשימת גרסאות מחוקות לשמות שניתנו, ממוינות לפי חותם־זמן.\n# רשימת תרומות מחוקות של המשתמש שניתן, ממוינות לפי חותם־זמן (בלי לציין שמות).\n# רשימת כל הגרסאות המחוקות במרחב השם שניתן, ממוינות לפי שם וחותם־זמן (בלי לציין שמות, בלי להגדיר $1user).\n\nפרמטרים מסוימים חלים רק על חלק מהאופנים ולא תקפים באחרים.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|מצב|מצבים}}: $2",
        "apihelp-query+deletedrevs-param-start": "באיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+deletedrevs-param-excludeuser": "לא לרשום גרסאות מאת המשתמש הזה.",
        "apihelp-query+deletedrevs-param-namespace": "לרשום רק דפים במרחב השם הזה.",
        "apihelp-query+deletedrevs-param-limit": "המספר המרבי של הגרסאות שיירשם.",
+       "apihelp-query+deletedrevs-param-prop": "אילו מאפיינים לקבל:\n;revid:הוספת מזהה הגרסה של הגרסה המחוקה.\n;parentid:הוספת מזהה הגרסה של הגרסה הקודמת של הדף.\n;user:הוספת המשתמש שעשה את הגרסה.\n;userid:הוספת מזהה המשתמש שעשה את הגרסה.\n;comment:הוספת ההערה על הגרסה.\n;parsedcomment:הוספת ההערה המפוענחת על הגרסה.\n;minor:מתייג אם הגרסה משנית.\n;len:מוסיף את האורך (בבתים) של הגרסה.\n;sha1:הוספת ה־SHA-1 (בסיס 16) של הגרסה.\n;content:הוספת התוכן של הגרסה.\n;token:<span class=\"apihelp-deprecated\">מיושן.</span> נותן אסימון עריכה.\n;tags:תגים עבור הגרסה.",
+       "apihelp-query+deletedrevs-example-mode1": "רשימת כל הגרסאות המחוקות של הדפים <kbd>Main Page</kbd> ו־<kbd>Talk:Main Page</kbd>, עם תוכן (mode 1).",
+       "apihelp-query+deletedrevs-example-mode2": "רשימת 50 העריכות המחוקות האחרונות של <kbd>Bob</kbd>‏ (mode 2).",
+       "apihelp-query+deletedrevs-example-mode3-main": "רשימת 50 הגרסאות המחוקות הראשונות במרחב הראשי (mode 3).",
+       "apihelp-query+deletedrevs-example-mode3-talk": "רשימת 50 הדפים המחוקים הראשונים במרחב השם {{ns:talk}}‏ (mode 3).",
        "apihelp-query+disabled-description": "יחידת ה־query הזאת כובתה.",
+       "apihelp-query+duplicatefiles-description": "רשימת כל הקבצים שהם כפולים של קבצים נתונים לפי ערכי הגיבוב.",
        "apihelp-query+duplicatefiles-param-limit": "כמה קבצים כפולים להחזיר.",
        "apihelp-query+duplicatefiles-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+duplicatefiles-param-localonly": "חיפוש אחר קבצים במאגר המקומי בלבד.",
        "apihelp-query+duplicatefiles-example-simple": "חיפוש אחר כפילויות של [[:קובץ:Albert Einstein Head.jpg]].",
        "apihelp-query+duplicatefiles-example-generated": "חיפוש אחר כפילויות בין כל הקבצים.",
+       "apihelp-query+embeddedin-description": "חיפוש כל הדפים שמטמיעים (מכלילים) את הכותרת הנתונה.",
        "apihelp-query+embeddedin-param-title": "איזו כותרת לחפש. לא ניתן להשתמש בזה יחד עם $1pageid.",
+       "apihelp-query+embeddedin-param-pageid": "מזהה דף לחיפוש. לא יכול לשמש יחד עם $1title.",
        "apihelp-query+embeddedin-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+embeddedin-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+embeddedin-param-filterredir": "איך לסנן עבור הפניות.",
        "apihelp-query+embeddedin-param-limit": "כמה דפים להחזיר בסך הכול.",
+       "apihelp-query+embeddedin-example-simple": "הצגת דפים שמכלילים את <kbd>Template:Stub</kbd>.",
+       "apihelp-query+embeddedin-example-generator": "קבלת מידע על דפים שמכלילים את <kbd>Template:Stub</kbd>.",
+       "apihelp-query+extlinks-description": "החזרת כל ה־URL־ים החיצוניים (לא בינוויקי) מהדפים הנתונים.",
        "apihelp-query+extlinks-param-limit": "כמה קישורים להחזיר.",
+       "apihelp-query+extlinks-param-protocol": "הפרוטוקול של ה־URL. אם זה ריק, ו־<var>$1query</var> מוגדר, הפרוטוקול הוא <kbd>http</kbd>. יש להשאיר את זה ואת <var>$1query</var> ריק כדי לרשום את כל הקישורים החיצוניים.",
+       "apihelp-query+extlinks-param-query": "מחרוזת חיפוש ללא פרוטוקול. שימושי לבדיקה האם דף מסוים מכיל url חיצוני מסוים.",
+       "apihelp-query+extlinks-param-expandurl": "הרחבת URL־ים בעלי פרוטוקול יחסי בפרוטוקול קנוני.",
+       "apihelp-query+extlinks-example-simple": "קבלת רשימת קישורים חיצוניים ב־<kbd>Main Page<kbd>.",
        "apihelp-query+exturlusage-description": "למנות דפים שמכילים URL נתון.",
+       "apihelp-query+exturlusage-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהה הדף.\n;title:הוספת השם ומזהה מרחב השם של הדף.\n;url:הוספת ה־URL שמשמש בדף.",
+       "apihelp-query+exturlusage-param-protocol": "הפרוטוקול של ה־URL. אם זה ריק, ו־<var>$1query</var> מוגדר, הפרוטוקול הוא <kbd>http</kbd>. יש להשאיר את זה ואת <var>$1query</var> ריק כדי לרשום את כל הקישורים החיצוניים.",
+       "apihelp-query+exturlusage-param-query": "מחרוזת חיפוש ללא פרוטוקל. ר' [[Special:LinkSearch]]. יש להשאיר את זה ריק כדי לרשום את כל הקישורים החיצוניים.",
        "apihelp-query+exturlusage-param-namespace": "איזה מרחב שם למנות.",
+       "apihelp-query+exturlusage-param-limit": "כמה דפים להחזיר.",
+       "apihelp-query+exturlusage-param-expandurl": "הרחבת URL־ים בעלי פרוטוקול יחסי בפרוטוקול קנוני.",
+       "apihelp-query+exturlusage-example-simple": "הצגת דפים שמקשרים ל־<kbd>http://www.mediawiki.org</kbd>.",
        "apihelp-query+filearchive-description": "למנות את כל הקבצים המחוקים לפי הסדר.",
        "apihelp-query+filearchive-param-from": "מאיזו כותרת תמונה להתחיל למנות.",
        "apihelp-query+filearchive-param-to": "באיזו כותרת תמונה להפסיק למנות.",
+       "apihelp-query+filearchive-param-prefix": "חיפוש כל שמות התמונות שמתחילים בערך הזה.",
+       "apihelp-query+filearchive-param-limit": "כמה תמונות להחזיר בסך הכול.",
        "apihelp-query+filearchive-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+filearchive-param-sha1": "גיבוב SHA1 של תמונה. דורס את $1sha1base36.",
+       "apihelp-query+filearchive-param-sha1base36": "גיבוב SHA1 של תמונה בבסיס 36 (משמש במדיה־ויקי).",
+       "apihelp-query+filearchive-param-prop": "איזה מידע על תמונה לקבל:\n;sha1:הוספת גיבוב SHA-1 עבור התמונה.\n;timestamp:הוספת חותם־זמן לגרסה המועלית.\n;user:הוספת המשתמש שהעלה על גרסת התמונה.\n;size:הוספת הגודל של התמונה בבתים והגובה, הרוחב ומניין הדפים (אם מתאים).\n;dimensions:כינוי ל־size.\n;description:הוספת תיאור לגרסת התמונה.\n;parseddescription:פענוח התיאור של הגרסה.\n;mime:הוספת ה־MIME של התמונה.\n;mediatype:הוספת סוג המדיה של התמונה.\n;metadata:רשימת מטא־נתוני Exif עבור גרסת הקובץ.\n;bitdepth:הוספת עומק הביטים של הגרסה.\n;archivename:הוספת שם הקובץ של גרסה מאורכבת עבור גרסאות שאינן האחרונה.",
+       "apihelp-query+filearchive-example-simple": "הצגת רשימת כל הקבצים המחוקים.",
+       "apihelp-query+filerepoinfo-description": "החזרת מידע מטא על מאגרי תמונות שמוגדרים בוויקי.",
+       "apihelp-query+filerepoinfo-param-prop": "אילו מאפייני מאגר לקבל (יכולים להיות יותר מזה באתרי ויקי אחדים):\n;apiurl:URL ל־API של המאגר – מועיל לקבלת מידע על התמונה מהמארח.\n;name:המפתח של המאגר – משמש למשל בערכים המוחזרים מ־<var>[[mw:Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> ומ־[[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:שם קריא של אתר הוויקי של המאגר.\n;rooturl:URL שורש לנתיבי תמונות.\n;local:האם המאגר הוא מקומי או לא.",
+       "apihelp-query+filerepoinfo-example-simple": "קבלת מידע על מאגרי קבצים.",
+       "apihelp-query+fileusage-description": "מציאת כל הדפים שמשתמשים בקבצים הנתונים.",
+       "apihelp-query+fileusage-param-prop": "אילו מאפיינים לקבל:\n;pageid:מזהה הדף של כל דף.\n;title:השם של כל דף.\n;redirect:דגל אם הדף הוא הפניה.",
        "apihelp-query+fileusage-param-namespace": "לכלול רק דפים במרחבי השם האלה.",
        "apihelp-query+fileusage-param-limit": "כמה להחזיר.",
        "apihelp-query+fileusage-param-show": "לחפש רק פריטים שמתאימים לאמות המידה הבאות:\n;redirect:להציג רק הפניות.\n;!redirect:לא להציג הפניות.",
+       "apihelp-query+fileusage-example-simple": "קבלת רשימת דפים שמשתמשים ב־[[:File:Example.jpg]].",
+       "apihelp-query+fileusage-example-generator": "קבלת מידע על דפים שמשתמשים ב־[[:File:Example.jpg]].",
        "apihelp-query+imageinfo-description": "החזרת מידע על קובץ והיסטורייה העלאה.",
        "apihelp-query+imageinfo-param-prop": "איזה מידע על הקובץ לקבל:",
        "apihelp-query+imageinfo-paramvalue-prop-timestamp": "הוספת חותם־זמן לגרסה שהועלתה.",
        "apihelp-query+imageinfo-paramvalue-prop-userid": "הוספת מזהה המשתמש שהעלה כל גרסה של קובץ.",
        "apihelp-query+imageinfo-paramvalue-prop-comment": "תגובה על הגרסה.",
        "apihelp-query+imageinfo-paramvalue-prop-parsedcomment": "פענוח ההערה על גרסה.",
-       "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "×\94×\95ספת ×©כותרת הקנונית של הקובץ.",
+       "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "×\94×\95ספת ×\94כותרת הקנונית של הקובץ.",
        "apihelp-query+imageinfo-paramvalue-prop-url": "מתן URL לקובץ ולדף התיאור.",
        "apihelp-query+imageinfo-paramvalue-prop-size": "הוספת הגודל של הקובץ בבתים והגובה, הרוחב ומניין הדפים (אם זה מתאים).",
-       "apihelp-query+imageinfo-paramvalue-prop-dimensions": "×\9b×\99×\95× י ל־size.",
+       "apihelp-query+imageinfo-paramvalue-prop-dimensions": "×\9b×\99× ×\95י ל־size.",
        "apihelp-query+imageinfo-paramvalue-prop-sha1": "הוספת גיבוב SHA-1 עבור הקובץ.",
        "apihelp-query+imageinfo-paramvalue-prop-mime": "הוספת סוג ה־MIME של הקובץ.",
        "apihelp-query+imageinfo-paramvalue-prop-thumbmime": "הוספת סוג ה־MIME של התמונה הממוזערת (נדרש url והפרמטר $1urlwidth).",
        "apihelp-query+imageinfo-param-limit": "כמה גרסאות של קובץ לכל קובץ.",
        "apihelp-query+imageinfo-param-start": "מאיז חותם־זמן להתחיל רשימה.",
        "apihelp-query+imageinfo-param-end": "באיזה חותם־זמן לסיים את הרשימה.",
+       "apihelp-query+imageinfo-param-urlwidth": "אם מוגדר $2prop=url, יוחזר URL לתמונה שגודלה הותאם לרוחב הזה.\nמסיבות של ביצועים, אם האפשרות הזאת משמשת, לא יוחזרו יותר מ־$1 תמונות.",
        "apihelp-query+imageinfo-param-urlheight": "דומה ל־$1urlwidth.",
+       "apihelp-query+imageinfo-param-metadataversion": "גרסת המטא־נתונים לשימוש. אם מוגדר <kbd>latest</kbd>, להשתמש בגרסה החדשה ביותר. בררת המחדל היא <kbd>1</kbd> לצורך תאימות אחורה.",
        "apihelp-query+imageinfo-param-extmetadatalanguage": "באיזו שפה לאחזר את המטא־נתונים. זה משפיע על אילו תרגומים לאחזר, האם יש כמה, וגם איך דברים כמו מספרים וערכים שונים מעוצבים.",
+       "apihelp-query+imageinfo-param-extmetadatamultilang": "אם תרגומים של המאפיין extmetadata זמינים, לאחזר את כולם.",
+       "apihelp-query+imageinfo-param-extmetadatafilter": "אם זה מוגדר ולא ריק, רק המפתחות האלה יוחזרו עבור $1prop=extmetadata.",
+       "apihelp-query+imageinfo-param-urlparam": "מחרוזת פרמטר ייחודית למטפל. למשל, PDF־ים יכולים להשתמש ב־<kbd>page15-100px</kbd>.‏ <var>$1urlwidth</var> צריך לשמש ולהיות עקבי עם <var>$1urlparam</var>.",
        "apihelp-query+imageinfo-param-localonly": "חיפוש אחר קבצים במאגר המקומי בלבד.",
-       "apihelp-query+imageinfo-example-simple": "קבלת פרטים על הגרסה הנוכחית של [[:קובץ:Albert Einstein Head.jpg]].",
+       "apihelp-query+imageinfo-example-simple": "קבלת מידע על הגרסה הנוכחית של [[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+imageinfo-example-dated": "אחזור מידע על גרסאות של [[:File:Test.jpg]] מ־2008 ואחרי‏־כן.",
+       "apihelp-query+images-description": "להחזיר את כל הקבצים שמכילים הדפים הנתונים.",
        "apihelp-query+images-param-limit": "כמה קבצים להחזיר.",
+       "apihelp-query+images-param-images": "לרשום רק את הקבצים האלה. שימוש לבדיקת האם לדף מסוים יש קובץ מסוים.",
        "apihelp-query+images-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+images-example-simple": "קבלת רשימת קבצים שמשמשים ב־[[Main Page]].",
+       "apihelp-query+images-example-generator": "קבלת מידע על כל הקבצים שמשמשים ב־[[Main Page]].",
+       "apihelp-query+imageusage-description": "מציאת כל הדפים שמתמשים בשם התמונה הנתונה.",
        "apihelp-query+imageusage-param-title": "איזו כותרת לחפש. לא ניתן להשתמש בזה יחד עם $1pageid.",
-       "apihelp-query+imageusage-param-namespace": "איזה מרחב שם לרשום.",
+       "apihelp-query+imageusage-param-pageid": "מזהה דף לחיפוש. לא יכול לשמש יחד עם $1title.",
+       "apihelp-query+imageusage-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+imageusage-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+imageusage-param-filterredir": "איך לסנן הפניות. אם זה מוגדר ל־nonredirects כש־$1redirect מופעל, זה חל רק על הרמה השנייה.",
+       "apihelp-query+imageusage-param-limit": "כמה דפים להחזיר בסך הכול. אם <var>$1redirect</var> מופעל, ההגבלה חלה על כל רמה בנפרד (כלומר יכולות להיות מוחזרות עד <span dir=\"ltr\">2 * <var>$1limit</var></span> תוצאות).",
+       "apihelp-query+imageusage-param-redirect": "אם הדף המקשר הוא הפניה, למצוא גם את כל הדפים שמקשרים לאותה ההפניה. ההגבלה המרבית מוקטנת בחצי.",
+       "apihelp-query+imageusage-example-simple": "הצגת דפים שמשתמשים ב־[[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+imageusage-example-generator": "קבלת פרטים על דפים שמשתמשים ב־[[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+info-description": "קבלת מידע בסיסי על הדף.",
+       "apihelp-query+info-param-prop": "אילו מאפיינים נוספים לקבל:",
+       "apihelp-query+info-paramvalue-prop-protection": "לרשום את רמת ההגנה של כל דף.",
+       "apihelp-query+info-paramvalue-prop-talkid": "מזהה הדף של דף השיחה עבור כל דף שאינו דף שיחה.",
+       "apihelp-query+info-paramvalue-prop-watched": "לרשום את מצב המעקב של כל דף.",
        "apihelp-query+info-paramvalue-prop-watchers": "מספר העוקבים, אם קיבלת הרשאה.",
        "apihelp-query+info-paramvalue-prop-notificationtimestamp": "חותם־זמן של הודעת רשימת מעקב של כל דף.",
+       "apihelp-query+info-paramvalue-prop-subjectid": "מזהה הדף של הדף העיקרי של כל דף שיחה.",
+       "apihelp-query+info-paramvalue-prop-url": "נותן URL מלא, URL לעריכה ו־URL קנוני לכל דף.",
        "apihelp-query+info-paramvalue-prop-readable": "האם המשתמש יכול להציג דף זה.",
+       "apihelp-query+info-paramvalue-prop-preload": "נותן את הטקסט שמוחזר על־ידי EditFormPreloadText.",
+       "apihelp-query+info-paramvalue-prop-displaytitle": "נותן את הדרך שבה שם הדף באמת מוצג.",
+       "apihelp-query+info-param-testactions": "בדיקה האם המשתמש הנוכחי יכול לבצע פעולות מסוימות על הדף.",
+       "apihelp-query+info-param-token": "להשתמש ב־[[Special:ApiHelp/query+tokens|action=query&meta=tokens]] במקום.",
+       "apihelp-query+info-example-simple": "קבלת מידע על הדף <kbd>Main Page</kbd>",
+       "apihelp-query+info-example-protection": "קבלת מידע כללי ומידע על הגנה של הדף <kbd>Main Page</kbd>.",
+       "apihelp-query+iwbacklinks-description": "מציאות כל הדפים שמקשרים לקישור הבינוויקי הנתון.\n\nיכול לשמש למציאת כל הקישורים עם התחילית, או כל הקישורים לכותרת (עם תחילית נתונה). אי־שימוש בשום פרמטר אומר \"כל קישורי בינוויקי\".",
+       "apihelp-query+iwbacklinks-param-prefix": "תחילית לבינוויקי.",
        "apihelp-query+iwbacklinks-param-title": "איזה קישור בינוויקי לחפש. צריך להשתמש בזה יחד עם <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "כמה דפים להחזיר בסך הכול.",
+       "apihelp-query+iwbacklinks-param-prop": "אילו מאפיינים לקבל:\n;iwprefix:הוספת התחילית של הבינוויקי.\n;iwtitle:הוספת הכותרת של הבינוויקי.",
        "apihelp-query+iwbacklinks-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+iwbacklinks-example-simple": "קבלת דפים שמקשרים ל־[[wikibooks:Test]].",
+       "apihelp-query+iwbacklinks-example-generator": "קבלת מידע על דפים שמקשרים ל־[[wikibooks:Test]].",
+       "apihelp-query+iwlinks-description": "החזרת כל קישורי הבינוויקי מהדפים הנתונים.",
+       "apihelp-query+iwlinks-param-url": "האם לקבל את ה־URL המלא (לא יכול לשמש עם $1prop).",
+       "apihelp-query+iwlinks-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קישור בין־לשוני:\n;url:הוספת ה־URL המלא.",
+       "apihelp-query+iwlinks-param-limit": "כמה קישורי בינוויקי להחזיר.",
+       "apihelp-query+iwlinks-param-prefix": "להחזיר רק קישורי בינוויקי עם התחילית הזאת.",
        "apihelp-query+iwlinks-param-title": "איזה קישור בינוויקי לחפש. צריך להשתמש בזה יחד עם <var>$1prefix</var>.",
        "apihelp-query+iwlinks-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+iwlinks-example-simple": "קבלת קישורי בינוויקי מהדף <kbd>Main Page</kbd>.",
+       "apihelp-query+langbacklinks-description": "מציאת כל הדפים שמקשרים לקישור השפה הנתון.\n\nיכול לשמש למציאת כל הקישורים עם קוד שפה, או כל הקישורים לכותרת (עם שפה נתונה). אי־שימוש בשום פרמטר פירושו \"כל קישורי שפה\".\n\nנא לשים לב לכך שזה עשוי לא להתייחס לקישורי שפה שמוסיפות הרחבות.",
+       "apihelp-query+langbacklinks-param-lang": "שפה עבור קישור שפה.",
+       "apihelp-query+langbacklinks-param-title": "איזה קישור שפה לחפש. חייב לשמש עם $1lang.",
        "apihelp-query+langbacklinks-param-limit": "כמה דפים להחזיר בסך הכול.",
+       "apihelp-query+langbacklinks-param-prop": "אילו מאפיינים לקבל:\n;lllang:הוספת קוד השפה של קישור השפה.\n;lltitle:הוספת הכותרת של קישור השפה.",
        "apihelp-query+langbacklinks-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+langbacklinks-example-simple": "קבלת דפים שמקשרים ל־[[:fr:Test]].",
+       "apihelp-query+langbacklinks-example-generator": "קבלת מידע על דפים שמקשרים ל־[[:fr:Test]].",
+       "apihelp-query+langlinks-description": "החזרת כל הקישורים הבין־לשוניים מהדפים הנתונים.",
+       "apihelp-query+langlinks-param-limit": "כמה קישורי שפה להחזיר.",
+       "apihelp-query+langlinks-param-url": "האם לקבל את ה־URL המלא (לא יכול לשמש עם <var>$1prop</var>).",
+       "apihelp-query+langlinks-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קישור בין־לשוני:\n;url:הוספת ה־URL המלא.\n;langname:הוספת שם השפה המתורגם (עם המאמץ הטוב ביותר). יש להשתמש ב־<var>$1inlanguagecode</var> כדי לשלוט בשפה.\n;autonym:הוספת השם הילידי של השפה.",
+       "apihelp-query+langlinks-param-lang": "להחזיר רק קישורי שפה עם קוד השפה הזה.",
        "apihelp-query+langlinks-param-title": "קישור לחיפוש. חובה להשתמש עם <var>$1lang</var>.",
        "apihelp-query+langlinks-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+langlinks-param-inlanguagecode": "קוד שפה ששמות שפות מתורגמות.",
+       "apihelp-query+langlinks-example-simple": "קבלת קישורים בין־לשוניים מהדף <kbd>Main Page</kbd>.",
        "apihelp-query+links-description": "החזרת כל הקישורים מהדפים שצוינו.",
+       "apihelp-query+links-param-namespace": "להציג קישורים רק במרחבי השם האלה.",
        "apihelp-query+links-param-limit": "כמה קישורים להחזיר.",
+       "apihelp-query+links-param-titles": "לרשום רק קישורים לכותרות האלו. שימושי לבדיקה האם דף מסוים מקשר לכותרת מסוימת.",
        "apihelp-query+links-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+links-example-simple": "קבלת קישורים מהדף <kbd>Main Page</kbd>",
+       "apihelp-query+links-example-generator": "קבלת מידע על דפי הקישור בדף <kbd>Main Page</kbd>.",
+       "apihelp-query+links-example-namespaces": "קבלת קישורים מהדף <kbd>Main Page</kbd> במרחבי השם {{ns:user}} ו־{{ns:template}}.",
        "apihelp-query+linkshere-description": "מציאת כל הדפים שמקשרים לדפים הנתונים.",
+       "apihelp-query+linkshere-param-prop": "אילו מאפיינים לקבל:\n;pageid:מזהה הדף של כל דף.\n;title:השם של כל דף.\n;redirect:דגל אם הדף הוא הפניה.",
        "apihelp-query+linkshere-param-namespace": "לכלול רק דפים במרחבי השם האלה.",
        "apihelp-query+linkshere-param-limit": "כמה להחזיר.",
        "apihelp-query+linkshere-param-show": "הצגת פריטים שתואמים את הדרישות הללו בלבד:\n;redirect:הצגת הפניות בלבד.\n;!redirect:הצגת קישורים שאינם הפניות בלבד.",
+       "apihelp-query+linkshere-example-simple": "קבלת רשימת דפים שמקשרים ל־[[Main Page]].",
+       "apihelp-query+linkshere-example-generator": "קבל מידע על דפים שמקשרים ל־[[Main Page]].",
        "apihelp-query+logevents-description": "קבלת אירועים מהרישומים.",
-       "apihelp-query+logevents-param-start": "באיזה חותם־זמן להתחיל למנות.",
+       "apihelp-query+logevents-param-prop": "אילו מאפיינים לקבל:\n;ids:הוספת המזהה של אירוע היומן.\n;title:הוספת שם הדף של אירוע היומן.\n;type:הוספת הסוג של אירוע היומן.\n;user:הוספת המשתמש האחראי על אירוע היומן.\n;userid:הוספת מזהה המשתמש האחראי על אירוע היומן.\n;timestamp:הוספת חותם־הזמן עבור האירוע.\n;comment:הוספת ההערה של האירוע.\n;parsedcomment:הוספת ההערה המפוענחת של האירוע.\n;details:הוספת פרטים נוספים על האירוע.\n;tags:רשימת התגים של האירוע.",
+       "apihelp-query+logevents-param-type": "סינון עיולי יומן רק לסוג הזה.",
+       "apihelp-query+logevents-param-action": "סינון פעולות יומן רק לפעולה הזאת. דורס את <var>$1type</var>. פעולות עם תו־כולים כגון <kbd>action/*</kbd> מאפשרות לתת כל מחרוזת במקום הכוכבית.",
+       "apihelp-query+logevents-param-start": "מאיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+logevents-param-end": "באיזה חותם זמן להפסיק לרשום.",
-       "apihelp-query+pageswithprop-param-propname": "מאפיין דף שעבורו יימנו דפים.",
+       "apihelp-query+logevents-param-user": "לסנן את העיולים שעשה המשתמש הנתון.",
+       "apihelp-query+logevents-param-title": "סינון עיולים רק לכאלה שמתייחסים לדף.",
+       "apihelp-query+logevents-param-namespace": "סינון עיולים רק לכאלה במרחב השם הנתון.",
+       "apihelp-query+logevents-param-prefix": "סינון עיולים לכאלה שמתחילים עם התחילית הזאת.",
+       "apihelp-query+logevents-param-tag": "לרשום רק אירועים שמתויגם בתג הזה.",
+       "apihelp-query+logevents-param-limit": "כמה עיולי אירועים להחזיר בסך הכול.",
+       "apihelp-query+logevents-example-simple": "רשימת אירועי יומן אחרונים.",
+       "apihelp-query+pagepropnames-description": "רשימת כל שמות המאפיינים שמשמשים בוויקי.",
+       "apihelp-query+pagepropnames-param-limit": "המספר המרבי של השמות להחזיר.",
+       "apihelp-query+pagepropnames-example-simple": "לתת את 10 שמות המאפיינים הראשונים.",
+       "apihelp-query+pageprops-description": "קבלת מאפיינים שונים בתוכן הדף.",
+       "apihelp-query+pageprops-param-prop": "לרשום רק את המאפיינים האלה. שימושי לבדיקה האם דף מסוים משתמש במאפיין דף מסוים.",
+       "apihelp-query+pageprops-example-simple": "קבלת מאפיינים עבור הדפים <kbd>Main Page</kbd> ו־<kbd>MediaWiki</kbd>.",
+       "apihelp-query+pageswithprop-description": "לרשום את כל הדפים שמשתמשים במאפיין דף נתון.",
+       "apihelp-query+pageswithprop-param-propname": "מאפיין דף שעבורו למנות דפים.",
+       "apihelp-query+pageswithprop-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהה הדף.\n;title:הוספת השם ומזהה מרחב השם של הדף.\n;url:הוספת הערך של מאפיין הדף.",
        "apihelp-query+pageswithprop-param-limit": "מספר הדפים המרבי שיוחזר.",
        "apihelp-query+pageswithprop-param-dir": "באיזה כיוון לסדר.",
        "apihelp-query+pageswithprop-example-simple": "הצגת עשרת הדפים הראשונים שעושים שימוש ב־<code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+pageswithprop-example-generator": "קבלת מידע נוסף על עשרת הדפים הראשונים המשתמשים ב־<code>_&#95;NOTOC_&#95;</code>.",
+       "apihelp-query+prefixsearch-description": "ביצוע חיפוש תחילית של כותרות דפים.",
        "apihelp-query+prefixsearch-param-search": "מחרוזת לחיפוש.",
        "apihelp-query+prefixsearch-param-namespace": "שמות מתחם לחיפוש.",
        "apihelp-query+prefixsearch-param-limit": "מספר התוצאות המרבי להחזרה.",
        "apihelp-query+prefixsearch-param-offset": "מספר תוצאות לדילוג.",
+       "apihelp-query+prefixsearch-example-simple": "חיפוש שםות דפים שמתחילים ב־<kbd>meaning</kbd>.",
+       "apihelp-query+protectedtitles-description": "לרשום את כל הכותרות שמוגנות מפני יצירה.",
+       "apihelp-query+protectedtitles-param-namespace": "לרשום רק כותרות במרחבי השם האלה.",
+       "apihelp-query+protectedtitles-param-level": "לרשום רק שמות עם רמת ההגנה הזאת.",
        "apihelp-query+protectedtitles-param-limit": "כמה דפים להחזיר בסך הכול.",
        "apihelp-query+protectedtitles-param-start": "להתחיל לרשום בחותם־זמן ההגנה הזה.",
        "apihelp-query+protectedtitles-param-end": "באיזה חותם־זמן הגנה לסיים את הרשימה.",
+       "apihelp-query+protectedtitles-param-prop": "אילו מאפיינים לקבל:\n;timestamp:הוספת חותם־הזמן של הוספת ההגנה.\n;user:הוספת המשתמש שהוסיף את ההגנה.\n;userid:הוספת מזהה המשתמש שהוסיף את ההגנה.\n;comment:הוספת ההערה עבור ההגנה.\n;parsedcomment:הוספת ההערה המפוענחת עבור ההגנה.\n;expiry:הוספת חותם־הזמן של הסרת ההגנה.\n;level:הוספת רמת ההגנה.",
+       "apihelp-query+protectedtitles-example-simple": "רשימת כותרות מוגנות.",
+       "apihelp-query+protectedtitles-example-generator": "חיפוש קישורים לכותרות מוגנות במרחב הראשי.",
+       "apihelp-query+querypage-description": "קבלת רשימה שמסופקת על־ידי דף מיוחד מבוסס־QueryPage.",
+       "apihelp-query+querypage-param-page": "שם הדף המיוחד. לתשומת לבך, זה תלוי־רישיות.",
        "apihelp-query+querypage-param-limit": "מספר תוצאות להחזרה.",
-       "apihelp-query+recentchanges-description": "מניית השינויים האחרונים.",
-       "apihelp-query+recentchanges-param-start": "באיזה חותם־זמן להתחיל למנות.",
+       "apihelp-query+querypage-example-ancientpages": "מחזיר תוצאות מ־[[Special:Ancientpages]].",
+       "apihelp-query+random-description": "קבלת ערכת דפים אקראיים.\n\nהדפים רשומים בסדר קבוע, ורק נקודת ההתחלה אקראית. זה אומר שאם, למשל, <samp>Main Page</samp> הוא הדף האקראי הראשון הרשימה, <samp>List of fictional monkeys</samp> יהיה <em>תמיד</em> השני, <samp>List of people on stamps of Vanuatu</samp> שלישי, וכו'.\n\nאם מספר הדפים במרחב השם נמוך מ־<var>$1limit</var>, יוחזרו פחות דפים. אותו הדף לא יוחזר פעמיים.",
+       "apihelp-query+random-param-namespace": "מחזיר דפים רק במרחבי השם האלה.",
+       "apihelp-query+random-param-limit": "להגביל את מספר הדפים האקראיים שיוחזרו.",
+       "apihelp-query+random-param-redirect": "לטעון הניה אקראית במקום דף אקראי.",
+       "apihelp-query+random-example-simple": "להחזיר שני דפים אקראיים מהמרחב הראשי.",
+       "apihelp-query+random-example-generator": "החזרת מידע על הדף על שני דפים אקראיים מהמרחב הראשי.",
+       "apihelp-query+recentchanges-description": "למנות שינויים אחרונים.",
+       "apihelp-query+recentchanges-param-start": "מאיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+recentchanges-param-end": "באיזה חותם זמן להפסיק לרשום.",
+       "apihelp-query+recentchanges-param-namespace": "לסנן את השינויים רק למרחבי השם האלה.",
        "apihelp-query+recentchanges-param-user": "לרשום רק שינויים של המשתמש הזה.",
        "apihelp-query+recentchanges-param-excludeuser": "Don't list changes by this user",
+       "apihelp-query+recentchanges-param-tag": "לרשום רק שינויים שמתויגים עם התג הזה.",
+       "apihelp-query+recentchanges-param-prop": "לכלול פריטי מידע נוספים:\n;user:הוספת המשתמש האחראי על העריכה ותיוג אם זאת כתובת IP.\n;userid:הוספת המשתמש האחראי על העריכה.\n;comment:הוספת ההערה על העריכה.\n;parsedcomment:הוספת ההערה המפוענחת על העריכה.\n;flags:הוספת דגלים לעריכה.\n;timestamp:הוספת חותם־זמן של העריכה.\n;title:הוספת שם הדף של העריכה.\n;ids:הוספת מזהה הדף, מזהה שינויים אחרונים, והמזהה הגרסה החדשה והישנה.\n;sizes:הוספת אורך הדף החדש והישן בבתים.\n;redirect:מתייג שהדף הוא הפניה.\n;patrolled:מתייג עריכה בת־בדיקה בתור בדוקה או בלתי־בדוקה.\n;loginfo:הוספת מידע יומן (זהה יומן, סוג יומן וכו') לעיולי יומן.\n;tags:רשימת תגים עבור העיול.\n;sha1:הוספת סיכום־ביקורת תוכן לעיולים שמשויכים לגרסה.",
+       "apihelp-query+recentchanges-param-token": "יש להשתמש ב־<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> במקום.",
+       "apihelp-query+recentchanges-param-show": "הצגה רק של פריטים שמתאימים לאמות המידה האלו. למשל, כדי לראות רק עריכות משניות שעשו משתמשים שנכנסו לחשבון, יש להגדיר $1show=minor|!anon.",
        "apihelp-query+recentchanges-param-limit": "כמה שינויים להחזיר בסך הכול.",
        "apihelp-query+recentchanges-param-type": "אילו סוגים של שינויים להציג.",
        "apihelp-query+recentchanges-param-toponly": "לרשום רק שינויים שהם הגרסה האחרונה.",
        "apihelp-query+recentchanges-example-simple": "הצגת השינויים האחרונים.",
+       "apihelp-query+recentchanges-example-generator": "קבלת מידע על הדף על שינויים אחרונים שלא נבדקו.",
+       "apihelp-query+redirects-param-prop": "אילו מאפיינים לקבל:\n;pageid:מזהה הדף של כל הפניה.\n;title:השם של כל הפניה.\n;fragment:מובאה מכל הפניה, אם יש.",
        "apihelp-query+redirects-param-namespace": "לכלול רק דפים במרחבי השם האלה.",
        "apihelp-query+redirects-param-limit": "כמה הפניות להחזיר.",
        "apihelp-query+redirects-param-show": "לחפש רק פריטים שמתאימים לאמות המידה הבאות:\n;fragment:להציג רק הפניות עם מקטע.\n;!fragment:להציג רק הפניות ללא מקטע.",
+       "apihelp-query+redirects-example-simple": "קבלת רשימת הפניות ל־[[Main Page]]",
+       "apihelp-query+redirects-example-generator": "קבלת מידע על כל ההפניות ל־[[Main Page]].",
+       "apihelp-query+revisions-description": "קבלת מידע על גרסה.\n\nיכול לשמש במספר דרכים:\n# קבלת נתונים על ערכת דפים (גרסה אחרונה), באמצעות כותרות או מזהי דף.\n# קבלת גרסאות עבור דף נתון אחד, באמצעות שימוש בכותרות או במזהי דף עם start‏, end או limit.\n# קבלת נתונים על ערכת גרסאות באמצעות הגדרת המזהים שלהם עם revid־ים.",
+       "apihelp-query+revisions-paraminfo-singlepageonly": "יכול לשמש רק עם דף בודד (mode #2).",
        "apihelp-query+revisions-param-startid": "מאיזה מזהה גרסה להתחיל למנות.",
        "apihelp-query+revisions-param-endid": "באיזה מזהה גרסה להפסיק את מניית הגרסאות.",
        "apihelp-query+revisions-param-start": "מאיזה חותם־זמן של גרסה להתחיל למנות.",
+       "apihelp-query+revisions-param-end": "למנות עד חותם־הזמן הזה.",
        "apihelp-query+revisions-param-tag": "לרשום רק גרסאות עם התג הזה.",
+       "apihelp-query+revisions-example-content": "קבל נתונים על תוכן עבור הגרסאות האחרונות של הכותרות <kbd>API</kbd> ו־<kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-last5": "קבלת 5 הגרסאות האחרונות של <kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-first5": "קבלת 5 הגרסאות הראשונות של <kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-first5-after": "קבלת 5 הגרסאות הראשונות של <kbd>Main Page</kbd> שנעשו אחרי 2006-05-01.",
+       "apihelp-query+revisions-example-first5-not-localhost": "קבלת 5 הגרבאות הראשונות של <kbd>Main Page</kbd> שלא נעשו על־ידי המשתמש האלמוני <kbd>127.0.0.1</kbd>.",
+       "apihelp-query+revisions-example-first5-user": "קבלת 5 הגרסאות הראשונות של <kbd>Main Page</kbd> שנעשו על־ידי המשתמש <kbd>MediaWiki default</kbd>.",
+       "apihelp-query+revisions+base-paramvalue-prop-flags": "דגלי גרסה (משני).",
        "apihelp-query+revisions+base-paramvalue-prop-timestamp": "חותם־הזמן של הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-user": "המתמש שעשה את הגרסה",
+       "apihelp-query+revisions+base-paramvalue-prop-userid": "מזהה המשתמש של יוצר הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-size": "אורך (בבתים) של הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-sha1": "SHA-1 (בבסיס 16) של הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-contentmodel": "מזהה מודל התוכן של הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-comment": "הערה מאת המשתמש על הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-parsedcomment": "הערה מפוענחת מאת המשתמש על הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-content": "הטקסט של הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-tags": "התגים עבור הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "עץ פענוח XML של תוכן הגרסה (דורש מודל תוכן <code>$1</code>).",
        "apihelp-query+revisions+base-param-limit": "הגבלת מספר הגרסאות שיוחזרו.",
+       "apihelp-query+revisions+base-param-expandtemplates": "להרחיב תבניות בתוכן הגרסה (דורש $1prop=content).",
+       "apihelp-query+revisions+base-param-generatexml": "יצירת עץ פענוח XML עבור תוכן הגרסה (דורש את $1prop=content; מוחלף ב־<kbd>$1prop=parsetree</kbd>).",
+       "apihelp-query+revisions+base-param-parse": "פענוח תוכן הגרסה (דורש $1prop=content). מסיבות של ביצועים, אם האפשרות הזאת משמשת, $1limit נכפה לערך 1.",
+       "apihelp-query+revisions+base-param-section": "לאחזר רק את התוכן של הפִסקה עם המספר הזה.",
+       "apihelp-query+revisions+base-param-diffto": "מזהה הגרסה שאליו תושווה כל גרסה. יש להשתמש ב־<kbd>prev</kbd>‏, <kbd>next</kbd> ו־<kbd>cur</kbd> עבור הגרסה הקודמת, הבא והנוכחית, בהתאמה.",
+       "apihelp-query+revisions+base-param-difftotext": "הטקסט שאליו תושווה כל גרסה. מבצע השוואה רק של מספר מוגבל של גרסאות. דורס את <var>$1diffto</var>. אם מוגדר <var>$1section</var>, רק הפסקה הזאת תושווה אל מול הטקסט הזה.",
        "apihelp-query+revisions+base-param-contentformat": "תסדיר ההסדרה שמשמש את <var>$1difftotext</var> וצפוי לפלט של תוכן.",
        "apihelp-query+search-description": "ביצוע חיפוש בכל הטקסט.",
+       "apihelp-query+search-param-search": "חיפוש שמות דפים או תוכן שמתאים לערך הזה. אפשר להשתמש בחיפוש מחרוזת כדי לקרוא לאפשרויות חיפוש מתקדמות, בהתאם למה שממומש בשרת החיפוש של הוויקי.",
+       "apihelp-query+search-param-namespace": "חיפוש רק במרחבי השם האלה.",
        "apihelp-query+search-param-what": "איזה סוג חיפוש לבצע.",
        "apihelp-query+search-param-info": "אילו מטא־נתונים להחזיר.",
+       "apihelp-query+search-param-prop": "אילו מאפיינים להחזיר:\n;size:הוספת גודל הדף בבתים.\n;wordcount:הוספת מניין המילים של הדף.\n;timestamp:הוספת חותם־הזמן של העריכה האחרונה של הדף.\n;snippet:הוספת קטע קצר מפוענח מהדף.\n;titlesnippet:הוספת קטע קצר מפוענח משם הדף.\n;redirectsnippet:הוספת קטע קצר מפוענח משם ההפניה.\n;redirecttitle:הוספת שם ההפניה התואמת.\n;sectionsnippet:הוספת קטע קצר מפוענח של שם הפסקה התואמת.\n;sectiontitle:הוספת שם הפסקה התואמת.\n;categorysnippet:הוספת קטע קצר מפוענח של הקטגוריה התואמת.\n;isfilematch:הוספת בוליאני שמציין אם החיפוש תאם לתוכן של קובץ.\n;score:<span class=\"apihelp-deprecated\">מיושן וחסר־תוקן.</span>\n;hasrelated:<span class=\"apihelp-deprecated\">מיושן וחסר־תוקן.</span>",
        "apihelp-query+search-param-limit": "כמה דפים להחזיר בסך הכול.",
+       "apihelp-query+search-param-interwiki": "לכלול תוצאות בינוויקי בחיפוש ם זמין.",
+       "apihelp-query+search-param-backend": "באיזה שרת חיפוש להשתמש אם לא בבררת המחדל.",
+       "apihelp-query+search-example-simple": "חיפוש <kbd>meaning</kbd>.",
+       "apihelp-query+search-example-text": "חיפוש טקסטים עבור <kbd>meaning</kbd>.",
+       "apihelp-query+search-example-generator": "קבלת מידע על הדף עבור שמוחזרים מחיפוש אחרי <kbd>meaning</kbd>.",
+       "apihelp-query+siteinfo-description": "החזרת מידע כללי על האתר.",
+       "apihelp-query+siteinfo-param-prop": "איזה מיד לקבל:\n;general:מידע מערכת כללי.\n;namespaces:רשימת מרחבי שם רשומים והשמות הקנוניים שלהם.\n;namespacealiases:רשימת כינויי מרחבי שם רשומים.\n;specialpagealiases:רשימת כינויים דפים מיוחדים.\n;magicwords:רשימות מילות קסם וכינוייהן.\n;statistics:החזרזת סטטיסטיקות אתר.\n;interwikimap:החזרת מפת בינוויקי (אפשר שתהיה מסוננת, אפשר שתהיה מותאמת מקומית באמצעות <var>$1inlanguagecode</var>).\n;dbrepllag:החזרת שרת מסד־נתונים עם שיהוי השכפול הגבוה ביותר.\n;usergroups:החזרת קבוצות משתמשים וההרשאות המשויכות.\n;libraries:החזרת הספריות המותקנות בוויקי.\n;extensions:החזרת ההרחבות המותקנות בוויקי.\n;fileextensions:החזרת רשימת סיומות קבצים שאפשר להעלות.\n;rightsinfo:החזרת הזכויות (הרישיון) של הוויקי, אם זמין.\n;restrictions:החזרת מידע על ההגבלות (ההגנות) הזמינות.\n;languages:החזרת השפות שמדיה־ויקי תומכת בהן (זה יכול להיות מותאם מקומים עם <var>$1inlanguagecode</var>).\n;skins:החזרת רשימת כל העיצובים הזמינים (זה יכול להיות מותאם מקומית באמצעות <var>$1inlanguagecode</var>, אחרת זה יהיה בשפת התוכן).\n;extensiontags:החזרת רשימת תגי הרחבת מפענח.\n;functionhooks:החזרת hook־ים של הרחבות מפענח.\n;showhooks:החזרת כל ה־hook־ים המנויים (תוכן של <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).\n;variables:החזרת מזהי משתנים.\n;protocols:החזרת רשימת הפרוטוקולים המותרים בקישורים חיצוניים.\n;defaultoptions:החזרת הערכים ההתחלתיים של העדפות משתמש.",
+       "apihelp-query+siteinfo-param-filteriw": "החזרה רק של עיולים מקומיים או רק של עיולים לא מקומיים ממפת הבינוויקי.",
+       "apihelp-query+siteinfo-param-showalldb": "רשימת כל שרתי מסד הנתונים, לא רק אלה שהכי מתעכבים.",
+       "apihelp-query+siteinfo-param-numberingroup": "רשימת מספרי משתמשים בקבוצות משתמשים.",
        "apihelp-query+siteinfo-param-inlanguagecode": "קוד שפה ששמות שפות מתורגמות (מאמץ טוב ביותר) ושמות עיצובים.",
        "apihelp-query+siteinfo-example-simple": "איזור מידע על האתר.",
+       "apihelp-query+siteinfo-example-interwiki": "אחזור תחיליות בינוויקי מקומיות.",
+       "apihelp-query+siteinfo-example-replag": "בדיקת שיהוי השכפול הנוכחי.",
+       "apihelp-query+stashimageinfo-description": "החזרת מידע על הקובץ עבור הקבצים המוסלקים.",
        "apihelp-query+stashimageinfo-param-filekey": "מפתח שמזהה העלאה קודמת שהונחה בצד באופן זמני.",
+       "apihelp-query+stashimageinfo-param-sessionkey": "כינוי ל־$1filekey, לתאימות אחורה.",
+       "apihelp-query+stashimageinfo-example-simple": "החזרת מידע על קובץ מוסלק.",
+       "apihelp-query+stashimageinfo-example-params": "החזרת תמונות ממוזערות עבור שני קבצים מוסלקים.",
        "apihelp-query+tags-description": "רשימת תגי שינוי.",
+       "apihelp-query+tags-param-limit": "המספר המרבי של תגים לרשום.",
+       "apihelp-query+tags-param-prop": "אילו מאפיינים לקבל:\n;name:הוספת שם התג.\n;displayname:הוספת הודעת המערכת עבור התג.\n;description:הוספת תיאור התג.\n;hitcount:הוספת מספר הגרסאות ועיולי היומן עם התג הזה.\n;defined:ציון האם התג מוגדר.\n;source:קבלת מקורות התג, שיכולים להיות <samp>extension</samp> עבור תגים שמגדירות הרחבות ו־<samp>manual</samp> עבור תגים שמשתמשים יכולים להחיל ידנית.\n;active:האם התג עדיין מוּחל.",
        "apihelp-query+tags-example-simple": "רשימת תגים זמינים.",
+       "apihelp-query+templates-description": "החזרת כל הדפים המוכללים בדפים הנתונים.",
+       "apihelp-query+templates-param-namespace": "הצגת תבניות רק במרחב השם הזה.",
        "apihelp-query+templates-param-limit": "כמה תבניות להחזיר.",
+       "apihelp-query+templates-param-templates": "לרשום רק את התבניות האלו. שימושי לבדיקה האם דף מסוים משתמש בתבנית מסוימת.",
        "apihelp-query+templates-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+templates-example-simple": "קבלת התבניות המשמשות בדף <kbd>Main Page</kbd>.",
+       "apihelp-query+templates-example-generator": "קבלת מידע על דפי התבנית שמשמשים ב־<kbd>Main Page</kbd>.",
+       "apihelp-query+templates-example-namespaces": "קבלת מידע במרחבי השם {{ns:user}} ו־{{ns:template}} שמוכללים בדף <kbd>Main Page</kbd>.",
+       "apihelp-query+tokens-description": "קבלת אסימונים לפעולות שמשנות נתונים.",
        "apihelp-query+tokens-param-type": "סוגי האסימונים לבקש.",
        "apihelp-query+tokens-example-simple": "אחזור אסימון csrf (בררת המחדל).",
        "apihelp-query+tokens-example-types": "אחזור אסימון של רשימת המעקב ואסימון של ניטור",
+       "apihelp-query+transcludedin-description": "מציאת כל הדפים שמכלילים את הדפים הנתונים.",
+       "apihelp-query+transcludedin-param-prop": "אילו מאפיינים לקבל:\n;pageid:מזהה הדף של כל דף.\n;title:השם של כל דף.\n;redirect:דגל אם הדף הוא הפניה.",
        "apihelp-query+transcludedin-param-namespace": "לכלול רק דפים במרחבי השם האלה.",
        "apihelp-query+transcludedin-param-limit": "כמה להחזיר.",
        "apihelp-query+transcludedin-param-show": "לחפש רק פריטים שמתאימים לאמות המידה הבאות:\n;redirect:להציג רק הפניות.\n;!redirect:לא להציג הפניות.",
+       "apihelp-query+transcludedin-example-simple": "קבלת רשימה של דפים שמכלילים את <kbd>Main Page</kbd>.",
+       "apihelp-query+transcludedin-example-generator": "קבלת מידע על הדפים שמכלילים את <kbd>Main Page</kbd>.",
        "apihelp-query+usercontribs-description": "קבלת כל העריכות של המשתמש.",
        "apihelp-query+usercontribs-param-limit": "המספר המרבי של התרומות להחזיר.",
        "apihelp-query+usercontribs-param-start": "באיזה חותם־הזמן להתחיל.",
        "apihelp-query+usercontribs-param-end": "באיזה חותם־הזמן לסיים",
        "apihelp-query+usercontribs-param-user": "עבור אילו משתמשים לאחזר תרומות.",
+       "apihelp-query+usercontribs-param-userprefix": "אחזור תרומות עבור כל המשתמשים שהשמות שלהם מתחילים בערך הזה. דורס את $1user.",
+       "apihelp-query+usercontribs-param-namespace": "לרשום רק תרומות במרחבי השם האלה.",
+       "apihelp-query+usercontribs-param-prop": "לכלול פריטי מידע נוספים:\n;ids:הוספת מזהה הדף ומזהה הגרסה.\n;title:הוספת השם ומזהה מרחב השם של הדף.\n;timestamp:הוספת חותם־הזמן של העריכה.\n;comment:הוספת ההערה על העריכה.\n;parsedcomment:הוספת ההערה המפוענחת של העריכה.\n;size:הוספת הגודל החדש של העריכה.\n;sizediff:הוספת ההפרש של העריכה אל מול ההורה שלה.\n;flags:הוספת הדגלים של העריכה.\n;patrolled:מתייג עריכות בדוקות.\n;tags:רשימת תגים עבור עריכות.",
+       "apihelp-query+usercontribs-param-show": "הצגה רק של פריטים שמתאימים לאמות המידה האלה, למשל רק עריכות לא־משניות.\n\nאם מוגדר <kbd>$2show=patrolled</kbd> או <kbd>$2show=!patrolled</kbd>, גרסאות ישנות מ־<var dir=\"ltr\">[[mw:Manual:$wgRCMaxAge|$wgRCMaxAge]]</var>‏ ({{PLURAL:$1|שנייה אחת|$1 שניות}}) לא תוצגנה.",
        "apihelp-query+usercontribs-param-tag": "לרשום רק גרסאות עם התג הזה.",
        "apihelp-query+usercontribs-param-toponly": "לרשום רק שינויים שהם הגרסה האחרונה.",
+       "apihelp-query+usercontribs-example-user": "הצגת התרומות של המשתמש <kbd>Example</kbd>.",
+       "apihelp-query+usercontribs-example-ipprefix": "הצגת תרומות מכל כתובות ה־IP שמתחילות ב־<kbd dir=\"ltr\">192.0.2.</kbd>.",
+       "apihelp-query+userinfo-description": "קבלת מידע על המשתמש הנוכחי.",
        "apihelp-query+userinfo-param-prop": "אילו חלקי מידע לכלול:\n;blockinfo:מתייג אם המשתמש הנוכחי נחסם, על־ידי מי ומאיזו סיבה.\n;hasmsg:הוספת התג <samp>messages</samp> אם למשתמש הנוכחי יש הודעות ממתינות.\n;groups:רשימת כל הקבוצות שהמשתמש שייך אליהן.\n;implicitgroups:רשימת כל הקבוצות שהמשתמש שייך אליהן באופן אוטומטי.\n;rights:רשימת כל ההרשאות שיש למשתמש הזה.\n;changeablegroups:רשימת הקבוצות שהמשתמש הנוכחי יכול להוסיף אליהן ולגרוע מהן.\n;options:רשימת כל ההעדפות שהמשתמש הנוכחי הגדיר.\n;preferencestoken:<span class=\"apihelp-deprecated\">מיושן.</span> קבלת אסימון לשינוי ההעדפות של המשתמש הנוכחי.\n;editcount:הוספת מניין העריכות של המשתמש הנוכחי.\n;ratelimits:רשימת כל מגבלות הקצב שחלות על המשתמש הנוכחי.\n;realname:הוספת השם האמתי של המשתמש.\n;email:הוספת כתובת הדוא\"ל ותאריך אימות כתובת הדוא\"ל.\n;acceptlang:מדפיס את כותרת <code>Accept-Language</code> ששלח הלקוח בתסדיר מובנה.\n;registrationdate:הוספת תאריך הרישום של המשתמש.\n;unreadcount:הוספת מניין הדפים שלא נקראו ברשימת המעקב של המשתמש (לכל היותר $1; מחזיר <samp>$2</samp> אם יש יותר).",
+       "apihelp-query+userinfo-example-simple": "קבלת מידע על המשתמש הנוכחי.",
+       "apihelp-query+userinfo-example-data": "קבלת מידע נוסף על המשתמש הנוכחי.",
+       "apihelp-query+users-description": "קבלת מידע על רשימת משתמשים.",
+       "apihelp-query+users-param-prop": "אילו חלקי מידע לקבל:\n;blockinfo:מתייג אם המשתמש חסום, על־ידי מי, ומאיזו סיבה.\n;groups:רשימת כל הקבוצות שהמשתמש שייך אליהן.\n;implicitgroups:רשימת כל הקבוצות שהמשתמש חבר בהן אוטומטית.\n;rights:רשימת כל ההרשאות שיש למשתמש.\n;editcount:הוספת מניין העריכות של המשתמש.\n;registration:הוספת חותם־הזמן של רישום המשתמש.\n;emailable:מתייג אם המשתמש יכול ורוצה לקבל דואר אלקטרוני דרך [[Special:Emailuser]].\n;gender:מתייג את המגדר של המשתמש. מחזיר \"male\"‏, \"female\" או \"unknown\".",
+       "apihelp-query+users-param-users": "רשימת משתמשים שעליהם צריך לקבל מידע.",
+       "apihelp-query+users-param-token": "יש להשתמש ב־<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> במקום.",
+       "apihelp-query+users-example-simple": "החזרת מידע עבור המשתמש <kbd>Example</kbd>.",
+       "apihelp-query+watchlist-description": "קבלת שינויים אחרונים לדפים ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlist-param-allrev": "לכלול גרסאות מרובות של אותו הדף בתוך מסגרת הזמן הנתונה.",
        "apihelp-query+watchlist-param-start": "מאיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+watchlist-param-end": "באיזה חותם זמן להפסיק לרשום.",
+       "apihelp-query+watchlist-param-namespace": "סינון שינויים רק למרחבי השם שניתנו.",
        "apihelp-query+watchlist-param-user": "לרשום רק שינויים של המשתמש הזה.",
        "apihelp-query+watchlist-param-excludeuser": "Don't list changes by this user",
        "apihelp-query+watchlist-param-limit": "כמה תוצאות סך הכול להחזיר בכל בקשה.",
+       "apihelp-query+watchlist-param-prop": "אילו מאפיינים נוספים לקבל:",
+       "apihelp-query+watchlist-paramvalue-prop-ids": "הוספת מזהי גסה ומזהי דף.",
+       "apihelp-query+watchlist-paramvalue-prop-title": "הוספת שם הדף.",
+       "apihelp-query+watchlist-paramvalue-prop-flags": "הוספת דגלים לעריכה.",
+       "apihelp-query+watchlist-paramvalue-prop-user": "הוספת המשתמש שעשה את העריכה.",
+       "apihelp-query+watchlist-paramvalue-prop-userid": "הוספת מזהה המשתמש של מי שעשה את העריכה.",
+       "apihelp-query+watchlist-paramvalue-prop-comment": "הוספת ההערה של העריכה.",
+       "apihelp-query+watchlist-paramvalue-prop-parsedcomment": "הוספת ההערכה המפוענחת של העריכה.",
        "apihelp-query+watchlist-paramvalue-prop-timestamp": "הוספת חותם־זמן של העריכה.",
+       "apihelp-query+watchlist-paramvalue-prop-patrol": "תיוג עריכות שנבדקו.",
+       "apihelp-query+watchlist-paramvalue-prop-sizes": "הוספת האורך החדש והישן של הדף.",
+       "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "הוספת חותם־זמן של ההודעה האחרונה למשתמש על העריכה.",
+       "apihelp-query+watchlist-paramvalue-prop-loginfo": "הוספת מידע מהיומן איפה שמתאים.",
+       "apihelp-query+watchlist-param-show": "הצגה רק של פריטים שמתאימים לאמות המידה האלו. למשל, כדי לראות רק עריכות משניות שעשו משתמשים שנכנסו לחשבון, יש להגדיר $1show=minor|!anon.",
+       "apihelp-query+watchlist-param-type": "אולי סוגי שינויים להציג:\n;edit:עריכות דף רגילות.\n;external:שינויים חיצוניים.\n;new:יצירות דף.\n;log:עיולי יומן.",
+       "apihelp-query+watchlist-param-owner": "משמש יחד עם $1token לגישה לרשימת מעקב של משתמש אחר.",
+       "apihelp-query+watchlist-param-token": "אסימון אבטחה (זמין ב־[[Special:Preferences#mw-prefsection-watchlist|העדפות]]) שמאפשר לגשת לרשימת מעקב של משתמש אחר.",
+       "apihelp-query+watchlist-example-simple": "לרשום את הגרסה האחרונה עבור דפים שהשתנו לאחרונה ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlist-example-props": "אחזור מידע נוסף על הגרסה האחרונה עבור דפים שהשתנו לאחרונה ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlist-example-allrev": "אחזור מידע על כל השינויים האחרונים לדפים ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlist-example-generator": "אחזור מידע על הדף עבור דפים שהשתנו לאחרונה ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlist-example-generator-rev": "אחזור מידע על הגרסה עבור דפים שהשתנו לאחרונה ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlist-example-wlowner": "לרשום את הגרסה האחרונה עבור דפים שהשתנו לאחרונה ברשימת המעקב של משתמש <kbd>Example</kbd>.",
+       "apihelp-query+watchlistraw-description": "קבלת כל הדפים ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlistraw-param-namespace": "לרשום רק דפים במרחב השם הנתון.",
        "apihelp-query+watchlistraw-param-limit": "כמה תוצאות סך הכול להחזיר בכל בקשה.",
-       "apihelp-query+watchlistraw-param-fromtitle": "מאיזו כותרת (עם תחילית מרחב שם) להתחיל את המנייה.",
+       "apihelp-query+watchlistraw-param-prop": "אילו מאפיינים נוספים לקבל:\n;changed:הוספת חותם־הזמן של ההודעה האחרונה למשתמש על העריכה.",
+       "apihelp-query+watchlistraw-param-show": "לרשום רק פריטים שעונים על אמות המידה האלו.",
+       "apihelp-query+watchlistraw-param-owner": "משמש יחד עם $1token לגישה לרשימת מעקב של משתמש אחר.",
+       "apihelp-query+watchlistraw-param-token": "אסימון אבטחה (זמין ב־[[Special:Preferences#mw-prefsection-watchlist|העדפות]]) שמאפשר לגשת לרשימת מעקב של משתמש אחר.",
+       "apihelp-query+watchlistraw-param-fromtitle": "מאיזו כותרת (עם תחילית מרחב שם) להתחיל למנות.",
        "apihelp-query+watchlistraw-param-totitle": "באיזו כותרת (עם תחילית מרחב שם) להפסיק למנות.",
+       "apihelp-query+watchlistraw-example-simple": "לרשום דפים ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlistraw-example-generator": "אחזור מידע על הדפים עבור דפים ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-revisiondelete-description": "מחיקה ושחזור ממחיקה של גרסאות.",
+       "apihelp-revisiondelete-param-type": "סוג מחיקת הגרסה שמתבצע.",
+       "apihelp-revisiondelete-param-target": "שם הדף למחיקת גרסה, אם זה נחוץ לסוג.",
+       "apihelp-revisiondelete-param-ids": "מזהים של הגרסה שתימחק.",
+       "apihelp-revisiondelete-param-hide": "מה להסתיר עבור כל גרסה.",
+       "apihelp-revisiondelete-param-show": "הסתרה של מה לבטל עבור כל גרסה.",
+       "apihelp-revisiondelete-param-suppress": "האם להעלים נתונים ממפעילים ומאחרים.",
+       "apihelp-revisiondelete-param-reason": "סיבה למחיקה או לשחזור ממחיקה.",
+       "apihelp-revisiondelete-example-revision": "הסתרת התוכן של הגרסה <kbd>12345</kbd> בדף <kbd>Main Page</kbd>.",
+       "apihelp-revisiondelete-example-log": "הסתרת כל הנתוהים על עיול היומן <kbd>67890</kbd> עם הסיבה <kbd>BLP violation</kbd>.",
+       "apihelp-rollback-description": "ביטול העריכה האחרונה לדף.\n\nאם המשמש האחרון שערך את הדף עשה מספר עריכות זו אחר זו, הן תשוחזרנה.",
+       "apihelp-rollback-param-title": "שם הדף לשחזור. לא יכול לשמש יחד עם <var>$1pageid</var>.",
+       "apihelp-rollback-param-pageid": "מזהה הדף לשחזור. לא יכול לשמש יחד עם <var>$1title</var>.",
+       "apihelp-rollback-param-user": "שם המשתמשים שהעריכות שלו תשוחזרנה.",
+       "apihelp-rollback-param-summary": "תקציר עריכה מותאם. אם ריק, ישמש תקציר לפי בררת מחדל.",
+       "apihelp-rollback-param-markbot": "לסמן את העריכות ששוחזרו ואת השחזור בתור עריכות בוט.",
        "apihelp-rollback-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.",
+       "apihelp-rollback-example-simple": "שחזור העריכות האחרונות לדף <kbd>Main Page</kbd> על־ידי המשתמש <kbd>Example</kbd>.",
+       "apihelp-rollback-example-summary": "שחזור העריכות האחרונות לדף <kbd>Main Page</kbd> מאת משתמש ה־IP‏ <kbd>192.0.2.5</kbd> עם התקציר <kbd>Reverting vandalism</kbd> וסימון של העריכות האלה ושל השחזור בתור עריכות בוט.",
+       "apihelp-rsd-description": "יצוא סכמת RSD‏ (Really Simple Discovery).",
+       "apihelp-rsd-example-simple": "יצוא סכמת ה־RSD.",
+       "apihelp-setnotificationtimestamp-description": "עדכון חותם־הזמן של ההודעה עבור דפים במעקב.\n\nזה משפיע על הדגשת הדפים שהשתנו ברשימת המעקב ובהיסטוריה, ושליחת דואר אלקטרוני כאשר ההעדפה \"לשלוח אליי דואר אלקטרוני כאשר נעשה שינוי בדף או בקובץ ברשימת המעקב שלי\" מופעלת.",
+       "apihelp-setnotificationtimestamp-param-entirewatchlist": "לעבוד על כל הדפים שבמעקב.",
+       "apihelp-setnotificationtimestamp-param-timestamp": "חותם־הזמן להגדרת חותם־זמן של הודעה.",
+       "apihelp-setnotificationtimestamp-param-torevid": "לאיזו גרסה להגדיר את חותם הזמן (רק דף אחד).",
+       "apihelp-setnotificationtimestamp-param-newerthanrevid": "הגרסה שחותם־הזמן של ההודעה יוגדר בתור חדש ממנה (רק דף אחד).",
+       "apihelp-setnotificationtimestamp-example-all": "אתחול מצב ההודעה עבור כל רשימת המעקב.",
+       "apihelp-setnotificationtimestamp-example-page": "אתחול מצב ההודעה עבור <kbd>Main Page</kbd>.",
+       "apihelp-setnotificationtimestamp-example-pagetimestamp": "הגדרת חותם־הזמן להודעה ל־<kbd>Main page</kbd> כך שכל העריכות מאז 1 בינואר 2012 מוגדרות בתור כאלה שלא נצפו.",
+       "apihelp-setnotificationtimestamp-example-allpages": "אתחול מצב ההודעה עבור דפים במרחב השם <kbd>{{ns:user}}</kbd>.",
+       "apihelp-tag-description": "הוספת או הסרה של תגים מגרסאות בודדות או עיולי יומן בודדים.",
+       "apihelp-tag-param-rcid": "מזהה שינוי אחרון אחד או יותר שתג יתווסף אליו או יוסר ממנו.",
+       "apihelp-tag-param-revid": "מזהה גרסה אחד או יותר שתג יתווסף אליה או יוסר ממנה.",
+       "apihelp-tag-param-logid": "מזהה עיול יומן אחד או יותר שתג יתווסף אליו או יוסר ממנו.",
+       "apihelp-tag-param-add": "התגים להוספה. אפשר להוסיף רק תגים קיימים.",
+       "apihelp-tag-param-remove": "תגים להסרה. רק תגים שהוגדרו ידנית או שאינם מוגדרים כלל יכולים להיות מוסרים.",
        "apihelp-tag-param-reason": "סיבה לשינוי.",
+       "apihelp-tag-example-rev": "הוספת התג <kbd>vandalism</kbd> מהגרסה עם המזהה 123 בלי לציין סיבה",
+       "apihelp-tag-example-log": "הסרת התג <kbd>spam</kbd> מעיול עם המזהה 123 עם הסיבה <kbd>Wrongly applied</kbd>",
        "apihelp-tokens-description": "קבלת אסימונים לפעולות שמשנות נתונים.\n\nהיחידה הזאת הוכרזה בתור מיושנת לטובת [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
+       "apihelp-tokens-param-type": "סוגי האסימונים לבקש.",
+       "apihelp-tokens-example-edit": "אחזור אסימון עריכה (בררת המחדל).",
+       "apihelp-tokens-example-emailmove": "אחזור אסימון דוא\"ל ואסימון העברה.",
+       "apihelp-unblock-description": "שחרור משתמש מחסימה.",
+       "apihelp-unblock-param-id": "מזהה החסימה לשחרור (מתקבל דרך <kbd>list=blocks</kbd>). לא יכול לשמש יחד עם <var>$1user</var>.",
+       "apihelp-unblock-param-user": "שם משתמש, כתובת IP או טווח IP לחסימה. לא יכול לשמש יחד עם <var>$1id</var>",
+       "apihelp-unblock-param-reason": "סיבה להסרת חסימה.",
+       "apihelp-unblock-example-id": "לשחרר את החסימה עם מזהה #<kbd>105</kbd>.",
+       "apihelp-unblock-example-user": "לשחרר את החסימה של המשתמש <kbd>Bob</kbd> עם הסיבה <kbd>Sorry Bob</kbd>.",
+       "apihelp-undelete-description": "שחזור גרסאות של דף מחוק.\n\nאפשר לאחזר רשימת גרסאות מחוקות (כולל חותמי־זמן) דרך [[Special:ApiHelp/query+deletedrevs|list=deletedrevs]], ואפשר לאחזר רשימת מזהי קבצים מחוקים דרך [[Special:ApiHelp/query+filearchive|list=filearchive]].",
+       "apihelp-undelete-param-title": "שם הדף לשחזור ממחיקה.",
        "apihelp-undelete-param-reason": "סיבה לשחזור.",
+       "apihelp-undelete-param-timestamps": "חותמי־זמן של הגרסה לשחזור. אם גם <var>$1timestamps</var> וגם <var>$1fileids</var> ריקים, הכול ישוחזר.",
+       "apihelp-undelete-param-fileids": "מזהי גרסאות הקובץ לשחזור. אם גם <var>$1timestamps</var> וגם <var>$1fileids</var> ריקים, הכול ישוחזר.",
        "apihelp-undelete-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.",
+       "apihelp-undelete-example-page": "שחזור ממחיקה של הדף <kbd>Main Page</kbd>.",
+       "apihelp-undelete-example-revisions": "שחזור שתי גרסאות של הדף <kbd>Main Page</kbd>.",
+       "apihelp-upload-description": "העלאת קובץ, או קבלת מצב ההעלאות הממתינות.\n\nיש מספר שיטות:\n* להעלות את הקובץ ישירות, באמצעות הפרמטר <var>$1file</var>.\n* להעלות את הקובץ בחלקים, באמצעות הפרמטרים <var>$1filesize</var>‏, <var>$1chunk</var> ו־<var>$1offset</var>.\n* לגרום לשרת מדיה־ויקי לאחזר את הקובץ מ־URL באמצעות הפרמטר <var>$1url</var>.\n* להשלים העלאה קודמת שנכשלה בשל אזהרות באמצעות הפרמטר <var>$1filekey</var>.\nלתשומך לבך, יש לעשות את HTTP POST בתור העלאת קובץ (כלומר באמצעות <code>multipart/form-data</code>) בעת שליחת ה־<var>$1file</var>.",
        "apihelp-upload-param-filename": "שם קובץ היעד.",
+       "apihelp-upload-param-comment": "הערת העלאה. משמש גם בתור טקסט הדף ההתחלתי עבור קבצים חדשים אם <var>$1text</var> אינו מצוין.",
+       "apihelp-upload-param-text": "טקסט הדף ההתחלתי לקבצים חדשים.",
+       "apihelp-upload-param-watch": "לעקוב אחרי הדף.",
        "apihelp-upload-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.",
        "apihelp-upload-param-ignorewarnings": "להתעלם מכל האזהרות.",
+       "apihelp-upload-param-file": "תוכן הקובץ.",
+       "apihelp-upload-param-url": "URL לאחזור הקובץ.",
        "apihelp-upload-param-filekey": "מפתח שמזהה העלאה קודמת שהונחה בצד באופן זמני.",
+       "apihelp-upload-param-sessionkey": "אותו דבר כמו $1filekey, מושאר לצור תאימות אחורה.",
+       "apihelp-upload-param-stash": "אם זה מוגדר, השרת יסליק את הקובץ זמנית במקום להוסיף אותו למאגר.",
+       "apihelp-upload-param-filesize": "גודל הקובץ של כל ההעלאה.",
+       "apihelp-upload-param-offset": "היסט החתיכה בבתים.",
+       "apihelp-upload-param-chunk": "תוכן החתיכה.",
+       "apihelp-upload-param-async": "להפוך פעולות קבצים גדולות לאסינכרוניות כשאפשר.",
+       "apihelp-upload-param-asyncdownload": "להפוך אחזור URL לאסינכרוני.",
+       "apihelp-upload-param-leavemessage": "אם משמש asyncdownload, להשאיר הודעה על דף שיחת משתמש אם זה מסתיים.",
+       "apihelp-upload-param-statuskey": "לאחזר את מצב העלאת הקובץ עבור מפתח הקובץ הזה (העלאה באמצעות URL).",
+       "apihelp-upload-param-checkstatus": "לאחזר רק מצב העלאה עבור מפתח הקובץ שניתן.",
+       "apihelp-upload-example-url": "להעלות מ־URL.",
+       "apihelp-upload-example-filekey": "להשלים העלאה שנכשלה בשל אזהרות.",
+       "apihelp-userrights-description": "שינוי חברות בקבוצות של המשתמש.",
        "apihelp-userrights-param-user": "שם משתמש.",
+       "apihelp-userrights-param-userid": "מזהה משתמש.",
+       "apihelp-userrights-param-add": "הוספת המשתמש לקבוצות האלו.",
+       "apihelp-userrights-param-remove": "הסרת משתמש מהקבוצות האלו.",
        "apihelp-userrights-param-reason": "סיבה לשינוי.",
+       "apihelp-userrights-example-user": "הוספת המשתמש <kbd>FooBot</kbd> לקבוצה <kbd>bot</kbd> והסרתו מהקבוצות <kbd>sysop</kbd> ו־<kbd>bureaucrat</kbd>.",
+       "apihelp-userrights-example-userid": "הוספת המשתמש עם המזהה <kbd>123</kbd> לקבוצה <kbd>bot</kbd> והסרתו מהקבוצות <kbd>sysop</kbd> ו־<kbd>bureaucrat</kbd>.",
+       "apihelp-watch-description": "להוסיף דפים לרשימת המעקב של המשתמש הנוכחי או הסרתם ממנה.",
+       "apihelp-watch-param-title": "הדף להוסיף לרשימת המעקב או להסיר ממנה. יש להשתמש במקום זאת ב־<var>$1titles</var>.",
+       "apihelp-watch-param-unwatch": "אם זה מוגדר, הדף יהיה לא במעקב במקום להיות במעקב.",
+       "apihelp-watch-example-watch": "לעקוב אחרי הדף <kbd>Main Page</kbd>.",
+       "apihelp-watch-example-unwatch": "להפסיק את המעקב אחרי הדף <kbd>Main Page</kbd>.",
+       "apihelp-watch-example-generator": "לעקוב אחרי הדפים הראשונים במרחב הראשי.",
        "apihelp-format-example-generic": "להחזיר את תוצאות השאילתה בתסדיר $1.",
        "apihelp-dbg-description": "לפלוט נתונים בתסדיר <code dir=\"ltr\">var_export()</code> של PHP.",
        "apihelp-dbgfm-description": "לפלוט את הנתונים בתסדיר <code dir=\"ltr\">var_export()</code> של PHP (עם הדפסה יפה ב־HTML).",
        "apihelp-json-description": "לפלוט נתונים בתסדיר JSON.",
+       "apihelp-json-param-callback": "אם זה צוין, עוטף את הפלט לתוך קריאת פונקציה נתונה. למען הבטיחות, כל הנתונים הייחודיים למשתמש יוגבלו.",
        "apihelp-json-param-utf8": "אם זה צוין, רוב התווים שאינם ASCII (אבל לא כולם) יקודדו בתור UTF-8 במקום להתחלף בסדרות חילוף הקסדצימליות. זאת בררת המחדל אם הערך של <var>formatversion</var> הוא לא <kbd>1</kbd>.",
        "apihelp-json-param-ascii": "אם זה צוין, לקודד את כל מה שאינו ASCII בסדרות חילוף הקסדצימליות. זאת בררת המחדל כש־<var>formatversion</var> היא <kbd>1</kbd>.",
        "apihelp-json-param-formatversion": "תסדיר הפלט:\n;1:תסדיר עם תאימות אחורה (ערכים בוליאניים בסגנון XML, מפתחות <samp>*</samp> לצומתי תוכן, וכו').\n;2:תסדיר מודרני ניסיוני. הפרטים יכולים להשתנות!\n;latest:להשתמש בתסדיר החדש ביותר (כרגע <kbd>2</kbd>), יכול להשתנות ללא התראה.",
        "apihelp-txtfm-description": "לפלוט את הנתונים בתסדיר <code dir=\"ltr\">print_r()</code> של PHP (עם הדפסה יפה ב־HTML).",
        "apihelp-xml-description": "לפלוט נתונים בתסדיר XML.",
        "apihelp-xml-param-xslt": "אם צוין, יש להוסיף את שם הדף כגיליון עיצוב XSL. על הערך להיות כותרת ב {{ns:mediawiki}} במרחב שם המשתמש, המסתיים ב-  <code>.xsl</code>.",
+       "apihelp-xml-param-includexmlnamespace": "אם זה צוין, מוסיף מרחב שם של XML.",
        "apihelp-xmlfm-description": "לפלוט נתונים בתסדיר XML (עם הדפסה יפה ב־HTML).",
        "apihelp-yaml-description": "לפלוט את הנתונים בתסדיר YAML.",
        "apihelp-yamlfm-description": "לפלוט נתונים בתסדיר YAML (עם הדפסה יפה ב־HTML).",
        "api-format-title": "תוצאה של API של מדיה־ויקי",
        "api-format-prettyprint-header": "זהו ייצוג ב־HTML של תסדיר $1. תסדיר HTML טוב לתיקון שגיאות, אבל אינו מתאים ליישומים.\n\nיש לציין את הפרמטר <var>format</var> כדי לשנות את תסדיר הפלט. כדי לראות ייצוג של תסדיר $1 לא ב־HTML יש לרשום <kbd>format=$2</kbd>.\n\nר' את [[mw:API|התיעוד המלא]], או את [[Special:ApiHelp/main|העזרה של API]] למידע נוסף.",
+       "api-format-prettyprint-header-only-html": "זה ייצוג HTML שמיועד לניפוי שגיאות ואינו מתאים לשימוש ביישומים.\n\nר' את [[mw:API|התיעוד המלא]] או את [[Special:ApiHelp/main|העזרה של API]] למידע נוסף.",
        "api-orm-param-props": "באילו שדות לעשות שאילתה.",
        "api-orm-param-limit": "מספר מרבי של שורות להחזיר.",
        "api-pageset-param-titles": "רשימת כותרות.",
-       "api-pageset-param-pageids": "רש×\99×\9eת ×\9e×\96×\94×\99 ×\93×£ ×\9c×¢×\95×\91ד עליהם.",
+       "api-pageset-param-pageids": "רש×\99×\9eת ×\9e×\96×\94×\99 ×\93×£ ×\9c×¢×\91×\95ד עליהם.",
        "api-pageset-param-revids": "רשימת מזהי גרסה לעבוד עליהם.",
        "api-pageset-param-generator": "קבלת רשימת דפים לעבוד עליהם על־ידי הרצת יחידת ה־query שצוינה.\n\n<strong>לתשומת לבך:</strong> לשמות בפרמטר generator צריכה להיות התחילית \"g\", ר' דוגמאות.",
        "api-pageset-param-redirects-generator": "פתרון אוטומטי של הפניות ב־<var>$1titles</var>, ב־<var>$1pageids</var>, וב־<var>$1revids</var>, ודפים שמחזיר <var>$1generator</var>.",
        "api-help-param-required": "פרמטר זה נדרש.",
        "api-help-datatypes-header": "סוגי נתונים",
        "api-help-datatypes": "חלק מסוגי הפרמטרים בבקשות API דורשים הסבר נוסף:\n;בוליאני (boolean)\n:פרמטרים בוליאניים עובדים כמו תיבות סימון של HTML: אם הפרמטר צוין, בלי קשר לערך שלו, הוא אמת (true). בשביל ערך שקר (false), יש להשמיט את הפרמטר לגמרי.\n;חותם־זמן (timestamp)\n:אפשר לכתוב חותמי־זמן במספר תסדירים. תאריך ושעה לפי ISO 8601 הוא הדבר המומלת. כל הזמנים מצוינים ב־ UTC, לא תהיה השפעה לשום אזור זמן שיצוין.\n:* תאריך ושעה לפי ISO 8601‏, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (לא חובה לכתוב פיסוק ו־<kbd>Z</kbd>)\n:* תאריך ושעה לפי ISO 8601 עם חלקי שנייה (שלא תהיה להם שום השפעה), <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd> (לא חובה לכתוב קווים מפרידים, נקודתיים ו־<kbd>Z</kbd>)\n:* תסדיר MediaWiki‏, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* תסדיר מספרי כללי, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (לאזור זמן אופציונלי של <kbd>GMT</kbd>‏, <kbd dir=\"ltr\">+<var>##</var></kbd>, או <kbd dir=\"ltr\">-<var>##</var></kbd> אין השפעה)\n:* תסדיר EXIF‏, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* תסדיר RFC 2822 (אפשר להשמיט את אזור הזמן), <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* תסדיר RFC 850 (אפשר להשמיט את אזור הזמן), <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* תסדיר C ctime‏, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* שניות מאז 1970-01-01T00:00:00Z בתור מספר שלך בין 1 ל־13 (לא כולל <kbd>0</kbd>)\n:* המחרוזת <kbd>now</kbd>",
+       "api-help-param-type-limit": "סוג: מספר שלם או <kbd>max</kbd>",
        "api-help-param-type-integer": "סוג: {{PLURAL:$1|1=מספר שלם|2=רשימת מספרים שלמים}}",
        "api-help-param-type-boolean": "סוג: בוליאני ([[Special:ApiHelp/main#main/datatypes|פרטים]])",
        "api-help-param-type-timestamp": "סוג: {{PLURAL:$1|חותם־זמן|רשימת חותמי־זמן}} ([[Special:ApiHelp/main#main/datatypes|תסדירים מורשים]])",
+       "api-help-param-type-user": "סוג: {{PLURAL:$1|1=שם משתמש|2=רשימת שמות משתמשים}}",
        "api-help-param-list": "{{PLURAL:$1|1=ערך אחד|2=ערכים (מופרדים באמצעות \"<kbd>{{!}}</kbd>\")}}: $2",
        "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=חייב להיות ריק|יכול להיות ריק או $2}}",
        "api-help-param-limit": "מספר הפרמטרים לא יכול להיות גדול מ־$1.",
        "api-help-param-multi-max": "מספר הערכים המרבי הוא {{PLURAL:$1|$1}} (עבור בוטים – {{PLURAL:$2|$2}}).",
        "api-help-param-default": "ברירת מחדל: $1",
        "api-help-param-default-empty": "ברירת מחדל: <span class=\"apihelp-empty\">(ריק)</span>",
-       "api-help-param-token": "אסימון \"$1\" אוחזר מ־[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
+       "api-help-param-token": "×\90ס×\99×\9e×\95×\9f \"$1\" ×©×\90×\95×\97×\96ר ×\9eÖ¾[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
        "api-help-param-token-webui": "לשם תאימות, גם האסימון שמשמש בממשק דפדפן מתקבל.",
        "api-help-param-disabled-in-miser-mode": "כבוי בשל [[mw:Manual:$wgMiserMode|מצב חיסכון]].",
        "api-help-param-limited-in-miser-mode": "<strong>לתשומת לבך:</strong> בשל [[mw:Manual:$wgMiserMode|מצב חיסכון]], שימוש בזה יכול להוביל לפחות מ־<var>$1limit</var> תוצאות לפני המשך; במצבים קיצוניים ייתכן שיחזרו אפס תוצאות.",
index 426f580..5e19e61 100644 (file)
@@ -79,6 +79,7 @@
        "apihelp-query+info-paramvalue-prop-readable": "Ob de Benotzer dës Säit liese kann.",
        "apihelp-query+langlinks-param-lang": "Nëmme Sproochlinke mat dësem Sproochcode zréckginn.",
        "apihelp-query+links-param-namespace": "Nëmme Linken an dësen Nummräim weisen.",
+       "apihelp-query+pageswithprop-example-generator": "Zousätzlech Informatiounen iwwer déi 10 éischt Säite kréie mat <code>_&#95;NOTOC_&#95;</code>.",
        "apihelp-query+protectedtitles-param-namespace": "Nëmmen Titelen aus dësen Nummraim opzielen.",
        "apihelp-query+random-param-redirect": "Eng zoufälleg Viruleedung lueden aplaz vun enger zoufälleger Säit.",
        "apihelp-query+recentchanges-param-user": "Nëmmen Ännerunge vun dësem Benotzer opzielen.",
@@ -97,6 +98,8 @@
        "apihelp-query+watchlist-param-excludeuser": "Ännerunge vun dësem Benotzer net opzielen.",
        "apihelp-query+watchlist-paramvalue-prop-title": "Setzt den Titel vun der Säit derbäi.",
        "apihelp-query+watchlist-paramvalue-prop-user": "Setzt de Benotzer derbäi deen d'Ännerung gemaach huet.",
+       "apihelp-query+watchlist-paramvalue-prop-comment": "Setzt d'Bemierkung vun der Ännerung derbäi.",
+       "apihelp-query+watchlist-paramvalue-prop-timestamp": "Setzt den Zäitstempel vun der Ännerung derbäi.",
        "apihelp-query+watchlistraw-param-show": "Nëmmen Elementer opzielen déi dëse Critèren entspriechen.",
        "apihelp-query+watchlistraw-example-simple": "Säite vum aktuelle Benotzer senger Iwwerwaachungslëscht opzielen",
        "apihelp-revisiondelete-description": "Versioune läschen a restauréieren.",
index db66d38..2accd1f 100644 (file)
@@ -7,7 +7,8 @@
                        "Kaganer",
                        "Mariya",
                        "Дмитрий",
-                       "WindEwriX"
+                       "WindEwriX",
+                       "Ochilov"
                ]
        },
        "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 с ключом \"MediaWiki-API-Error\", после чего значение заголовка и код ошибки будут отправлены обратно и установлены в то же значение. Более подробную информацию см. [[mw:API:Errors_and_warnings|API: Ошибки и предупреждения]].",
@@ -26,6 +27,7 @@
        "apihelp-block-param-anononly": "Блокировать только анонимных пользователей (т. е. запретить анонимные правки для этого IP-адреса).",
        "apihelp-block-param-nocreate": "Запретить создание учётных записей.",
        "apihelp-block-param-watchuser": "Следить за страницей пользователя или IP-участника и страницей обсуждения.",
+       "apihelp-checktoken-param-type": "Тип маркера проходит тестирование.",
        "apihelp-checktoken-param-token": "токен для проверки",
        "apihelp-checktoken-param-maxtokenage": "Максимально допустимый возраст токена (в секундах).",
        "apihelp-checktoken-example-simple": "Проверить годность <kbd>csrf</kbd>-токена.",
@@ -78,6 +80,8 @@
        "apihelp-emailuser-example-email": "Отправить письмо пользователю <kbd>WikiSysop</kbd> с текстом <kbd>контентом</kbd>.",
        "apihelp-expandtemplates-description": "Разворачивает все шаблоны в wikitext.",
        "apihelp-expandtemplates-param-title": "Заголовок страницы.",
+       "apihelp-expandtemplates-param-text": "Викитекст для конвертирования",
+       "apihelp-expandtemplates-paramvalue-prop-wikitext": "Расширенный викитекст",
        "apihelp-expandtemplates-paramvalue-prop-parsetree": "Дерево разбора XML входных данных.",
        "apihelp-feedcontributions-param-year": "От года (и ранее).",
        "apihelp-feedcontributions-param-month": "От месяца (и ранее).",
index b439fb0..e3d7a49 100644 (file)
        "apihelp-feedwatchlist-param-hours": "Список сторінок, змінених за цю кількість годин від зараз.",
        "apihelp-feedwatchlist-param-linktosections": "За можливості, посилатися безпосередньо на змінені розділи.",
        "apihelp-feedwatchlist-example-default": "Показати стрічку списку спостереження.",
+       "apihelp-feedwatchlist-example-all6hrs": "Показати всі зміни до спостережуваних сторінок за останні 6 годин.",
+       "apihelp-filerevert-description": "Повернути файл до старої версії.",
        "apihelp-filerevert-param-filename": "Цільова назва файлу, без префіксу File:.",
        "apihelp-filerevert-param-comment": "Завантажити коментар.",
        "apihelp-filerevert-param-archivename": "Архівна назва версії, до якої повернути.",
        "apihelp-filerevert-example-revert": "Повернути <kbd>Wiki.png</kbd> до версії <kbd>2011-03-05T15:27:40Z</kbd>.",
        "apihelp-help-description": "Відображати довідку для зазначених модулів.",
-       "apihelp-help-param-modules": "Модулі, для яких відображати довідку (значення параметрів <var>action</var> і <var>format</var> або <kbd>main</kbd>). Можна вказати під модулі через <kbd>+</kbd>.",
+       "apihelp-help-param-modules": "Модулі, для яких відображати довідку (значення параметрів <var>action</var> і <var>format</var> або <kbd>main</kbd>). Можна вказати підмодулі через <kbd>+</kbd>.",
+       "apihelp-help-param-submodules": "Включити довідку для підмодулів вказаного модуля.",
        "apihelp-help-param-recursivesubmodules": "Включити довідку для підмодулів рекурсивно.",
        "apihelp-help-param-helpformat": "Формат результату довідки.",
        "apihelp-help-param-wrap": "Помістити результат у стандартну структуру API-відповіді.",
        "apihelp-logout-description": "Вийти й очистити дані сесії.",
        "apihelp-logout-example-logout": "Вийти з поточного облікового запису.",
        "apihelp-managetags-description": "Виконати керівні завдання щодо зміни теґів.",
+       "apihelp-managetags-param-operation": "Яку операцію виконати:\n;create:Створити нову мітку редагування для використання вручну.\n;delete:Вилучити мітку редагування з бази даних, включно з вилученням її з усіх версій, записів нових редагувань та записів журналів, де вона використана.\n;activate:Активувати мітку редагування, дозволивши користувачам застосовувати її вручну.\n;deactivate:Деактивувати мітку редагування, заборонивши користувачам застосовувати її вручну.",
+       "apihelp-managetags-param-tag": "Мітка для створення, вилучення, активування чи деактивування. Для створення мітки, вона повинна не існувати. Для вилучення мітки, вона повинна існувати. Для активування мітки, вона повинна існувати і не використовуватися жодним розширенням. Для деактивування мітки, вона має бути жива і визначена вручну.",
+       "apihelp-managetags-param-reason": "Необов'язкова причина створення, вилучення, активування чи деактивування мітки.",
+       "apihelp-managetags-param-ignorewarnings": "Чи ігнорувати усі попередження, що з'являються під час операції.",
+       "apihelp-managetags-example-create": "Створити мітку з назвою <kbd>spam</kbd> з причиною <kbd>For use in edit patrolling</kbd>",
+       "apihelp-managetags-example-delete": "Вилучити мітку <kbd>vandlaism</kbd> з причиною <kbd>Misspelt</kbd>",
+       "apihelp-managetags-example-activate": "Активувати мітку з назвою <kbd>spam</kbd> з причиною <kbd>For use in edit patrolling</kbd>",
+       "apihelp-managetags-example-deactivate": "Деактивувати мітку з назвою <kbd>spam</kbd> з причиною <kbd>No longer required</kbd>",
+       "apihelp-move-description": "Перейменувати сторінку.",
+       "apihelp-move-param-from": "Назва сторінки для перейменування. Не можна використати разом з <var>$1fromid</var>.",
+       "apihelp-move-param-fromid": "ID сторінки для перейменування. Не можна використати разом з <var>$1from</var>.",
+       "apihelp-move-param-to": "Назва сторінки, на яку перейменувати.",
+       "apihelp-move-param-reason": "Причина перейменування.",
+       "apihelp-move-param-movetalk": "Перейменувати сторінку обговорення, якщо вона існує.",
+       "apihelp-move-param-movesubpages": "Перейменувати підсторінки, якщо можливо.",
+       "apihelp-move-param-noredirect": "Не створювати перенаправлення.",
+       "apihelp-move-param-watch": "Додати сторінку й перенаправлення у список спостереження поточного користувача.",
+       "apihelp-move-param-unwatch": "Вилучити сторінку й перенаправлення зі списку спостереження поточного користувача.",
+       "apihelp-move-param-watchlist": "Беззастережно додати або вилучити сторінку зі списку спостереження поточного користувача, використати налаштування або не змінювати спостереження.",
        "apihelp-move-param-ignorewarnings": "Ігнорувати всі попередження",
+       "apihelp-move-example-move": "Перейменувати <kbd>Badtitle</kbd> на <kbd>Goodtitle</kbd> без збереження перенаправлення.",
+       "apihelp-opensearch-description": "Шукати у вікі з використанням протоколу OpenSearch.",
+       "apihelp-opensearch-param-search": "Рядок пошуку.",
+       "apihelp-opensearch-param-limit": "Максимальна кількість результатів для виведення.",
+       "apihelp-opensearch-param-namespace": "Простори назв, у яких шукати.",
+       "apihelp-opensearch-param-suggest": "Нічого не робити, якщо <var>[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> хибний.",
+       "apihelp-opensearch-param-redirects": "Як обробляти перенаправлення:\n;return:Видати саме перенаправлення.\n;resolve:Видати цільову сторінку. Може видати менше, ніж $1limit результат{{PLURAL:$1limit||и|ів}}.\nЗ історичних причин, за замовчуванням стоїть «return» для $1format=json і «resolve» — для інших форматів.",
+       "apihelp-opensearch-param-format": "Формат виводу.",
+       "apihelp-opensearch-param-warningsaserror": "Якщо при <kbd>format=json</kbd> з'являються попередження, видати помилку API замість того, щоб їх ігнорувати.",
+       "apihelp-opensearch-example-te": "Знайти сторінки, що починаються з <kbd>Te</kbd>.",
+       "apihelp-options-description": "Змінити налаштування поточного користувача.\n\nМожна встановити лише опції, які зареєстровані у ядрі або в одному з інстальованих розширень, або опції з префіксом ключів «userjs-» (призначені для використання користувацькими скриптами).",
+       "apihelp-options-param-reset": "Встановлює налаштування сайту за замовчуванням.",
+       "apihelp-options-param-resetkinds": "Список типів опцій для перевстановлення, коли вказана опція <var>$1reset</var>.",
+       "apihelp-options-param-change": "Список змін, відформатованих як назва=значення (напр., skin=vector). Значення не може містити вертикальних рисок. Якщо значення не вказане (навіть немає знака рівності) , напр., optionname|otheroption|…, опцію буде перевстановлено до її значення за замовчуванням.",
+       "apihelp-options-param-optionname": "Назва опції, якій має бути присвоєне значення <var>$1optionvalue</var>.",
+       "apihelp-options-param-optionvalue": "Значення опції, вказане в <var>$1optionname</var>, може містити вертикальні риски.",
+       "apihelp-options-example-reset": "Скинути всі налаштування.",
+       "apihelp-options-example-change": "Змінити налаштування <kbd>skin</kbd> та <kbd>hideminor</kbd>.",
+       "apihelp-options-example-complex": "Скинути всі налаштування, потім встановити <kbd>skin</kbd> та <kbd>nickname</kbd>.",
+       "apihelp-paraminfo-description": "Отримати інформацію про модулі API.",
+       "apihelp-paraminfo-param-modules": "Список назв модулів (значення параметрів <var>action</var> і <var>format</var> або <kbd>main</kbd>). Можна вказати підмодулі через <kbd>+</kbd>.",
+       "apihelp-paraminfo-param-helpformat": "Формат рядків довідки.",
+       "apihelp-paraminfo-param-querymodules": "Список назв модулів запитів (значення параметра <var>prop</var>, <var>meta</var> або <var>list</var>). Використати <kbd>$1modules=query+foo</kbd> замість <kbd>$1querymodules=foo</kbd>.",
+       "apihelp-paraminfo-param-mainmodule": "Отримати інформацію також про основний модуль (топ-рівень). Використати натомість <kbd>$1modules=main</kbd>.",
+       "apihelp-paraminfo-param-pagesetmodule": "Отримати також інформацію про модуль pageset (з вказанням titles= і рідних).",
+       "apihelp-paraminfo-param-formatmodules": "Список назв модулів форматування (значення параметра <var>format</var>). Використати натомість <var>$1modules</var>.",
+       "apihelp-paraminfo-example-1": "Показати інформацію для <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> та <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
+       "apihelp-parse-description": "Аналізує вміст і видає парсер виходу.\n\nДив. різні prop-модулі <kbd>[[Special:ApiHelp/query|action=query]]</kbd>, щоб отримати інформацію з поточної версії сторінки.\n\nЄ декілька способів вказати текст для аналізу:\n# Вказати сторінку або версію, використавши <var>$1page</var>, <var>$1pageid</var> або <var>$1oldid</var>.\n# Вказати безпосередньо, використавши <var>$1text</var>, <var>$1title</var> і <var>$1contentmodel</var>.\n# Вказати лише підсумок аналізу. <var>$1prop</var> повинен мати порожнє значення.",
+       "apihelp-parse-param-title": "Назва сторінки, якій належить текст. Якщо пропущена, має бути вказано <var>$1contentmodel</var>, а як назву буде вжито [[API]].",
+       "apihelp-parse-param-text": "Текст для аналізу. Використати <var>$1title</var> або <var>$1contentmodel</var> для контролю моделі вмісту.",
+       "apihelp-parse-param-summary": "Підсумок для аналізу.",
+       "apihelp-parse-param-page": "Аналізувати вміст цієї сторінки. Не можна використати разом з <var>$1text</var> і <var>$1title</var>.",
+       "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-prop": "Яку інформацію отримати?",
+       "apihelp-parse-paramvalue-prop-text": "Дає текст-аналіз вікітексту.",
+       "apihelp-parse-paramvalue-prop-langlinks": "Дає мовні посилання в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-categories": "Дає категорії в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-categorieshtml": "Дає HTML-версію категорій.",
+       "apihelp-parse-paramvalue-prop-links": "Дає зовнішні посилання в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-templates": "Дає шаблони в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-images": "Дає зображення в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-externallinks": "Дає зовнішні посилання в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-sections": "Дає розділи в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-revid": "Додає ідентифікатор версії аналізованої сторінки.",
+       "apihelp-parse-paramvalue-prop-displaytitle": "Додає заголовок аналізованого вікітексту.",
+       "apihelp-parse-paramvalue-prop-headitems": "Дає елементи для вставки в <code>&lt;head&gt;</code> сторінки.",
+       "apihelp-parse-paramvalue-prop-headhtml": "Дає проаналізований <code>&lt;head&gt;</code> сторінки.",
+       "apihelp-parse-paramvalue-prop-modules": "Дає модулі ResourceLoader, використані на сторінці. Чи <kbd>jsconfigvars</kbd>, чи <kbd>encodedjsconfigvars</kbd> має бути запитано разом з <kbd>modules</kbd>.",
+       "apihelp-parse-paramvalue-prop-jsconfigvars": "Дає змінні конфігурації JavaScript, притаманні для сторінки.",
+       "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "Дає змінні конфігурації JavaScript, притаманні для сторінки, як рядок JSON.",
+       "apihelp-parse-paramvalue-prop-indicators": "Дає HTML індикаторів стану сторінки, використаних на сторінці.",
+       "apihelp-parse-paramvalue-prop-iwlinks": "Дає інтервікі-посилання в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-wikitext": "Дає вихідний вікітекст, який було аналізовано.",
+       "apihelp-parse-paramvalue-prop-properties": "Дає різні властивості, визначені в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Дає звіт по обмеженнях у структурованому вигляді. Не видає даних, якщо встановлено <var>$1disablepp</var>.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "Дає HTML-версію звіту по обмеженнях. Не видає даних, якщо встановлено <var>$1disablepp</var>.",
+       "apihelp-parse-paramvalue-prop-parsetree": "Синтаксичне дерево XML вмісту версії (передбачає модель вмісту <code>$1</code>)",
+       "apihelp-parse-param-pst": "Зробіть трансформацію вхідних даних перед збереженням і аналізом. Дійсне лише при використанні з текстом.",
+       "apihelp-parse-param-onlypst": "Зробіть трансформацію вхідних даних перед збереженням (PST), але не аналізуйте. Видає той самий вікітекст, після застосування PST. Дійсне лише у разі використання з <var>$1text</var>.",
+       "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": "Пропустити звіт препроцесора («NewPP limit report») на виході аналізу.",
+       "apihelp-parse-param-disableeditsection": "Пропустити посилання на редагування розділів на виході аналізу.",
+       "apihelp-parse-param-generatexml": "Генерувати синтаксичне дерево XML (передбачає модель вмісту <code>$1</code>; замінено на <kbd>$2prop=parsetree</kbd>).",
+       "apihelp-parse-param-preview": "Аналізувати у режимі попереднього перегляду.",
+       "apihelp-parse-param-sectionpreview": "Аналізувати у режимі попереднього перегляду розділу (також вмикає попередній перегляд).",
+       "apihelp-parse-param-disabletoc": "Пропустити зміст на виході.",
+       "apihelp-parse-param-contentformat": "Формат серіалізації вмісту, використаний у вхідному тексті. Дійсний лише при використанні разом з $1text.",
+       "apihelp-parse-param-contentmodel": "Модель вмісту вхідного тексту. Якщо пропущено, має бути вказано $1title, і за замовчуванням буде модель вказаного заголовка. Дійсне лише при використанні з $1text.",
+       "apihelp-parse-example-page": "Аналізувати сторінку.",
+       "apihelp-parse-example-text": "Аналізувати вікітекст.",
+       "apihelp-parse-example-texttitle": "Аналізувати вікітекст, вказуючи назву сторінки.",
        "api-help-datatypes-header": "Типи даних"
 }
index 8c9f8c8..3ffc792 100644 (file)
@@ -14,6 +14,9 @@
        "apihelp-block-param-reason": "Lý do cấm.",
        "apihelp-block-param-nocreate": "Cấm tạo tài khoản.",
        "apihelp-block-param-reblock": "Nếu người dùng này đã bị khóa, ghi đè lên người này.",
+       "apihelp-checktoken-param-type": "Kiểu dấu hiệu được kiểm thử.",
+       "apihelp-checktoken-param-token": "Dấu hiệu để kiểm thử.",
+       "apihelp-checktoken-example-simple": "Kiểm thử dấu hiệu <kbd>csrf</kbd> có hợp lệ hay không.",
        "apihelp-clearhasmsg-description": "Xóa cờ <code>hasmsg</code> cho người dùng hiện tại.",
        "apihelp-clearhasmsg-example-1": "Xóa cờ <code>hasmsg</code> cho người dùng hiện tại",
        "apihelp-compare-param-fromtitle": "So sánh tiêu đề đầu tiên.",
        "apihelp-delete-description": "Xóa trang.",
        "apihelp-delete-param-title": "Xóa tiêu đề của trang. Không thể sử dụng cùng với <var>$1pageid</var>.",
        "apihelp-delete-param-pageid": "Xóa ID của trang. Không thể sử dụng cùng với <var>$1title</var>.",
-       "apihelp-delete-param-watch": "Thêm trang vào danh sách theo dõi của bạn.",
-       "apihelp-delete-param-unwatch": "Bỏ trang này khỏi danh sách theo dõi của bạn.",
-       "apihelp-delete-example-simple": "Xóa Trang Chính",
-       "apihelp-delete-example-reason": "Xóa Trang Chính với lý do “Chuẩn bị di chuyển”",
+       "apihelp-delete-param-watch": "Thêm trang vào danh sách theo dõi của người dùng hiện tại.",
+       "apihelp-delete-param-unwatch": "Bỏ trang này khỏi danh sách theo dõi của người dùng hiện tại.",
+       "apihelp-delete-example-simple": "Xóa <kbd>Trang Chính</kbd>.",
+       "apihelp-delete-example-reason": "Xóa <kbd>Trang Chính</kbd> với lý do <kbd>Chuẩn bị di chuyển</kbd>.",
        "apihelp-disabled-description": "Mô đun này đã bị vô hiệu hóa.",
        "apihelp-edit-description": "Tạo và sửa trang.",
-       "apihelp-edit-param-section": "Số phần trang. 0 là phần đầu; “new” là phần mới.",
+       "apihelp-edit-param-section": "Số phần trang. <kbd>0</kbd> là phần đầu; <kbd>new</kbd> là phần mới.",
        "apihelp-edit-param-sectiontitle": "Tên của phần mới.",
        "apihelp-edit-param-text": "Nội dung trang.",
        "apihelp-edit-param-summary": "Tóm lược sửa đổi. Cũng là tên phần khi $1section=new và $1sectiontitle không được đặt.",
@@ -53,8 +56,8 @@
        "apihelp-edit-param-bot": "Đánh dấu sửa đổi này là do bot thực hiện.",
        "apihelp-edit-param-createonly": "Không sửa đổi trang nếu nó đã tồn tại.",
        "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-watch": "Thêm trang vào danh sách theo dõi của người dùng hiện tại.",
+       "apihelp-edit-param-unwatch": "Bỏ trang này khỏi danh sách theo dõi của người dùng hiện tại.",
        "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-emailuser-param-subject": "Tiêu đề bức thư.",
        "apihelp-emailuser-param-text": "Nội dung bức thư.",
        "apihelp-emailuser-param-ccme": "Gửi bản sao của thư này cho tôi.",
-       "apihelp-emailuser-example-email": "Gửi thư điện tử cho thành viên “BQVWiki” với văn bản “Nội dung”",
+       "apihelp-emailuser-example-email": "Gửi thư điện tử cho thành viên <kbd>BQVWiki</kbd> với văn bản <kbd>Nội dung</kbd>.",
        "apihelp-expandtemplates-description": "Bung tất cả bản mẫu trong văn bản wiki.",
        "apihelp-expandtemplates-param-title": "Tên trang.",
        "apihelp-expandtemplates-param-text": "Văn bản wiki để bung.",
+       "apihelp-expandtemplates-paramvalue-prop-parsetree": "Cây phân tích XML của đầu vào.",
+       "apihelp-feedcontributions-description": "Trả về nguồn cấp đóng góp người dùng.",
+       "apihelp-feedcontributions-param-feedformat": "Định dạng nguồn cấp.",
+       "apihelp-feedcontributions-param-year": "Từ năm (trở về trước).",
+       "apihelp-feedcontributions-param-month": "Từ tháng (trở về trước).",
+       "apihelp-feedcontributions-param-deletedonly": "Chỉ hiện các đóng góp đã xóa.",
+       "apihelp-feedcontributions-param-toponly": "Chỉ hiện các phiên bản mới nhất.",
+       "apihelp-feedcontributions-param-newonly": "Chỉ hiện các sửa đổi tạo trang.",
+       "apihelp-feedcontributions-example-simple": "Trả về các đóng góp của người dùng <kbd>Ví dụ</kbd>.",
+       "apihelp-feedrecentchanges-description": "Trả về nguồn cấp thay đổi gần đây.",
+       "apihelp-feedrecentchanges-param-feedformat": "Định dạng nguồn cấp.",
+       "apihelp-feedrecentchanges-param-hideminor": "Ẩn thay đổi nhỏ.",
+       "apihelp-feedrecentchanges-param-hidebots": "Ẩn thay đổi do bot thực hiện.",
+       "apihelp-feedrecentchanges-param-hideanons": "Ẩn thay đổi do người dùng vô danh thực hiện.",
+       "apihelp-feedrecentchanges-param-hideliu": "Ẩn thay đổi do người dùng đăng nhập thực hiện.",
+       "apihelp-feedrecentchanges-param-hidepatrolled": "Ẩn thay đổi đã tuần tra.",
+       "apihelp-feedrecentchanges-param-hidemyself": "Ẩn thay đổi do người dùng hiện tại thực hiện.",
+       "apihelp-feedrecentchanges-param-tagfilter": "Lọc theo thẻ.",
+       "apihelp-feedrecentchanges-example-simple": "Xem thay đổi gần đây.",
+       "apihelp-feedwatchlist-description": "Trả về nguồn cấp danh sách theo dõi.",
+       "apihelp-feedwatchlist-param-feedformat": "Định dạng nguồn cấp.",
+       "apihelp-feedwatchlist-example-default": "Xem nguồn cấp danh sách theo dõi.",
        "apihelp-filerevert-param-comment": "Tải lên bình luận.",
        "apihelp-filerevert-param-archivename": "Tên lưu trữ của bản sửa đổi để trở lại .",
        "apihelp-filerevert-example-revert": "Hoàn nguyên <kbd>Wiki.png</kbd> veef phiên bản 2011-03-05T15 : 27:40Z",
        "apihelp-help-example-query": "Trợ giúp cho hai module con truy vấn",
        "apihelp-imagerotate-description": "Xoay một hoặc nhiều hình ảnh.",
        "apihelp-imagerotate-param-rotation": "Độ xoay hình ảnh theo chiều kim đồng hồ.",
-       "apihelp-imagerotate-example-simple": "Xoay [[:Tập tin:Ví dụ.jpg]] 90 độ",
-       "apihelp-imagerotate-example-generator": "Xoay tất cả các hình ảnh trong [[:Thể loại:Búng]] 180 độ",
+       "apihelp-imagerotate-example-simple": "Xoay <kbd>Tập tin:Ví dụ.jpg</kbd> <kbd>90</kbd> độ.",
+       "apihelp-imagerotate-example-generator": "Xoay tất cả các hình ảnh trong <kbd>Thể loại:Búng</kbd> <kbd>180</kbd> độ.",
        "apihelp-login-param-name": "Tên người dùng.",
        "apihelp-login-param-password": "Mật khẩu.",
        "apihelp-login-param-domain": "Tên miền (tùy chọn).",
        "apihelp-login-example-login": "Đăng nhập",
        "apihelp-logout-example-logout": "Đăng xuất người dùng hiện tại",
        "apihelp-move-description": "Di chuyển trang.",
-       "apihelp-move-param-reason": "Lý do di chuyển.",
+       "apihelp-move-param-reason": "Lý do đổi tên.",
        "apihelp-move-param-noredirect": "Không tạo trang đổi hướng.",
        "apihelp-move-param-ignorewarnings": "Bỏ qua tất cả các cảnh báo.",
        "apihelp-opensearch-description": "Tìm kiếm trong wiki qua giao thức OpenSearch.",
        "apihelp-opensearch-param-limit": "Đa số kết quả để cho ra.",
        "apihelp-opensearch-param-namespace": "Không gian tên để tìm kiếm.",
        "apihelp-opensearch-param-format": "Định dạng kết quả được cho ra.",
-       "apihelp-opensearch-example-te": "Tìm trang bắt đầu với “Te”",
+       "apihelp-opensearch-example-te": "Tìm trang bắt đầu với <kbd>Te</kbd>.",
        "apihelp-options-example-reset": "Mặc định lại các tùy chọn",
        "apihelp-paraminfo-param-helpformat": "Định dạng chuỗi trợ giúp.",
        "apihelp-parse-param-summary": "Lời tóm lược để phân tích.",
-       "apihelp-parse-param-section": "Chỉ truy xuất nội dung của số bộ phận này.",
-       "apihelp-parse-param-disablepp": "Vô hiệu hóa phân tích cú pháp đầu ra của Báo cáo PP .",
+       "apihelp-parse-param-section": "Chỉ truy xuất nội dung của số phần này; nếu có <kbd>new</kbd> thì tạo phần mới.\n\nPhần <kbd>new</kbd> chỉ được chấp nhận khi định rõ <var>text</var>.",
+       "apihelp-parse-param-disablepp": "Bỏ qua thông báo bộ tiền xử lý (“NewPP limit report”) khi cho ra kết quả bộ xử lý.",
        "apihelp-parse-example-page": "Phân tích trang.",
        "apihelp-parse-example-text": "Phân tích văn bản wiki.",
        "apihelp-parse-example-texttitle": "Phân tích văn bản wiki theo tên trang.",
        "apihelp-parse-example-summary": "Phân tích lời tóm lược.",
        "apihelp-protect-example-protect": "Khóa trang.",
-       "apihelp-protect-example-unprotect": "Mở khóa trang bằng cách đặt hạn chế thành “all”",
+       "apihelp-protect-example-unprotect": "Mở khóa trang bằng cách đặt hạn chế thành <kbd>all</kbd>.",
        "apihelp-protect-example-unprotect2": "Mở khóa trang bằng cách không đặt hạn chế nào",
        "apihelp-purge-param-forcelinkupdate": "Cập nhật các bảng liên kết.",
        "apihelp-purge-example-generator": "Làm mới 10 trang đầu tiên trong không gian tên chính",
        "apihelp-query-param-meta": "Siêu dữ liệu để lấy.",
        "apihelp-query+allcategories-param-dir": "Hướng xếp loại.",
        "apihelp-rollback-description": "Hoàn tác chỉnh sửa cuối cùng của trang này.\n\nNếu người dùng cuối cùng đã cỉnh sửa trang này nhiều lần, tất cả chúng sẽ được hoàn tác lại như ban đầu.",
-       "apihelp-format-example-generic": "Định dạng kết quả truy vấn dưới dạng $1",
-       "apihelp-dbg-description": "Cho ra dữ liệu dưới dạng var_export() của PHP.",
-       "apihelp-dbgfm-description": "Cho ra dữ liệu dưới dạng var_export() của PHP (định dạng bằng HTML).",
+       "apihelp-format-example-generic": "Cho ra kết quả truy vấn dưới dạng $1.",
+       "apihelp-dbg-description": "Cho ra dữ liệu dưới dạng <code>var_export()</code> của PHP.",
+       "apihelp-dbgfm-description": "Cho ra dữ liệu dưới dạng <code>var_export()</code> của PHP (định dạng bằng HTML).",
        "apihelp-json-description": "Cho ra dữ liệu dưới dạng JSON.",
        "apihelp-jsonfm-description": "Cho ra dữ liệu dưới dạng JSON (định dạng bằng HTML).",
        "apihelp-none-description": "Không cho ra gì.",
        "apihelp-rawfm-description": "Cho ra dữ liệu với các phần tử gỡ lỗi dưới dạng JSON (định dạng bằng HTML).",
-       "apihelp-txt-description": "Cho ra dữ liệu dưới dạng print_r() của PHP.",
-       "apihelp-txtfm-description": "Cho ra dữ liệu dưới dạng print_r() của PHP (định dạng bằng HTML).",
+       "apihelp-txt-description": "Cho ra dữ liệu dưới dạng <code>print_r()</code> của PHP.",
+       "apihelp-txtfm-description": "Cho ra dữ liệu dưới dạng <code>print_r()</code> của PHP (định dạng bằng HTML).",
        "apihelp-xml-description": "Cho ra dữ liệu dưới dạng XML.",
        "apihelp-xmlfm-description": "Cho ra dữ liệu dưới dạng XML (định dạng bằng HTML).",
        "apihelp-yaml-description": "Cho ra dữ liệu dưới dạng YAML.",
        "api-help-parameters": "{{PLURAL:$1|Tham số|Các tham số}}:",
        "api-help-param-deprecated": "Bị phản đối.",
        "api-help-param-required": "Tham số này là bắt buộc.",
-       "api-help-param-list": "{{PLURAL:$1|1=Một giá trị|2=Các giá trị (phân tách bằng “{{!}}”)}}: $2",
+       "api-help-param-list": "{{PLURAL:$1|1=Một giá trị|2=Các giá trị (phân tách bằng <kbd>{{!}}</kbd>)}}: $2",
        "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=Cần phải để trống|Cần phải để trống hoặc là $2}}",
        "api-help-param-limit": "Không cho phép hơn $1.",
        "api-help-param-limit2": "Không cho phép hơn $1 ($2 đối với các bot).",
-       "api-help-param-multi-separate": "Phân tách các giá trị bằng “|”.",
+       "api-help-param-multi-separate": "Phân tách các giá trị bằng <kbd>|</kbd>.",
        "api-help-param-default": "Mặc định: $1",
        "api-help-param-default-empty": "Mặc định: <span class=\"apihelp-empty\">(trống)</span>",
        "api-help-examples": "{{PLURAL:$1|Ví dụ|Các ví dụ}}:",
index fd476c6..e2d05e0 100644 (file)
        "apihelp-query+info-paramvalue-prop-talkid": "每个非讨论页面的讨论页的页面ID。",
        "apihelp-query+info-paramvalue-prop-watched": "列出每个页面的被监视状态。",
        "apihelp-query+info-paramvalue-prop-watchers": "监视人员数,如果允许。",
+       "apihelp-query+info-paramvalue-prop-notificationtimestamp": "每个页面的监视列表通知时间戳。",
        "apihelp-query+info-paramvalue-prop-subjectid": "每个讨论页的母页面的页面ID。",
        "apihelp-query+info-paramvalue-prop-readable": "用户是否可以阅读此页面。",
        "apihelp-query+info-paramvalue-prop-preload": "提供由EditFormPreloadText返回的文本。",
        "apihelp-query+watchlist-paramvalue-prop-sizes": "添加页面的旧有长度和新长度。",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "添加最近被通知有关编辑的用户的时间戳。",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "在适当位置添加日志信息。",
+       "apihelp-query+watchlist-param-type": "要显示的更改类型:\n;edit:定期页面编辑。\n;external:外部更改。\n;new:页面创建。\n;log:日志记录。",
        "apihelp-query+watchlist-param-token": "允许访问其他用户监视列表的安全密钥(可通过用户的[[Special:Preferences#mw-prefsection-watchlist|参数设置]]找到)。",
        "apihelp-query+watchlist-example-generator": "在当前用户的监视列表中检索用于最近更改页面的页面信息。",
        "apihelp-query+watchlistraw-description": "获得当前用户的监视列表上的所有页面。",
        "apihelp-yamlfm-description": "输出数据为YAML格式(HTML优质打印效果)。",
        "api-format-title": "MediaWiki API 结果",
        "api-format-prettyprint-header": "这是$1格式的HTML表示。HTML对调试很有用,但不适合应用程序使用。\n\n指定<var>format</var>参数以更改输出格式。要查看$1格式的非HTML表示,设置<kbd>format=$2</kbd>。\n\n参见[[mw:API|完整文档]],或[[Special:ApiHelp/main|API 帮助]]以获取更多信息。",
+       "api-format-prettyprint-header-only-html": "这是用来调试的HTML表现,不适合实际使用。\n\n参见[[mw:API|完整文档]],或[[Special:ApiHelp/main|API帮助]]以获取更多信息。",
        "api-orm-param-props": "要查询的字段。",
        "api-orm-param-limit": "返回的总行数。",
        "api-pageset-param-titles": "要工作的标题列表。",
index e8cc5e5..56c9256 100644 (file)
 class LinkCache {
        // Increment $mClassVer whenever old serialized versions of this class
        // becomes incompatible with the new version.
-       private $mClassVer = 4;
+       private $mClassVer = 5;
 
-       private $mGoodLinks = array();
-       private $mGoodLinkFields = array();
-       private $mBadLinks = array();
+       /**
+        * @var MapCacheLRU
+        */
+       private $mGoodLinks;
+       /**
+        * @var MapCacheLRU
+        */
+       private $mBadLinks;
        private $mForUpdate = false;
 
+       /**
+        * How many Titles to store. There are two caches, so the amount actually
+        * stored in memory can be up to twice this.
+        */
+       const MAX_SIZE = 10000;
+
        /**
         * @var LinkCache
         */
        protected static $instance;
 
+       public function __construct() {
+               $this->mGoodLinks = new MapCacheLRU( self::MAX_SIZE );
+               $this->mBadLinks = new MapCacheLRU( self::MAX_SIZE );
+       }
+
        /**
         * Get an instance of this class.
         *
@@ -90,8 +106,9 @@ class LinkCache {
         * @return int
         */
        public function getGoodLinkID( $title ) {
-               if ( array_key_exists( $title, $this->mGoodLinks ) ) {
-                       return $this->mGoodLinks[$title];
+               if ( $this->mGoodLinks->has( $title ) ) {
+                       $info = $this->mGoodLinks->get( $title );
+                       return $info['id'];
                } else {
                        return 0;
                }
@@ -106,8 +123,9 @@ class LinkCache {
         */
        public function getGoodLinkFieldObj( $title, $field ) {
                $dbkey = $title->getPrefixedDBkey();
-               if ( array_key_exists( $dbkey, $this->mGoodLinkFields ) ) {
-                       return $this->mGoodLinkFields[$dbkey][$field];
+               if ( $this->mGoodLinks->has( $dbkey ) ) {
+                       $info = $this->mGoodLinks->get( $dbkey );
+                       return $info[$field];
                } else {
                        return null;
                }
@@ -118,7 +136,8 @@ class LinkCache {
         * @return bool
         */
        public function isBadLink( $title ) {
-               return array_key_exists( $title, $this->mBadLinks );
+               // We need to use get here since has will not call ping.
+               return $this->mBadLinks->get( $title ) !== null;
        }
 
        /**
@@ -135,13 +154,13 @@ class LinkCache {
                $revision = 0, $model = null
        ) {
                $dbkey = $title->getPrefixedDBkey();
-               $this->mGoodLinks[$dbkey] = (int)$id;
-               $this->mGoodLinkFields[$dbkey] = array(
+               $this->mGoodLinks->set( $dbkey, array(
+                       'id' => (int)$id,
                        'length' => (int)$len,
                        'redirect' => (int)$redir,
                        'revision' => (int)$revision,
                        'model' => $model ? (string)$model : null,
-               );
+               ) );
        }
 
        /**
@@ -153,13 +172,13 @@ class LinkCache {
         */
        public function addGoodLinkObjFromRow( $title, $row ) {
                $dbkey = $title->getPrefixedDBkey();
-               $this->mGoodLinks[$dbkey] = intval( $row->page_id );
-               $this->mGoodLinkFields[$dbkey] = array(
+               $this->mGoodLinks->set( $dbkey, array(
+                       'id' => intval( $row->page_id ),
                        'length' => intval( $row->page_len ),
                        'redirect' => intval( $row->page_is_redirect ),
                        'revision' => intval( $row->page_latest ),
                        'model' => !empty( $row->page_content_model ) ? strval( $row->page_content_model ) : null,
-               );
+               ) );
        }
 
        /**
@@ -168,12 +187,12 @@ class LinkCache {
        public function addBadLinkObj( $title ) {
                $dbkey = $title->getPrefixedDBkey();
                if ( !$this->isBadLink( $dbkey ) ) {
-                       $this->mBadLinks[$dbkey] = 1;
+                       $this->mBadLinks->set( $dbkey, 1 );
                }
        }
 
        public function clearBadLink( $title ) {
-               unset( $this->mBadLinks[$title] );
+               $this->mBadLinks->clear( array( $title ) );
        }
 
        /**
@@ -181,17 +200,33 @@ class LinkCache {
         */
        public function clearLink( $title ) {
                $dbkey = $title->getPrefixedDBkey();
-               unset( $this->mBadLinks[$dbkey] );
-               unset( $this->mGoodLinks[$dbkey] );
-               unset( $this->mGoodLinkFields[$dbkey] );
+               $this->mBadLinks->clear( array( $dbkey ) );
+               $this->mGoodLinks->clear( array( $dbkey ) );
        }
 
+
+       /**
+        * @deprecated since 1.26
+        * @return array
+        */
        public function getGoodLinks() {
-               return $this->mGoodLinks;
+               wfDeprecated( __METHOD__, '1.26' );
+               $links = array();
+               foreach ( $this->mGoodLinks->getAllKeys() as $key ) {
+                       $info = $this->mGoodLinks->get( $key );
+                       $links[$key] = $info['id'];
+               }
+
+               return $links;
        }
 
+       /**
+        * @deprecated since 1.26
+        * @return array
+        */
        public function getBadLinks() {
-               return array_keys( $this->mBadLinks );
+               wfDeprecated( __METHOD__, '1.26' );
+               return $this->mBadLinks->getAllKeys();
        }
 
        /**
@@ -262,8 +297,7 @@ class LinkCache {
         * Clears cache
         */
        public function clear() {
-               $this->mGoodLinks = array();
-               $this->mGoodLinkFields = array();
-               $this->mBadLinks = array();
+               $this->mGoodLinks->clear();
+               $this->mBadLinks->clear();
        }
 }
index 95f4816..bf8386f 100644 (file)
@@ -611,17 +611,16 @@ class ChangeTags {
         * Build a text box to select a change tag
         *
         * @param string $selected Tag to select by default
-        * @param bool $fullForm
-        *        - if false, then it returns an array of (label, form).
-        *        - if true, it returns an entire form around the selector.
-        * @param Title $title Title object to send the form to.
-        *        Used when, and only when $fullForm is true.
+        * @param bool $fullForm Affects return value, see below
+        * @param Title $title Title object to send the form to. Used only if $fullForm is true.
+        * @param bool $ooui Use an OOUI TextInputWidget as selector instead of a non-OOUI input field
+        *        You need to call OutputPage::enableOOUI() yourself.
         * @return string|array
-        *        - if $fullForm is false: Array with
-        *        - if $fullForm is true: String, html fragment
+        *        - if $fullForm is false: an array of (label, selector).
+        *        - if $fullForm is true: HTML of entire form built around the selector.
         */
        public static function buildTagFilterSelector( $selected = '',
-               $fullForm = false, Title $title = null
+               $fullForm = false, Title $title = null, $ooui = false
        ) {
                global $wgUseTagFilter;
 
@@ -634,14 +633,24 @@ class ChangeTags {
                                'label',
                                array( 'for' => 'tagfilter' ),
                                wfMessage( 'tag-filter' )->parse()
-                       ),
-                       Xml::input(
+                       )
+               );
+
+               if ( $ooui ) {
+                       $data[] = new OOUI\TextInputWidget( array(
+                               'id' => 'tagfilter',
+                               'name' => 'tagfilter',
+                               'value' => $selected,
+                               'classes' => 'mw-tagfilter-input',
+                       ) );
+               } else {
+                       $data[] = Xml::input(
                                'tagfilter',
                                20,
                                $selected,
                                array( 'class' => 'mw-tagfilter-input mw-ui-input mw-ui-input-inline', 'id' => 'tagfilter' )
-                       )
-               );
+                       );
+               }
 
                if ( !$fullForm ) {
                        return $data;
index 8010790..ea4e1b1 100644 (file)
@@ -40,7 +40,7 @@ use UDPTransport;
  * See documentation in DefaultSettings.php for detailed explanations of each
  * variable.
  *
- * @see \MediaWiki\Logger\LoggerFactory
+ * @see \\MediaWiki\\Logger\\LoggerFactory
  * @since 1.25
  * @author Bryan Davis <bd808@wikimedia.org>
  * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
@@ -53,10 +53,10 @@ class LegacyLogger extends AbstractLogger {
        protected $channel;
 
        /**
-        * Convert Psr\Log\LogLevel constants into int for sane comparisons
+        * Convert Psr\\Log\\LogLevel constants into int for sane comparisons
         * These are the same values that Monlog uses
         *
-        * @var array
+        * @var array $levelMapping
         */
        protected static $levelMapping = array(
                LogLevel::DEBUG => 100,
@@ -100,7 +100,7 @@ class LegacyLogger extends AbstractLogger {
         *
         * @param string $channel
         * @param string $message
-        * @param string|int $level Psr\Log\LogEvent constant or Monlog level int
+        * @param string|int $level Psr\\Log\\LogEvent constant or Monlog level int
         * @param array $context
         * @return bool True if message should be sent to disk/network, false
         * otherwise
index 1bf39e4..6a7f1d0 100644 (file)
@@ -30,7 +30,7 @@ namespace MediaWiki\Logger;
  * );
  * @endcode
  *
- * @see \MediaWiki\Logger\LoggerFactory
+ * @see \\MediaWiki\\Logger\\LoggerFactory
  * @since 1.25
  * @author Bryan Davis <bd808@wikimedia.org>
  * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
@@ -47,7 +47,7 @@ class LegacySpi implements Spi {
         * Get a logger instance.
         *
         * @param string $channel Logging channel
-        * @return \Psr\Log\LoggerInterface Logger instance
+        * @return \\Psr\\Log\\LoggerInterface Logger instance
         */
        public function getLogger( $channel ) {
                if ( !isset( $this->singletons[$channel] ) ) {
index f6699ec..0b6965f 100644 (file)
@@ -25,7 +25,7 @@ use ObjectFactory;
 /**
  * PSR-3 logger instance factory.
  *
- * Creation of \Psr\Log\LoggerInterface instances is managed via the
+ * Creation of \\Psr\\Log\\LoggerInterface instances is managed via the
  * LoggerFactory::getInstance() static method which in turn delegates to the
  * currently registered service provider.
  *
@@ -38,7 +38,7 @@ use ObjectFactory;
  * $wgMWLoggerDefaultSpi is expected to be an array usable by
  * ObjectFactory::getObjectFromSpec() to create a class.
  *
- * @see \MediaWiki\Logger\Spi
+ * @see \\MediaWiki\\Logger\\Spi
  * @since 1.25
  * @author Bryan Davis <bd808@wikimedia.org>
  * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
@@ -53,10 +53,10 @@ class LoggerFactory {
 
 
        /**
-        * Register a service provider to create new \Psr\Log\LoggerInterface
+        * Register a service provider to create new \\Psr\\Log\\LoggerInterface
         * instances.
         *
-        * @param \MediaWiki\Logger\Spi $provider Provider to register
+        * @param \\MediaWiki\\Logger\\Spi $provider Provider to register
         */
        public static function registerProvider( Spi $provider ) {
                self::$spi = $provider;
@@ -71,7 +71,7 @@ class LoggerFactory {
         * Spi registration. $wgMWLoggerDefaultSpi is expected to be an
         * array usable by ObjectFactory::getObjectFromSpec() to create a class.
         *
-        * @return \MediaWiki\Logger\Spi
+        * @return \\MediaWiki\\Logger\\Spi
         * @see registerProvider()
         * @see ObjectFactory::getObjectFromSpec()
         */
@@ -91,7 +91,7 @@ class LoggerFactory {
         * Get a named logger instance from the currently configured logger factory.
         *
         * @param string $channel Logger channel (name)
-        * @return \Psr\Log\LoggerInterface
+        * @return \\Psr\\Log\\LoggerInterface
         */
        public static function getInstance( $channel ) {
                if ( !interface_exists( '\Psr\Log\LoggerInterface' ) ) {
index e32e0b2..7b54861 100644 (file)
@@ -30,7 +30,7 @@ use ObjectFactory;
  * Configured using an array of configuration data with the keys 'loggers',
  * 'processors', 'handlers' and 'formatters'.
  *
- * The ['loggers']['@default'] configuration will be used to create loggers
+ * The ['loggers']['\@default'] configuration will be used to create loggers
  * for any channel that isn't explicitly named in the 'loggers' configuration
  * section.
  *
@@ -176,7 +176,7 @@ class MonologSpi implements Spi {
         * name will return the cached instance.
         *
         * @param string $channel Logging channel
-        * @return \Psr\Log\LoggerInterface Logger instance
+        * @return \\Psr\\Log\\LoggerInterface Logger instance
         */
        public function getLogger( $channel ) {
                if ( !isset( $this->singletons['loggers'][$channel] ) ) {
@@ -198,7 +198,7 @@ class MonologSpi implements Spi {
         * Create a logger.
         * @param string $channel Logger channel
         * @param array $spec Configuration
-        * @return \Monolog\Logger
+        * @return \\Monolog\\Logger
         */
        protected function createLogger( $channel, $spec ) {
                $obj = new Logger( $channel );
@@ -236,7 +236,7 @@ class MonologSpi implements Spi {
        /**
         * Create or return cached handler.
         * @param string $name Processor name
-        * @return \Monolog\Handler\HandlerInterface
+        * @return \\Monolog\\Handler\\HandlerInterface
         */
        public function getHandler( $name ) {
                if ( !isset( $this->singletons['handlers'][$name] ) ) {
@@ -256,7 +256,7 @@ class MonologSpi implements Spi {
        /**
         * Create or return cached formatter.
         * @param string $name Formatter name
-        * @return \Monolog\Formatter\FormatterInterface
+        * @return \\Monolog\\Formatter\\FormatterInterface
         */
        public function getFormatter( $name ) {
                if ( !isset( $this->singletons['formatters'][$name] ) ) {
index a82d2c4..c9c7482 100644 (file)
@@ -23,7 +23,7 @@ namespace MediaWiki\Logger;
 use Psr\Log\NullLogger;
 
 /**
- * LoggerFactory service provider that creates \Psr\Log\NullLogger
+ * LoggerFactory service provider that creates \\Psr\\Log\\NullLogger
  * instances. A NullLogger silently discards all log events sent to it.
  *
  * Usage:
@@ -33,7 +33,7 @@ use Psr\Log\NullLogger;
  * );
  * @endcode
  *
- * @see \MediaWiki\Logger\LoggerFactory
+ * @see \\MediaWiki\\Logger\\LoggerFactory
  * @since 1.25
  * @author Bryan Davis <bd808@wikimedia.org>
  * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
@@ -41,7 +41,7 @@ use Psr\Log\NullLogger;
 class NullSpi implements Spi {
 
        /**
-        * @var \Psr\Log\NullLogger $singleton
+        * @var \\Psr\\Log\\NullLogger $singleton
         */
        protected $singleton;
 
@@ -55,7 +55,7 @@ class NullSpi implements Spi {
         * Get a logger instance.
         *
         * @param string $channel Logging channel
-        * @return \Psr\Log\NullLogger Logger instance
+        * @return \\Psr\\Log\\NullLogger Logger instance
         */
        public function getLogger( $channel ) {
                return $this->singleton;
index 044789f..51818a3 100644 (file)
 namespace MediaWiki\Logger;
 
 /**
- * Service provider interface for \Psr\Log\LoggerInterface implementation
+ * Service provider interface for \\Psr\\Log\\LoggerInterface implementation
  * libraries.
  *
  * MediaWiki can be configured to use a class implementing this interface to
- * create new \Psr\Log\LoggerInterface instances via either the
+ * create new \\Psr\\Log\\LoggerInterface instances via either the
  * $wgMWLoggerDefaultSpi global variable or code that constructs an instance
  * and registers it via the LoggerFactory::registerProvider() static method.
  *
- * @see \MediaWiki\Logger\LoggerFactory
+ * @see \\MediaWiki\\Logger\\LoggerFactory
  * @since 1.25
  * @author Bryan Davis <bd808@wikimedia.org>
  * @copyright © 2014 Bryan Davis and Wikimedia Foundation.
@@ -40,7 +40,7 @@ interface Spi {
         * Get a logger instance.
         *
         * @param string $channel Logging channel
-        * @return \Psr\Log\LoggerInterface Logger instance
+        * @return \\Psr\\Log\\LoggerInterface Logger instance
         */
        public function getLogger( $channel );
 
index 9ec15cb..42e7cab 100644 (file)
@@ -26,12 +26,12 @@ use Monolog\Formatter\NormalizerFormatter;
 /**
  * Log message formatter that mimics the legacy log message formatting of
  * `wfDebug`, `wfDebugLog`, `wfLogDBError` and `wfErrorLog` global functions by
- * delegating the formatting to \MediaWiki\Logger\LegacyLogger.
+ * delegating the formatting to \\MediaWiki\\Logger\\LegacyLogger.
  *
  * @since 1.25
  * @author Bryan Davis <bd808@wikimedia.org>
  * @copyright © 2013 Bryan Davis and Wikimedia Foundation.
- * @see \MediaWiki\Logger\LegacyLogger
+ * @see \\MediaWiki\\Logger\\LegacyLogger
  */
 class LegacyFormatter extends NormalizerFormatter {
 
index 1aab033..3db235b 100644 (file)
@@ -670,10 +670,10 @@ class SwiftFileBackend extends FileBackendStore {
                $ps = Profiler::instance()->scopedProfileIn( __METHOD__ . "-{$this->name}" );
                wfDebugLog( 'SwiftBackend', __METHOD__ . ": $path was not stored with SHA-1 metadata." );
 
+               $objHdrs['x-object-meta-sha1base36'] = false;
+
                $auth = $this->getAuthentication();
                if ( !$auth ) {
-                       $objHdrs['x-object-meta-sha1base36'] = false;
-
                        return $objHdrs; // failed
                }
 
@@ -702,7 +702,6 @@ class SwiftFileBackend extends FileBackendStore {
                }
 
                wfDebugLog( 'SwiftBackend', __METHOD__ . ": unable to set SHA-1 metadata for $path" );
-               $objHdrs['x-object-meta-sha1base36'] = false;
 
                return $objHdrs; // failed
        }
diff --git a/includes/htmlform/HTMLAdvancedSelectNamespace.php b/includes/htmlform/HTMLAdvancedSelectNamespace.php
new file mode 100644 (file)
index 0000000..348d170
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Creates a Html::namespaceSelector input field with a button assigned to the input field.
+ * @since 1.26
+ */
+class HTMLAdvancedSelectNamespace extends HTMLSelectNamespace {
+       function getInputHTML( $value ) {
+               $allValue = ( isset( $this->mParams['all'] ) ? $this->mParams['all'] : '' );
+
+               return parent::getInputHTML( $value ) . '&#160;' .
+                       Xml::checkLabel(
+                               $this->msg( 'invert' )->text(),
+                               $this->mParams['invertname'],
+                               $this->mParams['invertid'],
+                               $this->mParams['invertdefault'],
+                               array( 'title' => $this->msg( 'tooltip-invert' )->text() )
+                       ) . '&#160;' .
+                       Xml::checkLabel(
+                               $this->msg( 'namespace_association' )->text(),
+                               $this->mParams['associatedname'],
+                               $this->mParams['associatedid'],
+                               $this->mParams['associateddefault'],
+                               array( 'title' => $this->msg( 'tooltip-namespace_association' )->text() )
+                       );
+       }
+
+       /**
+        * Get the OOUI version of this field.
+        * @since 1.26
+        * @param string $value
+        * @return MediaWiki\\Widget\\NamespaceInputWidget A layout with all widget.
+        */
+       public function getInputOOUI( $value ) {
+               # There are more fields in this Widget as only one, so there are more values instead of only once.
+               # Filter the data from the request before creating the form to set the correct values to the
+               # Widget elements.
+               # Get WebRequest only, if there is an instance of HTMLForm, use default data instead
+               $invertdefault = false;
+               $associateddefault = false;
+               if ( $this->mParent instanceof HTMLForm ) {
+                       $request = $this->mParent->getRequest();
+                       if ( $request->getCheck( $this->mParams['associatedname'] ) ) {
+                               $associateddefault = true;
+                       }
+                       if ( $request->getCheck( $this->mParams['invertname'] ) ) {
+                               $invertdefault = true;
+                       }
+               }
+
+               // Unsupported: invertid, associatedid
+               return new MediaWiki\Widget\NamespaceInputWidget( array(
+                       'valueNamespace' => $value,
+                       'nameNamespace' => $this->mName,
+                       'id' => $this->mID,
+                       'includeAllValue' => $this->mAllValue,
+                       'nameInvert' => $this->mParams['invertname'],
+                       'labelInvert' => $this->msg( 'invert' )->text(),
+                       'valueInvert' => $invertdefault,
+                       'nameAssociated' => $this->mParams['associatedname'],
+                       'valueAssociated' => $associateddefault,
+                       'labelAssociated' => $this->msg( 'namespace_association' )->text(),
+               ) );
+       }
+}
diff --git a/includes/htmlform/HTMLAdvancedSelectNamespaceWithButton.php b/includes/htmlform/HTMLAdvancedSelectNamespaceWithButton.php
new file mode 100644 (file)
index 0000000..71c9509
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+/**
+ * Creates a Html::namespaceSelector input field with a button assigned to the input field.
+ */
+class HTMLAdvancedSelectNamespaceWithButton extends HTMLAdvancedSelectNamespace {
+       /** @var HTMLFormClassWithButton $mClassWithButton */
+       protected $mClassWithButton = null;
+
+       public function __construct( $info ) {
+               $this->mClassWithButton = new HTMLFormFieldWithButton( $info );
+               parent::__construct( $info );
+       }
+
+       public function getInputHTML( $value ) {
+               return $this->mClassWithButton->getElement( parent::getInputHTML( $value ) );
+       }
+}
index 9666c4e..646b0d5 100644 (file)
@@ -14,7 +14,7 @@ class HTMLCheckField extends HTMLFormField {
                $attr = $this->getTooltipAndAccessKey();
                $attr['id'] = $this->mID;
 
-               $attr += $this->getAttributes( array( 'disabled', 'tabindex' ) );
+               $attr += $this->getAttributes( array( 'disabled', 'tabindex', 'title' ) );
 
                if ( $this->mClass !== '' ) {
                        $attr['class'] = $this->mClass;
index 47200d9..b10d789 100644 (file)
@@ -140,6 +140,8 @@ class HTMLForm extends ContextSource {
                'selectandother' => 'HTMLSelectAndOtherField',
                'namespaceselect' => 'HTMLSelectNamespace',
                'namespaceselectwithbutton' => 'HTMLSelectNamespaceWithButton',
+               'advancednamespaceselect' => 'HTMLAdvancedSelectNamespace',
+               'advancednamespaceselectwithbutton' => 'HTMLAdvancedSelectNamespaceWithButton',
                'tagfilter' => 'HTMLTagFilter',
                'submit' => 'HTMLSubmitField',
                'hidden' => 'HTMLHiddenField',
@@ -167,7 +169,7 @@ class HTMLForm extends ContextSource {
        protected $mFieldTree;
        protected $mShowReset = false;
        protected $mShowSubmit = true;
-       protected $mSubmitFlag = 'constructive';
+       protected $mSubmitFlags = array( 'constructive', 'primary' );
 
        protected $mSubmitCallback;
        protected $mValidationErrorMessage;
@@ -975,7 +977,10 @@ class HTMLForm extends ContextSource {
                        $attribs['class'] = array( 'mw-htmlform-submit' );
 
                        if ( $useMediaWikiUIEverywhere ) {
-                               array_push( $attribs['class'], 'mw-ui-button', 'mw-ui-' . $this->mSubmitFlag );
+                               foreach ( $this->mSubmitFlags as $flag ) {
+                                       array_push( $attribs['class'], 'mw-ui-' . $flag );
+                               }
+                               array_push( $attribs['class'], 'mw-ui-button' );
                        }
 
                        $buttons .= Xml::submitButton( $this->getSubmitText(), $attribs ) . "\n";
@@ -1102,7 +1107,7 @@ class HTMLForm extends ContextSource {
         * @since 1.24
         */
        public function setSubmitDestructive() {
-               $this->mSubmitFlag = 'destructive';
+               $this->mSubmitFlags = array( 'destructive', 'primary' );
        }
 
        /**
@@ -1110,7 +1115,7 @@ class HTMLForm extends ContextSource {
         * @since 1.25
         */
        public function setSubmitProgressive() {
-               $this->mSubmitFlag = 'progressive';
+               $this->mSubmitFlags = array( 'progressive', 'primary' );
        }
 
        /**
@@ -1299,11 +1304,14 @@ class HTMLForm extends ContextSource {
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
        public function setMethod( $method = 'post' ) {
-               $this->mMethod = $method;
+               $this->mMethod = strtolower( $method );
 
                return $this;
        }
 
+       /**
+        * @return string Always lowercase
+        */
        public function getMethod() {
                return $this->mMethod;
        }
index b26b45d..1d8137e 100644 (file)
@@ -582,13 +582,14 @@ abstract class HTMLFormField {
 
                $fieldType = get_class( $this );
                $helpText = $this->getHelpText();
-               $field = new OOUI\FieldLayout( $inputField, array(
+               $config = array(
                        'classes' => array( "mw-htmlform-field-$fieldType", $this->mClass, $errorClass ),
                        'align' => $this->getLabelAlignOOUI(),
                        'label' => $this->getLabel(),
                        'help' => $helpText !== null ? new OOUI\HtmlSnippet( $helpText ) : null,
                        'infusable' => $infusable,
-               ) );
+               );
+               $field = $this->getFieldLayoutOOUI( $inputField, $config );
 
                return $field . $errors;
        }
@@ -601,6 +602,18 @@ abstract class HTMLFormField {
                return 'top';
        }
 
+       /**
+        * Get a FieldLayout (or subclass thereof) to wrap this field in when using OOUI output.
+        * @return OOUI\\FieldLayout|OOUI\\ActionFieldLayout
+        */
+       protected function getFieldLayoutOOUI( $inputField, $config ) {
+               if ( isset( $this->mClassWithButton ) ) {
+                       $buttonWidget = $this->mClassWithButton->getInputOOUI( '' );
+                       return new OOUI\ActionFieldLayout( $inputField, $buttonWidget, $config );
+               }
+               return new OOUI\FieldLayout( $inputField, $config );
+       }
+
        /**
         * Get the complete raw fields for the input, including help text,
         * labels, and whatever.
index 113bb4b..6b02c49 100644 (file)
@@ -18,6 +18,9 @@ class HTMLFormFieldWithButton extends HTMLFormField {
        /** @var string $mButtonType Value for the button in this field */
        protected $mButtonValue;
 
+       /** @var string $mButtonType Value for the button in this field */
+       protected $mButtonFlags = array( 'primary', 'progressive' );
+
        public function __construct( $info ) {
                if ( isset( $info['buttonclass'] ) ) {
                        $this->mButtonClass = $info['buttonclass'];
@@ -34,6 +37,9 @@ class HTMLFormFieldWithButton extends HTMLFormField {
                if ( isset( $info['buttontype'] ) ) {
                        $this->mButtonType = $info['buttontype'];
                }
+               if ( isset( $info['buttonflags'] ) ) {
+                       $this->mButtonFlags = $info['buttonflags'];
+               }
                parent::__construct( $info );
        }
 
@@ -46,6 +52,16 @@ class HTMLFormFieldWithButton extends HTMLFormField {
                return Html::input( $this->mButtonName, $this->mButtonValue, $this->mButtonType, $attr );
        }
 
+       public function getInputOOUI( $value ) {
+               return new OOUI\ButtonInputWidget( array(
+                       'name' => $this->mButtonName,
+                       'value' => $this->mButtonValue,
+                       'type' => $this->mButtonType,
+                       'label' => $this->mButtonValue,
+                       'flags' => $this->mButtonFlags,
+               ) );
+       }
+
        /**
         * Combines the passed element with a button.
         * @param String $element Element to combine the button with.
index 23ca3bf..0e4f4f3 100644 (file)
@@ -64,6 +64,10 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                return "$select<br />\n$textbox";
        }
 
+       function getInputOOUI( $value ) {
+               return false;
+       }
+
        /**
         * @param WebRequest $request
         *
index cbf7d12..3e7acdf 100644 (file)
@@ -62,6 +62,10 @@ class HTMLSelectOrOtherField extends HTMLTextField {
                return "$select<br />\n$textbox";
        }
 
+       function getInputOOUI( $value ) {
+               return false;
+       }
+
        /**
         * @param WebRequest $request
         *
index e1bc1a0..a225c67 100644 (file)
@@ -7,10 +7,12 @@ use MediaWiki\Widget\TitleInputWidget;
  * Automatically does validation that the title is valid,
  * as well as autocompletion if using the OOUI display format.
  *
- * FIXME: Does not work for forms that support GET requests.
+ * Note: Forms using GET requests will need to make sure the title value is not
+ * an empty string.
  *
  * Optional parameters:
  * 'namespace' - Namespace the page must be in
+ * 'relative' - If true and 'namespace' given, strip/add the namespace from/to the title as needed
  * 'creatable' - Whether to validate the title is creatable (not a special page)
  * 'exists' - Whether to validate that the title already exists
  *
@@ -20,6 +22,7 @@ class HTMLTitleTextField extends HTMLTextField {
        public function __construct( $params ) {
                $params += array(
                        'namespace' => false,
+                       'relative' => false,
                        'creatable' => false,
                        'exists' => false,
                );
@@ -28,8 +31,20 @@ class HTMLTitleTextField extends HTMLTextField {
        }
 
        public function validate( $value, $alldata ) {
+               if ( $this->mParent->getMethod() === 'get' && $value === '' ) {
+                       // If the form is a GET form and has no value, assume it hasn't been
+                       // submitted yet, and skip validation
+                       return parent::validate( $value, $alldata );
+               }
                try {
-                       $title = Title::newFromTextThrow( $value );
+                       if ( !$this->mParams['relative'] ) {
+                               $title = Title::newFromTextThrow( $value );
+                       } else {
+                               // Can't use Title::makeTitleSafe(), because it doesn't throw useful exceptions
+                               global $wgContLang;
+                               $namespaceName = $wgContLang->getNsText( $this->mParams['namespace'] );
+                               $title = Title::newFromTextThrow( $namespaceName . ':' . $value );
+                       }
                } catch ( MalformedTitleException $e ) {
                        $msg = $this->msg( $e->getErrorMessage() );
                        $params = $e->getErrorMessageParameters();
@@ -60,7 +75,7 @@ class HTMLTitleTextField extends HTMLTextField {
                if ( $this->mParams['namespace'] !== false ) {
                        $params['namespace'] = $this->mParams['namespace'];
                }
-               $params['relative'] = false;
+               $params['relative'] = $this->mParams['relative'];
                return new TitleInputWidget( $params );
        }
 }
index 9f7100f..5869002 100644 (file)
@@ -17,6 +17,7 @@ class HTMLUserTextField extends HTMLTextField {
        public function __construct( $params ) {
                $params += array(
                        'exists' => false,
+                       'ipallowed' => false,
                );
 
                parent::__construct( $params );
@@ -24,11 +25,14 @@ class HTMLUserTextField extends HTMLTextField {
 
        public function validate( $value, $alldata ) {
                // check, if a user exists with the given username
-               $user = User::newFromName( $value );
+               $user = User::newFromName( $value, false );
 
                if ( !$user ) {
                        return $this->msg( 'htmlform-user-not-valid', $value )->parse();
-               } else if ( $this->mParams['exists'] && $user->getId() === 0 ) {
+               } elseif (
+                       ( $this->mParams['exists'] && $user->getId() === 0 ) &&
+                       !( $this->mParams['ipallowed'] && User::isIP( $value ) )
+               ) {
                        return $this->msg( 'htmlform-user-not-exists', $user->getName() )->parse();
                }
 
index fe2f26e..eec13ee 100644 (file)
@@ -65,7 +65,7 @@ class OOUIHTMLForm extends HTMLForm {
                        $attribs['type'] = 'submit';
                        $attribs['label'] = $this->getSubmitText();
                        $attribs['value'] = $this->getSubmitText();
-                       $attribs['flags'] = array( $this->mSubmitFlag );
+                       $attribs['flags'] = $this->mSubmitFlags;
 
                        $buttons .= new OOUI\ButtonInputWidget( $attribs );
                }
index c544f16..3788379 100644 (file)
@@ -95,8 +95,10 @@ class VFormHTMLForm extends HTMLForm {
                        $attribs['class'] = array(
                                'mw-htmlform-submit',
                                'mw-ui-button mw-ui-big mw-ui-block',
-                               'mw-ui-' . $this->mSubmitFlag,
                        );
+                       foreach ( $this->mSubmitFlags as $flag ) {
+                               $attribs['class'][] = 'mw-ui-' . $flag;
+                       }
 
                        $buttons .= Xml::submitButton( $this->getSubmitText(), $attribs ) . "\n";
                }
index 702f850..7070790 100644 (file)
@@ -145,15 +145,26 @@ abstract class DatabaseUpdater {
                        return; // already loaded
                }
                $vars = Installer::getExistingLocalSettings();
-               if ( !$vars ) {
-                       return; // no LocalSettings found
+
+               $registry = ExtensionRegistry::getInstance();
+               $queue = $registry->getQueue();
+               // Don't accidentally load extensions in the future
+               $registry->clearQueue();
+
+               // This will automatically add "AutoloadClasses" to $wgAutoloadClasses
+               $data = $registry->readFromQueue( $queue );
+               $hooks = array( 'wgHooks' => array( 'LoadExtensionSchemaUpdates' => array() ) );
+               if ( isset( $data['globals']['wgHooks']['LoadExtensionSchemaUpdates'] ) ) {
+                       $hooks = $data['globals']['wgHooks']['LoadExtensionSchemaUpdates'];
                }
-               if ( !isset( $vars['wgHooks'] ) || !isset( $vars['wgHooks']['LoadExtensionSchemaUpdates'] ) ) {
-                       return;
+               if ( $vars && isset( $vars['wgHooks']['LoadExtensionSchemaUpdates'] ) ) {
+                       $hooks = array_merge_recursive( $hooks, $vars['wgHooks']['LoadExtensionSchemaUpdates'] );
                }
                global $wgHooks, $wgAutoloadClasses;
-               $wgHooks['LoadExtensionSchemaUpdates'] = $vars['wgHooks']['LoadExtensionSchemaUpdates'];
-               $wgAutoloadClasses = $wgAutoloadClasses + $vars['wgAutoloadClasses'];
+               $wgHooks['LoadExtensionSchemaUpdates'] = $hooks;
+               if ( $vars && isset( $vars['wgAutoloadClasses'] ) ) {
+                       $wgAutoloadClasses += $vars['wgAutoloadClasses'];
+               }
        }
 
        /**
index 2818349..c4a9b76 100644 (file)
@@ -538,6 +538,10 @@ abstract class Installer {
                global $wgAutoloadClasses;
                $wgAutoloadClasses = array();
 
+               // LocalSettings.php should not call functions, except wfLoadSkin/wfLoadExtensions
+               // Define the requiered globals here, to ensure, the functions can do it work correctly.
+               global $wgExtensionDirectory, $wgStyleDirectory;
+
                MediaWiki\suppressWarnings();
                $_lsExists = file_exists( "$IP/LocalSettings.php" );
                MediaWiki\restoreWarnings();
index 1d8cd9c..f40bc3e 100644 (file)
@@ -12,7 +12,7 @@
        "config-desc": "মিডিয়াউইকির জন্য ইন্সটলার",
        "config-title": "মিডিয়াউইকি $1 ইন্সটলেশন",
        "config-information": "তথ্য",
-       "config-localsettings-upgrade": "A <code>LocalSettings.php</code> ফাইলটি মুছে ফেলা হয়েছে। এ ইন্সটলেশনটি আরো উন্নত করতে দয়া করে <code>$wgUpgradeKey</code> কোডটি বক্সে দিন। আপনি এটি পাবেন এখানে <code>LocalSettings.php</code>.",
+       "config-localsettings-upgrade": "<code>LocalSettings.php</code> ফাইলটি মুছে ফেলা হয়েছে। এই ইন্সটলেশনটি আরো উন্নত করতে দয়া করে <code>$wgUpgradeKey</code> কোডটি বক্সে দিন। আপনি এটি <code>LocalSettings.php</code> -এ পাবেন।",
        "config-localsettings-key": "হালনাগাদ কি",
        "config-localsettings-badkey": "আপনি যেই চাবিটি দিয়েছেন তা সঠিক নয়।",
        "config-session-error": "সেশন শুরুতে ত্রুটি: $1",
index 92a1440..7a7cfb1 100644 (file)
@@ -4,7 +4,8 @@
                        "CERminator",
                        "Palapa",
                        "Emir Mujadzic",
-                       "Semso98"
+                       "Semso98",
+                       "Srdjan m"
                ]
        },
        "config-desc": "Instalacija za MediaWiki",
        "config-admin-name": "Vaše korisničko ime:",
        "config-admin-password": "Lozinka:",
        "config-admin-password-confirm": "Ponovno unesite lozinku:",
-       "config-admin-email": "E-mail adresa:",
+       "config-admin-email": "Adresa e-pošte:",
        "config-profile-wiki": "Otvori wiki",
        "config-profile-private": "Privatna wiki",
        "config-license-pd": "Javno vlasništvo",
        "config-logo": "Logo URL:",
        "config-cc-again": "Odaberi ponovno...",
+       "config-skins": "Teme",
        "config-install-step-done": "završeno",
        "config-install-step-failed": "neuspješno",
        "config-install-extensions": "Uključujući ekstenzije",
index bf3636b..3923f7e 100644 (file)
@@ -62,7 +62,7 @@
        "config-magic-quotes-sybase": "<strong>Lỗi chí tử: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] đang hoạt động!</strong>\nTùy chọn này sẽ làm hỏng dữ liệu nhập một cách không thể đoán trước.\nBạn không thể cài đặt hoặc sử dụng MediaWiki trừ phi tùy chọn này bị vô hiệu.",
        "config-mbstring": "<strong>Lỗi chí tử: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] được kích hoạt!</strong>\nTùy chọn này gây lỗi và có thể làm hỏng dữ liệu một cách không thể đoán trước.\nBạn không thể cài đặt hoặc sử dụng MediaWiki trừ phi tùy chọn này bị vô hiệu.",
        "config-safe-mode": "<strong>Cảnh báo:</strong> [http://www.php.net/features.safe-mode Chế độ an toàn] của PHP đang được kích hoạt.\nNó có thể gây vấn đề, nhất là nếu dùng các chức năng tải lên tập tin và <code>math</code>.",
-       "config-xml-bad": "Mô đun XML của PHP đang bị thiếu.\nMediaWiki yêu cầu các hàm trong mô đun này và sẽ không hoạt động trong cấu hình này.\nNếu bạn đang chạy Mandrake, hãy cài đặt gói php-xml.",
+       "config-xml-bad": "Mô đun XML của PHP đang bị thiếu.\nMediaWiki yêu cầu các hàm trong mô đun này và sẽ không hoạt động trong cấu hình này.\nBạn có thể cần cài đặt gói RPM php-xml.",
        "config-pcre-old": "<strong>Lỗi chí tử:</strong> PCRE $1 trở lên được yêu cầu phải có.\nBản nhị phân PHP của bạn dang được liên kết với PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Thông tin bổ sung].",
        "config-pcre-no-utf8": "<strong>Lỗi chí tử:</strong> Mô đun PCRE của PHP dường như được biên dịch mà không có hỗ trợ PCRE_UTF8.\nMediaWiki yêu cầu phải có hỗ trợ UTF-8 để hoạt động chính xác.",
        "config-memory-raised": "<code>memory_limit</code> của PHP là $1, tăng lên $2.",
        "config-db-install-account": "Tài khoản người dùng để cài đặt",
        "config-db-username": "Tên người dùng cơ sở dữ liệu:",
        "config-db-password": "Mật khẩu cơ sở dữ liệu:",
-       "config-db-password-empty": "Xin nhập vào một mật khẩu cho người dùng cơ sở dữ liệu mới: $1. Tuy bạn có thể tạo một tài khoản người dùng mà không cần mật khẩu, nhưng khi đó sẽ không đảm bảo tính bảo mật cho bạn.",
-       "config-db-username-empty": "Bạn phải nhập một giá trị cho “{{int:config-db-username}}”",
        "config-db-install-username": "Nhập tên người dùng để kết nối với cơ sở dữ liệu trong quá trình cài đặt.\nĐây không phải là tên người dùng của tài khoản MediaWiki; đây là tên người dùng cho cơ sở dữ liệu của bạn.",
        "config-db-install-password": "Nhập mật khẩu để kết nối với cơ sở dữ liệu trong quá trình cài đặt.\nĐây không phải là mật khẩu của tài khoản MediaWiki; đây là mật khẩu cho cơ sở dữ liệu của bạn.",
        "config-db-install-help": "Nhập tên người dùng và mật khẩu sẽ được sử dụng để kết nối với cơ sở dữ liệu trong quá trình cài đặt.",
index d1db005..5dbe66e 100644 (file)
@@ -93,7 +93,7 @@
        "config-no-uri": "<strong>錯誤:</strong>無法辨識目前的 URI 位置。\n安裝已中止。",
        "config-no-cli-uri": "<strong>警告:</strong>:未指定 <code>--scriptpath</code> 指令參數,使用預設值:<code>$1</code>。",
        "config-using-server": "使用伺服器名稱 \"<nowiki>$1</nowiki>\"。",
-       "config-using-uri": "使用伺服器 URL 位置 \"<nowiki>$1$2</nowiki>\"。",
+       "config-using-uri": "使用伺服器 URL  \"<nowiki>$1$2</nowiki>\"。",
        "config-uploads-not-safe": "<strong>警告:</strong>您預設的上傳目錄 <code>$1</code> 有可被任意執行 Script 的漏洞。\n雖然 MediaWiki 會對所有上傳的檔案進行安全檢查,但我們仍強烈建議您在開啟上傳功能前了解如何 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security 關閉此安全漏洞]。",
        "config-no-cli-uploads-check": "<strong>警告:</strong>透過指令介面安不會檢查您預設的上傳目錄 (<code>$1</code>) 是否有可任意執行 Script 的安全性漏洞。",
        "config-brokenlibxml": "您的系統使用了可能造成 MediaWiki 或其他網頁應用程式資料損毀問題的 PHP 與 limbxml2 版本。\n請升級 libxml2 2.7.3 或更新的版本 ([https://bugs.php.net/bug.php?id=45996 PHP 問題報告])。\n安裝已中止。",
        "config-db-install-account": "安裝程式使用的使用者帳號",
        "config-db-username": "資料庫使用者名稱:",
        "config-db-password": "資料庫密碼:",
-       "config-db-password-empty": "請輸入新增資料庫使用者 $1 的密碼。\n雖然您可以不設定任何密碼,但這樣做並不安全。",
-       "config-db-username-empty": "您必須輸入 \"{{int:config-db-username}}\" 欄位的內容。",
        "config-db-install-username": "請輸入在安裝過程中用來連線資料庫的使用者名稱。\n請注意,這不是 MediaWiki 帳號的使用者名稱,這是您資料庫的使用者名稱。",
        "config-db-install-password": "請輸入在安裝過程中用來連線資料庫的密碼。\n請注意,這不是 MediaWiki 帳號的密碼,這是您資料庫的密碼。",
        "config-db-install-help": "請輸入在安裝過程中用來連線資料庫的使用者名稱及密碼。",
        "config-upload-help": "檔案上傳功能會讓您的伺服器暴露在潛藏的安全性風險之下。\n要取得更多相關的資訊,請參考 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security 安全性章節]。\n\n要開啟檔案上傳需要將 MediaWiki 根目錄底下的 <code>images</code> 目錄開啟網頁伺服器的寫入權,\n然後再啟動選項。",
        "config-upload-deleted": "已刪除檔案的目錄:",
        "config-upload-deleted-help": "請選擇用來存放已刪除檔案的目錄。\n理想情況下,此目錄不可被網頁直接存取。",
-       "config-logo": "標誌 URL 位置:",
+       "config-logo": "Logo 網址:",
        "config-logo-help": "在 MediaWiki 的預設介面,側欄選單上方有一塊 135x160 像素用來放置標誌的區域。\n請上傳合適大小的圖片並在此輸入 URL 網址。\n\n您可以透過 <code>$wgStylePath</code> 或者 <code>$wgScriptPath</code> 來表示您的圖片與這些路徑的相對位置。\n\n如果您不想使用標誌,可略過此欄位。",
        "config-instantcommons": "開啟即時共享資源",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons 即時共享資源] 是允許 Wiki 使用來自 [//commons.wikimedia.org/ Wikimedia Commons] 網站上的圖片、聲音以及其他媒體的一項功能。\n若要開啟此功能,您的 MediaWiki 必須能夠連線網際網路。\n更多有關此功能的訊息,包含如何存除了 Wikimedia Commons 之外其他網站的說明,請參考 \n[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos 操作手冊]。",
        "config-memcached-servers": "Memcached 伺服器:",
        "config-memcached-help": "請列出 Memcached 伺服器的 IP 位址。\n每一行只指定一個位置並且要註明使用的埠號,例如:\n 127.0.0.1:11211\n 192.168.1.25:1234",
        "config-memcache-needservers": "您的快取類型選擇使用 Memcached,但並未設定任何的伺服器。",
-       "config-memcache-badip": "您輸入了一筆無效的 Memcached IP 位:$1。",
+       "config-memcache-badip": "您輸入了一筆無效的 Memcached IP 位:$1。",
        "config-memcache-noport": "您沒有輸入 Memcached 伺服器的埠號:$1。\n如果您不曉得埠號為多少,預設為 11211。",
        "config-memcache-badport": "Memcached 埠號應介於 $1 到 $2 之間。",
        "config-extensions": "擴充套件",
index aa0cc46..2e7ef88 100644 (file)
@@ -228,7 +228,7 @@ class MultiHttpClient {
                        if ( $errno !== 0 ) {
                                $req['response']['error'] = "(curl error: $errno)";
 
-                               if ( version_compare( PHP_VERSION, '5.5.0' ) >= 0 ) {
+                               if ( function_exists( 'curl_strerror' ) ) {
                                        $req['response']['error'] .= " " . curl_strerror( $errno );
                                }
                        }
index eaf1155..cc54fe7 100644 (file)
  * @ingroup Cache
  */
 class APCBagOStuff extends BagOStuff {
+
+       /**
+        * @var string String to append to each APC key. This may be changed
+        *  whenever the handling of values is changed, to prevent existing code
+        *  from encountering older values which it cannot handle.
+        **/
+       const KEY_SUFFIX = ':1';
+
        public function get( $key, &$casToken = null ) {
-               $val = apc_fetch( $key );
+               $val = apc_fetch( $key . self::KEY_SUFFIX );
 
                $casToken = $val;
 
-               if ( is_string( $val ) ) {
-                       if ( $this->isInteger( $val ) ) {
-                               $val = intval( $val );
-                       } else {
-                               $val = unserialize( $val );
-                       }
-               }
-
                return $val;
        }
 
        public function set( $key, $value, $exptime = 0 ) {
-               if ( !$this->isInteger( $value ) ) {
-                       $value = serialize( $value );
-               }
-
-               apc_store( $key, $value, $exptime );
+               apc_store( $key . self::KEY_SUFFIX, $value, $exptime );
 
                return true;
        }
 
        public function delete( $key ) {
-               apc_delete( $key );
+               apc_delete( $key . self::KEY_SUFFIX );
 
                return true;
        }
 
        public function incr( $key, $value = 1 ) {
-               return apc_inc( $key, $value );
+               return apc_inc( $key . self::KEY_SUFFIX, $value );
        }
 
        public function decr( $key, $value = 1 ) {
-               return apc_dec( $key, $value );
+               return apc_dec( $key . self::KEY_SUFFIX, $value );
        }
 }
index d48a1bd..858f3bf 100644 (file)
@@ -118,6 +118,24 @@ class ExtensionRegistry {
                $this->queued = array();
        }
 
+       /**
+        * Get the current load queue. Not intended to be used
+        * outside of the installer.
+        *
+        * @return array
+        */
+       public function getQueue() {
+               return $this->queued;
+       }
+
+       /**
+        * Clear the current load queue. Not intended to be used
+        * outside of the installer.
+        */
+       public function clearQueue() {
+               $this->queued = array();
+       }
+
        /**
         * Process a queue of extensions and return their extracted data
         *
index 508be2f..bf34c22 100644 (file)
@@ -810,7 +810,7 @@ class ResourceLoader implements LoggerAwareInterface {
                        header( 'Cache-Control: private, no-cache, must-revalidate' );
                        header( 'Pragma: no-cache' );
                } else {
-                       header( "Cache-Control: public, max-age=$maxage, s-maxage=$smaxage" );
+                       header( "Cache-Control: public, must-revalidate, max-age=$maxage, s-maxage=$smaxage" );
                        $exp = min( $maxage, $smaxage );
                        header( 'Expires: ' . wfTimestamp( TS_RFC2822, $exp + time() ) );
                }
index a578ece..16424a0 100644 (file)
@@ -268,7 +268,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                }
 
                // Register modules
-               $out .= ResourceLoader::makeLoaderRegisterScript( $registrations );
+               $out .= "\n" . ResourceLoader::makeLoaderRegisterScript( $registrations );
 
                return $out;
        }
@@ -321,40 +321,25 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
         */
        public function getScript( ResourceLoaderContext $context ) {
                global $IP;
+               if ( $context->getOnly() !== 'scripts' ) {
+                       return '/* Requires only=script */';
+               }
 
                $out = file_get_contents( "$IP/resources/src/startup.js" );
-               if ( $context->getOnly() === 'scripts' ) {
 
-                       // Startup function
-                       $configuration = $this->getConfigSettings( $context );
-                       $registrations = $this->getModuleRegistrations( $context );
+               $pairs = array_map( function ( $value ) {
+                       $value = FormatJson::encode( $value, ResourceLoader::inDebugMode(), FormatJson::ALL_OK );
                        // Fix indentation
-                       $registrations = str_replace( "\n", "\n\t", trim( $registrations ) );
-                       $mwMapJsCall = Xml::encodeJsCall(
-                               'mw.Map',
-                               array( $this->getConfig()->get( 'LegacyJavaScriptGlobals' ) )
-                       );
-                       $mwConfigSetJsCall = Xml::encodeJsCall(
-                               'mw.config.set',
-                               array( $configuration ),
-                               ResourceLoader::inDebugMode()
-                       );
-
-                       $out .= "var startUp = function () {\n" .
-                               "\tmw.config = new " .
-                               $mwMapJsCall . "\n" .
-                               "\t$registrations\n" .
-                               "\t" . $mwConfigSetJsCall .
-                               "};\n";
-
-                       // Conditional script injection
-                       $scriptTag = Html::linkedScript( self::getStartupModulesUrl( $context ) );
-                       $out .= "if ( isCompatible() ) {\n" .
-                               "\t" . Xml::encodeJsCall( 'document.write', array( $scriptTag ) ) .
-                               "\n}";
-               }
-
-               return $out;
+                       $value = str_replace( "\n", "\n\t", $value  );
+                       return $value;
+               }, array(
+                       '$VARS.wgLegacyJavaScriptGlobals' => $this->getConfig()->get( 'LegacyJavaScriptGlobals' ),
+                       '$VARS.configuration' => $this->getConfigSettings( $context ),
+                       '$VARS.baseModulesScript' => Html::linkedScript( self::getStartupModulesUrl( $context ) ),
+               ) );
+               $pairs['$CODE.registrations()'] = str_replace( "\n", "\n\t", trim( $this->getModuleRegistrations( $context ) ) );
+
+               return strtr( $out, $pairs );
        }
 
        /**
index 9243f12..077dbc0 100644 (file)
@@ -168,9 +168,11 @@ class CachingSiteStore implements SiteStore {
        }
 
        /**
-        * Purges the internal and external cache of the site list, forcing the list
+        * Purges the internal and external cache of the site list, forcing the list.
         * of sites to be reloaded.
         *
+        * Only use this for testing, as APC is typically used and is per-server
+        *
         * @since 1.25
         */
        public function reset() {
@@ -182,6 +184,8 @@ class CachingSiteStore implements SiteStore {
        /**
         * Clears the list of sites stored.
         *
+        * Only use this for testing, as APC is typically used and is per-server.
+        *
         * @see SiteStore::clear()
         *
         * @return bool Success
index 41c2f93..762658c 100644 (file)
@@ -206,7 +206,7 @@ class AllMessagesTablePager extends TablePager {
                        Xml::label( $this->msg( 'table_pager_limit_label' )->text(), 'mw-table_pager_limit_label' ) .
                        '</td>
                        <td class="mw-input">' .
-                       $this->getLimitSelect() .
+                       $this->getLimitSelect( array( 'id' => 'mw-table_pager_limit_label' ) ) .
                        '</td>
                        <tr>
                                <td></td>
@@ -445,7 +445,7 @@ class AllMessagesTablePager extends TablePager {
                } elseif ( $field === 'am_title' ) {
                        return array( 'class' => $field );
                } else {
-                       return array( 'lang' => $this->langcode, 'dir' => $this->lang->getDir(), 'class' => $field );
+                       return array( 'lang' => wfBCP47( $this->langcode ), 'dir' => $this->lang->getDir(), 'class' => $field );
                }
        }
 
index b4d4220..e0f35c6 100644 (file)
@@ -97,7 +97,6 @@ class SpecialBlock extends FormSpecialPage {
        protected function alterForm( HTMLForm $form ) {
                $form->setWrapperLegendMsg( 'blockip-legend' );
                $form->setHeaderText( '' );
-               $form->setSubmitCallback( array( __CLASS__, 'processUIForm' ) );
                $form->setSubmitDestructive();
 
                $msg = $this->alreadyBlocked ? 'ipb-change-block' : 'ipbsubmit';
@@ -597,17 +596,8 @@ class SpecialBlock extends FormSpecialPage {
        }
 
        /**
-        * Submit callback for an HTMLForm object, will simply pass
-        * @param array $data
-        * @param HTMLForm $form
-        * @return bool|string
-        */
-       public static function processUIForm( array $data, HTMLForm $form ) {
-               return self::processForm( $data, $form->getContext() );
-       }
-
-       /**
-        * Given the form data, actually implement a block
+        * Given the form data, actually implement a block. This is also called from ApiBlock.
+        *
         * @param array $data
         * @param IContextSource $context
         * @return bool|string
@@ -962,11 +952,11 @@ class SpecialBlock extends FormSpecialPage {
        /**
         * Process the form on POST submission.
         * @param array $data
+        * @param HTMLForm $form
         * @return bool|array True for success, false for didn't-try, array of errors on failure
         */
-       public function onSubmit( array $data ) {
-               // This isn't used since we need that HTMLForm that's passed in the
-               // second parameter. See alterForm for the real function
+       public function onSubmit( array $data, HTMLForm $form = null ) {
+               return self::processForm( $data, $form->getContext() );
        }
 
        /**
index 8a9aefd..9defaba 100644 (file)
@@ -65,6 +65,9 @@ class SpecialBlockList extends SpecialPage {
                        return;
                }
 
+               # setup BlockListPager here to get the actual default Limit
+               $pager = $this->getBlockListPager();
+
                # Just show the block list
                $fields = array(
                        'Target' => array(
@@ -77,11 +80,11 @@ class SpecialBlockList extends SpecialPage {
                        ),
                        'Options' => array(
                                'type' => 'multiselect',
-                               'options' => array(
-                                       $this->msg( 'blocklist-userblocks' )->text() => 'userblocks',
-                                       $this->msg( 'blocklist-tempblocks' )->text() => 'tempblocks',
-                                       $this->msg( 'blocklist-addressblocks' )->text() => 'addressblocks',
-                                       $this->msg( 'blocklist-rangeblocks' )->text() => 'rangeblocks',
+                               'options-messages' => array(
+                                       'blocklist-userblocks' => 'userblocks',
+                                       'blocklist-tempblocks' => 'tempblocks',
+                                       'blocklist-addressblocks' => 'addressblocks',
+                                       'blocklist-rangeblocks' => 'rangeblocks',
                                ),
                                'flatlist' => true,
                        ),
@@ -96,7 +99,7 @@ class SpecialBlockList extends SpecialPage {
                                        $lang->formatNum( 500 ) => 500,
                                ),
                                'name' => 'limit',
-                               'default' => 50,
+                               'default' => $pager->getLimit(),
                        ),
                );
                $context = new DerivativeContext( $this->getContext() );
@@ -109,10 +112,14 @@ class SpecialBlockList extends SpecialPage {
                $form->prepareForm();
 
                $form->displayForm( '' );
-               $this->showList();
+               $this->showList( $pager );
        }
 
-       function showList() {
+       /**
+        * Setup a new BlockListPager instance.
+        * @return BlockListPager
+        */
+       protected function getBlockListPager() {
                $conds = array();
                # Is the user allowed to see hidden blocks?
                if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
@@ -163,12 +170,20 @@ class SpecialBlockList extends SpecialPage {
                        $conds[] = "ipb_range_end = ipb_range_start";
                }
 
+               return new BlockListPager( $this, $conds );
+       }
+
+       /**
+        * Show the list of blocked accounts matching the actual filter.
+        * @param BlockListPager $pager The BlockListPager instance for this page
+        */
+       protected function showList( BlockListPager $pager ) {
+               $out = $this->getOutput();
+
                # Check for other blocks, i.e. global/tor blocks
                $otherBlockLink = array();
                Hooks::run( 'OtherBlockLogLink', array( &$otherBlockLink, $this->target ) );
 
-               $out = $this->getOutput();
-
                # Show additional header for the local block only when other blocks exists.
                # Not necessary in a standard installation without such extensions enabled
                if ( count( $otherBlockLink ) ) {
@@ -177,7 +192,6 @@ class SpecialBlockList extends SpecialPage {
                        );
                }
 
-               $pager = new BlockListPager( $this, $conds );
                if ( $pager->getNumRows() ) {
                        $out->addParserOutputContent( $pager->getFullOutput() );
                } elseif ( $this->target ) {
@@ -249,7 +263,7 @@ class BlockListPager extends TablePager {
        function formatValue( $name, $value ) {
                static $msg = null;
                if ( $msg === null ) {
-                       $msg = array(
+                       $keys = array(
                                'anononlyblock',
                                'createaccountblock',
                                'noautoblockblock',
@@ -258,17 +272,22 @@ class BlockListPager extends TablePager {
                                'unblocklink',
                                'change-blocklink',
                        );
-                       $msg = array_combine( $msg, array_map( array( $this, 'msg' ), $msg ) );
+
+                       foreach ( $keys as $key ) {
+                               $msg[$key] = $this->msg( $key )->escaped();
+                       }
                }
 
                /** @var $row object */
                $row = $this->mCurrentRow;
 
+               $language = $this->getLanguage();
+
                $formatted = '';
 
                switch ( $name ) {
                        case 'ipb_timestamp':
-                               $formatted = $this->getLanguage()->userTimeAndDate( $value, $this->getUser() );
+                               $formatted = htmlspecialchars( $language->userTimeAndDate( $value, $this->getUser() ) );
                                break;
 
                        case 'ipb_target':
@@ -294,7 +313,10 @@ class BlockListPager extends TablePager {
                                break;
 
                        case 'ipb_expiry':
-                               $formatted = $this->getLanguage()->formatExpiry( $value, /* User preference timezone */true );
+                               $formatted = htmlspecialchars( $language->formatExpiry(
+                                       $value,
+                                       /* User preference timezone */true
+                               ) );
                                if ( $this->getUser()->isAllowed( 'block' ) ) {
                                        if ( $row->ipb_auto ) {
                                                $links[] = Linker::linkKnown(
@@ -317,7 +339,7 @@ class BlockListPager extends TablePager {
                                                'span',
                                                array( 'class' => 'mw-blocklist-actions' ),
                                                $this->msg( 'parentheses' )->rawParams(
-                                                       $this->getLanguage()->pipeList( $links ) )->escaped()
+                                                       $language->pipeList( $links ) )->escaped()
                                        );
                                }
                                break;
@@ -355,7 +377,7 @@ class BlockListPager extends TablePager {
                                        $properties[] = $msg['blocklist-nousertalk'];
                                }
 
-                               $formatted = $this->getLanguage()->commaList( $properties );
+                               $formatted = $language->commaList( $properties );
                                break;
 
                        default:
index 7647999..cce5da5 100644 (file)
@@ -44,22 +44,10 @@ class SpecialChangeContentModel extends FormSpecialPage {
                        // No form input yet
                        return true;
                }
-               try {
-                       $titleObj = Title::newFromTextThrow( $title );
-               } catch ( MalformedTitleException $e ) {
-                       $msg = $this->msg( $e->getErrorMessage() );
-                       $params = $e->getErrorMessageParameters();
-                       if ( $params ) {
-                               $msg->params( $params );
-                       }
-                       return $msg->parse();
-               }
-               if ( !$titleObj->canExist() ) {
-                       return $this->msg(
-                               'changecontentmodel-title-cantexist',
-                               $titleObj->getPrefixedText()
-                       )->escaped();
-               }
+
+               // Already validated by HTMLForm, but if not, throw
+               // and exception instead of a fatal
+               $titleObj = Title::newFromTextThrow( $title );
 
                $this->oldRevision = Revision::newFromTitle( $titleObj ) ?: false;
 
@@ -79,7 +67,8 @@ class SpecialChangeContentModel extends FormSpecialPage {
                $that = $this;
                $fields = array(
                        'pagetitle' => array(
-                               'type' => 'text',
+                               'type' => 'title',
+                               'creatable' => true,
                                'name' => 'pagetitle',
                                'default' => $this->par,
                                'label-message' => 'changecontentmodel-title-label',
index e21eaeb..7cf6b0a 100644 (file)
@@ -70,15 +70,15 @@ class SpecialRandomInCategory extends FormSpecialPage {
        protected function getFormFields() {
                $this->addHelpLink( 'Help:RandomInCategory' );
 
-               $form = array(
+               return array(
                        'category' => array(
-                               'type' => 'text',
+                               'type' => 'title',
+                               'namespace' => NS_CATEGORY,
+                               'relative' => true,
                                'label-message' => 'randomincategory-category',
                                'required' => true,
                        )
                );
-
-               return $form;
        }
 
        public function requiresWrite() {
@@ -89,6 +89,10 @@ class SpecialRandomInCategory extends FormSpecialPage {
                return false;
        }
 
+       protected function getDisplayFormat() {
+               return 'ooui';
+       }
+
        protected function alterForm( HTMLForm $form ) {
                $form->setSubmitTextMsg( 'randomincategory-submit' );
        }
index a8fab92..84077e6 100644 (file)
@@ -68,6 +68,11 @@ class SpecialSearch extends SpecialPage {
         */
        protected $fulltext;
 
+       /**
+        * @var bool
+        */
+       protected $runSuggestion = true;
+
        const NAMESPACES_CURRENT = 'sense';
 
        public function __construct() {
@@ -169,6 +174,7 @@ class SpecialSearch extends SpecialPage {
                }
 
                $this->fulltext = $request->getVal( 'fulltext' );
+               $this->runSuggestion = (bool)$request->getVal( 'runsuggestion', true );
                $this->profile = $profile;
        }
 
@@ -214,7 +220,6 @@ class SpecialSearch extends SpecialPage {
                $search->setNamespaces( $this->namespaces );
                $search->prefix = $this->mPrefix;
                $term = $search->transformSearchTerm( $term );
-               $didYouMeanHtml = '';
 
                Hooks::run( 'SpecialSearchSetupEngine', array( $this, $this->profile, $search ) );
 
@@ -265,37 +270,17 @@ class SpecialSearch extends SpecialPage {
                }
 
                // did you mean... suggestions
-               if ( $showSuggestion && $textMatches && !$textStatus && $textMatches->hasSuggestion() ) {
-                       # mirror Go/Search behavior of original request ..
-                       $didYouMeanParams = array( 'search' => $textMatches->getSuggestionQuery() );
-
-                       if ( $this->fulltext != null ) {
-                               $didYouMeanParams['fulltext'] = $this->fulltext;
-                       }
-
-                       $stParams = array_merge(
-                               $didYouMeanParams,
-                               $this->powerSearchOptions()
-                       );
-
-                       $suggestionSnippet = $textMatches->getSuggestionSnippet();
-
-                       if ( $suggestionSnippet == '' ) {
-                               $suggestionSnippet = null;
+               $didYouMeanHtml = '';
+               if ( $showSuggestion && $textMatches && !$textStatus ) {
+                       if ( $this->shouldRunSuggestedQuery( $textMatches ) ) {
+                               $newMatches = $search->searchText( $textMatches->getSuggestionQuery() );
+                               if ( $newMatches instanceof SearchResultSet && $newMatches->numRows() > 0 ) {
+                                       $didYouMeanHtml = $this->getDidYouMeanRewrittenHtml( $term, $textMatches );
+                                       $textMatches = $newMatches;
+                               }
+                       } elseif ( $textMatches->hasSuggestion() ) {
+                               $didYouMeanHtml = $this->getDidYouMeanHtml( $textMatches );
                        }
-
-                       $suggestLink = Linker::linkKnown(
-                               $this->getPageTitle(),
-                               $suggestionSnippet,
-                               array(),
-                               $stParams
-                       );
-
-                       # html of did you mean... search suggestion link
-                       $didYouMeanHtml =
-                               Xml::openElement( 'div', array( 'class' => 'searchdidyoumean' ) ) .
-                               $this->msg( 'search-suggest' )->rawParams( $suggestLink )->text() .
-                               Xml::closeElement( 'div' );
                }
 
                if ( !Hooks::run( 'SpecialSearchResultsPrepend', array( $this, $out, $term ) ) ) {
@@ -328,7 +313,6 @@ class SpecialSearch extends SpecialPage {
                $num = $titleMatchesNum + $textMatchesNum;
                $totalRes = $numTitleMatches + $numTextMatches;
 
-               $out->enableOOUI();
                $out->addHtml(
                        # This is an awful awful ID name. It's not a table, but we
                        # named it poorly from when this was a table so now we're
@@ -416,6 +400,99 @@ class SpecialSearch extends SpecialPage {
 
        }
 
+       /**
+        * Decide if the suggested query should be run, and it's results returned
+        * instead of the provided $textMatches
+        *
+        * @param SearchResultSet $textMatches The results of a users query
+        * @return bool
+        */
+       protected function shouldRunSuggestedQuery( SearchResultSet $textMatches ) {
+               global $wgSearchRunSuggestedQueryPercent;
+
+               if ( !$this->runSuggestion ||
+                       !$textMatches->hasSuggestion() ||
+                       $textMatches->numRows() > 0 ||
+                       $textMatches->searchContainedSyntax()
+               ) {
+                       return false;
+               }
+
+               // Generate a random number between 0 and 1. If the
+               // number is less than the desired percentages run it.
+               $rand = rand( 0, getrandmax() ) / getrandmax();
+               return $wgSearchRunSuggestedQueryPercent > $rand;
+       }
+
+       /**
+        * Generates HTML shown to the user when we have a suggestion about a query
+        * that might give more results than their current query.
+        */
+       protected function getDidYouMeanHtml( SearchResultSet $textMatches ) {
+               # mirror Go/Search behavior of original request ..
+               $params = array( 'search' => $textMatches->getSuggestionQuery() );
+               if ( $this->fulltext != null ) {
+                       $params['fulltext'] = $this->fulltext;
+               }
+               $stParams = array_merge( $params, $this->powerSearchOptions() );
+
+               $suggest = Linker::linkKnown(
+                       $this->getPageTitle(),
+                       $textMatches->getSuggestionSnippet() ?: null,
+                       array(),
+                       $stParams
+               );
+
+               # html of did you mean... search suggestion link
+               return Html::rawElement(
+                       'div',
+                       array( 'class' => 'searchdidyoumean' ),
+                       $this->msg( 'search-suggest' )->rawParams( $suggest )->escaped()
+               );
+       }
+
+       /**
+        * Generates HTML shown to user when their query has been internally rewritten,
+        * and the results of the rewritten query are being returned.
+        *
+        * @param string $term The users search input
+        * @param SearchResultSet $textMatches The response to the users initial search request
+        * @return string HTML linking the user to their original $term query, and the one
+        *  suggested by $textMatches.
+        */
+       protected function getDidYouMeanRewrittenHtml( $term, SearchResultSet $textMatches ) {
+               // Showing results for '$rewritten'
+               // Search instead for '$orig'
+
+               $params = array( 'search' => $textMatches->getSuggestionQuery() );
+               if ( $this->fulltext != null ) {
+                       $params['fulltext'] = $this->fulltext;
+               }
+               $stParams = array_merge( $params, $this->powerSearchOptions() );
+
+               $rewritten = Linker::linkKnown(
+                       $this->getPageTitle(),
+                       $textMatches->getSuggestionSnippet() ?: null,
+                       array(),
+                       $stParams
+               );
+
+               $stParams['search'] = $term;
+               $stParams['runsuggestion'] = 0;
+               $original = Linker::linkKnown(
+                       $this->getPageTitle(),
+                       htmlspecialchars( $term ),
+                       array(),
+                       $stParams
+               );
+
+               return Html::rawElement(
+                       'div',
+                       array( 'class' => 'searchdidyoumean' ),
+                       $this->msg( 'search-rewritten')->rawParams( $rewritten, $original )->escaped()
+               );
+       }
+
        /**
         * @param Title $title
         * @param int $num The number of search results found
@@ -1079,23 +1156,21 @@ class SpecialSearch extends SpecialPage {
         * @return string
         */
        protected function shortDialog( $term, $resultsShown, $totalNum ) {
-               $out =
-                       Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
-                       Html::hidden( 'profile', $this->profile ) .
-                       Html::hidden( 'fulltext', 'Search' ) .
-                       new MediaWiki\Widget\TitleInputWidget( array(
-                               'type' => 'search',
-                               'icon' => 'search',
-                               'id' => 'searchText',
-                               'name' => 'search',
-                               'autofocus' => trim( $term ) === '',
-                               'value' => $term,
-                       ) ) .
-                       new OOUI\ButtonInputWidget( array(
-                               'type' => 'submit',
-                               'label' => $this->msg( 'searchbutton' )->text(),
-                               'flags' => array( 'progressive', 'primary' ),
-                       ) );
+               $out = Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
+               $out .= Html::hidden( 'profile', $this->profile ) . "\n";
+               // Term box
+               $out .= Html::input( 'search', $term, 'search', array(
+                       'id' => $this->isPowerSearch() ? 'powerSearchText' : 'searchText',
+                       'size' => '50',
+                       'autofocus' => trim( $term ) === '',
+                       'class' => 'mw-ui-input mw-ui-input-inline',
+               ) ) . "\n";
+               $out .= Html::hidden( 'fulltext', 'Search' ) . "\n";
+               $out .= Html::submitButton(
+                       $this->msg( 'searchbutton' )->text(),
+                       array( 'class' => 'mw-ui-button mw-ui-progressive' ),
+                       array( 'mw-ui-progressive' )
+               ) . "\n";
 
                // Results-info
                if ( $totalNum > 0 && $this->offset < $totalNum ) {
index 652ea82..8de6f8b 100644 (file)
@@ -107,11 +107,11 @@ class SpecialStatistics extends SpecialPage {
        ) {
                if ( $descMsg ) {
                        $msg = $this->msg( $descMsg, $descMsgParam );
-                       if ( $msg->exists() ) {
-                               $descriptionText = $this->msg( 'parentheses' )->rawParams( $msg->parse() )
+                       if ( !$msg->isDisabled() ) {
+                               $descriptionHtml = $this->msg( 'parentheses' )->rawParams( $msg->parse() )
                                        ->escaped();
-                               $text .= "<br />" . Xml::element( 'small', array( 'class' => 'mw-statistic-desc' ),
-                                       " $descriptionText" );
+                               $text .= "<br />" . Html::rawElement( 'small', array( 'class' => 'mw-statistic-desc' ),
+                                       " $descriptionHtml" );
                        }
                }
 
@@ -134,7 +134,8 @@ class SpecialStatistics extends SpecialPage {
                                $this->formatRow( Linker::linkKnown( SpecialPage::getTitleFor( 'Allpages' ),
                                        $this->msg( 'statistics-articles' )->parse() ),
                                        $this->getLanguage()->formatNum( $this->good ),
-                                       array( 'class' => 'mw-statistics-articles' ) ) .
+                                       array( 'class' => 'mw-statistics-articles' ),
+                                       'statistics-articles-desc' ) .
                                $this->formatRow( $this->msg( 'statistics-pages' )->parse(),
                                        $this->getLanguage()->formatNum( $this->total ),
                                        array( 'class' => 'mw-statistics-pages' ),
index 0a91957..4fb6772 100644 (file)
@@ -575,7 +575,10 @@ class SpecialVersion extends SpecialPage {
                if ( count( $tags ) ) {
                        $out = Html::rawElement(
                                'h2',
-                               array( 'class' => 'mw-headline plainlinks' ),
+                               array(
+                                       'class' => 'mw-headline plainlinks',
+                                       'id' => 'mw-version-parser-extensiontags',
+                               ),
                                Linker::makeExternalLink(
                                        '//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Tag_extensions',
                                        $this->msg( 'version-parser-extensiontags' )->parse(),
@@ -615,7 +618,10 @@ class SpecialVersion extends SpecialPage {
                if ( count( $fhooks ) ) {
                        $out = Html::rawElement(
                                'h2',
-                               array( 'class' => 'mw-headline plainlinks' ),
+                               array(
+                                       'class' => 'mw-headline plainlinks',
+                                       'id' => 'mw-version-parser-function-hooks',
+                               ),
                                Linker::makeExternalLink(
                                        '//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Parser_functions',
                                        $this->msg( 'version-parser-function-hooks' )->parse(),
index 20f5776..211798e 100644 (file)
@@ -396,6 +396,8 @@ class SpecialWatchlist extends ChangesListSpecialPage {
         */
        public function doHeader( $opts, $numRows ) {
                $user = $this->getUser();
+               $out = $this->getOutput();
+               $out->addModules( 'mediawiki.special.watchlist' );
 
                $this->getOutput()->addSubtitle(
                        $this->msg( 'watchlistfor2', $user->getName() )
@@ -450,39 +452,34 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                $form .= $wlInfo;
                $form .= $cutofflinks;
                $form .= $lang->pipeList( $links ) . "\n";
-               $form .= "<hr />\n<p>";
-               $form .= Html::namespaceSelector(
-                       array(
-                               'selected' => $opts['namespace'],
-                               'all' => '',
-                               'label' => $this->msg( 'namespace' )->text()
-                       ), array(
+               $form .= "<hr />\n";
+               $out->addHtml( $form );
+
+               $formDescriptor = array(
+                       'namespace' => array(
+                               'class' => 'HTMLAdvancedSelectNamespaceWithButton',
+                               'label-message' => 'namespace',
+                               'default' => $opts['namespace'],
                                'name' => 'namespace',
                                'id' => 'namespace',
-                               'class' => 'namespaceselector',
-                       )
-               ) . '&#160;';
-               $form .= Xml::checkLabel(
-                       $this->msg( 'invert' )->text(),
-                       'invert',
-                       'nsinvert',
-                       $opts['invert'],
-                       array( 'title' => $this->msg( 'tooltip-invert' )->text() )
-               ) . '&#160;';
-               $form .= Xml::checkLabel(
-                       $this->msg( 'namespace_association' )->text(),
-                       'associated',
-                       'nsassociated',
-                       $opts['associated'],
-                       array( 'title' => $this->msg( 'tooltip-namespace_association' )->text() )
-               ) . '&#160;';
-               $form .= Xml::submitButton( $this->msg( 'allpagessubmit' )->text() ) . "</p>\n";
-               foreach ( $hiddenFields as $key => $value ) {
-                       $form .= Html::hidden( $key, $value ) . "\n";
-               }
+                               'invertdefault' => $opts['invert'],
+                               'invertname' => 'invert',
+                               'invertid' => 'nsinvert',
+                               'associateddefault' => $opts['associated'],
+                               'associatedname' => 'associated',
+                               'associatedid' => 'nsassociated',
+                               'buttondefault' => $this->msg( 'allpagessubmit' )->text(),
+                       ),
+               );
+               $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() );
+               $htmlForm->suppressDefaultSubmit();
+               $htmlForm->addHiddenFields( $hiddenFields );
+               $htmlForm->prepareForm()->displayForm( false );
+
+               $form = '';
                $form .= Xml::closeElement( 'fieldset' ) . "\n";
                $form .= Xml::closeElement( 'form' ) . "\n";
-               $this->getOutput()->addHTML( $form );
+               $out->addHtml( $form );
 
                $this->setBottomText( $opts );
        }
@@ -491,6 +488,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                $nondefaults = $opts->getChangedValues();
                $form = "";
                $user = $this->getUser();
+               $out = $this->getOutput();
 
                $dbr = $this->getDB();
                $numItems = $this->countItems( $dbr );
@@ -513,19 +511,25 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                }
                $form .= "</p>";
 
+               $out->addHTML( $form );
+
                if ( $numItems > 0 && $showUpdatedMarker ) {
-                       $form .= Xml::openElement( 'form', array( 'method' => 'post',
-                               'action' => $this->getPageTitle()->getLocalURL(),
-                               'id' => 'mw-watchlist-resetbutton' ) ) . "\n" .
-                       Xml::submitButton( $this->msg( 'enotif_reset' )->text(), array( 'name' => 'dummy' ) ) . "\n" .
-                       Html::hidden( 'reset', 'all' ) . "\n";
-                       foreach ( $nondefaults as $key => $value ) {
-                               $form .= Html::hidden( $key, $value ) . "\n";
-                       }
-                       $form .= Xml::closeElement( 'form' ) . "\n";
+                       $formDescriptor = array(
+                               'resetbutton' => array(
+                                       'type' => 'submit',
+                                       'name' => 'dummy',
+                                       'default' => $this->msg( 'enotif_reset' )->text(),
+                               ),
+                       );
+                       $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() );
+                       $htmlForm->suppressDefaultSubmit();
+                       $htmlForm->setId( 'mw-watchlist-resetbutton' );
+                       $nondefaults['reset'] = 'all';
+                       $htmlForm->addHiddenFields( $nondefaults );
+                       $htmlForm->prepareForm()->displayForm( false );
                }
 
-               $form .= Xml::openElement( 'form', array(
+               $form = Xml::openElement( 'form', array(
                        'method' => 'post',
                        'action' => $this->getPageTitle()->getLocalURL(),
                        'id' => 'mw-watchlist-form'
@@ -538,7 +542,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
 
                $form .= SpecialRecentChanges::makeLegend( $this->getContext() );
 
-               $this->getOutput()->addHTML( $form );
+               $out->addHTML( $form );
        }
 
        protected function showHideLink( $options, $message, $name, $value ) {
index 4c099b3..f578745 100644 (file)
@@ -195,7 +195,7 @@ class UploadFromUrl extends UploadBase {
         */
        public function fetchFile( $httpOptions = array() ) {
                if ( !Http::isValidURI( $this->mUrl ) ) {
-                       return Status::newFatal( 'http-invalid-url' );
+                       return Status::newFatal( 'http-invalid-url', $this->mUrl );
                }
 
                if ( !self::isAllowedHost( $this->mUrl ) ) {
index 69427c5..2d69ed7 100644 (file)
@@ -40,7 +40,6 @@ class NamespaceInputWidget extends \OOUI\Widget {
         */
        public function __construct( array $config = array() ) {
                // Configuration initialization
-
                $config = array_merge(
                        array(
                                'nameNamespace' => 'namespace',
index 37c9d9c..d3e2851 100644 (file)
@@ -7,12 +7,10 @@
  */
 namespace MediaWiki\Widget;
 
-use OOUI\TextInputWidget;
-
 /**
  * Title input widget.
  */
-class TitleInputWidget extends TextInputWidget {
+class TitleInputWidget extends \OOUI\TextInputWidget {
 
        protected $namespace = null;
        protected $relative = null;
index 4147fca..e5663c3 100644 (file)
@@ -1,18 +1,17 @@
 <?php
 /**
- * MediaWiki Widgets \96 UserInputWidget class.
+ * MediaWiki Widgets  UserInputWidget class.
  *
  * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
  * @license The MIT License (MIT); see LICENSE.txt
  */
 namespace MediaWiki\Widget;
 
-use OOUI\TextInputWidget;
-
 /**
  * User input widget.
  */
-class UserInputWidget extends TextInputWidget {
+class UserInputWidget extends \OOUI\TextInputWidget {
+
        /**
         * @param array $config Configuration options
         */
index 93dd239..b698beb 100644 (file)
@@ -254,10 +254,16 @@ class Language {
         * @since 1.21
         */
        public static function isSupportedLanguage( $code ) {
-               return self::isValidBuiltInCode( $code )
-                       && ( is_readable( self::getMessagesFileName( $code ) )
-                               || is_readable( self::getJsonMessagesFileName( $code ) )
-               );
+               if ( !self::isValidBuiltInCode( $code ) ) {
+                       return false;
+               }
+
+               if ( $code === 'qqq' ) {
+                       return false;
+               }
+
+               return is_readable( self::getMessagesFileName( $code ) ) ||
+                       is_readable( self::getJsonMessagesFileName( $code ) );
        }
 
        /**
index 6d537d3..d44e68f 100644 (file)
        'bat-smg' => 'žemaitėška', # Samogitian (deprecated code, 'sgs' in ISO 693-3 since 2010-06-30 )
        'bbc' => 'Batak Toba', # Batak Toba (falls back to bbc-latn)
        'bbc-latn' => 'Batak Toba', # Batak Toba
-       'bcc' => 'بÙ\84Ù\88Ú\86Û\8c Ù\85کراÙ\86Û\8c', # Southern Balochi
+       'bcc' => 'جÙ\87Ù\84سرÛ\8c Ø¨Ù\84Ù\88Ú\86Û\8c', # Southern Balochi
        'bcl' => 'Bikol Central', # Bikol: Central Bicolano language
        'be' => 'беларуская', #  Belarusian normative
        'be-tarask' => "беларуская (тарашкевіца)\xE2\x80\x8E",     # Belarusian in Taraskievica orthography
        'be-x-old' => "беларуская (тарашкевіца)\xE2\x80\x8E",      # (be-tarask compat)
        'bg' => 'български',   # Bulgarian
-       'bgn' => 'بÙ\84Ù\88Ú\86Û\8c Ø±Ø®Ø´Ø§Ù\86Û\8c', # Western Balochi
+       'bgn' => 'رÙ\88Ú\86 Ú©Ù¾ØªÛ\8cÙ\86 Ø¨Ù\84Ù\88Ú\86Û\8c', # Western Balochi
        'bh' => 'भोजपुरी',        # Bihari macro language. Falls back to Bhojpuri (bho)
        'bho' => 'भोजपुरी',       # Bhojpuri
        'bi' => 'Bislama',              # Bislama
        'lt' => 'lietuvių',    # Lithuanian
        'ltg' => 'latgaļu',    # Latgalian
        'lus' => 'Mizo ţawng', # Mizo/Lushai
+       'luz' => 'لئری جئنوٙڤی', # Southern Luri
        'lv' => 'latviešu',    # Latvian
        'lzh' => '文言',      # Literary Chinese, bug 8217
        'lzz' => 'Lazuri',      # Laz
index aa9f7ac..21ddd55 100644 (file)
        "pageinfo-robot-index": "مسموحة",
        "pageinfo-robot-noindex": "غير مسموحة",
        "pageinfo-watchers": "عدد المراقبين",
+       "pageinfo-visiting-watchers": "عدد مراقبي الصفحة الذين زاروا التعديلات الأخيرة",
        "pageinfo-few-watchers": "أقل من {{PLURAL:$1||مراقب واحد|مراقبين اثنين|$1 مراقبين|$1 مراقباً|$1 مراقب}}",
        "pageinfo-redirects-name": "عدد التحويلات إلى هذه الصفحة",
        "pageinfo-subpages-name": "الصفحات الفرعية لهذه الصفحة",
index a6b5c69..b99c9df 100644 (file)
        "changecontentmodel-success-title": "Cambióse'l modelu de conteníu",
        "changecontentmodel-success-text": "Cambióse'l tipu de conteníu de [[:$1]].",
        "changecontentmodel-cannot-convert": "El conteníu de [[:$1]] nun puede convertise a un tipu de $2.",
-       "changecontentmodel-title-cantexist": "Nun ye posible tener una páxina en $1.",
        "changecontentmodel-nodirectediting": "El modelu de conteníu $1 nun tien encontu pa edición direuta",
        "log-name-contentmodel": "Rexistru de cambios del modelu de conteníu",
        "log-description-contentmodel": "Socesos rellacionaos colos modelos de conteníu d'una páxina",
index 0927ede..ce3ba50 100644 (file)
                        "Macofe"
                ]
        },
-       "tog-underline": "باغلانتیلارین آلتینی خطله:",
+       "tog-underline": "باغلانتیلارین آلتینی خطله:",
        "tog-hideminor": "سوْن دییشیکلیکلرده کیچیکلری گیزلت",
        "tog-hidepatrolled": "سوْن دییشیکلیکلرده نظارتلنمیش دَییشیکلیکلری گیزلت",
        "tog-newpageshidepatrolled": "نظارتلنمیش صحیفه‌لری یئنی صحیفه‌لر لیستین‌دن گیزلت",
-       "tog-extendwatchlist": "گؤزله‌دیکلری، یالنیز یئنیلر اۆچون یوْخ، بۆتون دییشیکلیکلری گؤسترمک اۆچون، گئنیشلندیر.",
-       "tog-usenewrc": "دَییشیکلیکلری سون دَییشیکلیکلر صحیفه‌سینده ایزله‌دیکلر صحیفه‌سینده گروپ‌لا (جاوااسکریپت لازیم‌دیر)",
-       "tog-numberheadings": "باشلیقلاری اوْتوماتیک نۆمره‌له",
-       "tog-showtoolbar": "دÙ\8eÛ\8cÛ\8cشدÛ\8cرÙ\85Ú© Ø¢Ø±Ø§Ø¬-Ú\86Û\87بÙ\88غÙ\88Ù\86Ù\88 Ú¯Ø¤Ø³ØªØ±",
-       "tog-editondblclick": "صحیفه‌‌لری ایکی کیلیک‌ده دَییشدیر",
-       "tog-editsectiononrightclick": "بؤلوم‌لرین دَییشدیرمه‌سینی، باشلیقلارین اۆزرینده ساغ‌کلیک ائتمک‌له ایجازه وئر",
-       "tog-watchcreations": "ياراتدیغیم صحیفه‌‌لری و يۆکله‌دیگیم فايل‌لاری، گؤزله‌دیکلریمه آرتیر",
-       "tog-watchdefault": "دَییشدیردیگیم صحیفه‌‌لری و فايل‌لاری، گؤزله‌دیکلریمه آرتیر",
+       "tog-extendwatchlist": "گؤزله‌دیک‌لری، یالنیز یئنی‌لر اۆچون یوْخ، بۆتون دییشیک‌لیک‌لری گؤرستمک اۆچون، گنیشلندیر.",
+       "tog-usenewrc": "دَییشیک‌لیک‌لری سوْن دَییشیک‌لیک‌لر صفحه‌سینده ایزله‌دیک‌لر صفحه‌سینده گروپ‌لا (جاوااسکریپت گرک‌دیر)",
+       "tog-numberheadings": "باشلیقلاری اوْتوماتیک نۆمره‌له",
+       "tog-showtoolbar": "دÙ\8eÛ\8cÛ\8cشدÛ\8cرÙ\85Ú© Ø¢Ø±Ø§Ø¬-Ú\86Û\87بÙ\88غÙ\88Ù\86Ù\88 Ú¯Ø¤Ø±Ø³Øª",
+       "tog-editondblclick": "صفحه‌‌لری ایکی کیلیک‌ده دَییشدیر",
+       "tog-editsectiononrightclick": "بؤلوم‌لرین دَییشدیرمه‌سینی، باشلیق‌لارین اۆستونده ساغ‌کلیک ائتمک‌‌له ایجازه وئر",
+       "tog-watchcreations": "ياراتدیغیم صفحه‌‌لری و يۆکله‌دیگیم فايل‌لاری، گؤزله‌دیک‌لریمه آرتیر",
+       "tog-watchdefault": "دَییشدیردیگیم صفحه‌‌لری و فايل‌لاری، گؤزله‌دیک‌لریمه آرتیر",
        "tog-watchmoves": "داشیدیغیم صحیفه‌‌لری و فايل‌لاری گؤزله‌دیکلریمه آرتیر",
        "tog-watchdeletion": "سیلدیگیم صحیفه‌‌لری و فايل‌لاری گؤزله‌دیکلریمه آرتیر",
        "tog-watchrollback": "قایتاریلمیش صفحه لری ایزلدیکلریمه آرتیر",
-       "tog-minordefault": "وارساییلان اوْلاراق، بۆتون دَییشدیر‌مه‌لری کیچیک کیمی نیشانلا",
-       "tog-previewontop": "اؤÙ\86â\80\8cگؤسترÛ\8cØ´Û\8cØ\8c Ù\8aازÙ\85اÙ\82 Ù\82Û\87تÙ\88سÙ\88Ù\86داÙ\86 Ù\82اباÙ\82 Ú¯Ø¤Ø³ØªØ±",
-       "tog-previewonfirst": "اÛ\8cÙ\84Ú© Ø¯Ù\8eÛ\8cÛ\8cشدÛ\8cرÙ\85Ù\87â\80\8cدÙ\87 Ø§Ø¤Ù\86â\80\8cگؤسترÛ\8cØ´Û\8c Ú¯Ø¤Ø³ØªØ±",
-       "tog-enotifwatchlistpages": "گؤزله‌دیکلریم‌ده اولان بیر صحیفه یا فایل دَییشدیریلنده، منه ایمیل گؤندر",
+       "tog-minordefault": "وارساییلان اوْلاراق، بۆتون دَییشدیر‌مه‌لری کیچیک کیمی علامتله",
+       "tog-previewontop": "اؤÙ\86â\80\8cگؤسترÛ\8cØ´Û\8cØ\8c Ù\8aازÙ\85اÙ\82 Ù\82Û\87تÙ\88سÙ\88Ù\86داÙ\86 Ù\82اباÙ\82 Ú¯Ø¤Ø±Ø³Øª",
+       "tog-previewonfirst": "اÛ\8cÙ\84Ú© Ø¯Ù\8eÛ\8cÛ\8cشدÛ\8cرÙ\85Ù\87â\80\8cدÙ\87 Ø§Ø¤Ù\86â\80\8cگؤسترÛ\8cØ´Û\8c Ú¯Ø¤Ø±Ø³Øª",
+       "tog-enotifwatchlistpages": "گؤزله‌دیکلریم‌ده اولان بیر صفحه یا فایل دَییشدیریلن‌ده، منه ایمیل گؤندر",
        "tog-enotifusertalkpages": "دانیشیق صحیفه‌‌م دَییشدیریلنده منه ایمیل گؤندر",
        "tog-enotifminoredits": "صحیفه‌لرده و فایل‌لاردا کیچیک دَییشیکلیکلر اولسا دا منه ایمیل گؤندر",
        "tog-enotifrevealaddr": "منیم ایمیل آدرسیمی بیلدیریش ایمیل‌لرینده گؤستر",
        "tog-oldsig": "ایندی‌کی ایمضا:",
        "tog-fancysig": "ایمضانی ویکی-متن کیمی نظره آل (اوْتوماتیک باغلانتی‌سیز)",
        "tog-uselivepreview": "دیری اؤن‌گؤستریش ایشلت (تِست مرحله‌سینده)",
-       "tog-forceeditsummary": "دَییشیکلیک قیساسی بوش قالاندا منی بیلدیر",
-       "tog-watchlisthideown": "منیم دَییشیکلیکلریمی گؤزله‌دیکلردن گیزلت",
-       "tog-watchlisthidebots": "بوْت دَییشیکلیکلرینی گؤزله‌دیکلردن گیزلت",
-       "tog-watchlisthideminor": "کیچیک دَییشیکلیکلری گؤزله‌دیکلردن گیزلت",
-       "tog-watchlisthideliu": "Ú¯Û\8cرÙ\85Û\8cØ´ Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cÙ\84رÛ\8cÙ\86 Ø¯Ù\8eÛ\8cÛ\8cØ´Û\8cÚ©Ù\84Û\8cÚ©Ù\84رÛ\8cÙ\86Û\8c Ú¯Ø¤Ø²Ù\84Ù\87â\80\8cدÛ\8cÚ©لردن گیزلت",
-       "tog-watchlisthideanons": "تاÙ\86Û\8cÙ\86Ù\85اÙ\85Û\8cØ´ Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cÙ\84رÛ\8cÙ\86 Ø¯Ù\8eÛ\8cÛ\8cØ´Û\8cÚ©Ù\84Û\8cÚ©Ù\84رÛ\8cÙ\86Û\8c Ú¯Ø¤Ø²Ù\84Ù\87â\80\8cدÛ\8cÚ©لردن گیزلت",
+       "tog-forceeditsummary": "دَییشیکلیک قیساسی بوْش قالاندا منه بیلیندیر",
+       "tog-watchlisthideown": "منیم دَییشیک‌لیک‌لریمی گؤزله‌دیک‌لردن گیزلت",
+       "tog-watchlisthidebots": "بوْت دَییشیک‌لیک‌لرینی گؤزله‌دیک‌لردن گیزلت",
+       "tog-watchlisthideminor": "کیچیک دَییشیک‌لیک‌لری گؤزله‌دیک‌لردن گیزلت",
+       "tog-watchlisthideliu": "Ú¯Û\8cرÙ\85Û\8cØ´ Ø§Û\8cØ´Ù\84دÙ\86â\80\8cÙ\84رÛ\8cÙ\86 Ø¯Ù\8eÛ\8cÛ\8cØ´Û\8cÚ©â\80\8cÙ\84Û\8cÚ©â\80\8cÙ\84رÛ\8cÙ\86Û\8c Ú¯Ø¤Ø²Ù\84Ù\87â\80\8cدÛ\8cÚ©â\80\8cلردن گیزلت",
+       "tog-watchlisthideanons": "تاÙ\86Û\8cÙ\86Ù\85اÙ\85Û\8cØ´ Ø§Û\8cØ´Ù\84دÙ\86â\80\8cÙ\84رÛ\8cÙ\86 Ø¯Ù\8eÛ\8cÛ\8cØ´Û\8cÚ©â\80\8cÙ\84Û\8cÚ©â\80\8cÙ\84رÛ\8cÙ\86Û\8c Ú¯Ø¤Ø²Ù\84Ù\87â\80\8cدÛ\8cÚ©â\80\8cلردن گیزلت",
        "tog-watchlisthidepatrolled": "نظارتلنمیش دَییشیکلیکلری گؤزله‌دیکلردن گیزلت",
-       "tog-ccmeonemails": "Ø¢Û\8cرÛ\8c Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cÙ\84رÙ\87 Ú¯Ø¤Ù\86دردÛ\8cÚ¯Û\8cÙ\85 Ø§Û\8cÙ\85Û\8cÙ\84â\80\8cÙ\84رÛ\8cÙ\86 Ú©Ù\88Ù\92Ù¾Û\8cÙ\84رÛ\8cÙ\86Û\8c Ù\85Ù\86Ù\87 Ú¯Ø¤Ù\86در",
-       "tog-diffonly": "مۇقاییسه‌لر آلیتندا صحیفه‌لرین ایچینده‌کیلرینی گؤسترمه",
-       "tog-showhiddencats": "Ú¯Û\8cزÙ\84Û\8c Ø¨Ø¤Ù\84Ù\85Ù\87â\80\8cÙ\84رÛ\8c Ú¯Ø¤Ø³ØªØ±",
-       "tog-norollbackdiff": "Ù\82اÛ\8cتاراÙ\86داÙ\86 Ø³Ù\88Ù\86را Ù\85Ù\88Ù\82اÛ\8cÛ\8cسÙ\87 Ú¯Ø¤Ø³ØªØ±مه",
-       "tog-useeditwarning": "دَییشدیرمه صحیفه‌سیندن چیخاندا، قئید ائدیلمه‌میش دَییشدیرمه اوْلسا، منه هشدار وئر",
+       "tog-ccmeonemails": "باشÙ\82ا Ø§Û\8cØ´Ù\84دÙ\86â\80\8cÙ\84رÙ\87 Ú¯Ø¤Ù\86دردÛ\8cÚ¯Û\8cÙ\85 Ø§Û\8cÙ\85Û\8cÙ\84â\80\8cÙ\84رÛ\8cÙ\86 Ú©Ù\88Ù\92Ù¾Û\8câ\80\8cÙ\84رÛ\8cÙ\86Û\8c Ù\85Ù\86Ù\87 Ú¯Ø¤Ù\86در",
+       "tog-diffonly": "مقایسه‌لر آلیتندا صفحه‌لرین ایچینده‌کی‌لرینی گؤرستمه",
+       "tog-showhiddencats": "Ú¯Û\8cزÙ\84Û\8c Ø¨Ø¤Ù\84Ù\85Ù\87â\80\8cÙ\84رÛ\8c Ú¯Ø¤Ø±Ø³Øª",
+       "tog-norollbackdiff": "Ù\82اÛ\8cتاراÙ\86داÙ\86 Ø³Ù\88Ù\92Ù\86را Ù\85Ù\82اÛ\8cسÙ\87 Ú¯Ø¤Ø±Ø³Øªمه",
+       "tog-useeditwarning": "دَییشدیرمه صفحه‌سیندن چیخاندا، ساخلانمامیش دَییشدیرمه اوْلسا، منه تذکر وئر",
        "tog-prefershttps": "هر زامان گیریش ائتمگه امن باغلانتی ایشلت",
        "underline-always": "هر زامان",
        "underline-never": "هئچ واخت",
        "storedversion": "قئید ائدیلمیش نوسخه",
        "nonunicodebrowser": "' 'دیققت: آختاریش برنامه نیز اویغون دئییل.\nصحیفه‌لری اعتبارلا دییشدیرمیینیزه ایجازه وئرمک اوچون: آسجیی اولمایان کاراکتئرلر دییشدیرمه قوتوسوندا اونالتیلیک کودلار اولا‌راق گؤرونه‌جک.' '",
        "editingold": "'دیققت! سیز بو صحیفه‌نین کؤهنه نوسخه سین دییشدیر ائدیرسینیز. مقالنی یادداشدا ساخلایاجاغینیز حالدا بو نوسخه سونرا ائدیلمیش هر بیر دییشیک‌لیک ایتیریله‌جک.'",
-       "yourdiff": "فرقلر",
+       "yourdiff": "فرقلر",
        "copyrightwarning": "خاهیش اولونور دقته آلاسینیز کی، {{SITENAME}}داکی بوتون فالیت‌لرینیز $2 لیسئنزیاسینا تابع اولدوغو حساب ائدیلیر (تفرروات اوچون باخ: $1). اگر یازدیق‌لارینیزین اساس‌لی شکیلده رئداکته ائدیلمه‌سینی و ایستنیلدیگی واخت باشقا یئره اؤتورولمه‌سینی ایستمیرسینیزسه، یازی‌لارینیزی بورادا درج ائتمیین.\n<br />\nسیز عینی زاماندا سؤز وئریرسینیز کی، بو یازی‌لاری سیز اؤزونوز یازمیسینیز و یا اونلاری هامییا آچیق موهیت‌دن یا دا بونا بنزر منبع‌دن کؤچورموسونوز.\n\n----\n\n</div> ایستیلئ=\"فونت-weight: بولد؛ فونت-سیزئ: 110%؛ جولور:رئد؛\">موللیف حقوق‌لاری ایله قورونموش هئچ بیر ایشی ایجازه‌سیز درج ائتمیین!</div>",
        "copyrightwarning2": "خاهیش ائدیریک، {{SITENAME}} سایتینا ائده‌جه‌یم بوتون روسوم دیگر عضو‌لر طرفین‌دن دوزئنلئنئبیلئجئغینی، دییش‌دیریله و یا سیلینئبیلئجئغینی خاتیرلایین. یازی‌لارینین مئرهامئتسیزجئ دئغیشتیریلی بیلمسینه راضی‌لیق گؤسترمیرسه بورا ایشتیراک ائتمیین. <br />\nآیریجا بو علاوه یازینی سیزین یازدیغینیزدان یا دا سربست کوپیالاما ایجازه‌سی وئرن بیر قایناق‌دان کوپیالادیغینیزی بیزه اؤهده‌لرینه ائتمکدسینیز (دئتال‌لار اوچون ایستیناد: $1).",
        "longpageerror": "خطا: داخیل متنین اوزون‌لوغو قبول ائدیله بیلر ان چوخ اوزونلوق اولان {{PLURAL:$2 | بیر کیلوبایت | $2 کیلوبایت}} دان چوخ‌دور و {{PLURAL:$1 | بیر کیلوبایت | $1 کیلوبایت}} بؤیوکلوگونده‌دیر.'\nدییشیک‌لیگی‌نین کایدئدیلئمئز.",
        "history-title": "«$1»-ین گئچمیشی",
        "difference-title": "«$1» نوسخه‌لرینین آراسینداکی فرقلری",
        "difference-title-multipage": "«$1» و «$2» صحیفه‌لرین آراسینداکی فرقلر",
-       "difference-multipage": "(صحیفه‌لر آراسینداکی فرقلر)",
+       "difference-multipage": "(صفحه‌لر آراسینداکی فرق‌لر)",
        "lineno": "خط $1:",
        "compareselectedversions": "سئچیلمیش نوسخه‌لری قارشیلاشدیر",
        "showhideselectedversions": "سئچیلمیش نوسخه‌لری گؤستر/گیزلد",
        "prefs-personal": "ایشلدن وئری‌لری",
        "prefs-rc": "سون دَییشیکلیکلر",
        "prefs-watchlist": "ایزله‌دیکلر",
-       "prefs-editwatchlist": "ایزله‌دیگیم صحیفه‌‌لری دَییشدیر",
+       "prefs-editwatchlist": "ایزله‌دیگیم صفحه‌‌لری دَییشدیر",
        "prefs-editwatchlist-label": "هامی ایزلدیکلرینیزین دَییشدیرمه سی:",
        "prefs-editwatchlist-edit": "ایزلدیکلرینیزدن گورمک هابئله باشلیق لارین سیلمک",
        "prefs-editwatchlist-raw": "ایزله‌دیگیم خام لیستی دَییشدیر",
        "prefs-editwatchlist-clear": "ایزله دیگیم لیستی سیلمک",
-       "prefs-watchlist-days": "ایزله‌دیکلرده گؤستریلن گونلر",
+       "prefs-watchlist-days": "ایزله‌دیک‌لرده گؤرسدیلن گۆن‌لر",
        "prefs-watchlist-days-max": "چوخو {{PLURAL:$1|بیر|$1}} گون",
-       "prefs-watchlist-edits": "Ú¯Ù\86Û\8cØ´Ù\84Ù\86Ù\85Û\8cØ´ Ø§Û\8cزÙ\84Ù\87â\80\8cÙ\85Ù\87â\80\8cÙ\84ردÙ\87 Ú¯Ø¤Ø³ØªØ±Û\8cÙ\84Ù\86 Ø¯Ù\8eÛ\8cÛ\8cØ´Û\8cÚ©Ù\84Û\8cÚ©Ù\84رÛ\8cÙ\86 Ú\86Ù\88خو:",
+       "prefs-watchlist-edits": "Ú¯Ù\86Û\8cØ´Ù\84Ù\86Ù\85Û\8cØ´ Ø§Û\8cزÙ\84Ù\85Ù\87â\80\8cÙ\84ردÙ\87 Ú¯Ø¤Ø±Ø³Ø¯Û\8cÙ\84Ù\86 Ø¯Ù\8eÛ\8cÛ\8cØ´Û\8cÚ©â\80\8cÙ\84Û\8cÚ©â\80\8cÙ\84رÛ\8cÙ\86 Ú\86Ù\88Ù\92خو:",
        "prefs-watchlist-edits-max": "چوخ سایی: ۱۰۰۰",
-       "prefs-watchlist-token": "ایزله‌دیکلر نیشانی:",
+       "prefs-watchlist-token": "ایزله‌دیک‌لر آدرسی:",
        "prefs-misc": "باشقا",
        "prefs-resetpass": "رمزی دَییشدیر",
        "prefs-changeemail": "ایمیل آدرسینی دَییشدیر",
        "prefs-setemail": "بیر ایمیل آدرسی وئر",
        "prefs-email": "ایمیل ترجیحلری",
        "prefs-rendering": "گؤرونوش",
-       "saveprefs": "قئید ائت",
+       "saveprefs": "ساخلا",
        "restoreprefs": "بوتون ایلک ترجیح‌لری قایتار",
        "prefs-editing": "دَییشدیرمک‌ده",
        "rows": "سطرلر:",
-       "columns": "سوتونلار",
+       "columns": "سوتونلار",
        "searchresultshead": "آختار",
-       "stub-threshold": "<a href=\"#\" class=\"stub\">کئچیدسیز لینکی</a> فورمات ائتمک اوچون حدود (بایت‌لارلا):",
+       "stub-threshold": "<a href=\"#\" class=\"stub\">باغلانتی‌سیز لینکی</a> دییشدیرمک اوچون حدود (بایت‌لارلا):",
        "stub-threshold-disabled": "چالیشمایان",
-       "recentchangesdays": "سÙ\88Ù\86 Ø¯Û\8cÛ\8cØ´Û\8cÚ©â\80\8cÙ\84ردÙ\87 Ú¯Ø¤Ø³ØªØ±Û\8cÙ\84Ù\86 Ú¯Ù\88ن‌لرین میقداری:",
+       "recentchangesdays": "سÙ\88Ù\92Ù\86 Ø¯Û\8cÛ\8cØ´Û\8cÚ©â\80\8câ\80\8cÙ\84ردÙ\87 Ú¯Ø¤Ø±Ø³Ø¯Û\8cÙ\84Ù\86 Ú¯Û\86ن‌لرین میقداری:",
        "recentchangesdays-max": "ماکسیموم $1 {{PLURAL:$1|گون |گون}}",
-       "recentchangescount": "سÙ\88Ù\86 Ø¯Ù\8aÙ\8eÛ\8cØ´Û\8cÚ©Ù\84Û\8cÚ©لرده باشلیق سايی:",
+       "recentchangescount": "سÙ\88Ù\92Ù\86 Ø¯Ù\8aÙ\8eÛ\8cØ´Û\8cÚ©â\80\8cÙ\84Û\8cÚ©â\80\8cلرده باشلیق سايی:",
        "prefs-help-recentchangescount": "بورایا یئنی دییشیک‌لیک‌لر، صحیفه‌لرین و ژورنال‌لارین تاریخچه‌سی داخیل‌دیر.",
        "prefs-help-watchlist-token2": "بو کیلید ایزلدیگیز لیستین وب تغذیه سی رمزی دیر.\nهر کیم اونا ال تاپسا ایزلدیکلرینیز لیستی اوخویا بیلر بئله لیکله اونا پایلاشمایین [[Special:ResetTokens|لازیم اولسا اونو دَییشدیرمک اوچون بورانی باسین]].",
        "savedprefs": "سئچیمینیز قئيد ائدیلدی.",
        "localtime": "یئرلی چاغ:",
        "timezoneuseserverdefault": "ویکی اؤن‌فرضینی ایشلد ($1)",
        "timezoneuseoffset": "باشقا (چاغ فرقینی بیلدیر)",
-       "servertime": "Ø®Û\8cدÙ\85تÚ\86Û\8c چاغی:",
+       "servertime": "سرÙ\88ر چاغی:",
        "guesstimezone": "براوزِردن دولدور",
        "timezoneregion-africa": "آفریقا",
        "timezoneregion-america": "آمریکا",
        "timezoneregion-europe": "اوروپا",
        "timezoneregion-indian": "هیند اوقیانوسو",
        "timezoneregion-pacific": "بؤیوک اوقیانوس",
-       "allowemail": "باشÙ\82ا Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cÙ\84ردÙ\86 Ø§Û\8cÙ\85Û\8cÙ\84 Ø¢Ù\84Ù\85اغÛ\8c Ø¢Ú\86",
+       "allowemail": "باشÙ\82ا Ø§Û\8cØ´Ù\84دÙ\86â\80\8cÙ\84ردÙ\86 Ø§Û\8cÙ\85Û\8cÙ\84 Ø¢Ù\84Ù\85اغÛ\8c Ø¢Ú\86",
        "prefs-searchoptions": "آختار",
        "prefs-namespaces": "آدلار فضاسی:",
        "default": "فرض ائدیلن",
        "prefs-emailconfirm-label": "ایمیل دوغرولاماسی:",
        "youremail": "ایمیل:",
        "username": "{{GENDER:$1|ایشلدن آدی}}:",
-       "prefs-memberingroups": "{{PLURAL:$1|بیر|$1}} قروپ {{GENDER:$2|عوضو}}و:",
-       "prefs-registration": "یازیلماق واختی:",
+       "prefs-memberingroups": "{{PLURAL:$1|بیر|$1}} گروه {{GENDER:$2|عوضو}}و:",
+       "prefs-registration": "یازیلماق تاریخی:",
        "yourrealname": "دوغرو آد:",
        "yourlanguage": "دیل:",
        "yourvariant": "دیل واریانتی:",
        "yourgender": "ترجیح وئریرسیز نجور توصیف اولونسون؟",
        "gender-unknown": "ترجیح وئریرم بیلیندیرمییم",
        "gender-male": "کیشی",
-       "gender-female": "قادین",
+       "gender-female": "خانیم",
        "prefs-help-gender": "بو ترجیح ایستگه باغلی‌دیر.\nبونون میقداری، سیزی باشقالارا دوزگون آدرس وئرمک اوچون ایشلنه‌جکدیر.\nبو بیلگی، عمومی اولاجاق‌دیر.",
        "email": "ایمیل",
        "prefs-help-realname": "اصلی آد ایختیاری دیر.\nاگر اونو وئرماغی سئچسز، سیزین ایشلرینیزی سیزه مونتسب ائدن‌ده، بو اصلی آد ایشلنه‌جک‌دیر.",
        "prefs-help-email": "ایمیل آدرسی ایستگه باغلی‌دیر، آنجاق رمزینیزی اونوتدوغونوز واخت، سیزه يئنی رمز گؤندرمگه گرکلی‌دیر.",
        "prefs-help-email-others": "سیز هم‌ده آیری ایستیفاده‌چیلره ایجازه وئره بیلرسیز، سیزین ایستیفاده‌چی یا دانیشیق صحیفه‌نیزده بیر باغلانتی ایله، سیزله ایلگی قورسونلار.\nآیری ایستیفاده‌چیلر سیزینله ایلگی قوراندا، سیزین ایمیل آدرسیز گؤستریلمه‌یه‌جک‌دیر.",
        "prefs-help-email-required": "ایمیل آدرس گرکلی‌دیر.",
-       "prefs-info": "اساس Ø¨Û\8cÙ\84Ú¯Û\8cÙ\84ر",
+       "prefs-info": "کؤک Ø¨Û\8cÙ\84Ú¯Û\8câ\80\8cÙ\84ر",
        "prefs-i18n": "اولوسلارآراسی‌لاشدیرما",
        "prefs-signature": "ایمضا",
        "prefs-dateformat": "تاریخ فورمتی",
-       "prefs-timeoffset": "ساعات قورشاغینین فرقی",
+       "prefs-timeoffset": "چاغ بؤلگه‌سینین فرقی",
        "prefs-advancedediting": "گنل تنظیم‌لر",
        "prefs-editor": "دَییشدیرن",
        "prefs-preview": "اؤن‌گؤستریش",
        "prefs-advancedwatchlist": "گلیشمیش سئچَنکلر",
        "prefs-displayrc": "گؤرونتو سئچَنکلری",
        "prefs-displaywatchlist": "گؤرونتو سئچَنکلری",
-       "prefs-tokenwatchlist": "سÛ\8cÙ\85Ú¯Ù\87",
-       "prefs-diffs": "فرقلر",
+       "prefs-tokenwatchlist": "آدرس",
+       "prefs-diffs": "فرقلر",
        "prefs-help-prefershttps": "سیزین بو ترجیحینیزین اثری سیزین سونراکی گیریشینیز دن سونرا اولاجاق.",
        "prefswarning-warning": "ترجیحلرینیزه اولان دَییشیک لر هله آرتیریلمیب.\nایر بو صفحه نین \"$1\" اوستونه باسیلمامیشدان اونجه ترک ائتسز ترجیحلرینیز آرتیریلمییاجاق.",
        "prefs-tabs-navigation-hint": "ایپ اوجو : سیز ائلیه بیلرسیز ساغ و سول جهت نیما کیلید لریندن نیشانه نه نین دولانماسی نیشانه لر لیستینده ایستفاده ائده سیز.",
        "rollback-success": "$1 طرفین‌دن ائدیلمیش دییشدیر‌لر گئری قایتاریلدی؛ $2 طرفین‌دن یارادیلمیش سون وئرسیا برپا اولوندو.",
        "sessionfailure-title": "گیریش خطاسی",
        "sessionfailure": "گیریش اوتورومونوزلا ایلگی‌لی بیر سورون وار گیبی گؤرونویور؛\nبو ائیلئم، اوتوروم گاسپینا کارشی اؤنلئم اولاراک ایپتال ائدیلدی.\nلوتفن \"گئری\" گیدین و گئلدیغینیز سایفایی یئنی‌دئن یوکلئیین، سونرا تئکرار دئنئیین.",
+       "changecontentmodel-title-label": "صحیفه باشلیقی",
+       "changecontentmodel-reason-label": "ندن:",
+       "logentry-contentmodel-change-revertlink": "قایتار",
+       "logentry-contentmodel-change-revert": "قایتار",
        "protectlogpage": "قوروما قئیدلری",
        "protectlogtext": "آشاغی‌داکی، صحیفه قوروما‌لارینا دییشیک‌لیک‌لرین بیر سیاهی‌سی‌دیر.\nحال-حاضردا تطبیق اولونان صحیفه قوروما‌لاری اوچون [[Special:ProtectedPages| قوروما آلتینا آلینمیش صحیفه‌لر سیاهی‌سینا]] باخا بیلرسینیز.",
        "protectedarticle": "«[[$1]]» قوروندو",
        "previousdiff": "اسکی دَییشدیرمه",
        "nextdiff": "یئنی دَییشدیرمه",
        "mediawarning": "'''خبردارلیق: بو ​​فایل نوعو پیس نیت‌لی کودلار اولا بیلر.\nبونو ایشلتمک، سیستئمینیزی تهلوکه‌یه آتا بیلر.",
-       "imagemaxsize": "شکیلین ماکسیمال توتومو:<br />(فایلین تصویری صحیفه‌لری اوچون)'",
+       "imagemaxsize": "گؤرونتو ماکسیمال توتومو:<br />(فایلین تصویری صفحه‌لری اۆچون)'",
        "thumbsize": "کیچیک اؤلچو:",
        "widthheightpage": "$1 × $2، $3 {{PLURAL:$3|صحیف|صحیفه‌لر}}",
        "file-info": "فایلین اؤلچوسو: $1، MIME تیپی: $2",
        "autosumm-newblank": "بوش صحفه یاراندی",
        "lag-warn-normal": "$1 {{PLURAL:$1 | سانیيه‌دن | سانیيه‌ده}} يئنی ديَیشیکلیکلر بو سیياهیدا گؤرولمه‌يه.",
        "lag-warn-high": "وئریلنلر بازاسی سونوجوسونداکی هددیندن آرتیق گئجیکمه‌دن گؤره، $1 {{PLURAL:$1 | سانیيه‌دن | سانیيه‌دن}} يئنی ديَیشیکلیکلر بو سیياهیدا گؤرونمئيئبیلیر.",
-       "watchlistedit-normal-title": "ایزله‌دیگیم صحیفه‌‌لری دَییشدیر",
+       "watchlistedit-normal-title": "ایزله‌دیگیم صفحه‌‌لری دَییشدیر",
        "watchlistedit-normal-legend": "ایزله‌مه سیياهیسیندان باشلیقلارین سیلینمه‌سی",
        "watchlistedit-normal-explain": "ایزله‌مه سیياهینیزدا باشلیقلار آشاغیدا گؤستریلمیشدیر. \nبیر باشلیغی چیخارماق اوچون، يانینداکی قوتوجوغو ایشارله‌يین و «{{int:Watchlistedit-normal-submit}}» دويمه‌سینی باسین. \n[[Special:EditWatchlist/raw|سطرلر سیياهیسینی]] ده تشکیل ائده بیلرسینیز",
        "watchlistedit-normal-submit": "باشلیقین سیلینمه‌سی",
index 545a882..010629d 100644 (file)
        "viewyourtext": "Saimong mahihiling asin makokopya an gikanan kan '''saimong mga pinagriliwat''' sa pahinang ini:",
        "protectedinterface": "An pahinang ini nagtatao nin panlaog-olay para sa software, asin protektado tangaring malikayan an abuso.\nSa pagdagdag or pagliwat nin mga dakit-taramon para sa bilog na wiki, gamita tabi an [//translatewiki.net/translatewiki.net], an MediaWiki sa proyektong lokalisasyon.",
        "editinginterface": "'''Patanid:''' Ika nagliliwat kan pahina na ginagamit sa pagtao nin pantahaw-olay na teksto para sa software.\nAn mga pagbabago kaining pahina makaka-apekto sa hitsura kan pantahaw-olay nin paragamit para sa iba man na paragamit.\nPara sa mga pagdadakit-taramon, pakikonsidera man tabi an paggagamit kan [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], an MediaWiking lokalisasyon kan proyekto.",
-       "cascadeprotected": "Ining pahina pinagprotehiran gikan sa pagliliwat nin huli ta ini pinagbale sa minasunod na {{PLURAL:$1|pahina, na iyo ngani an|mga pahina, na iyo ngani an mga}} protektado kan pinagbukasang opsyon na \"pasurunod-sunudan\":\n$2",
+       "cascadeprotected": "Ining pahina pinagprotehiran gikan sa pagliliwat nin huli ta kabaling pinagbalyo sa minasunod na {{PLURAL:$1|pahina, na iyo ngani an|mga pahina, na iyo ngani an mga}} protektado na igwa nin \"pasurunod\" na opsyong pinagbuksan:\n$2",
        "namespaceprotected": "Ika mayong permiso sa pagliwat nin mga pahina sa <strong>$1</strong> na ngarang-espasyo.",
        "customcssprotected": "Ika mayong permiso sa pagliwat kaining pahinang CSS, nin huli ta ini naglalaman kan personal na panuytoy (settings) kan ibang paragamit.",
        "customjsprotected": "Ika mayong permiso sa pagliwat kaining pahinang JavaScript, nin huli ta ini naglalaman kan personal na panuytoy (settings) kan ibang paragamit.",
        "readonlywarning": "'''Patanid tabi: An datos-sarayan nakakandado para sa maintenance, kaya ika dae makakapagtagama kan saimong mga pinagriliwat sa ngunyan.'''\nIka mapuwedeng makakopya asin idukot an saimong teksto pasiring sa sarong sagunson kan teksto asin itagama ini sa bandang huri.\n\nAn administrador na iyo an nagkandado kaini naghayag kaining kapaliwanagan: $1",
        "protectedpagewarning": "'''Patanid tabi: Ining pahina pinagprotektaran tanganing an mga paragamit sana na igwang pribilihiyo bilang administrador an makakapagliwat kaini.'''\nAn pinakahuring entrada sa talaan pinaghaya sa ibaba bilang reperensiya:",
        "semiprotectedpagewarning": "'''Note:''' Ining pahina pinagprotektaran na tanganing an mga rehistradong mga paragamit sana an mapuwedeng makapagliwat kaini.\nAn pinakahuring entrada sa talaan pinaghaya sa ibaba bilang reperensiya:",
-       "cascadeprotectedwarning": "'''Patanid:''' Nakakandado an pahinang ini tangarig an mga parágamit na igwang pribilehyo nin sysop sana an pwedeng maghirá kaini, huli ta kabali ini sa mga kataratang protektado na {{PLURAL:$1|pahina|mga pahina}}:",
+       "cascadeprotectedwarning": "<strong>Patanid:</strong> Ining pahina pinagprotehiran na tanganing an mga paragamit na igwa nin pan-administrador na mga pribilihiyo an makakaliwat kaini nin huli ta ini kabaling pinagbalyo sa minasunod na protektadong pasurunod na {{PLURAL:$1|pahina|mga pahina}}:",
        "titleprotectedwarning": "'''Patanid tabi: Ining pahina pinagprotektaran na tanganing [[Special:ListGroupRights|espesipikong karapatan]] minakaipo tanganing magmukna kaini.'''\nAn pinakahuring entrada sa talaan pinaghaya sa ibaba bilang reperensiya:",
        "templatesused": "{{PLURAL:$1|Template|Mga Panguyog}} na pinaggamit kaining pahina:",
        "templatesusedpreview": "{{PLURAL:$1|Template|Mga Panguyog}} na pinaggamit kaining patanaw:",
        "linksearch-pat": "Pangarugan sa paghahanap:",
        "linksearch-ns": "Espasyong-ngaran:",
        "linksearch-ok": "Hanápon",
-       "linksearch-text": "Mga tsambang baraha arog baka kan \"*.wikipedia.org\" na puwedeng paggamiton.\nMinakaipo kisera halangkaw na kamugtakan nin kinasakupan, halimbawa \"*.org\".<br />\nSuportadong {{PLURAL:$2|protokol|mga protokol}}: $1 (defaults to http:// kun mayong protokol na pinagkaag).",
+       "linksearch-text": "Mga tsambang baraha arog baka kan \"*.wikipedia.org\" na puwedeng paggamiton.\nMinakaipo nin kisera halangkaw na kamugtakan nin kinasakupan, halimbawa \"*.org\".<br />\nSuportadong {{PLURAL:$2|protokol|mga protokol}}: $1 (defaults to http:// kun mayong protokol na pinagkaag).",
        "linksearch-line": "$1 isinugpon gikan sa $2",
        "linksearch-error": "Mga pantsambang baraha mapuwedeng magluwas sana sa poon kan hostname.",
        "listusersfrom": "Ipahiling an mga paragamit poon sa:",
        "protect-locked-blocked": "Dai mo pwedeng bâgohon an mga tangga kan proteksyon mientras na ika nababágat. Ini an mga presenteng pwesto kan páhina '''$1''':",
        "protect-locked-dblock": "Dai puedeng ibalyo an mga nibel kan proteksión ta may actibong kandado sa base nin datos.\nIni an mga puesta sa ngunyan kaining páhina '''$1''':",
        "protect-locked-access": "Mayong permiso an account mo na magbàgo kan tangga nin proteksyon.\nUya an ngonyan na mga pwesto kan pahinang '''$1''':",
-       "protect-cascadeon": "Pigproprotektaran ining pahina sa ngonyan ta sabay ini sa mga nasunod na {{PLURAL:$1|pahina, na may|mga pahina, na may}} proteksyong katarata na nakaandar. Pwede mong bàgohon an tangga nin proteksyon kaining pahina, pero mayò ning epekto sa proteksyong katarata.",
+       "protect-cascadeon": "Ining pahina presenteng pinagprotehiran nin huli ta kabaling pinagbalyo sa minasunod na {{PLURAL:$1|pahina, na iyo ngani an|mga pahina, na iyo ngani an mga}} protektado na igwa nin \"pasurunod\" na opsyong pinagbuksan.\nAn mga kaliwatan sa lebel kan proteksyon kaining pahina dae makapag-apektar sa pasurunod na proteksyon.",
        "protect-default": "Tuguti an gabos na mga paragamit",
        "protect-fallback": "Minatugot sana sa mga paragamit na igwang \"$1\" na permiso",
        "protect-level-autoconfirmed": "Minatugot sana sa awtokumpirmadong mga paragamit",
        "htmlform-no": "Habó",
        "htmlform-yes": "Iyo",
        "htmlform-chosen-placeholder": "Magpili nin sarong opsyon",
+       "htmlform-title-not-creatable": "\"$1\" bako sarong maimumuknang titulo kan pahina",
+       "htmlform-title-not-exists": "[[:$1]] bakong eksistido.",
        "sqlite-has-fts": "$1 na igwang suporta sa kabilogang-teksto nin paghahanap",
        "sqlite-no-fts": "$1 na mayong suporta sa kabilogang-teksto nin paghahanap",
        "logentry-delete-delete": "$1 {{GENDER:$2|pinagpura na}} pahina $3",
index fd8a071..cb5d171 100644 (file)
        "changecontentmodel-success-title": "Мадэль зьместу была зьмененая",
        "changecontentmodel-success-text": "Тып зьместу [[:$1]] быў зьменены.",
        "changecontentmodel-cannot-convert": "Зьмест [[:$1]] ня можа быць ператвораны ў тып $2.",
-       "changecontentmodel-title-cantexist": "Немагчыма мець старонку ў $1.",
        "changecontentmodel-nodirectediting": "Мадэль зьместу $1 не падтрымлівае наўпроставае рэдагаваньне",
        "log-name-contentmodel": "Журнал зьменаў мадэляў зьместу",
        "log-description-contentmodel": "Падзеі, зьвязаныя з мадэлямі зьместу старонак",
        "pageinfo-robot-index": "Дазволеная",
        "pageinfo-robot-noindex": "Не дазволеная",
        "pageinfo-watchers": "Колькасьць назіральнікаў і назіральніц",
+       "pageinfo-visiting-watchers": "Колькасьць удзельнікаў, якія назіраюць за старонкай і бачылі апошнія зьмены",
        "pageinfo-few-watchers": "Менш за $1 {{PLURAL:$1|назіральніка|назіральнікі|назіральнікаў}}",
+       "pageinfo-few-visiting-watchers": "Могуць быць, а могуць ня быць удзельнікі, якія назіраюць за старонкай і бачылі апошнія зьмены",
        "pageinfo-redirects-name": "Перанакіраваньняў на гэтую старонку",
        "pageinfo-subpages-name": "Колькасьць падстаронак",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|перанакіраваньне|перанакіраваньні|перанакіраваньняў}}; $3 {{PLURAL:$3|звычайная|звычайныя|звычайных}})",
        "tags-delete-too-many-uses": "Метка «$1» выкарыстаная ў больш чым $2 {{PLURAL:$2|вэрсіі|вэрсіях}}, адпаведна, яна ня можа быць выдаленая.",
        "tags-delete-warnings-after-delete": "Метка «$1» была пасьпяхова выдаленая, але {{PLURAL:$2|1=атрыманае наступнае папярэджаньне|атрыманыя наступныя папярэджаньні}}:",
        "tags-activate-title": "Актываваць метку",
+       "tags-activate-question": "Вы зьбіраецеся актываваць метку «$1».",
+       "tags-activate-reason": "Прычына:",
+       "tags-activate-not-allowed": "Немагчыма актываваць метку «$1».",
+       "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": "Адключыць",
+       "tags-apply-no-permission": "Вы ня маеце права прымяняць меткі да вашых рэдагаваньняў.",
+       "tags-apply-not-allowed-one": "Метка «$1» ня можа быць прызначаная ўручную.",
+       "tags-edit-title": "Рэдагаваньне метак",
+       "tags-edit-manage-link": "Кіраваньне меткамі",
+       "tags-edit-revision-selected": "{{PLURAL:$1|1=Абраная вэрсія|Абраныя вэрсіі}} [[:$2]]:",
+       "tags-edit-logentry-selected": "{{PLURAL:$1|1=Абраны запіс|Абраныя запісы}} журнала:",
+       "tags-edit-revision-legend": "Дадаць ці прыбраць меткі з {{PLURAL:$1|1=гэтай вэрсіі|усіх $1 вэрсіяў}}",
+       "tags-edit-logentry-legend": "Дадаць ці прыбраць меткі з {{PLURAL:$1|1=гэтага запісу|усіх $1 запісаў}} журналу",
+       "tags-edit-existing-tags": "Наяўныя меткі:",
+       "tags-edit-existing-tags-none": "«Няма»",
+       "tags-edit-new-tags": "Новыя меткі:",
+       "tags-edit-add": "Дадаць гэтыя меткі:",
+       "tags-edit-remove": "Выдаліць гэтыя меткі:",
+       "tags-edit-remove-all-tags": "(выдаліць усе меткі)",
+       "tags-edit-chosen-placeholder": "Абярыце меткі",
        "comparepages": "Параўнаньне старонак",
        "compare-page1": "Старонка 1",
        "compare-page2": "Старонка 2",
        "htmlform-cloner-create": "Дадаць больш",
        "htmlform-cloner-delete": "Выдаліць",
        "htmlform-cloner-required": "Патрабуецца як мінімум яшчэ адно значэньне.",
+       "htmlform-user-not-exists": "<strong>$1</strong> не існуе.",
+       "htmlform-user-not-valid": "<strong>$1</strong> — некарэктнае імя карыстальніка.",
        "sqlite-has-fts": "$1 з падтрымкай поўнатэкстнага пошуку",
        "sqlite-no-fts": "$1 без падтрымкі поўнатэкстнага пошуку",
        "logentry-delete-delete": "$1 {{GENDER:$2|выдаліў|выдаліла}} старонку $3",
        "revdelete-uname-unhid": "імя ўдзельніка адкрытае",
        "revdelete-restricted": "ужыць абмежаваньні для адміністратараў",
        "revdelete-unrestricted": "зьнятыя абмежаваньні для адміністратараў",
+       "logentry-block-block": "$1 {{GENDER:$2|заблякаваў|заблякавала}} {{GENDER:$4|$3}} на тэрмін $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|разблякаваў|разблякавала}} {{GENDER:$4|$3}}",
+       "logentry-suppress-block": "$1 {{GENDER:$2|заблякаваў|заблякавала}} {{GENDER:$4|$3}} на тэрмін $5 $6",
        "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 8dc411f..6e2d5bd 100644 (file)
        "categorypage": "دیستین تهری تاکدیمی",
        "viewtalkpage": "گپ تاکدیمی نشان داتین",
        "otherlanguages": "بی دیگه زبانانی تا",
-       "redirectedfrom": "(تغییرمسیر داتین شه $1)",
+       "redirectedfrom": "(گردینته بوته شه $1 ئا)",
        "redirectpagesub": "تاکدیمی تغییرمسیر داتین",
-       "redirectto": "تغییر مسیر بی:",
+       "redirectto": "گردینتین په:",
        "lastmodifiedat": "ای تاکدیم آخرین‌ وارا بی $1 سائت $2 تا تغییر بوته.",
        "viewcount": "شه ای تاکدیما کسی {{PLURAL:$1|یکوار|$1ور}} دیدن کورته.",
        "protectedpage": "قُلپ بوتگین تاکدیم",
        "passwordreset": "پاک کورتین پاسوردئ",
        "passwordreset-text-one": "په پدا نادینتین ایمیلی پاسوردی خاتیرا ای فرم ئا پر کنیت.",
        "passwordreset-text-many": "{{PLURAL:$1|په موقتی ئین چیهرگال ئی گیپتین شه ایمیلئ راه ئا، یکی شه زمینه‌هان ئا پر کنیت.}}",
-       "passwordreset-legend": "پاک کورتین پاسوردئ",
        "passwordreset-disabled": "ای ویکی ئی تا پاسورد یا چیهرگالی پدا بیئر گردینتین غیر پئال اینت.",
        "passwordreset-emaildisabled": "ایمیلی گزینه بی ای یکی ئی تا پئال نه ونت.",
        "passwordreset-username": "کار زوروکین نام:",
        "changeemail-throttled": "شما بیخی باز وار په لوگین بوتینا کوشش کورته ایت.\nمهربانئ بکنیت دیم شه آیی که پدا کوشش بکنیت $1 صبر کنیت.",
        "resettokens": "بیئر گردینتین نشانگ ئانی",
        "resettokens-no-tokens": "هیچ نشانگ ئی په ریست کورتین ئا وجود نداریت.",
-       "resettokens-legend": "بیئر گردینتین نشانگ ئانی",
        "resettokens-tokens": "نشانگان:",
        "resettokens-token-label": "$1 (انونین اندازه گ: $2)",
        "resettokens-done": "بیئر گردینتین نشانگ ئان.",
        "note": "'''نکته:'''",
        "previewnote": "'''بئ هوش ئا داشته بیئت که ای په قت دیم اینت.'''\nشمی تغیرات تا انون زه خیره نه بوته انت!",
        "continue-editing": "شوتین بی ایڈ\tیٹ\tی نیمگا",
-       "editing": "بی ایڈ\tیٹ\t کورتینی حالا $1",
-       "creating": "بی جوڑ کورتینی حالا $1",
-       "editingsection": "بئ $1 ئی ایڈیٹ کورتینئ حالا (بخش)",
+       "editing": "به $1 ئی دستکاری کورتینێ حالا",
+       "creating": "$1 جۆڑ ئه بيت",
+       "editingsection": "به $1 ئی دستکاری کورتینێ حالا (چونڑ)",
        "editingcomment": "بئ $1 ئی ایڈیٹ کورتینئ حالا (نوکین بخش)",
        "editconflict": "هجومین ایڈیٹ: $1",
+       "explainconflict": "شه وختی که شما ای دیمێ دستکاری ئا شرو کورتێت یک دیگه نپری آیرا ٹگل دات.\nبُرزگین متنین جاگه شامل ئه بیت شه اي دیمێ رقم، به انونین حالتێ تا.\nشمێ ٹگل به متنێ جهلگا نشان داته بوته انت.\nشما باید وتي ٹگل ئانه گۆ انونین متنا لۆڑ کنیت.\nگو \"{{int:savearticle}}\" کيلی ئی پرنچیتین ئا <strong>تانا</strong> بُرزگین متني ئین متنێ جاگه ذخیره ئه بیت.",
        "yourtext": "شمی متن",
        "storedversion": "ذخیره بوته ئین نخسه",
+       "editingold": "'''توجه: شما به ای تاکدیمێ کهنگین نخسه ئی جۆڑ کورتينێ حالا هستیت.'''\nاگه ایشیرا ذخیره‌بکنیت ، هر تغییری که پدا شه ای نخسه ئا بوته انت شه بێن ئه رونت.",
        "yourdiff": "تفاوت‌هان",
        "templatesused": "{{PLURAL:$1|تراشوان|تراشوانان}} استفاده بوته انت بی ای تاکدیمئ تا:",
        "templatesusedpreview": "ای دیم دیست ئی تا استفاده بوته ئین {{PLURAL:$1|تراشوان|تراشوانان}} :",
        "searchprofile-everything-tooltip": "گشتین په موچین محتوا ئان (شاملئ گپ ئی تاکدیمان)",
        "searchprofile-advanced-tooltip": "گشتین بی فضای نام دلخواه",
        "search-result-size": "$1 ({{PLURAL:$2|یک کلیمه|$2 کلیمه}})",
-       "search-redirect": "(تغییرمسیر $1)",
+       "search-redirect": "($1 یي گردینتین)",
        "search-section": "(بخش $1)",
        "search-category": "(تهر  $1)",
        "search-file-match": "(فایلی محتوایی یکرنگی)",
        "right-createtalk": "گپ ئی تاکدیمی جوڑ\t کورتین",
        "right-createaccount": "کار زوروکئ حسابئ جوڑ\t کورتین",
        "right-minoredit": "نشانی کورتین ایڈیٹانی بئ ئنوان کم ئین",
-       "right-move": "تاکدیمی انتقال",
-       "right-move-subpages": "تاکدÛ\8cÙ\85اÙ\86ئ Ø§Ù\86تÙ\82اÙ\84 Ú¯Ù\88 Ø¢Ù\88اÙ\86 Ú¯Ù\88Ù\86Ú\88دÛ\8cÙ\85 Ø¦ان",
+       "right-move": "تاکدیمئ جابجا کورتین",
+       "right-move-subpages": "تاکدÛ\8cÙ\85اÙ\86ئ Ø¬Ø§Ø¨Ø¬Ø§Û\8cÙ\8a Ú¯Û\86 Ø¢Ù\88اÙ\86Ù\8a Ú¯Û\86Ù\86Ú\88دÛ\8cÙ\85ان",
        "right-move-rootuserpages": "کار زوروکین سرشاخه ئین تاکدیمانئ انتقال",
        "right-move-categorypages": "تهر تاکدیمئ انتکال",
        "right-movefile": "فایلی انتقال",
-       "right-suppressredirect": "تاکدÛ\8cÙ\85ئ Ø§Ù\86تÙ\82اÙ\84 Ø¨Û\8cدÙ\88Ù\86 Ø´Ù\87 Ø¯Û\8cÙ\85Û\8cÙ\86 Ù\86اÙ\85Û\8c ØªØºÛ\8cرÙ\85سÛ\8cر Ø¦Û\8c Ø¬Ù\88Ú\91 Ú©Ù\88رتÛ\8cÙ\86",
+       "right-suppressredirect": "تاکدÛ\8cÙ\85ئ Ø¬Ø§Ø¨Ø¬Ø§ Ú©Ù\88رتÛ\8cÙ\86 ØºÛ\8cر Ø´Ù\87 Ø¯Û\8cÙ\85Û\8cÙ\86 Ù\86اÙ\85ئ Ú¯Ø±Ø¯Û\8cÙ\86تÛ\8cÙ\86ا",
        "right-upload": "فایلی بُرز کورتین",
        "right-reupload": "پدا نیویشتین موجودین فایلئ",
        "right-reupload-own": "آ فایلی پدا بُرز کورتین که دیمتیرا هم شه هما کار زوروکی نیمگا یک وار بُرز بوتت",
        "upload-proto-error-text": "بُرز کورتین شه دوردستا به ادرس ئان که گو <code dir=ltr>http://</code> یا <code dir=ltr>ftp://</code>  ئی شرو بیئنت ضرورت داریت .",
        "upload-file-error": "داخلین خطا",
        "upload-misc-error": "نامئلومین خطا بی بُرزکورتینئ تا",
-       "upload-too-many-redirects": "انترنیتی ادرس به شه اندازه ئا تغیرمسیر داریت",
+       "upload-too-many-redirects": "ای انترنیتین ادرس شه اندازه ئا گیشتیر گردینته بوته ئین دیم داریت",
        "upload-http-error": "یک  اچ‌تی‌تی‌پی خطا رخ داته: $1",
        "upload-copy-upload-invalid-domain": "بُرز بوته فایلانی کاپی کورتین شه ای ڈومین ئا امکان نداریت.",
        "backend-fail-stream": "نه توانن $1 ئی فایلا دیم دهین.",
        "mimetype": "MIME ئی رکم:",
        "download": "ائیر کورتین",
        "unwatchedpages": "دیسته نه یوته ئین تاکدیمان",
-       "listredirects": "تغیرمسیر ئی تاکدیمانی لڑ",
+       "listredirects": "گردینته بوته ئین تاکدیمانی لڑلیست",
        "listduplicatedfiles": "موچین فایل ئانی لڑ ، لۆڑ گۆ تکراری ئان",
        "listduplicatedfiles-entry": "[[:File:$1|$1]][[$3|{{PLURAL:$2|یک تکرار|$2 تکرار}}]] داریت.",
        "unusedtemplates": "استفاده نه بوته ئین تراشوانان",
        "randomincategory-nopages": "هیچ تاکدیمی بئ  [[:Category:$1|$1]] ئی تهری تا موجود نه اینت.",
        "randomincategory-category": "تهر:",
        "randomincategory-legend": "تصادفین تاکدیم بئ تهرئی تا",
-       "randomredirect": "تغÛ\8cÛ\8cرÙ\85سÛ\8cر ØªØµØ§Ø¯Ù\81Û\8c",
+       "randomredirect": "بÛ\8e Ù\82ستÛ\8cÙ\86 Ú¯Ø±Ø¯Û\8cÙ\86تÛ\8cÙ\86",
        "randomredirect-nopages": "هیج تغیر مسیر بئ  «$1» ئی نامی فضای تا موجود نه اینت.",
        "statistics": "ارقام",
        "statistics-header-pages": "ای تاکدیمئ ارقام",
        "pageswithprop-submit": "برا",
        "pageswithprop-prophidden-long": "($1) ئی تچکین متنی چیهرین جزییات",
        "pageswithprop-prophidden-binary": "($1) ئی باینری چیهرین اندازگ ئی جزییات",
-       "doubleredirects": "دوتائین تغیرمسیرئان",
+       "doubleredirects": "ڈبل گردینتێن",
        "double-redirect-fixer": "تغیرمسیرئانی تئمیرکار",
        "brokenredirects": "خرابین تغیرمسیر",
        "brokenredirectstext": "جهلگین تغییرمسیرئان بئ یک ناموجودین دیمی لینک دارنت:",
        "newpages": "نوکین تاکدیم",
        "newpages-username": "کار زوروکین نام:",
        "ancientpages": "کهنگین تاکدیمان",
-       "move": "اÙ\86تÙ\82اÙ\84",
+       "move": "جابجاÛ\8cÙ\8a",
        "movethispage": "ای تاکدیمی انتقال",
        "notargettitle": "بی شه هدفا",
        "nopagetitle": "ایرنگی تاکدیمئ وجود نداریت",
        "table_pager_empty": "هیچ نتیجه",
        "autosumm-blank": "تاکدیما خالی کورت",
        "autosumm-replace": "تاکدیمی جابجایی گۆ '$1'",
-       "autoredircomment": "جÙ\87ت Û\8cÛ\8c ØªØºÛ\8cر Ø¨Ø¦ [[$1]]",
+       "autoredircomment": "اÛ\8c ØªØ§Ú©Ø¯Û\8cÙ\85 Ø¨Ù\87 [[$1]] Ø¦Ø§ Ú¯Ø±Ø¯Û\8cÙ\86تÙ\87 Ø¨Ù\88ت",
        "autosumm-new": "نوکین دیمی گۆ «$1» ئا جۆڑ کورت",
        "autosumm-newblank": "خالی ئین دیمی جۆڑ بوت",
        "watchlistedit-normal-title": "دیدارلیست ئی ایڈیٹ کورتین",
        "version-libraries": "نصب بوته ئین کتابخانه",
        "version-libraries-library": "کتابجاه",
        "version-libraries-version": "نخسه",
-       "redirect-legend": "جابجا په یک پایل یا دیم ئی",
+       "redirect-legend": "گردینتین په یک پایل یا تاکدیمئ",
        "redirect-submit": "برا",
        "redirect-lookup": "گشتین:",
        "redirect-value": "اندازه گ:",
        "specialpages-group-pages": "تاکدیمانی لڑ\t لیست",
        "specialpages-group-pagetools": "تاکدیمانئ وسایلان",
        "specialpages-group-wiki": "دتا و وسایلان",
-       "specialpages-group-redirects": "مسیر ئی تغیری خاسین تاکدیمان",
+       "specialpages-group-redirects": "گردینۆکین خاسین تاکدیمان",
        "specialpages-group-spam": "سپم ئی وسایلان",
        "specialpages-group-developer": "توسه ئه دهوکین وسایلان",
        "blankpage": "خالی ئین دیم",
        "special-characters-group-khmer": "خمر",
        "special-characters-title-endash": "پاسیله خت",
        "special-characters-title-emdash": "تچکین پاسیله خت",
-       "special-characters-title-minus": "منپی نشانگ"
+       "special-characters-title-minus": "منپی نشانگ",
+       "mw-widgets-titleinput-description-redirect": "گردینتین به $1 یی تا"
 }
index f5189a1..b0a7ed1 100644 (file)
        "category-file-count-limited": "वर्तमान में निम्नलिखित {{PLURAL:$1|पन्ना|$1 पन्नां}} इ श्रेणीं में बाड़े।",
        "listingcontinuesabbrev": "जारी...",
        "index-category": "सूचीबद्ध पृष्ठ",
-       "noindex-category": "à¤\85सà¥\82à¤\9aà¥\80बदà¥\8dध à¤ªà¥\83षà¥\8dठ",
+       "noindex-category": "बिना à¤¸à¥\82à¤\9aà¥\80बदà¥\8dध à¤ªà¤¨à¥\8dना",
        "broken-file-category": "टूटल फ़ाइल कड़ियन वाला पन्ना",
        "about": "बारे में",
        "article": "सामग्री पन्ना",
        "nstab-project": "प्रोजेक्ट पन्ना",
        "nstab-image": "फाइल",
        "nstab-mediawiki": "सन्देश",
-       "nstab-template": "साà¤\81à¤\9aा",
+       "nstab-template": "à¤\9fà¥\87मà¥\8dपलà¥\87à¤\9f",
        "nstab-help": "मदद पन्ना",
        "nstab-category": "श्रेणी",
        "nosuchaction": "अईसन कौनो कार्रवाई नाहि",
        "passwordreset": "गुप्तशब्द (पासवर्ड) रिसेट करीं",
        "passwordreset-text-one": "आपन गुप्तशब्द के पुनर्स्थापित करे खातिर इ फॉर्म भरीं।",
        "passwordreset-text-many": "{{PLURAL:$1|ईमेल द्वारा अस्थाई पासवर्ड पावे खातिर निम्न में से कउनो एगो स्थान भरीं।}}",
-       "passwordreset-legend": "गुप्तशब्द रिसेट करीं",
        "passwordreset-disabled": "इ विकी पर पासवर्ड पुनर्स्थापन अक्षम बा।",
        "passwordreset-emaildisabled": "इ विकि पर ई-मेल सुविधा अक्षम कर दिहल गईल बा।",
        "passwordreset-username": "प्रयोगकर्ता नाम",
        "resettokens": "टोकन रीसेट करीं",
        "resettokens-text": "जौन टोकन राउर खाता से सम्बद्ध कुछ विशिष्ट व्यक्तिगत जानकारी प्रदान करेला, आप उ के अहिजा रीसेट कर सकत बानी।\n\nयदि रउआ ई के गलती से केहू के दिखा देले बानी या फिर राउर खाता हैक हो गईल बा त रउआ ई के रीसेट कर देवे के चाहीं।",
        "resettokens-no-tokens": "रीसेट करे खातिर कउनो टोकन नइखे।",
-       "resettokens-legend": "टोकन रीसेट करीं",
        "resettokens-tokens": "टोकन:",
        "resettokens-token-label": "$1 (वर्तमान मूल्य: $2)",
        "resettokens-watchlist-token": "[[Special:Watchlist|आपके ध्यानसूची के पन्नन में बदलावसभ]] के वेब फ़ीड (Atom/RSS) हेतु टोकन",
        "yourtext": "राउर पाठ्य",
        "storedversion": "सुरक्षित करल गईल संशोधन",
        "yourdiff": "अंतर",
-       "templatesused": "ए पन्ना पर इस्तेमाल {{PLURAL:$1|साँचा|साँचा कुल}}:",
-       "templatesusedpreview": "इ पुर्वावलोकन में प्रयुक्त {{PLURAL:$1|खाँचा|खाँचा कुल}}:",
+       "templatesused": "ए पन्ना पर इस्तेमाल {{PLURAL:$1|टेम्पलेट|टेम्पलेट कुल}}:",
+       "templatesusedpreview": "इ पुर्वावलोकन में प्रयुक्त {{PLURAL:$1|टेम्पलेट|टेम्पलेट कुल}}:",
+       "templatesusedsection": "एह खण्ड में इस्तेमाल {{PLURAL:$1|टेम्पलेट|कुल}}:",
        "template-protected": "(सुरक्षित)",
        "template-semiprotected": "(कुछ-सुरक्षित)",
        "hiddencategories": "ई पन्ना {{PLURAL:$1|1 छिपल श्रेणी|$1 छिपल श्रेणीसभ}} के सदस्य बा:",
        "listfiles_thumb": "चिप्पी",
        "listfiles_date": "तिथि",
        "listfiles_name": "नाँव",
+       "listfiles_user": "सदस्य",
+       "listfiles_description": "विवरण",
+       "listfiles_count": "संस्करण",
+       "listfiles-latestversion": "वर्तमान संस्करण",
        "file-anchor-link": "फाइल",
        "filehist": "पन्ना के इतिहास",
        "filehist-help": "ओ समय ई फाइल कइसन लउके ई देखे खातिर कौनों तारीख/समय पर क्लिक करीं।",
        "randompage": "बेतरतीब पन्ना",
        "randomincategory": "श्रेणी में अनियमित पन्ना",
        "randomincategory-nopages": "[[:Category:$1|$1]] श्रेणी में कउनो पन्ना नइखे।",
+       "randomincategory-category": "श्रेणी:",
        "randomincategory-legend": "श्रेणी में अनियमित पन्ना",
-       "statistics": "तथ्यांकसभ",
-       "statistics-header-edits": "तथ्यांक सम्पादन",
-       "statistics-header-hooks": "अन्य तथ्यांक",
+       "randomincategory-submit": "जाईं",
+       "statistics": "सांख्यिकी",
+       "statistics-header-pages": "पन्ना सांख्यिकी",
+       "statistics-header-edits": "संपादन सांख्यिकी",
+       "statistics-header-users": "सदस्य सांख्यिकी",
+       "statistics-header-hooks": "अन्य सांख्यिकी",
+       "statistics-articles": "सामग्री पन्ना",
+       "statistics-pages": "पन्ना सभ",
+       "statistics-pages-desc": "विकि पर सगरी पन्ना, वार्ता पन्ना, अनुप्रेषण इत्यादि समेत।",
+       "statistics-files": "अपलोड कइल फाइल सभ",
+       "statistics-edits": "{{SITENAME}} सेट अप की बाद पन्ना संपादन संख्या",
+       "statistics-edits-average": "प्रति पन्ना औसत संपादन",
+       "statistics-users": "रजिस्टर्ड [[Special:ListUsers|सदस्य]]",
+       "statistics-users-active": "सक्रिय सदस्य",
+       "statistics-users-active-desc": "सदस्य लोग जे पछिला {{PLURAL:$1|दिन|$1 दिन}} में कौनों काम कइले बाटे",
        "pageswithprop": "पन्ना-गुण वाला पन्नासभ",
+       "pageswithprop-legend": "पन्ना प्रापर्टी वाला पन्ना सभ",
+       "pageswithprop-prop": "प्रापर्टी नाँव:",
+       "pageswithprop-submit": "जाईं",
        "doubleredirects": "दोहरा पुननिर्देशित पन्ना",
        "brokenredirects": "टूटल पुनर्निर्देशन पन्ना",
+       "brokenredirects-edit": "संपादन",
+       "brokenredirects-delete": "मिटाईं",
        "withoutinterwiki": "बिना अंतरविकि जोड़ वाला पन्ना",
+       "withoutinterwiki-summary": "ई पन्ना सभ कौनों दुसरा भाषा की वर्जन से नइखे जुड़ल।",
+       "withoutinterwiki-legend": "उपसर्ग",
+       "withoutinterwiki-submit": "देखाईं",
        "fewestrevisions": "सबसे कम संशोधन वाला पन्ना",
        "nbytes": "$1 {{PLURAL:$1|बाइट|बाइट्स}}",
        "ncategories": "{{PLURAL:$1|श्रेणी|श्रेणीसभ}}",
+       "ninterwikis": "$1 {{PLURAL:$1|इंटरविकि|इंटरविकि सभ}}",
+       "nlinks": "$1 {{PLURAL:$1|कड़ी|कड़ी सभ}}",
+       "nmembers": "$1 {{PLURAL:$1|मेंबर|मेंबर सभ}}",
+       "nmemberschanged": "$1 → $2 {{PLURAL:$2|मेंबर|मेंबर सभ}}",
+       "nrevisions": "$1 {{PLURAL:$1|रिवीजन|रिवीजन सभ}}",
+       "nimagelinks": "Used on $1 {{PLURAL:$1|पन्ना|पन्ना सभ}}",
+       "ntransclusions": "used on $1 {{PLURAL:$1|पन्ना|पन्ना सभ}}",
+       "specialpage-empty": "एह रिपोर्ट खातिर कौनों रिजल्ट नइखे",
        "lonelypages": "अनाथ पन्ना",
        "lonelypagestext": "ई पन्ना कुल कौनों दूसर पन्ना से नइखें जुड़ल न कौनों में ट्रांसक्लूड बाड़ें",
        "uncategorizedpages": "बिना श्रेणी के पन्ना",
        "wantedcategories": "श्रेणी चाहत बा",
        "wantedpages": "पन्ना चाहत बा",
        "wantedfiles": "जरुरत के फाईलसभ",
+       "wantedfiletext-nocat-noforeign": "ई फाइल सभ इस्तेमाल में बाटे बाकी मौजूद नइखे।",
        "wantedtemplates": "जरुरत के खाँचा",
+       "mostlinked": "सबसे ढेर पन्ना-जोड़ वाला",
        "mostlinkedcategories": "सबसे अधिक से जुड़ल श्रेणीसभ",
+       "mostlinkedtemplates": "सभसे ढेर ट्रांसक्लूजन वाला पन्ना",
        "mostcategories": "सबसे अधिक श्रेणी वाला पन्नाकुल",
+       "mostimages": "सभसे ढेर फाइल-जोड़ वाला",
+       "mostinterwikis": "सभसे ढेर इंटरविकि वाला पन्ना",
+       "mostrevisions": "सभसे ढेर रिवीजन वाला पन्ना सभ",
        "prefixindex": "उपसर्ग अनुसार पन्ना",
        "shortpages": "छोट पन्नासभ",
        "longpages": "लमहर पन्ना",
        "deadendpages": "मरल-खपल पन्ना",
        "protectedpages": "सुरक्षित पन्ना",
+       "protectedpages-noredirect": "अनुप्रेषण छिपाईं",
+       "protectedpagesempty": "कौनों पन्ना के सुरक्षा ए पैमान पर नइखे",
+       "protectedpages-timestamp": "टाइममोहर",
+       "protectedpages-page": "पन्ना",
+       "protectedpages-expiry": "एक्सपायर हो जाई",
+       "protectedpages-performer": "सदस्य सुरक्षा",
+       "protectedpages-params": "सुरक्षा पैमाना",
+       "protectedpages-reason": "कारण",
+       "protectedpages-unknown-timestamp": "नामालूम",
+       "protectedpages-unknown-performer": "नामालूम सदस्य",
        "protectedtitles": "सुरक्षित शीर्षक",
+       "protectedtitlesempty": "कौनों टाइटिल के सुरक्षा एह पैमान पर नइखे।",
        "listusers": "सदस्यसूची",
+       "listusers-editsonly": "उहे सदस्य देखाईं जे संपादन कइले होखे",
+       "listusers-creationsort": "बनवले की तारीख की हिसाब से सरियाईं",
+       "listusers-desc": "घटत क्रम से सरियाईं",
+       "usereditcount": "$1 {{PLURAL:$1|संपादन|संपादन सभ}}",
        "newpages": "नया पन्ना",
+       "newpages-username": "सदस्यनाँव:",
        "ancientpages": "सभन से पुरान पन्नासभ",
        "move": "स्थान्तरण",
        "movethispage": "ई पन्ना के स्थांतरण करीं",
+       "suppress": "ओवरसाइटर",
+       "apihelp": "एपीआइ (API) मदद",
        "apihelp-no-such-module": "मॉड्युल $1 ना मिलल।",
        "booksources": "किताबी स्रोत",
        "booksources-search-legend": "किताबी स्रोत के खोज",
        "booksources-search": "खोज",
        "log": "सगरी लॉग",
+       "allpages": "सगरी पन्ना",
+       "nextpage": "अगिला पन्ना ($1)",
+       "prevpage": "पछिला पन्ना ($1)",
+       "allpagesfrom": "पन्ना देखाई जे शुरू होत बा:",
+       "allpagesto": "पन्ना देखाईं जे खतम होत बा:",
        "allarticles": "सगरी पन्ना",
+       "allinnamespace": "सगरी पन्ना ($1 namespace)",
        "allpagessubmit": "जाईं",
        "allpagesprefix": "उपसर्ग के साथे पन्ना प्रदर्शन:",
+       "allpages-bad-ns": "{{SITENAME}} पर \"$1\" नामस्थान नइखे।",
+       "allpages-hide-redirects": "अनुप्रेषण छिपाईं",
+       "cachedspecial-viewing-cached-ttl": "आप कैश कइल वर्जन देखत बानी जेवन $1 ले पुरान हो सकत बा।",
+       "cachedspecial-refresh-now": "सभसे नया देखाईं।",
        "categories": "श्रेणीसभ",
        "activeusers": "सक्रिय सदस्यन के सूची",
        "listgrouprights": "सदस्य समूह अधिकारसभ",
        "trackingcategories": "नजर रखे वाला श्रेणीसभ",
+       "trackingcategories-msg": "निगरानी श्रेणी",
+       "trackingcategories-name": "संदेस नाँव",
        "emailuser": "ई प्रयोगकर्ता के ईमेल करीं",
        "watchlist": "ध्यानसूची",
        "mywatchlist": "धियानसूची",
        "rollbacklinkcount": "रोलबैक $1 {{PLURAL:$1|संपादन|संपादन सब}}",
        "protectlogpage": "सुरक्षा लॉग",
        "protectlogtext": "नीचे पन्ना सुरक्षा में भइल बदलावकुल के सूची बा।\nहाल में सुरक्षित पन्नन के सूची खातिर [[Special:ProtectedPages|सुरक्षित पन्नन के सूची]] देखीं।",
+       "restriction-move": "स्थानांतरण",
+       "restriction-create": "बनावे पर",
+       "restriction-upload": "अपलोड",
+       "restriction-level-sysop": "पुरा सुरक्षित",
+       "restriction-level-autoconfirmed": "आधा सुरक्षित",
+       "restriction-level-all": "कौनों लेवल",
+       "undelete": "हटावल पन्ना देखीं",
+       "undeletepage": "हटावल पन्ना देखीं आ वापिस ले आईं",
        "undeletelink": "देखीं/बहाल करीं",
        "namespace": "नामस्थान:",
        "invert": "चुनाव पलटीं",
index 12d31c6..97f764d 100644 (file)
                ]
        },
        "tog-underline": "Podvuci veze:",
-       "tog-hideminor": "Sakrij male izmjene u spisku nedavnih izmjena",
+       "tog-hideminor": "Sakrij manje izmjene u spisku nedavnih izmjena",
        "tog-hidepatrolled": "Sakrij patrolirane izmjene u nedavnim promjenama",
        "tog-newpageshidepatrolled": "Sakrij patrolirane stranice sa spiska novih stranica",
        "tog-extendwatchlist": "Proširi spisak praćenja za pogled svih izmjena, ne samo nedavnih",
        "tog-usenewrc": "Grupiraj izmjene po stranicama sa nedavnih izmjena i praćenih članaka",
        "tog-numberheadings": "Automatski numeriši podnaslove",
        "tog-showtoolbar": "Prikaži traku s alatkama za uređivanje",
-       "tog-editondblclick": "Izmijeni stranice dvostrukim klikom",
-       "tog-editsectiononrightclick": "Uključite uređivanje odjeljka sa pritiskom na desno dugme miša u naslovu odjeljka",
+       "tog-editondblclick": "Uredi stranice dvostrukim klikom",
+       "tog-editsectiononrightclick": "Uključi uređivanje odjeljka sa pritiskom na desno dugme miša u naslovu odjeljka",
        "tog-watchcreations": "Dodaj stranice i datoteke koje napravim na moj spisak praćenih članaka",
        "tog-watchdefault": "Dodaj stranice i datoteke koje uređujem na moj spisak praćenih članaka",
        "tog-watchmoves": "Dodaj stranice i datoteke koje premjestim na moj spisak praćenih članaka",
        "tog-watchdeletion": "Dodaj stranice i datoteke koje izbrišem na moj spisak praćenih članaka",
        "tog-watchrollback": "Sve stranice za koje sam izvršio povrat izmjena stavi na spisak praćenja",
-       "tog-minordefault": "Označi sve izmjene malim isprva",
-       "tog-previewontop": "Prikaži pretpregled prije polja za izmjenu a ne poslije",
+       "tog-minordefault": "Označi sve izmjene manjim isprva",
+       "tog-previewontop": "Prikaži pregled iznad okvira za uređivanje",
        "tog-previewonfirst": "Prikaži izgled pri prvoj izmjeni",
-       "tog-enotifwatchlistpages": "Pošalji mi e-mail kada se promijeni stranica ili datoteka sa mog spiska praćenih članaka",
+       "tog-enotifwatchlistpages": "Pošalji mi e-poštu kada se promijeni stranica ili datoteka sa mog spiska praćenih članaka",
        "tog-enotifusertalkpages": "Pošalji mi e-poštu kad se promijeni moja korisnička stranica za razgovor",
        "tog-enotifminoredits": "Također mi pošalji e-poštu za male izmjene na stranicama i datotekama",
        "tog-enotifrevealaddr": "Otkrij adresu moje e-pošte u porukama obavještenja",
        "tog-shownumberswatching": "Prikaži broj korisnika koji prate",
        "tog-oldsig": "Postojeći potpis:",
        "tog-fancysig": "Smatraj potpis kao wikitekst (bez automatskog linka)",
-       "tog-uselivepreview": "Koristite pregled uživo",
+       "tog-uselivepreview": "Koristi pregled uživo",
        "tog-forceeditsummary": "Opomeni me pri unosu praznog sažetka",
        "tog-watchlisthideown": "Sakrij moje izmjene sa spiska praćenih članaka",
        "tog-watchlisthidebots": "Sakrij izmjene botova sa spiska praćenih članaka",
-       "tog-watchlisthideminor": "Sakrij zanemarljive izmjene sa spiska mojih praćenja",
-       "tog-watchlisthideliu": "Sakrij promjene prijavljenih korisnika sa liste praćenja",
-       "tog-watchlisthideanons": "Sakrij promjene anonimnih korisnika sa liste praćenja",
+       "tog-watchlisthideminor": "Sakrij manje izmjene sa spiska praćenih članaka",
+       "tog-watchlisthideliu": "Sakrij izmjene prijavljenih korisnika sa spiska praćenih članaka",
+       "tog-watchlisthideanons": "Sakrij izmjene anonimnih korisnika sa spiska praćenih članaka",
        "tog-watchlisthidepatrolled": "Sakrij patrolirane izmjene sa spiska praćenja",
        "tog-ccmeonemails": "Pošalji mi kopije e-pošte koju pošaljem drugim korisnicima",
-       "tog-diffonly": "Ne prikazuj sadržaj stranice ispod prikaza razlika",
+       "tog-diffonly": "Ne prikazuj sadržaj stranice ispod razlika",
        "tog-showhiddencats": "Prikaži skrivene kategorije",
-       "tog-norollbackdiff": "Nakon vraćanja zanemari prikaz razlika",
-       "tog-useeditwarning": "Upozori me kada napustim stranicu za izmjene bez spašenih promjena",
+       "tog-norollbackdiff": "Izostavi razliku nakon vraćanja",
+       "tog-useeditwarning": "Upozori me kad napuštam stranicu za izmjene bez sačuvanih promjena",
        "tog-prefershttps": "Uvijek koristi sigurnu konekciju kada sam prijavljen.",
        "underline-always": "Uvijek",
        "underline-never": "Nikad",
-       "underline-default": "Po standardu izgleda ili preglednika",
-       "editfont-style": "Stil slova područja uređivanja:",
+       "underline-default": "Prema predodređenim postavkama teme ili preglednika",
+       "editfont-style": "Stil fonta u okviru za uređivanje:",
        "editfont-default": "Po postavkama preglednika",
        "editfont-monospace": "Slova sa jednostrukim razmakom",
        "editfont-sansserif": "Beserifni font",
        "about": "O",
        "article": "Članak",
        "newwindow": "(otvara se u novom prozoru)",
-       "cancel": "Poništite",
+       "cancel": "Odustani",
        "moredotdotdot": "Više...",
        "morenotlisted": "Ovaj spisak nije potpun.",
-       "mypage": "Korisnička stranica",
+       "mypage": "Stranica",
        "mytalk": "Razgovor",
        "anontalk": "Razgovor za ovu IP adresu",
        "navigation": "Navigacija",
        "and": "&#32;i",
        "qbfind": "Pronađite",
-       "qbbrowse": "Prelistajte",
+       "qbbrowse": "Potraži",
        "qbedit": "Uredi",
        "qbpageoptions": "Opcije stranice",
        "qbmyoptions": "Moje opcije",
        "updatedmarker": "promjene od moje posljednje posjete",
        "printableversion": "Za štampanje",
        "permalink": "Trajni link",
-       "print": "Štampa",
+       "print": "Štampaj",
        "view": "Pogled",
        "view-foreign": "Vidi na $1",
        "edit": "Uredi",
        "undeletethispage": "Povrati ovu stranicu",
        "undelete_short": "Vrati obrisanih {{PLURAL:$1|$1 izmjenu|$1 izmjene|$1 izmjena}}",
        "viewdeleted_short": "Pogledaj {{PLURAL:$1|jednu obrisanu izmjenu|$1 obrisane izmjene|$1 obrisanih izmjena}}",
-       "protect": "Zaštitite",
+       "protect": "Zaštiti",
        "protect_change": "promijeni",
        "protectthispage": "Zaštitite ovu stranicu",
        "unprotect": "Promijeni zaštitu",
-       "unprotectthispage": "Promijeni zaštitu za ovu stranicu",
+       "unprotectthispage": "Promijeni zaštitu ove stranice",
        "newpage": "Nova stranica",
        "talkpage": "Razgovor o stranici",
        "talkpagelinktext": "Razgovor",
        "templatepage": "Pogledajte stranicu za šablone",
        "viewhelppage": "Pogledajte stranicu za pomoć",
        "categorypage": "Pogledaj stranicu kategorije",
-       "viewtalkpage": "Pogledaj raspravu",
-       "otherlanguages": "Na drugim jezicima",
+       "viewtalkpage": "Pogledaj razgovor",
+       "otherlanguages": "Drugi jezici",
        "redirectedfrom": "(Preusmjereno sa $1)",
-       "redirectpagesub": "Preusmjeri stranicu",
+       "redirectpagesub": "Preusmjerenje",
        "redirectto": "Preusmjerenje na:",
        "lastmodifiedat": "Ova stranica je posljednji put izmijenjena $2, $1",
        "viewcount": "Ovoj stranici je pristupljeno {{PLURAL:$1|$1 put|$1 puta}}.",
        "aboutpage": "Project:O_projektu_{{SITENAME}}",
        "copyright": "Sadržaj je dostupan pod licencom $1 osim ako je navedeno drugačije.",
        "copyrightpage": "{{ns:project}}:Autorska_prava",
-       "currentevents": "Trenutni događaji",
+       "currentevents": "Novosti",
        "currentevents-url": "Project:Novosti",
        "disclaimers": "Odricanje odgovornosti",
        "disclaimerpage": "Project:Uslovi korištenja, pravne napomene i odricanje odgovornosti",
        "mainpage": "Početna strana",
        "mainpage-description": "Početna strana",
        "policy-url": "Project:Pravila",
-       "portal": "Portal zajednice",
-       "portal-url": "Project:Portal zajednice",
+       "portal": "Vrata zajednice",
+       "portal-url": "Project:Vrata zajednice",
        "privacy": "Politika privatnosti",
        "privacypage": "Project:Pravila o anonimnosti",
        "badaccess": "Greška pri odobrenju",
        "nstab-template": "Šablon",
        "nstab-help": "Pomoć",
        "nstab-category": "Kategorija",
-       "nosuchaction": "Nema takve akcije",
+       "nosuchaction": "Ova radnja ne postoji",
        "nosuchactiontext": "Akcija navedena u URL-u nije valjana.\nMožda ste pogriješili pri unosu URL-a ili ste slijedili pokvaren link.\nMoguće je i da je ovo greška u {{SITENAME}} softveru.",
        "nosuchspecialpage": "Nema takve posebne stranice",
-       "nospecialpagetext": "<strong>Tražili ste nevaljanu posebnu stranicu.</strong>\n\nSpisak valjanih posebnih stranica se može naći na [[Special:SpecialPages|{{int:specialpages}}]].",
+       "nospecialpagetext": "<strong>Tražili ste neispravnu posebnu stranicu.</strong>\n\nSpisak ispravnih posebnih stranica se može naći na [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Greška",
-       "databaseerror": "Greška u bazi",
+       "databaseerror": "Greška u bazi podataka",
        "databaseerror-text": "Došlo je do greške u upitu baze podataka. \nMožda je u pitanju softverska greška.",
        "databaseerror-textcl": "Došlo je do greške u upitu baze podataka.",
        "databaseerror-query": "Upit: $1",
        "readonly_lag": "Baza podataka je zaključana dok se sekundarne baze podataka na serveru ne sastave sa glavnom.",
        "internalerror": "Unutrašnja greška",
        "internalerror_info": "Interna greška: $1",
+       "internalerror-fatal-exception": "Fatalna greška tipa \"$1\"",
        "filecopyerror": "Ne može se kopirati \"$1\" na \"$2\".",
        "filerenameerror": "Ne može se promjeniti ime datoteke \"$1\" u \"$2\".",
        "filedeleteerror": "Ne može se izbrisati datoteka \"$1\".",
        "title-invalid-interwiki": "Traženi naslov stranice sadrži interwiki link koji ne može biti korišten u naslovima.",
        "title-invalid-talk-namespace": "Vaš zatraženi naslov stranice se odnosi na stranicu za razgovor koja ne može postojati.",
        "title-invalid-characters": "Vaš zatraženi naslov stranice sadrži nevažeće znakove: \"$1\".",
+       "title-invalid-relative": "Naslov ima relativnu putanja. Relativni naslovi stranica (./, ../) nisu važeći jer će često biti nedostupni u pregledniku korisnika.",
+       "title-invalid-magic-tilde": "Zatraženi naslov stranice sadrži nevažeći slijed magičknog znaka tilda (<nowiki>~~~</nowiki>).",
+       "title-invalid-too-long": "Zatraženi naziv stranice je predugačak. Ne smije biti duži od {{PLURAL:$1|bajta|bajtova}} u UTF-8 kodiranju.",
        "title-invalid-leading-colon": "Zahtjevani naslov stranice sadrži nevažeću dvotačku na početku.",
        "perfcached": "Sljedeći podaci su keširani i možda neće biti u potpunosti ažurirani. Keš sadrži najviše {{PLURAL:$1|jedan rezultat|$1 rezultata}}.",
        "perfcachedts": "Sljedeći podaci nalaze se u memoriji i posljednji put ažurirani su $1. Keš sadrži najviše {{PLURAL:$4|jedan rezultat|$4 rezultata}}.",
        "querypage-no-updates": "Ažuriranje ove stranice je isključeno.\nPodaci koji se ovdje nalaze ne moraju biti aktuelni.",
-       "viewsource": "Pogledaj izvor",
+       "viewsource": "Prikaži izvor",
        "viewsource-title": "Prikaz izvora stranice $1",
        "actionthrottled": "Akcija je usporena",
        "actionthrottledtext": "Kao anti-spam mjera, ograničene su vam izmjene u određenom vremenu, i trenutačno ste dostigli to ograničenje. Pokušajte ponovo poslije nekoliko minuta.",
        "protectedpagetext": "Ova stranica je zaključana da bi se spriječile izmjene.",
-       "viewsourcetext": "Možete vidjeti i kopirati izvorni tekst ove stranice:",
+       "viewsourcetext": "Možete vidjeti i kopirati izvorni kôd ove stranice:",
        "viewyourtext": "Možete da pogledate i kopirate izvor '''vaših izmjena''' na ovoj stranici:",
        "protectedinterface": "Ova stranica sadrži tekst korisničkog okruženja za softver na ovom wikiju i zaštićena je radi sprečavanja zloupotrebe.\nDa biste dodali ili izmjenili prijevode svih wikija, posjetite [//translatewiki.net/  translatewiki.net], projekat za lokalizaciju Mediawikija.",
        "editinginterface": "<strong>Upozorenje:</strong> Mijenjate stranicu koja sadrži aktivan tekst programa.\nPromjene na ovoj stranici dovode i do promjena za druge korisnike ovog wikija.\nZa dodavanje ili promjene prijevoda za sve wikije, molimo Vas koristite [//translatewiki.net/ translatewiki.net], projekt prijevoda za MediaWiki.",
        "translateinterface": "Za dodavanje ili promjenu prijevoda za sve wikije koristite [//translatewiki.net/ translatewiki.net], projekt za lokalizaciju MediaWikija.",
-       "cascadeprotected": "Uređivanje ove stranice zabranjeno je jer sadrži {{PLURAL:$1|stranicu zaštićenu|stranice zaštićene}} od uređivanja iz razloga:\n$2",
+       "cascadeprotected": "Uređivanje ove stranice zabranjeno je jer se koristi u {{PLURAL:$1|sljedećoj stranici, koja je zaštićena|sljedećim stranicama, koje su zaštićene}} prenosivom zaštitom:\n$2",
        "namespaceprotected": "Vi nemate dozvulu da mijenjate stranicu '''$1'''.",
        "customcssprotected": "Nemate dozvolu za mijenjanje ove CSS stranice jer sadrži osobne postavke nekog drugog korisnika.",
        "customjsprotected": "Nemate dozvolu za mijenjanje ove JavaScript stranice jer sadrži osobne postavke nekog drugog korisnika.",
        "invalidtitle-unknownnamespace": "Neispravan naslov s imenskim prostorom br. $1 i tekstom \"$2\"",
        "exception-nologin": "Niste prijavljeni",
        "exception-nologin-text": "Prijavite se da biste pristupili ovoj stranici ili radnji.",
-       "exception-nologin-text-manual": "Molimo $1 da biste pristupili ovoj stranici ili radnji.",
+       "exception-nologin-text-manual": "Morate biti $1 da biste pristupili ovoj stranici ili radnji.",
        "virus-badscanner": "Loša konfiguracija: nepoznati anti-virus program: ''$1''",
        "virus-scanfailed": "skeniranje nije uspjelo (code $1)",
        "virus-unknownscanner": "nepoznati anti-virus program:",
        "userlogin-yourpassword": "Lozinka",
        "userlogin-yourpassword-ph": "Unesite Vašu lozinku",
        "createacct-yourpassword-ph": "Unesite lozinku",
-       "yourpasswordagain": "Ponovite šifru:",
+       "yourpasswordagain": "Ponovo upišite šifru:",
        "createacct-yourpasswordagain": "Potvrdite lozinku",
        "createacct-yourpasswordagain-ph": "Unesite lozinku opet",
-       "remembermypassword": "Zapamti moju šifru na ovom računaru (najviše $1 {{PLURAL:$1|dan|dana|dana}})",
+       "remembermypassword": "Zapamti moju šifru na ovom pregledniku (najduže $1 {{PLURAL:$1|dan|dana}})",
        "userlogin-remembermypassword": "Ostavi me prijavljenog/-u",
        "userlogin-signwithsecure": "Koristite sigurnu konekciju",
        "yourdomainname": "Vaš domen:",
        "password-change-forbidden": "Ne možete da promjenite lozinku na ovom wikiju.",
        "externaldberror": "Došlo je do greške pri vanjskoj autorizaciji baze podataka ili vam nije dopušteno osvježavanje Vašeg vanjskog korisničkog računa.",
-       "login": "Prijavi se",
+       "login": "Prijavi me",
        "nav-login-createaccount": "Prijavi se / Registruj se",
        "userlogin": "Prijavi se / Registruj se",
        "userloginnocreate": "Prijavi se",
        "userlogin-noaccount": "Nemate korisnički račun?",
        "userlogin-joinproject": "Pridružite se {{GRAMMAR:dativ|{{SITENAME}}}}",
        "nologin": "Nemate korisničko ime? $1.",
-       "nologinlink": "Napravite nalog",
+       "nologinlink": "Otvorite račun",
        "createaccount": "Napravi korisnički račun",
        "gotaccount": "Već imate korisnički račun? $1.",
-       "gotaccountlink": "Prijavi se",
+       "gotaccountlink": "Prijavite se",
        "userlogin-resetlink": "Zaboravili ste detalje vaše prijave?",
        "userlogin-resetpassword-link": "Zaboravili ste lozinku?",
        "userlogin-helplink2": "Pomoć pri prijavljivanju",
        "createacct-benefit-body2": "{{PLURAL:$1|stranica|stranice|stranica}}",
        "createacct-benefit-body3": "nedavnih {{PLURAL:$1|doprinosa}}",
        "badretype": "Šifre koje ste unijeli se ne poklapaju.",
-       "userexists": "Korisničko ime koje ste unijeli je već u upotrebi.\nMolimo Vas da izaberete drugo ime.",
+       "userexists": "Korisničko ime je već u upotrebi.\nIzaberite drugo.",
        "loginerror": "Greška pri prijavljivanju",
        "createacct-error": "Došlo je do greške pri otvaranju naloga",
        "createaccounterror": "Ne može se napraviti račun: $1",
-       "nocookiesnew": "Korisnički nalog je napravljen, ali niste prijavljeni. {{SITENAME}} koristi kolačiće (''cookies'') da bi se korisnici prijavili.  Vi ste onemogućili kolačiće na Vašem računaru. Molimo Vas da ih omogućite, a onda se prijavite sa svojim novim korisničkim imenom i šifrom.",
+       "nocookiesnew": "Korisnički nalog je napravljen, ali niste prijavljeni.\n{{SITENAME}} koristi kolačiće (cookies) da bi se korisnici prijavili.\nVi ste isključili kolačiće na Vašem računaru.\nMolimo Vas da ih uključite, a onda se prijavite sa svojim novim korisničkim imenom i šifrom.",
        "nocookieslogin": "{{SITENAME}} koristi kolačiće (''cookies'') da bi se korisnici prijavili.  Vi ste onemogućili kolačiće na Vašem kompjuteru.  Molimo Vas da ih omogućite i da pokušate ponovo sa prijavom.",
        "nocookiesfornew": "Korisnički račun nije napravljen, jer nismo mogli da potvrdimo njegov izvor.\nProvjerite da li su cookies omogućeni, ponovo učitajte ovu stranicu i pokušajte ponovo.",
        "noname": "Niste izabrali ispravno korisničko ime.",
        "nosuchusershort": "Ne postoji korisnik s imenom \"$1\".\nProvjerite jeste li dobro ukucali.",
        "nouserspecified": "Morate izabrati korisničko ime.",
        "login-userblocked": "Ovaj korisnik je blokiran. Prijava nije dopuštena.",
-       "wrongpassword": "Unijeli ste neispravnu šifru.\nMolimo Vas da pokušate ponovno.",
-       "wrongpasswordempty": "Šifra je bila prazna.\nMolimo Vas da pokušate ponovno.",
+       "wrongpassword": "Šifra koju ste unijeli je netačna.\nPokušate ponovno.",
+       "wrongpasswordempty": "Šifra koju ste unijeli je bila prazna.\nMolimo Vas da pokušate ponovno.",
        "passwordtooshort": "Šifra mora imati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}.",
+       "passwordtoolong": "Šifre ne mogu biti duže od {{PLURAL:$1|jednog znaka|$1 znaka|$1 znakova}}.",
        "password-name-match": "Vaša šifra mora biti različita od Vašeg korisničkog imena.",
        "password-login-forbidden": "Korištenje ovih korisničkih imena i šifara je zabranjeo.",
        "mailmypassword": "Poništi lozinku",
-       "passwordremindertitle": "Nova privremena šifra za {{SITENAME}}",
+       "passwordremindertitle": "{{SITENAME}} - privremena šifra",
        "passwordremindertext": "Neko (vjerovatno Vi, sa IP adrese $1) je zahtjevao da vam pošaljemo novu šifru za {{SITENAME}}  ($4). Privremena šifra za korisnika \"$2\" je napravljena i glasi \"$3\". Ako ste to željeli, sad treba da se prijavite i promjenite šifru.\nVaša privremena šifra će isteči za {{PLURAL:$5|$5 dan|$5 dana}}.\n\nAko je neko drugi napravio ovaj zahtjev ili ako ste se sjetili vaše šifre i ne želite više da je promjenite, možete da ignorišete ovu poruku i da nastavite koristeći vašu staru šifru.",
        "noemail": "Ne postoji adresa e-pošte za korisnika \"$1\".",
        "noemailcreate": "Morate da navedete validnu e-mail adresu",
-       "passwordsent": "Nova šifra je poslata na adresu e-pošte korisnika \"$1\".\nMolimo Vas da se prijavite pošto je primite.",
+       "passwordsent": "Nova šifra je poslata na adresu e-pošte korisnika \"$1\".\nMolimo Vas da se prijavite nakon što je primite.",
        "blocked-mailpassword": "Da bi se spriječila nedozvoljena akcija, Vašoj IP adresi je onemogućeno uređivanje stranica kao i mogućnost zahtijevanje nove šifre.",
-       "eauthentsent": "Na navedenu adresu poslana je e-poruka s potvrdom.\nPrije nego što pošaljemo daljnje poruke, pratite uputstva s e-pošte da biste potvrdili da je račun zaista Vaš.",
+       "eauthentsent": "Na navedenu adresu e-pošte poslana je poruka s potvrdom.\nPrije nego što pošaljemo daljnje poruke, pratite uputstva s e-pošte da biste potvrdili da je račun zaista Vaš.",
        "throttled-mailpassword": "Već Vam je poslan e-mail za promjenu šifre u {{PLURAL:$1|posljednjih sat vremena|posljednja $1 sata|posljednjih $1 sati}}.\nDa bi se spriječila zloupotreba, može se poslati samo jedan e-mail za promjenu šifre {{PLURAL:$1|svakih sat vremena|svaka $1 sata|svakih $1 sati}}.",
        "mailerror": "Greška pri slanju e-pošte: $1",
        "acct_creation_throttle_hit": "Posjetioci na ovoj wiki koji koriste Vašu IP adresu su već napravili {{PLURAL:$1|$1 račun|$1 računa}} u zadnjih nekoliko dana, što je najveći broj dopuštenih napravljenih računa za ovaj period.\nKao rezultat, posjetioci koji koriste ovu IP adresu ne mogu trenutno praviti više računa.",
        "changepassword-success": "Vaša šifra/lozinka je uspiješno promjenjena!",
        "changepassword-throttled": "Previše puta ste se pokušali prijaviti.\nMolimo Vas da sačekate $1 prije nego što pokušate ponovo.",
        "resetpass_forbidden": "Šifre ne mogu biti promjenjene",
-       "resetpass-no-info": "Morate biti prijavljeni da bi ste pristupili ovoj stranici direktno.",
+       "resetpass-no-info": "Morate biti prijavljeni da biste pristupili ovoj stranici direktno.",
        "resetpass-submit-loggedin": "Promijeni šifru",
        "resetpass-submit-cancel": "Odustani",
        "resetpass-wrong-oldpass": "Privremena ili trenutna šifra nije validna.\nMožda ste već uspješno promijenili Vašu šifru ili ste tražili novu privremenu šifru.",
        "hr_tip": "Horizontalna linija (koristite oskudno)",
        "summary": "Sažetak:",
        "subject": "Tema/naslov:",
-       "minoredit": "Ovo je mala izmjena",
+       "minoredit": "Ovo je manja izmjena",
        "watchthis": "Prati ovu stranicu",
        "savearticle": "Sačuvaj",
        "preview": "Pregled stranice",
        "missingsummary": "'''Napomena:''' Niste unijeli sažetak izmjene.\nAko kliknete na Sačuvaj, Vaša izmjena će biti sačuvana bez sažetka.",
        "selfredirect": "<strong>Upozorenje:</strong> Preusmjerili ste stranicu na samu sebe.\nMožda ste naveli pogrešan cilj preusmjeravanja ili ste uređivali pogrešnu stranicu.\nAko ponovno kliknete \"{{int:savearticle}}\", ipak će nastati preusmjerenje.",
        "missingcommenttext": "Molimo unesite komentar ispod.",
-       "missingcommentheader": "'''Podsjetnik:''' Niste napisali temu/naslov za ovaj komentar.\nAko ponovo kliknete na ''{{int:savearticle}}'', Vaše izmjene će biti spašene bez teme/naslova.",
+       "missingcommentheader": "<strong>Podsjetnik:</strong> Niste napisali temu/naslov za ovaj komentar.\nAko ponovo kliknete na \"{{int:savearticle}}\", vaša izmjena će biti sačuvana bez teme/naslova.",
        "summary-preview": "Pregled sažetka:",
        "subject-preview": "Pregled tema/naslova:",
        "previewerrortext": "Dogodila se greška prilikom prikazivanja vaših izmjena.",
        "blockedtext": "'''Vaše korisničko ime ili IP-adresa je blokirana.'''\n\nBlokada izvršena od strane $1.\nDati razlog je sljedeći: ''$2''.\n\n*Početak blokade: $8\n*Kraj perioda blokade: $6\n*Ime blokiranog korisnika: $7\n\nMožete kontaktirati sa $1 ili nekim drugim [[{{MediaWiki:Grouppage-sysop}}|administratorom]] da biste razgovarali o blokadi.\n\nNe možete koristiti opciju ''Pošalji e-mail korisniku'' osim ako niste unijeli e-mail adresu u [[Special:Preferences|Vaše postavke]].\nVaša trenutna IP-adresa je $3, a oznaka blokade je #$5.\nMolimo Vas da navedete gornje podatke pri zahtjevu za deblokadu.",
        "autoblockedtext": "Vaša IP-adresa automatski je blokirana jer ju je koristio drugi korisnik, a blokirao ju je $1.\nNaveden je sljedeći razlog:\n\n:''$2''\n\n* Početak blokade: $8\n* Kraj blokade: $6\n* Blokirani korisnik: $7\n\nMožete kontaktirati sa $1 ili nekim drugim iz grupe [[{{MediaWiki:Grouppage-sysop}}|administratora]] i zahtijevati da Vas deblokira.\n\nZapamtite da ne možete koristiti opciju \"pošalji e-mail ovom korisniku\" sve dok ne unesete validnu e-mail adresu pri registraciji u Vašim [[Special:Preferences|korisničkim postavkama]] i dok niste spriječeni (blokadom) da je koristite.\n\nVaša trenutna IP-adresa je $3, a ID blokade je $5.\nMolimo da navedete sve gore navedene detalje u zahtjevu za deblokadu.",
        "blockednoreason": "razlog nije naveden",
-       "whitelistedittext": "Da bi ste uređivali stranice, morate se $1.",
+       "whitelistedittext": "Morate biti $1 da biste uređivali stranice.",
        "confirmedittext": "Morate potvrditi Vašu e-mail adresu prije nego počnete mijenjati stranice.\nMolimo da postavite i verifikujete Vašu e-mail adresu putem Vaših [[Special:Preferences|korisničkih opcija]].",
        "nosuchsectiontitle": "Ne mogu pronaći sekciju",
        "nosuchsectiontext": "Pokušali ste uređivati sekciju koja ne postoji.\nMožda je premještena ili obrisana dok ste pregledavali stranicu.",
-       "loginreqtitle": "Potrebno je prijavljivanje",
-       "loginreqlink": "prijavi se",
-       "loginreqpagetext": "Morate $1 da bi ste vidjeli druge strane.",
+       "loginreqtitle": "Potrebna je prijava",
+       "loginreqlink": "prijavljeni",
+       "loginreqpagetext": "Morate biti $1 da biste vidjeli druge stranice.",
        "accmailtitle": "Šifra poslana.",
        "accmailtext": "Nasumično odabrana šifra za [[User talk:$1|$1]] je poslata na adresu $2.\n\nŠifra/lozinka za ovaj novi račun može biti promijenjena na stranici ''[[Special:ChangePassword|izmjene šifre]]'' nakon prijave.",
        "newarticle": "(Novi)",
        "userinvalidcssjstitle": "'''Upozorenje:''' Ne postoji interfejs pod imenom \"$1\".\nNe zaboravite da imena stranica s .css i .js kodom počinju malim slovom, npr, {{ns:user}}:Foo/vector.css, a ne {{ns:user}}:Foo/Vector.css.",
        "updated": "(Osvježeno)",
        "note": "'''Pažnja:'''",
-       "previewnote": "'''Ne zaboravite da je ovo samo pregled'''\nIzmjene stranice nisu još sačuvane!",
+       "previewnote": "<strong>Ne zaboravite da je ovo samo pregled.</strong>\nVaše izmjene još nisu sačuvane!",
        "continue-editing": "Idi na područje uređivanja",
        "previewconflict": "Ovaj pregled prikazuje kako će tekst u gornjem polju\nizgledati ako kliknete \"Sačuvaj članak\".",
        "session_fail_preview": "'''Izvinjavamo se! Nismo mogli obraditi vašu izmjenu zbog gubitka podataka o prijavi. Molimo pokušajte ponovno. Ako i dalje ne bude radilo, pokušajte se [[Special:UserLogout|odjaviti]] i ponovno prijaviti.'''",
        "yourdiff": "Razlike",
        "copyrightwarning": "Za sve priloge poslane na projekt {{SITENAME}} smatramo da su objavljeni pod $2 (konsultirajte $1 za detalje).\nAko ne želite da vaši članci budu podložni izmjenama i slobodnoj distribuciji i objavljivanju,\nnemojte ih slati ovdje. Također, slanje članka podrazumijeva i Vašu izjavu da ste ga napisali sami ili da ste ga kopirali iz izvora u javnom domenu ili sličnog slobodnog izvora.\n\n'''NEMOJTE SLATI RAD ZAŠTIĆEN AUTORSKIM PRAVIMA BEZ DOZVOLE AUTORA!'''",
        "copyrightwarning2": "Zapamtite da svi doprinosi na stranici {{SITENAME}} može biti izmijenjen, promijenjen ili uklonjen od strane ostalih korisnika. Ako ne želite da ovo desi sa Vašim tekstom, onda ga nemojte slati ovdje.<br />\nTakođer nam garantujete da ste ovo Vi napisali, ili da ste ga kopirali iz javne domene ili sličnog slobodnog izvora informacija (pogledajte $1 za više detalja).\n'''NE ŠALJITE AUTORSKIM PRAVOM ZAŠTIĆENE TEKSTOVE BEZ DOZVOLE!'''",
+       "editpage-cannot-use-custom-model": "Model sadržaja ove stranice se ne može promijeniti.",
        "longpageerror": "'''Greška: Tekst, koji ste poslali, je dug {{PLURAL:$1|jedan kilobajt|$1 kilobajta}}, što je veće od maksimuma, koji iznosi {{PLURAL:$2|jedan kilobajt|$2 kilobajta}}.'''\nStranica ne može biti sačuvana.",
        "readonlywarning": "'''PAŽNJA: Baza je zaključana zbog održavanja, tako da nećete moći da sačuvate svoje izmjene za sada.'''\nMožda želite da kopirate i nalijepite tekst u tekst editor i sačuvate ga za kasnije.\n\nAdministrator koji je zaključao bazu je naveo slijedeće objašnjenje: $1",
        "protectedpagewarning": "'''PAŽNJA: Ova stranica je zaključana tako da samo korisnici sa administratorskim privilegijama mogu da je mijenjaju.'''\nPosljednja stavka u zapisniku je prikazana ispod kao referenca:",
        "semiprotectedpagewarning": "'''Pažnja:''' Ova stranica je zaključana tako da je samo registrovani korisnici mogu uređivati.\nPosljednja stavka zapisnika je prikazana ispod kao referenca:",
-       "cascadeprotectedwarning": "'''Upozorenje:''' Ova stranica je zaključana tako da je samo administratori mogu mijenjati, jer je ona uključena u {{PLURAL:$1|ovu, lančanu povezanu, zaštićenu stranicu|sljedeće, lančano povezane, zaštićene stranice}}:",
+       "cascadeprotectedwarning": "<strong>Upozorenje:</strong> Ova stranica je zaključana tako da je samo administratori mogu mijenjati, jer je ona uključena u {{PLURAL:$1|ovu, lančanu povezanu, zaštićenu stranicu|sljedeće, prenosivo povezane, zaštićene stranice}}:",
        "titleprotectedwarning": "'''UPOZORENJE: Ova stranica je zaključana tako da su potrebna [[Special:ListGroupRights|posebna prava]] da se ona napravi.'''\nPosljednja stavka zapisnika je prikazana ispod kao referenca:",
        "templatesused": "{{PLURAL:$1|Šablon|Šabloni}} koji su upotrebljeni na ovoj stranici:",
        "templatesusedpreview": "{{PLURAL:$1|Šablon|Šabloni}} prikazani u ovom pregledu:",
        "parser-unstrip-loop-warning": "Pronađena petlja",
        "parser-unstrip-recursion-limit": "Prekoračeno ograničenje rekurzije ($1)",
        "converter-manual-rule-error": "Pronađena je greška u pravilu za ručno pretvaranje jezika",
-       "undo-success": "Izmjena se može vratiti.\nMolimo da provjerite usporedbu ispod da budete sigurni da to želite učiniti, a zatim spremite promjene da bi ste završili vraćanje izmjene.",
-       "undo-failure": "Izmjene se ne mogu vratiti zbog konflikta sa izmjenama u međuvremenu.",
+       "undo-success": "Izmjena se može vratiti.\nMolimo da provjerite usporedbu ispod da budete sigurni da ovo želite uraditi, a zatim sačuvajte promjene da bi ste završili vraćanje izmjene.",
+       "undo-failure": "Izmjena se ne može vratiti zbog sukoba izmjena.",
        "undo-norev": "Izmjena se ne može vratiti jer ne postoji ranija ili je obrisana.",
        "undo-nochange": "Izgleda da je izmjena već vraćena.",
-       "undo-summary": "Vraćena izmjena $1 [[Special:Contributions/$2|korisnika $2]] ([[User talk:$2|razgovor]])",
+       "undo-summary": "Vraćena izmjena $1 {{GENDER:$2|korisnika|korisnice}} [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]])",
        "undo-summary-username-hidden": "Poništi izmjenu $1 od skrivenog korisnika",
        "cantcreateaccounttitle": "Nije moguće napraviti korisnički račun",
        "cantcreateaccount-text": "Pravljenje korisničkog računa sa ove IP adrese ('''$1''') je blokirano od strane [[User:$3|$3]].\n\nRazlog koji je naveo $3 je ''$2''",
        "cantcreateaccount-range-text": "Pravljenje računa sa IP adresa u rasponu '''$1''', koji uključuje i vašu IP adresu ('''$4'''), je blokirao korisnik [[User:$3|$3]].\n\nNavedeni razlog korisnika $3 je ''$2''",
-       "viewpagelogs": "Pogledaj protokol ove stranice",
+       "viewpagelogs": "Pogledaj zapisnike ove stranice",
        "nohistory": "Ne postoji historija izmjena za ovu stranicu.",
        "currentrev": "Trenutna revizija",
        "currentrev-asof": "Trenutna revizija na dan $1",
        "revisionasof": "Revizija od $1",
        "revision-info": "Izmjena od $1 od {{GENDER:$6|$2}}$7",
-       "previousrevision": "←Starije izmjene",
+       "previousrevision": "← Starija izmjena",
        "nextrevision": "Novija izmjena →",
        "currentrevisionlink": "Trenutna verzija",
        "cur": "tren",
        "rev-showdeleted": "Pokaži",
        "revisiondelete": "Obriši/vrati revizije",
        "revdelete-nooldid-title": "Nije unesena tačna revizija",
-       "revdelete-nooldid-text": "Niste precizno odredili odredišnu reviziju/revizije da se izvrši ova funkcija, ili ta revizija nepostoji, ili pokušavate sakriti trenutnu reviziju.",
+       "revdelete-nooldid-text": "Niste odredili odredišnu verziju da se izvrši ova funkcija, ili ta verzija ne postoji, ili pokušavate sakriti trenutnu verziju.",
        "revdelete-no-file": "Navedena datoteka ne postoji.",
        "revdelete-show-file-confirm": "Da li ste sigurni da želite pogledati obrisanu reviziju datoteke \"<nowiki>$1</nowiki>\" od $2 u $3?",
        "revdelete-show-file-submit": "Da",
        "lineno": "Linija $1:",
        "compareselectedversions": "Uporedite označene verzije",
        "showhideselectedversions": "Pokaži/sakrij odabrane verzije",
-       "editundo": "ukloni ovu izmjenu",
+       "editundo": "vrati",
        "diff-empty": "(Nema razlike)",
        "diff-multi-sameuser": "({{PLURAL:$1|Nije prikazana jedna međurevizija|Nisu prikazane $1 međurevizije}} istog korisnika)",
+       "diff-multi-otherusers": "(Nije prikazana {{PLURAL:$1|jedna međuverzija|$1 međuverzija}} {{PLURAL:$2|drugog korisnika|$2 korisnika}})",
        "diff-multi-manyusers": "({{PLURAL:$1|Jedna međurevizija|$1 međurevizije|$1 međurevizija}} od više od $2 {{PLURAL:$2|korisnika|korisnika}} {{PLURAL:$1|nije prikazana|nisu prikazane}})",
        "difference-missing-revision": "{{PLURAL:$2|Jedna izmjena|$2 izmjene}} od ove razlike ($1) ne {{PLURAL:$2|postoji|postoje}}.\n\nOvo se obično dešava kada pratite zastarjelu vezu na stranice koja je obrisana.\nViše informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokol brisanja].",
        "searchresults": "Rezultati pretrage",
        "searchresults-title": "Rezultati pretrage za \"$1\"",
        "titlematches": "Naslov članka odgovara",
        "textmatches": "Tekst stranice odgovara",
-       "notextmatches": "Tekst članka ne odgovara",
+       "notextmatches": "Nijedan tekst stranice ne odgovara",
        "prevn": "{{PLURAL:$1|prethodni $1|prethodnih $1}}",
        "nextn": "{{PLURAL:$1|sljedeći $1|sljedećih $1}}",
        "prev-page": "prethodna stranica",
        "prevn-title": "{{PLURAL:$1|Prethodni $1 rezultat|Prethodna $1 rezultata|Prethodnih $1 rezultata}}",
        "nextn-title": "{{PLURAL:$1|Sljedeći $1 rezultat|Sljedeća $1 rezultata|Sljedećih $1 rezultata}}",
        "shown-title": "Pokaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici",
-       "viewprevnext": "Pogledaj ($1 {{int:pipe-separator}} $2) ($3).",
+       "viewprevnext": "Pogledaj ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''Postoji stranica pod nazivom \"[[:$1]]\" na ovoj wiki'''",
        "searchmenu-new": "<strong>Napravi stranicu \"[[:$1]]\" na ovoj wiki!</strong> {{PLURAL:$2|0=|Pogledajte također straniu pronađenu vašom pretragom.|Pogledajte također i vaše rezultate pretrage.}}",
        "searchprofile-articles": "Stranice sadržaja",
        "preferences": "Postavke",
        "mypreferences": "Postavke",
        "prefs-edits": "Broj izmjena:",
-       "prefs-skin": "Koža",
+       "prefsnologintext2": "Prijavite se da biste sačuvali postavke.",
+       "prefs-skin": "Tema",
        "skin-preview": "Pregled",
        "datedefault": "Nije bitno",
        "prefs-labs": "Eksperimentalne mogućnosti",
        "prefs-editwatchlist-raw": "Napredno uređivanje spiska praćenja",
        "prefs-editwatchlist-clear": "Očisti spisak praćenja",
        "prefs-watchlist-days": "Broj dana za prikaz u spisku praćenja:",
-       "prefs-watchlist-days-max": "Maximum $1 {{PLURAL:$1|dan|dana}}",
+       "prefs-watchlist-days-max": "Najviše $1 {{PLURAL:$1|dan|dana}}",
        "prefs-watchlist-edits": "Najveći broj izmjena za prikaz u proširenom spisku praćenja:",
        "prefs-watchlist-edits-max": "Najveći broj: 1000",
-       "prefs-watchlist-token": "Token spiska za praćenje:",
+       "prefs-watchlist-token": "Žeton praćenih članaka:",
        "prefs-misc": "Ostala podešavanja",
        "prefs-resetpass": "Promijeni šifru",
-       "prefs-changeemail": "Promijeni e-mail adresu",
+       "prefs-changeemail": "Promijeni adresu e-pošte",
        "prefs-setemail": "Postavite e-mail adresu",
-       "prefs-email": "E-mail opcije",
+       "prefs-email": "Opcije e-pošte",
        "prefs-rendering": "Izgled",
        "saveprefs": "Sačuvaj",
-       "restoreprefs": "Vrati sve pretpostavljene postavke (u svim sekcijama)",
+       "restoreprefs": "Vrati sve postavke na podrazumijevane (u svim odjeljcima)",
        "prefs-editing": "Uređivanje",
-       "rows": "Redova",
-       "columns": "Kolona",
+       "rows": "Redova:",
+       "columns": "Kolona:",
        "searchresultshead": "Podešavanja rezultata pretrage",
        "stub-threshold": "Formatiranje <a href=\"#\" class=\"stub\">linkova stranica u začetku</a> (bajtova):",
-       "stub-threshold-disabled": "Isključen/a",
+       "stub-threshold-disabled": "Isključeno",
        "recentchangesdays": "Broj dana za prikaz u nedavnim izmjenama:",
-       "recentchangesdays-max": "(najviše $1 {{PLURAL:$1|dan|dana}})",
-       "recentchangescount": "Broj uređivanja za prikaz po pretpostavkama:",
-       "prefs-help-recentchangescount": "Ovo uključuje nedavne izmjene, historije stranice i zapise.",
+       "recentchangesdays-max": "Najviše $1 {{PLURAL:$1|dan|dana}}",
+       "recentchangescount": "Broj izmjena na nedavnim izmjenama:",
+       "prefs-help-recentchangescount": "Ovo uključuje nedavne izmjene, historije stranice i zapisnike.",
        "prefs-help-watchlist-token2": "Ovo je tajni ključ sažetka vašeg spiska izmjena. Ko god da ga zna, moći će ga čitati. Ne dijelite ga ni s kim. Ako je potrebno, [[Special:ResetTokens|možete ga ponovo postaviti]].",
        "savedprefs": "Vaše postavke su sačuvane.",
        "timezonelegend": "Vremenska zona:",
        "prefs-files": "Datoteke",
        "prefs-custom-css": "Prilagođeni CSS",
        "prefs-custom-js": "Prilagođeni JavaScript",
-       "prefs-common-css-js": "Dijeljeni CSS/JS za sve kože:",
+       "prefs-common-css-js": "Dijeljeni CSS/JavaScript za sve teme:",
        "prefs-reset-intro": "Možete koristiti ovu stranicu da poništite Vaše postavke na ovom sajtu na pretpostavljene vrijednosti.\nOvo se ne može vratiti unazad.",
-       "prefs-emailconfirm-label": "E-mail potvrda:",
-       "youremail": "E-mail:",
+       "prefs-emailconfirm-label": "Potvrda e-pošte:",
+       "youremail": "Adresa e-pošte:",
        "username": "{{GENDER:$1|Korisničko}} ime:",
        "prefs-memberingroups": "{{GENDER:$2|Korisnik|Korisnica}} je član {{PLURAL:$1|grupe|grupâ}}:",
        "prefs-registration": "Vrijeme registracije:",
        "yourlanguage": "Jezik:",
        "yourvariant": "Varijanta jezika:",
        "prefs-help-variant": "Vaša preferirana varijanta ili pravopis za prikaz sadržaja stranica na ovoj wiki.",
-       "yournick": "Nadimak (za potpise):",
+       "yournick": "Novi potpis:",
        "prefs-help-signature": "Komentari na stranicama za razgovor trebaju biti potpisani sa \"<nowiki>~~~~</nowiki>\" koje će biti pretvoreno u vaš potpis i vrijeme.",
        "badsig": "Loš sirovi potpis.\nProvjerite HTML tagove.",
        "badsiglength": "Vaš potpis je predug.\nMora biti manji od $1 {{PLURAL:$1|znaka|znaka|znakova}}.",
        "yourgender": "Kako želite da se predstavite?",
-       "gender-unknown": "Ne previše detaljno",
+       "gender-unknown": "Kad vas spominje, softver će pokušati koristiti srednji rod kad god je to moguće",
        "gender-male": "On uređuje wiki stranice",
        "gender-female": "Ona uređuje wiki stranice",
-       "prefs-help-gender": "Postavljanje ovih podešavanja je optionalno: Softver koristi ove vrijednosti za vaše naslovljanje i ispravke gramatičkog roda u porukama softvera. Ova informacija bit će javna.",
+       "prefs-help-gender": "Postavljanje ovih podešavanja nije obavezno.\nSoftver koristi ove vrijednosti za vaše naslovljanje i ispravke gramatičkog roda u porukama softvera. Ova će informacija biti javna.",
        "email": "E-mail",
        "prefs-help-realname": "Pravo ime nije obavezno.\nAko izaberete da date ime, biće korišteno za pripisivanje vašem radu.",
-       "prefs-help-email": "E-mail adresa je opcionalna, ali je potrebna jer omogućava da Vam se pošalje nova šifra u slučaju da je izgubite ili zaboravite.",
-       "prefs-help-email-others": "Također možete da odaberete da vas drugi kontaktiraju putem vaše korisničke stranice ili stranice za razgovor bez otkrivanja vašeg identiteta.",
+       "prefs-help-email": "Adresa e-pošte nije obavezna, ali je potrebna u slučaju ponovnog postavljanja šifre, ako je zaboravite.",
+       "prefs-help-email-others": "Također možete dopustiti drugim korisnicima da vas kontaktiraju preko linka na lijevoj strani vaše stranice ili stranice za razgovor.\nVaša adresa e-pošte neće biti prikazana drugim korisnicima koji vas kontaktiraju.",
        "prefs-help-email-required": "Neophodno je navesti e-mail adresu.",
        "prefs-info": "Osnovne informacije",
        "prefs-i18n": "Internacionalizacija",
        "prefs-dateformat": "Format datuma",
        "prefs-timeoffset": "Vremenska razlika",
        "prefs-advancedediting": "Opće opcije",
-       "prefs-editor": "Urednik",
-       "prefs-preview": "Prethodni pregled",
+       "prefs-editor": "Uređivač",
+       "prefs-preview": "Pregled",
        "prefs-advancedrc": "Napredne opcije",
        "prefs-advancedrendering": "Napredne opcije",
        "prefs-advancedsearchoptions": "Napredne opcije",
        "prefs-diffs": "Razlike",
        "prefs-help-prefershttps": "Ova podešavanja će stupiti na snagu pri sljedećoj prijavi.",
        "prefswarning-warning": "Napravili ste promjene u vašim postavkama koje još uvijek nisu sačuvane. Ako napustite ovu stranicu bez da pritisnete na \"$1\", postavke neće biti ažurirane.",
+       "prefs-tabs-navigation-hint": "Savjet: Možete koristiti tipke sa lijevom i desnom strelicom za kretanje kroz kartice.",
        "email-address-validity-valid": "Izgleda valjano",
        "email-address-validity-invalid": "Neophodna valjana adresa!",
        "userrights": "Postavke korisničkih prava",
        "userrights-lookup-user": "Menadžment korisničkih grupa",
-       "userrights-user-editname": "Unesi korisničko ime:",
+       "userrights-user-editname": "Upišite korisničko ime:",
        "editusergroup": "Uredi korisničke grupe",
        "editinguser": "Mijenjate korisnička prava korisnika <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Uredi korisničke grupe",
        "right-protect": "Promjena nivoa zaštite i uređivanje kaskadno zaštićenih stranica",
        "right-editprotected": "Uređivanje stranice zaštićenih kao \"{{int:protect-level-sysop}}\"",
        "right-editsemiprotected": "Uređivanje stranica zaštićenih kao  \"{{int:protect-level-autoconfirmed}}\"",
+       "right-editcontentmodel": "Uređivanje modela sadržaja stranice",
        "right-editinterface": "Uređivanje korisničkog interfejsa",
        "right-editusercssjs": "Uređivanje CSS i JS datoteka drugih korisnika",
        "right-editusercss": "Uređivanje CSS datoteka drugih korisnika",
        "right-passwordreset": "Pogledaj e-mailove za obnavljanje šifre",
        "right-managechangetags": "Napravi i briši [[Special:Tags|oznake]] iz baze podataka",
        "right-applychangetags": "Primijeni [[Special:Tags|oznake]] na nečije izmjene",
+       "right-changetags": "Dodavanje ili uklanjanje raznih [[Special:Tags|oznaka]] na pojedinačnim verzijama i unosima zapisnika",
        "newuserlogpage": "Zapisnik novih korisnika",
        "newuserlogpagetext": "Ovo je zapis o registraciji novih korisnika.",
        "rightslog": "Zapisnik korisničkih prava",
        "action-viewmywatchlist": "pogledajte svoj spisak praćenih stranica",
        "action-viewmyprivateinfo": "pogledajte svoje privatne informacije",
        "action-editmyprivateinfo": "uredite svoje privatne podatke",
+       "action-editcontentmodel": "uredi model sadržaja stranice",
        "action-managechangetags": "napravite i uklonite oznake iz baze podataka",
+       "action-applychangetags": "dodate oznake uz vaše izmjene",
+       "action-changetags": "dodate ili uklonite razne oznake na pojedinačnim verzijama i unosima u zapisnicima",
        "nchanges": "$1 {{PLURAL:$1|promjena|promjene|promjena}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|izmjena od Vaše posljedne posjete}}",
        "enhancedrc-history": "historija",
        "rc_categories": "Ograniči na kategorije (razdvojene sa \"|\")",
        "rc_categories_any": "Sve",
        "rc-change-size-new": "$1 {{PLURAL:$1|bajt|bajta|bajtova}} poslije izmjene",
-       "newsectionsummary": "/* $1 */ nova sekcija",
+       "newsectionsummary": "/* $1 */ novi odjeljak",
        "rc-enhanced-expand": "Pokaži detalje",
        "rc-enhanced-hide": "Sakrij detalje",
        "rc-old-title": "prvobitno kreirano kao \"$1\"",
        "reuploaddesc": "Vratite se na upitnik za slanje.",
        "upload-tryagain": "Pošaljite izmijenjeni opis datoteke",
        "uploadnologin": "Niste prijavljeni",
-       "uploadnologintext": "Morate biti $1 da bi ste slali datoteke.",
+       "uploadnologintext": "Morate biti $1 kako biste postavljali datoteke.",
        "upload_directory_missing": "Folder za postavljanje ($1) nedostaje i webserver ga ne može napraviti.",
        "upload_directory_read_only": "Folder za postavljanje ($1) na webserveru je postavljen samo za čitanje.",
        "uploaderror": "Greška pri slanju",
        "tmp-create-error": "Nije moguće napraviti privremenu datoteku.",
        "tmp-write-error": "Greška pri pisanju privremene datoteke.",
        "large-file": "Preporučeno je da datoteke nisu veće od $1;\nOva datoteka je velika $2.",
-       "largefileserver": "Ova datoteka je veća nego što server dopušta.",
+       "largefileserver": "Ova datoteka je veća nego što je dozvoljeno u postavkama servera.",
        "emptyfile": "Datoteka koju ste poslali je prazna. Ovo je moguće zbog greške u imenu datoteke. Molimo Vas da provjerite da li stvarno želite da pošaljete ovu datoteku.",
        "windows-nonascii-filename": "Ova wiki ne podržava imena datoteka sa posebnim znacima.",
        "fileexists": "Datoteka sa ovim imenom već postoji, molimo Vas provjerite <strong>[[:$1]]</strong> ako {{GENDER:|niste}} sigurni da je želite promjeniti.\n[[$1|thumb]]",
        "fileexists-shared-forbidden": "Datoteka s ovim imenom već postoji u zajedničkoj ostavi. Molimo Vas da se vratite i pošaljete ovu datoteku pod novim imenom. [[File:$1|thumb|center|$1]]",
        "file-exists-duplicate": "Ova datoteka je dvojnik {{PLURAL:$1|slijedećoj datoteci|slijedećim datotekama}}:",
        "file-deleted-duplicate": "Datoteka koje je identična ovoj datoteci ([[:$1]]) je ranije bila obrisana. Trebate provjeriti historiju brisanja te datoteke prije nego što nastavite sa njenim ponovnim postavljanjem.",
-       "uploadwarning": "Upozorenje pri slanju",
+       "file-deleted-duplicate-notitle": "Datoteka identična ovoj prethodno je obrisana i ime joj je sakriveno.\nTrebali biste pitati nekog ko može vidjeti podatke skrivenih datoteka da pregleda situaciju prije nego što ponovo postavite datoteku.",
+       "uploadwarning": "Upozorenje pri postavljanju",
        "uploadwarning-text": "Molimo izmijeniti opis datoteke ispod i pokušajte kasnije.",
        "savefile": "Sačuvaj datoteku",
        "uploaddisabled": "Slanje fajlova je isključeno",
        "uploaddisabledtext": "Postavljanje datoteka je onemogućeno.",
        "php-uploaddisabledtext": "Postavljanje datoteka preko PHP je onemogućeno. Molimo provjerite postavku file_uploads.",
        "uploadscripted": "Ova datoteka sadrži HTML ili skriptni kod koji može izazvati grešku kod internet preglednika.",
+       "upload-scripted-pi-callback": "Datoteka koja sadrži instrukcije za obradu XML stilskog oblika se ne može postaviti.",
+       "uploaded-script-svg": "Pronađen skriptni element \"$1\" u postavljenoj SVG datoteci.",
+       "uploaded-hostile-svg": "Pronađen nesiguran CSS u stilskom elementu postavljene SVG datoteke.",
+       "uploaded-event-handler-on-svg": "Nije dozvoljeno postavljanje atributa koji kontroliraju događaje <code>$1=\"$2\"</code> u SVG datotekama.",
+       "uploaded-href-attribute-svg": "href atributi <code>&lt;$1 $2=\"$3\"&gt;</code> sa nelokalnom metom (npr. http://, javascript:, etc) nisu dozvoljeni u SVG datotekama.",
+       "uploaded-href-unsafe-target-svg": "Pronađen href sa nesigurnom metom <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
+       "uploaded-animate-svg": "Pronađena \"animate\" oznaka koja možda mijenja href koristeći se \"from\" atributom <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
+       "uploaded-setting-event-handler-svg": "Postavljanje kontrole događaja je blokirano, pronađeno <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
+       "uploaded-setting-href-svg": "Blokirano je korištenje \"set\" oznake kako bi se dodao \"href\" atribut glavnom elementu.",
+       "uploaded-wrong-setting-svg": "Blokirano je korištenje oznake \"set\" kako bi se dodao atribut udaljenoj/podatkovnoj/skriptnoj meti. Pronađeno <code>&lt;set to=\"$1\"&gt;</code> u postavljenoj SVG datoteci.",
+       "uploaded-setting-handler-svg": "SVG datoteka koja koristi atribut \"handler\" sa udaljenom/podatkovnoj/skriptnom vrijednosti je blokirana. Pronađeno <code>$1=\"$2\"</code> u postavljenoj SVG datoteci.",
+       "uploaded-remote-url-svg": "SVG datoteka koja postavlja stilski atribut koristeći se vanjskim linkom je blokiranja. Pronađeno <code>$1=\"$2\"</code> u postavljenoj SVG datoteci.",
+       "uploaded-image-filter-svg": "Pronađen slikovni filter sa URLom: <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
+       "uploadscriptednamespace": "Ova SVG datoteka sadrži pogrešan imenski prostor \"$1\".",
+       "uploadinvalidxml": "Nije moguće raščlaniti XML postavljene datoteke.",
        "uploadvirus": "Datoteka sadrži virus!  Detalji:  $1",
        "uploadjava": "Datoteka je ZIP datoteka koja sadrži Java .class datoteku.\nPostavljanje Java datoteka nije dopušteno, jer one mogu prouzrokovati da se zaobiđu sigurnosne zabrane.",
        "upload-source": "Izvorna datoteka",
        "backend-fail-notsame": "Već postoji različita datoteka $1.",
        "backend-fail-invalidpath": "$1 nije valjana putanja za skladištenje.",
        "backend-fail-delete": "Ne može se izbrisati datoteka $1.",
+       "backend-fail-describe": "Ne mogu promijeniti metapodatke za datoteku \"$1\".",
        "backend-fail-alreadyexists": "Datoteka $1 već postoji.",
        "backend-fail-store": "Ne može se spremiti datoteka $1 na $2.",
        "backend-fail-copy": "Nije uspjelo kopiranje datoteke \"$1\" u \"$2\".",
        "backend-fail-closetemp": "Ne mogu zatvoriti privremenu datoteku.",
        "backend-fail-read": "Ne mogu čitati datoteku $1.",
        "backend-fail-create": "Ne mogu napraviti datoteku $1.",
+       "backend-fail-maxsize": "Ne mogu zapisati datoteku \"$1\" jer je veća od {{PLURAL:$2|$2 bajta|$2 bajta|$2 bajtova}}.",
        "backend-fail-readonly": "Skladišna osnova \"$1\" je trenutno samo za čitanje. Navedeni razlog je: \"$2\"",
        "backend-fail-synced": "Datoteka \"$1\" je u nekonzistentnom stanju u internom skladištu",
        "backend-fail-connect": "Ne mogu se povezati sa pozadinskim spremištem \"$1\".",
        "backend-fail-internal": "Došlo je do nepoznate greške u skladišnoj osnovi \"$1\".",
        "backend-fail-contenttype": "Ne mogu da utvrdim kakav sadržaj ima datoteka koju treba da smjestim u \"$1\".",
        "backend-fail-batchsize": "Skladišna osnova je dobila blokadu od $1 {{PLURAL:$1|datotečne operacije|datotečne operacije|datotečnih operacija}}; ograničenje je $2 {{PLURAL:$2|operacija|operacije|operacija}}.",
+       "backend-fail-usable": "Ne mogu pročitati ili zapisati datoteku \"$1\" jer nemate odgovarajuća prava ili folderi/sadržioci ne postoje.",
+       "filejournal-fail-dbconnect": "Ne mogu se povezati s novinarskom bazom podataka za skladišnu osnovu \"$1\".",
+       "filejournal-fail-dbquery": "Ne mogu ažurirati novinarsku bazu za skladišnu osnovu \"$1\".",
        "lockmanager-notlocked": "Ne mogu otključati \"$1\"; nije zaključan.",
        "lockmanager-fail-closelock": "Ne mogu zatvoriti \"lock\"-datoteku za \"$1\".",
        "lockmanager-fail-deletelock": "Ne mogu obrisati \"lock\"-datoteku za \"$1\".",
        "lockmanager-fail-releaselock": "Ne mogu osloboditi katanac za „$1“.",
        "lockmanager-fail-db-bucket": "Ne mogu da kontaktiram s dovoljno \"lock\"-baza u kanti $1.",
        "lockmanager-fail-db-release": "Ne mogu osloboditi katance u bazi $1.",
+       "lockmanager-fail-svr-acquire": "Ne mogu dobiti katance na serveru $1.",
        "lockmanager-fail-svr-release": "Ne mogu se otključati katanci na serveru file $1.",
        "zip-file-open-error": "Desila se greška pri otvaranju datoteke za provjere ZIP-a.",
        "zip-wrong-format": "Navedena datoteka nije bila ZIP datoteka.",
        "upload-curl-error28-text": "Stranici je potrebno previše vremena za odgovor.\nMolimo provjerite da li je stranica postavljena, malo pričekajte i pokušajte ponovno.\nMožda možete pokušati kada bude manje opterećenje.",
        "license": "Licenca:",
        "license-header": "Licenciranje",
-       "nolicense": "Ništa nije odabrano",
+       "nolicense": "Nijedna nije izabrana",
        "licenses-edit": "Uredi izbor licenci",
        "license-nopreview": "(Pregled nije dostupan)",
        "upload_source_url": "(vaša izabrana datoteka od validnih, javno dostupnih URL-a)",
        "listfiles_size": "Veličina",
        "listfiles_description": "Opis",
        "listfiles_count": "Verzije",
+       "listfiles-show-all": "Obuhvati stare verzije slika",
        "listfiles-latestversion": "Trenutna verzija",
        "listfiles-latestversion-yes": "Da",
        "listfiles-latestversion-no": "Ne",
        "imagelinks": "Upotreba datoteke",
        "linkstoimage": "{{PLURAL:$1|Slijedeća stranica koristi|Slijedećih $1 stranica koriste}} ovu sliku:",
        "linkstoimage-more": "Više od $1 {{PLURAL:$1|datoteke|datoteka}} povezano je s ovom datotekom.\nSljedeći spisak pokazuje samo {{PLURAL:$1|prvu stranicu povezanu|prve $1 stranice povezane|prvih $1 stranica povezanih}} s ovom datotekom.\nOvdje je dostupan [[Special:WhatLinksHere/$2|potpuni spisak]].",
-       "nolinkstoimage": "Nema stranica koje koriste ovu sliku.",
+       "nolinkstoimage": "Nema stranica koje koriste ovu datoteku.",
        "morelinkstoimage": "Vidi [[Special:WhatLinksHere/$1|ostale linkove]] prema ovoj datoteci.",
        "linkstoimage-redirect": "$1 (preusmjerenje datoteke) $2",
        "duplicatesoffile": "{{PLURAL:$1|Slijedeća datoteka je dvojnik|Slijedeće $1 datoteke su dvojnici}} ove datoteke ([[Special:FileDuplicateSearch/$2|detaljnije]]):",
        "download": "učitaj",
        "unwatchedpages": "Nepraćene stranice",
        "listredirects": "Spisak preusmjerenja",
+       "listduplicatedfiles": "Spisak duplih datoteka",
+       "listduplicatedfiles-summary": "Ovo je spisak datoteka koje su duplikat nekih drugih datoteka. Prikazane su samo lokalne datoteke.",
+       "listduplicatedfiles-entry": "[[:File:$1|$1]] ima [[$3|{{PLURAL:$2|jedan duplikat|$2 duplikata}}]].",
        "unusedtemplates": "Nekorišteni šabloni",
        "unusedtemplatestext": "Ova stranica prikazuje sve stranice u imenskom prostoru {{ns:template}} koji se ne koriste.\nPrije brisanja provjerite da li druge stranice vode na te šablone.",
        "unusedtemplateswlh": "ostali linkovi",
        "pageswithprop-text": "Ova stranica prikazuje stranice koje imaju određeno svojstvo.",
        "pageswithprop-prop": "Naziv svojstva:",
        "pageswithprop-submit": "Idi",
+       "pageswithprop-prophidden-long": "sakriveno dugo tekstualno svojstvo ($1)",
+       "pageswithprop-prophidden-binary": "sakriveno dugo binarno svojstvo ($1)",
        "doubleredirects": "Dvostruka preusmjerenja",
        "doubleredirectstext": "Ova stranica prikazuje stranice koje preusmjeravaju na druga preusmjerenja.\nSvaki red sadrži veze na prvo i drugo preusmjerenje, kao i na prvu liniju teksta drugog preusmjerenja, što obično daje \"pravi\" ciljni članak, na koji bi prvo preusmjerenje i trebalo da pokazuje.\n<del>Precrtane</del> stavke su riješene.",
        "double-redirect-fixed-move": "[[$1]] je premješten.\nAutomatski je ažuriran i sada preusmjerava na [[$2]].",
        "double-redirect-fixed-maintenance": "Automatsko ospravljanje dvostrukih preusmjerenja sa [[$1]] na [[$2]] je posao održavanja.",
        "double-redirect-fixer": "Popravljač preusmjerenja",
        "brokenredirects": "Pokvarena preusmjerenja",
-       "brokenredirectstext": "Slijedeća preusmjerenja vode na nepostojeće stranice:",
+       "brokenredirectstext": "Sljedeća preusmjerenja vode na nepostojeće stranice:",
        "brokenredirects-edit": "uredi",
        "brokenredirects-delete": "obriši",
        "withoutinterwiki": "Članci bez interwiki linkova",
        "ninterwikis": "$1 {{PLURAL:$1|međujezična veza|međujezične veze}}",
        "nlinks": "$1 {{PLURAL:$1|veza|veze}}",
        "nmembers": "$1 {{PLURAL:$1|član|članova}}",
-       "nrevisions": "$1 {{PLURAL:$1|revizija|revizije|revizija}}",
+       "nmemberschanged": "$1 → $2 {{PLURAL:$2|član|člana|članova}}",
+       "nrevisions": "$1 {{PLURAL:$1|verzija|verzije|verzija}}",
        "nimagelinks": "Koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
        "ntransclusions": "koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
        "specialpage-empty": "Nepostoje rezultati za ovaj izvještaj.",
-       "lonelypages": "Siročići",
+       "lonelypages": "Siročad",
        "lonelypagestext": "Slijedeće stranice nemaju linkove na ostalim stranicama na ovoj {{SITENAME}}.",
        "uncategorizedpages": "Nekategorisane stranice",
        "uncategorizedcategories": "Nekategorisane kategorije",
        "uncategorizedimages": "Slike bez kategorije",
        "uncategorizedtemplates": "Šabloni bez kategorije",
        "unusedcategories": "Neiskorištene kategorije",
-       "unusedimages": "Neupotrebljene slike",
+       "unusedimages": "Nekorištene slike",
        "wantedcategories": "Tražene kategorije",
-       "wantedpages": "Tražene stranice",
+       "wantedpages": "Najpotrebnije stranice",
        "wantedpages-summary": "Spisak nepostojećih stranica sa najviše veza ka njima. Na spisku se ne nalaze stranice do kojih vode preusmjerenja. Za spisak nepostojećih stranica na koje su povezana preumsjerenja, pogledajte [[{{#special:BrokenRedirects}}|spisak pokvarenih preusmerenja]].",
        "wantedpages-badtitle": "Nevaljan naslov u setu rezultata: $1",
        "wantedfiles": "Tražene datoteke",
        "wantedfiletext-cat": "Sljedeće datoteke se koriste, ali ne postoje. Datoteke iz drugih baza mogu biti navedene iako ne postoje. Takve datoteke će biti <del>izbrisane</del> sa spiska. Pored toga, stranice koje sadrže nepostojeće datoteke se nalaze u [[:$1]].",
+       "wantedfiletext-cat-noforeign": "Sljedeće datoteke se koriste, ali ne postoje. Dodatno, stranice koje ugrađuju datoteke koje ne postoje prikazane su u [[:$1]].",
        "wantedfiletext-nocat": "Sljedeće datoteke se koriste, ali ne postoje. Datoteke iz drugih baza mogu biti navedene iako ne postoje. Takve datoteke će biti <del>izbrisane</del> sa spiska.",
+       "wantedfiletext-nocat-noforeign": "Sljedeće datoteke se koriste, ali ne postoje.",
        "wantedtemplates": "Potrebni šabloni",
        "mostlinked": "Članci sa najviše linkova",
        "mostlinkedcategories": "Kategorije sa najviše linkova",
        "mostlinkedtemplates": "Najviše uključene stranice",
        "mostcategories": "Članci sa najviše kategorija",
-       "mostimages": "Najviše linkovane slike",
+       "mostimages": "Datoteke s najviše veza",
+       "mostinterwikis": "Stranice sa najviše međuwikija",
        "mostrevisions": "Članci sa najviše izmjena",
        "prefixindex": "Sve stranice sa prefiksom",
        "prefixindex-namespace": "Sve stranice s predmetkom (imenski prostor $1)",
+       "prefixindex-strip": "Sakrij prefiks u spisku",
        "shortpages": "Kratke stranice",
        "longpages": "Dugačke stranice",
-       "deadendpages": "Stranice bez internih veza",
+       "deadendpages": "Stranice bez unutrašnjih veza",
        "deadendpagestext": "Slijedeće stranice nisu povezane s drugim stranicama na {{SITENAME}}.",
        "protectedpages": "Zaštićene stranice",
        "protectedpages-indef": "Samo neograničena zaštićenja",
+       "protectedpages-summary": "Na ovoj stranici se nalazi spisak trenutno zaštićenih stranica. Za spisak zaštićenih naslova vidi [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
        "protectedpages-cascade": "Samo prenosive zaštite",
        "protectedpages-noredirect": "Sakrij preusmjerenja",
        "protectedpagesempty": "Trenutno nijedna stranica nije zaštićena ovim parametrima.",
        "ancientpages": "Najstarije stranice",
        "move": "Premjesti",
        "movethispage": "Premjesti ovu stranicu",
-       "unusedimagestext": "Slijedeće datoteke postoje ali nisu uključene ni u jednu stranicu.\nMolimo obratite pažnju da druge web stranice mogu biti povezane s datotekom putem direktnog URLa, tako da i pored toga mogu biti prikazane ovdje pored aktivne upotrebe.",
+       "unusedimagestext": "Slijedeće datoteke postoje ali nisu uključene ni u jednu stranicu.\nMolimo obratite pažnju da druge web stranice mogu biti povezane s datotekom putem direktnog URL-a, tako da i pored toga mogu biti prikazane ovdje pored aktivne upotrebe.",
        "unusedcategoriestext": "Sljedeće stranice kategorija postoje iako ih nijedan drugi članak ili kategorija ne koriste.",
        "notargettitle": "Nema cilja",
        "notargettext": "Niste naveli ciljnu stranicu ili korisnika\nna kome bi se izvela ova funkcija.",
        "querypage-disabled": "Ova posebna stranica je onemogućena jer smanjuje performanse.",
        "apihelp": "API pomoć",
        "apihelp-no-such-module": "Modul \"$1\" nije pronađen.",
-       "booksources": "Štampani izvori",
+       "booksources": "Književni izvori",
        "booksources-search-legend": "Traži književne izvore",
        "booksources-search": "Traži",
        "booksources-text": "Ispod se nalazi spisak vanjskih linkova na ostale stranice koje prodaju nove ili korištene knjige kao i stranice koje mogu da imaju važnije podatke o knjigama koje tražite:",
        "logempty": "Nema zatraženih članaka u zapisniku.",
        "log-title-wildcard": "Traži naslove koji počinju ovim tekstom",
        "showhideselectedlogentries": "Pokaži/sakrij izabrane zapise u evidenciji",
+       "log-edit-tags": "Uredi oznake izabranih zapisničkih unosa",
        "allpages": "Sve stranice",
        "nextpage": "Sljedeća strana ($1)",
        "prevpage": "Prethodna stranica ($1)",
        "linksearch-ns": "Imenski prostor:",
        "linksearch-ok": "Traži",
        "linksearch-text": "Mogu se koristiti općeniti izrazi poput \"*.wikipedia.org\".\nPotrebna je najmanje osnovna domena, naprimjer \"*.org.\"<br />\nPodržani {{PLURAL:$2|protokol|protokoli}}: $1 (default je http:// ako nijedan protokol nije naveden).",
-       "linksearch-line": "$1 je povezan od $2",
-       "linksearch-error": "Džokeri se mogu pojavljivati samo na početku naziva servera.",
+       "linksearch-line": "$1 vodi sa $2",
+       "linksearch-error": "Džokeri se mogu pojavljivati samo na početku adrese.",
        "listusersfrom": "Prikaži korisnike koji počinju sa:",
        "listusers-submit": "Pokaži",
        "listusers-noresult": "Nije pronađen korisnik.",
        "listgrouprights-namespaceprotection-namespace": "Imenski prostor",
        "listgrouprights-namespaceprotection-restrictedto": "Prava kojima se dozvoljava korisniku da uređuje",
        "trackingcategories": "Praćenje kategorija",
+       "trackingcategories-summary": "Ova stranica prikazuje prateće kategorije koje MediaWiki softver automatski popunjava. Njihovi nazivi se mogu promijeniti izmjenom odgovarajućih sistemskih poruka u imenskom prostoru {{ns:8}}.",
        "trackingcategories-msg": "Praćenje kategorije",
        "trackingcategories-name": "Ime poruke",
        "trackingcategories-desc": "Kriterij uključenja kategorije",
+       "noindex-category-desc": "Roboti ne indeksiraju stranicu jer u sebi ima magičnu riječ <code><nowiki>__NOINDEX__</nowiki></code>, te je u imenskom prostoru u kome ta oznaka nije dozvoljena.",
+       "index-category-desc": "Stranica ima u sebi <code><nowiki>__INDEX__</nowiki></code> (te se nalazi u imenskom prostoru gdje je ta oznaka dozvoljena) pa je, samim tim, roboti indeksiraju.",
+       "post-expand-template-inclusion-category-desc": "Veličina stranice prelazi <code>$wgMaxArticleSize</code> nakon proširenja svih šablona, te zbog toga neki šabloni nisu prošireni.",
+       "post-expand-template-argument-category-desc": "Veličina stranice prelazi <code>$wgMaxArticleSize</code> nakon proširenja defincije šablona (nešto što je u trima vitičastim zagradama, poput <code>{{{Foo}}}</code>).",
+       "expensive-parserfunction-category-desc": "Stranica koristi previše ekspenzivnih parserskih funkcija (poput <code>#ifexist</code>). Pogledajte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+       "broken-file-category-desc": "Stranica sadrži pokvareni link ka datoteci (link koji se nadovezuje na nepostojeću datoteku).",
+       "hidden-category-category-desc": "Kategorija u sebi sadrži <code><nowiki>__HIDDENCAT__</nowiki></code> te se samim tim ne prikazuju u odjeljku za kategoriju na stranicama.",
        "trackingcategories-nodesc": "Opis nije dostupan.",
        "trackingcategories-disabled": "Kategorija je onemogućena",
        "mailnologin": "Nema adrese za slanje",
        "email-legend": "Slanje e-maila drugom {{SITENAME}} korisniku",
        "emailfrom": "Od:",
        "emailto": "Za:",
-       "emailsubject": "Tema:",
+       "emailsubject": "Naslov:",
        "emailmessage": "Poruka:",
        "emailsend": "Pošalji",
        "emailccme": "Pošalji mi kopiju moje poruke.",
        "mywatchlist": "Praćeni članci",
        "watchlistfor2": "Za $1 $2",
        "nowatchlist": "Nemate ništa na svom spisku praćenih članaka.",
-       "watchlistanontext": "Molimo logujte se da vidite ili uredite stavke na Vašem spisku praćenja.",
+       "watchlistanontext": "Morate biti prijavljeni kako biste vidjeli ili uređivali svoj spisak praćenih članaka.",
        "watchnologin": "Niste prijavljeni",
        "addwatch": "Dodaj na spisak praćenja",
        "addedwatchtext": "Stranica \"[[:$1]]\" je dodata vašem [[Special:Watchlist|spisku praćenih članaka]]. \nBuduće promjene ove stranice i njoj pridružene stranice za razgovor će biti navedene ovdje.",
        "removedwatchtext-short": "Stranica \"$1\" je uklonjena sa vašeg spiska praćenja.",
        "watch": "Prati članak",
        "watchthispage": "Prati ovu stranicu",
-       "unwatch": "Ukinite praćenje",
+       "unwatch": "Prestani pratiti",
        "unwatchthispage": "Ukinite praćenje",
        "notanarticle": "Nije članak",
        "notvisiblerev": "Revizija je obrisana",
        "watchlist-details": "{{PLURAL:$1|$1 stranica|$1 stranice|$1 stranica }} na vašem spisku praćenja, ne računajući posebno stranice za razgovor.",
        "wlheader-enotif": "Obavještavanje e-poštom je omogućeno.",
-       "wlheader-showupdated": "Stranice koje su izmijenjene od kad ste ih posljednji put posjetili su prikazane '''podebljanim slovima'''",
+       "wlheader-showupdated": "Stranice koje su izmijenjene od kad ste ih posljednji put posjetili su prikazane <strong>podebljanim slovima</strong>.",
        "wlnote": "Ispod {{PLURAL:$1|je najskorija izmjena|su <strong>$1</strong> najskorije izmjene|<strong>$1</strong> najskorijih izmjena}} načinjenih {{PLURAL:$2|posljednjeg sata|u posljednjih <strong>$2</strong> sata|u posljednjih <strong>$2</strong> sati}}, od $3, $4.",
        "wlshowlast": "Prikaži posljednjih $1 sati $2 dana",
        "watchlist-options": "Opcije spiska praćenja",
        "confirmdeletetext": "Brisanjem ćete obrisati stranicu ili sliku zajedno sa historijom iz baze podataka, ali će se iste moći vratiti kasnije.\nMolim potvrdite svoju namjeru, da razumijete posljedice i da ovo radite u skladu sa [[{{MediaWiki:Policy-url}}|pravilima]].",
        "actioncomplete": "Akcija završena",
        "actionfailed": "Akcija nije uspjela",
-       "deletedtext": "Članak \"$1\" je obrisan.\nPogledajte $2 za zapisnik nedavnih brisanja.",
+       "deletedtext": "Stranica \"$1\" je obrisana.\nPogledajte $2 za zapisnik nedavnih brisanja.",
        "dellogpage": "Zapisnik brisanja",
-       "dellogpagetext": "Ispod je spisak najskorijih brisanja.",
+       "dellogpagetext": "Ispod je spisak nedavno obrisanih stavki.",
        "deletionlog": "zapisnik brisanja",
        "reverted": "Vraćeno na prijašnju reviziju",
        "deletecomment": "Razlog:",
        "rollbacklinkcount": "vrati $1 {{PLURAL:$1|izmjenu|izmjene|izmjena}}",
        "rollbacklinkcount-morethan": "vrati više od $1 {{PLURAL:$1|izmjene|izmjene|izmjena}}",
        "rollbackfailed": "Vraćanje nije uspjelo",
-       "cantrollback": "Ne može se vratiti izmjena; posljednji autor je ujedno i jedini.",
+       "cantrollback": "Ne mogu vratiti izmjenu;\nposljednji autor je ujedno i jedini.",
        "alreadyrolled": "Ne može se vratiti posljednja izmjena [[:$1]] od korisnika [[User:$2|$2]] ([[User talk:$2|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); neko je već izmijenio ili vratio članak na prethodnu provjerenu verziju.\n\nPosljednju izmjenu napravio je korisnik [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Sažetak izmjene je bio: \"''$1''\".",
        "revertpage": "Vraćene izmjene korisnika [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na posljednju izmjenu koju je napravio [[User:$1|$1]]",
        "rollback-success": "Poništene izmjene korisnika $1;\nvraćeno na posljednju verziju koju je sačuvao $2.",
        "sessionfailure-title": "Greška u sesiji",
        "sessionfailure": "Izgleda da postoji problem sa vašom sesijom; ova akcija je otkazana kao prevencija protiv napadanja sesija. Kliknite \"back\" (''nazad'') i osvježite stranicu sa koje ste došli, i opet pokušajte.",
+       "changecontentmodel": "Promijeni model sadržaja stranice",
        "changecontentmodel-legend": "Promijeni model sadržaja",
+       "changecontentmodel-title-label": "Naslov stranice",
+       "changecontentmodel-model-label": "Novi model sadržaja",
+       "changecontentmodel-reason-label": "Razlog:",
+       "changecontentmodel-success-title": "Model sadržaja je promijenjen",
+       "changecontentmodel-success-text": "Model sadržaja stranice [[:$1]] je promijenjen.",
+       "changecontentmodel-cannot-convert": "Model sadržaja stranice [[:$1]] se ne može pretvoriti u vrstu $2.",
+       "changecontentmodel-nodirectediting": "Model sadržaja $1 ne podržava izravno uređivanje",
        "log-name-contentmodel": "Zapisnik promjene modela sadržaja",
        "log-description-contentmodel": "Događaji koji su povezani s modelom sadržaja stranice",
+       "logentry-contentmodel-change": "$1 {{GENDER:$2|promijenio|promijenila}} je model sadržaja stranice $3 iz \"$4\" u \"$5\"",
+       "logentry-contentmodel-change-revertlink": "vrati",
+       "logentry-contentmodel-change-revert": "vrati",
        "protectlogpage": "Zapisnik zaključavanja",
-       "protectlogtext": "Ispod je spisak promjena zaštićenja stranice.\nPogledajte [[Special:ProtectedPages|spisak zaštićenih stranica]] za pregled trenutno operativnih zaštita stranica.",
+       "protectlogtext": "Ispod je spisak promjena zaštićenja stranice.\nPogledajte [[Special:ProtectedPages|spisak zaštićenih stranica]] za pregled trenutno zaštićenih stranica.",
        "protectedarticle": "stranica \"[[$1]]\" je zaštićena",
        "modifiedarticleprotection": "promijenjen stepen zaštite za \"[[$1]]\"",
-       "unprotectedarticle": "uklonjena zaštita za \"[[$1]]\"",
+       "unprotectedarticle": "uklonjena zaštita sa stranice \"[[$1]]\"",
        "movedarticleprotection": "podešavanja zaštite premještena sa \"[[$2]]\" na \"[[$1]]\"",
        "protect-title": "Zaštićuje se \"$1\"",
        "protect-title-notallowed": "Pregled stepena zaštite za \"$1\"",
        "protect-locked-blocked": "Ne možete promijeniti nivo zaštite dok ste blokirani.\nOvo su trenutne postavke za stranicu '''$1''':",
        "protect-locked-dblock": "Nivoi zaštite ne mogu se mijenjati jer je aktivna baza podataka zaključana.\nTrenutna postavka za stranicu '''$1''' jest:",
        "protect-locked-access": "Nemate ovlasti za mijenjanje stepena zaštite.\nSlijede trenutne postavke stranice '''$1''':",
-       "protect-cascadeon": "Ova stranica je trenutno zaštićena jer je uključena u {{PLURAL:$1|stranicu, koja ima|stranice, koje imaju|stranice, koje imaju}} uključenu prenosnu zaštitu.\nPromijene stepena zaštite ove stranice neće uticati na prenosnu zaštitu.",
-       "protect-default": "Dopusti svim korisnicima",
+       "protect-cascadeon": "Ova stranica je trenutno zaštićena jer je uključena u {{PLURAL:$1|stranicu, koja ima|stranice, koje imaju}} uključenu prenosivu zaštitu.\nPromjene stepena zaštite ove stranice neće utjecati na prenosnu zaštitu.",
+       "protect-default": "Dopušteno svim korisnicima",
        "protect-fallback": "Dozvolite samo korisnicima sa \"$1\" ovlastima/privilegijama",
-       "protect-level-autoconfirmed": "Dopustite samo automatski potvrđenim korisnicima",
-       "protect-level-sysop": "Dozvoli samo administratorima",
+       "protect-level-autoconfirmed": "Dopušteno samo automatski potvrđenim korisnicima",
+       "protect-level-sysop": "Dopušteno samo administratorima",
        "protect-summary-cascade": "prenosna zaštita",
        "protect-expiring": "ističe $1 (UTC)",
        "protect-expiring-local": "ističe $1",
        "protect-expiry-indefinite": "neograničeno",
-       "protect-cascade": "Zaštiti sve stranice koje su uključene u ovu (kaskadna zaštita)",
+       "protect-cascade": "Prenosiva zaštita - zaštiti sve stranice koje su uključene u ovu.",
        "protect-cantedit": "Ne možete mijenjati nivo zaštite ove stranice, jer nemate prava da je uređujete.",
        "protect-othertime": "Ostali period:",
        "protect-othertime-op": "ostali period",
        "protect-existing-expiry": "Postojeće vrijeme isticanja: $3, $2",
+       "protect-existing-expiry-infinity": "Postojeće vrijeme isteka: trajno",
        "protect-otherreason": "Ostali/dodatni razlozi:",
        "protect-otherreason-op": "Ostali razlozi",
        "protect-dropdown": "*Uobičajeni razlozi zaštite\n** Prekomjerni vandalizam\n** Prekomjerno spamovanje\n** Ne produktivni rat izmjena\n** Stranica velikog prometa",
        "restriction-level-sysop": "potpuno zaštićeno",
        "restriction-level-autoconfirmed": "poluzaštićeno",
        "restriction-level-all": "svi nivoi",
-       "undelete": "Pogledaj izbrisane stranice",
-       "undeletepage": "Pogledaj i vrati izbrisane stranice",
+       "undelete": "Pregled obrisanih stranica",
+       "undeletepage": "Pregled i vraćanje obrisanih stranica",
        "undeletepagetitle": "'''Sljedeći sadržaj prikazuje obrisane revizije od [[:$1|$1]]'''.",
-       "viewdeletedpage": "Pogledaj izbrisane stranice",
+       "viewdeletedpage": "Pregled obrisanih stranica",
        "undeletepagetext": "{{PLURAL:$1|Slijedeća $1 stranica je obrisana|Slijedeće $1 stranice su obrisane|Slijedećih $1 je obrisano}} ali su još uvijek u arhivi i mogu biti vraćene.\nArhiva moše biti periodično čišćena.",
        "undelete-fieldset-title": "Vraćanje revizija",
-       "undeleteextrahelp": "Da vratite cijelu historiju članka, ostavite sve kutijice neoznačene i kliknite '''''{{int:undeletebtn}}'''''.\nDa bi izvršili selektivno vraćanje, odaberite kutijice koje odgovaraju revizijama koje želite vratiti, i kliknite '''''{{int:undeletebtn}}'''''.",
+       "undeleteextrahelp": "Da biste vratili cijelu historiju stranice, ostavite sve kućice neoznačene i kliknite na <strong><em>{{int:undeletebtn}}</em></strong>.\nDa biste vratili određene stranice, izaberite verzije koje želite vratiti i kliknite na <strong><em>{{int:undeletebtn}}</em></strong>.",
        "undeleterevisions": "{{PLURAL:$1|$1 revizija arhivirana|$1 revizije arhivirane|$1 revizija arhivirano}}",
-       "undeletehistory": "Ako vratite stranicu, sve će revizije biti vraćene u njenu historiju.\nAko je nova stranica istog imena napravljena od brisanja, vraćene revizije pojavit će se u njenoj ranijoj historiji.",
+       "undeletehistory": "Ako vratite stranicu, sve će verzije biti vraćene u njenu historiju.\nAko je u međuvremenu napravljena nova verzija s istim nazivom, vraćene verzije će se pojaviti njenoj ranijoj historiji.",
        "undeleterevdel": "Vraćanje obrisanog se neće izvršiti ako bi rezultiralo da zaglavlje stranice ili revizija datoteke bude djelimično obrisano.\nU takvim slučajevima, morate ukloniti označene ili otkriti sakrivene najskorije obrisane revizije.",
-       "undeletehistorynoadmin": "Ova stranica je izbrisana.  Ispod se nalazi dio historije brisanja i historija revizija izbrisane stranice.  Tekst izbrisane stranice je vidljiv samo korisnicima koji su administratori.",
+       "undeletehistorynoadmin": "Ova stranica je obrisana.\nRazlog za brisanje se nalazi ispod, zajedno s detaljima o korisniku koji je mijenjao stranicu prije brisanja.\nTekst obrisanih verzija dostupan je samo administratorima.",
        "undelete-revision": "Obrisana revizija stranice $1 (dana $4, u $5) od strane $3:",
        "undeleterevision-missing": "Nepoznata ili nedostajuća revizija.\nMožda ste unijeli pogrešan link, ili je revizija vraćena ili uklonjena iz arhive.",
        "undelete-nodiff": "Nije pronađena ranija revizija.",
        "namespace": "Vrsta članka:",
        "invert": "Sve osim odabranog",
        "tooltip-invert": "Označite ovu kutiju za sakrivanje promjena na stranicama u odabranom imenskom prostoru (i povezanim imenskim prostorima ako je označeno)",
+       "tooltip-whatlinkshere-invert": "Označite ovu kutiju za sakrivanje linkova sa stranica u izabranom imenskom prostoru.",
        "namespace_association": "Povezan imenski prostor",
        "tooltip-namespace_association": "Označite ovu kutiju da također uključite razgovor ili imenski prostor teme koja je povezana sa odabranim imenskim prostorom",
        "blanknamespace": "(Glavno)",
        "sp-contributions-newbies-sub": "Za nove korisnike",
        "sp-contributions-newbies-title": "Doprinosi novih korisnika",
        "sp-contributions-blocklog": "zapisnik blokiranja",
+       "sp-contributions-suppresslog": "obrisani doprinosi korisnika",
        "sp-contributions-deleted": "obrisani doprinosi korisnika",
        "sp-contributions-uploads": "postavljanja",
        "sp-contributions-logs": "zapisnici",
        "sp-contributions-search": "Pretraga doprinosa",
        "sp-contributions-username": "IP adresa ili korisničko ime:",
        "sp-contributions-toponly": "Prikaži samo izmjene koje su posljednje revizije",
+       "sp-contributions-newonly": "Prikaži samo izmjene kojima su napravljene nove stranice",
        "sp-contributions-submit": "Traži",
        "whatlinkshere": "Šta vodi ovamo",
        "whatlinkshere-title": "Stranice koje vode na \"$1\"",
        "whatlinkshere-page": "Stranica:",
        "linkshere": "Sljedeći članci vode na '''[[:$1]]''':",
-       "nolinkshere": "Nema linkova na '''[[:$1]]'''.",
-       "nolinkshere-ns": "Nijedna stranica nije povezana sa '''[[:$1]]''' u odabranom imenskom prostoru.",
-       "isredirect": "preusmjerivač",
-       "istemplate": "kao šablon",
+       "nolinkshere": "Nijedna stranica nije povezana sa <strong>[[:$1]]</strong>.",
+       "nolinkshere-ns": "Nijedna stranica nije povezana sa <strong>[[:$1]]</strong> u izabranom imenskom prostoru.",
+       "isredirect": "preusmjerenje",
+       "istemplate": "šablon",
        "isimage": "veza na datoteku",
        "whatlinkshere-prev": "{{PLURAL:$1|prethodni|prethodna|prethodnih}} $1",
        "whatlinkshere-next": "{{PLURAL:$1|sljedeći|sljedeća|sljedećih}} $1",
        "ipbreason": "Razlog:",
        "ipbreason-dropdown": "*Najčešći razlozi blokiranja\n**Netačne informacije\n**Uklanjanje sadržaja stranica\n**Postavljanje spam vanjskih linkova\n**Ubacivanje gluposti/grafita\n**Osobni napadi (ili napadačko ponašanje)\n**Čarapare (zloupotreba više korisničkih računa)\n**Neprihvatljivo korisničko ime",
        "ipb-hardblock": "Onemogući prijavljene korisnike da uređuju sa ove IP adrese",
-       "ipbcreateaccount": "Onemogući pravljenje računa",
+       "ipbcreateaccount": "Spriječi pravljenje računa",
        "ipbemailban": "Onemogući korisnika da šalje e-mail",
        "ipbenableautoblock": "Automatski blokiraj posljednju IP-adresu koju je koristio ovaj korisnik i sve druge IP-adrese s kojih je pokušao uređivati",
        "ipbsubmit": "Blokirajte ovog korisnika",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] je {{GENDER:$1|blokiran|blokirana|blokiran}}.<br />\nPogledajte [[Special:BlockList|spisak blokiranja]] za pregled blokiranja.",
        "ipb-blockingself": "Ovom akcijom ćete blokirati sebe! Da li ste sigurni da to želite?",
        "ipb-confirmhideuser": "Upravo ćete blokirati korisnika s uključenom opcijom \"Sakrij korisnika\". Ovim će korisničko ime biti sakriveno u svim spiskovima i stavkama zapisnika. Jeste li sigurni da to želite?",
+       "ipb-confirmaction": "Ako ste sigurni da želite nastaviti, kliknite na \"{{int:ipb-confirm}}\" polje na dnu stranice.",
        "ipb-edit-dropdown": "Uredi razloge blokiranja",
        "ipb-unblock-addr": "Deblokiraj $1",
        "ipb-unblock": "Deblokiraj korisničko ime ili IP adresu",
        "unblockip": "Odblokiraj korisnika",
        "unblockiptext": "Upotrebite donji upitnik da bi ste vratili\npravo pisanja ranije blokiranoj IP adresi\nili korisničkom imenu.",
        "ipusubmit": "Ukloni ovu blokadu",
-       "unblocked": "[[User:$1|$1]] je deblokiran",
+       "unblocked": "[[User:$1|$1]] je deblokiran.",
        "unblocked-range": "$1 je deblokiran",
        "unblocked-id": "Blokada ID oznake $1 je uklonjena",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] je deblokiran.",
        "blocklist": "Blokirani korisnici",
        "ipblocklist": "Blokirani korisnici",
        "ipblocklist-legend": "Traži blokiranog korisnika",
        "ipblocklist-submit": "Traži",
        "ipblocklist-localblock": "Lokalna blokada",
        "ipblocklist-otherblocks": "Ostale {{PLURAL:$1|blokada|blokade}}",
-       "infiniteblock": "nije ograničena",
+       "infiniteblock": "neograničeno",
        "expiringblock": "ističe dana $1 u $2",
        "anononlyblock": "samo anonimni korisnici",
        "noautoblockblock": "automatsko blokiranje onemogućeno",
-       "createaccountblock": "blokirano pravljenje računa",
-       "emailblock": "e-mail blokiran",
+       "createaccountblock": "onemogućeno pravljenje računa",
+       "emailblock": "blokirana e-pošta",
        "blocklist-nousertalk": "ne može uređivati vlastitu stranicu za razgovor",
        "ipblocklist-empty": "Spisak blokiranja je prazan.",
        "ipblocklist-no-results": "Tražena IP adresa ili korisničko ime nisu blokirani.",
        "blocklogtext": "Ispod je spisak blokiranja i deblokiranja korisnika.\nAutomatski blokirane IP adrese nisu ispisane ispod.\nPogledajte [[Special:BlockList|spisak blokiranja]] za spisak trenutnih zabrana i blokiranja.",
        "unblocklogentry": "deblokiran $1",
        "block-log-flags-anononly": "samo anonimni korisnici",
-       "block-log-flags-nocreate": "pravljenje računa onemogućeno",
+       "block-log-flags-nocreate": "onemogućeno pravljenje računa",
        "block-log-flags-noautoblock": "automatsko blokiranje onemogućeno",
        "block-log-flags-noemail": "e-mail je blokiran",
        "block-log-flags-nousertalk": "ne može uređivati vlastitu stranicu za razgovor",
        "block-log-flags-angry-autoblock": "omogućeno napredno autoblokiranje",
        "block-log-flags-hiddenname": "korisničko ime sakriveno",
        "range_block_disabled": "Administratorska mogućnost da blokira grupe je isključena.",
-       "ipb_expiry_invalid": "Pogrešno vrijeme trajanja.",
+       "ipb_expiry_invalid": "Neispravno vrijeme isteka.",
        "ipb_expiry_temp": "Sakrivene blokade korisničkih imena moraju biti stalne.",
        "ipb_hide_invalid": "Ne može se onemogućiti ovaj račun; on ima više od {{PLURAL:$1|jedne izmjene|$1 izmjena}}.",
        "ipb_already_blocked": "\"$1\" je već blokiran",
        "ipb-needreblock": "$1 je već blokiran. Da li želite promijeniti postavke?",
        "ipb-otherblocks-header": "Ostale {{PLURAL:$1|blokada|blokade}}",
        "unblock-hideuser": "Ne možete deblokirati ovog korisnika jer je njegovo korisničko ime sakriveno.",
-       "ipb_cant_unblock": "Greška: Blokada sa ID oznakom $1 nije pronađena.\nMožda je već deblokirana.",
+       "ipb_cant_unblock": "Greška: Blokirani ID $1 nije pronađen. Možda je korisnik već deblokiran.",
        "ipb_blocked_as_range": "Greška: IP adresa $1 nije direktno blokirana i ne može se deblokirati.\nMeđutim, možda je blokirana kao dio bloka $2, koji se ne može deblokirati.",
        "ip_range_invalid": "Netačan raspon IP adresa.",
        "ip_range_toolarge": "Nisu dopuštene blokade veće od /$1.",
-       "proxyblocker": "Bloker proksija",
-       "proxyblockreason": "Vaša IP adresa je blokirana jer je ona otvoreni proksi.  Molimo vas da kontaktirate vašeg davatelja internetskih usluga (Internet Service Provider-a) ili tehničku podršku i obavijestite ih o ovom ozbiljnom sigurnosnom problemu.",
+       "proxyblocker": "Zaštita od proxya",
+       "proxyblockreason": "Vaša IP adresa je blokirana jer je ona otvoreni proxy.\nMolimo vas da kontaktirate vašeg davatelja internetskih usluga ili tehničku podršku i obavijestite ih o ovom ozbiljnom sigurnosnom problemu.",
        "sorbsreason": "Vaša IP adresa je prikazana kao otvoreni proxy u DNSBL koji koristi {{SITENAME}}.",
        "sorbs_create_account_reason": "Vaša IP adresa je prikazana kao otvoreni proxy u DNSBL korišten od {{SITENAME}}.\nNe možete napraviti račun",
+       "xffblockreason": "Blokirana je vaša ili IP adresa proxy servera koga koristite, koja se nalazi u zaglavlju X-Forwarded-For. Razlog za blokiranje je bio: $1",
        "cant-see-hidden-user": "Korisnik kojeg pokušavate blokirati je već blokiran i sakriven. Pošto nemate prava hideuser (sakrivanje korisnika), ne možete vidjeti ni urediti korisnikovu blokadu.",
        "ipbblocked": "Ne možete blokirati ili deblokirati druge korisnike, jer ste i sami blokirani",
        "ipbnounblockself": "Nije Vam dopušteno da deblokirate samog sebe",
        "movepagetalktext": "Odgovarajuća stranica za razgovor, ako postoji, automatski će biti premještena istovremeno '''osim ako:'''\n*premještate stranicu preko imenskih prostora\n*neprazna stranica za razgovor već postoji pod novim imenom\n*odčekirate donju kutiju.\n\nU tim slučajevima morat ćete ručno premjestiti ili prekopirati stranicu ako to želite.",
        "movearticle": "Premjesti stranicu:",
        "moveuserpage-warning": "'''Upozorenje:''' Premještate korisničku stranicu. Molimo da zapamtite da će se samo stranica premjestiti a korisnik se ''neće'' preimenovati.",
+       "movecategorypage-warning": "<strong>Upozorenje:</strong> Premještate stranicu kategorije. Imajte na umu da će samo stranica biti premještena i da sve stranice u staroj kategoriji <em>neće</em> biti ponovo kategorirane u novu kategoriju.",
        "movenologintext": "Morate biti registrovani korisnik i [[Special:UserLogin|prijavljeni]] da biste premjestili stranicu.",
        "movenotallowed": "Nemate dopuštenje za premještanje stranica.",
        "movenotallowedfile": "Nemate dopuštenja da premještanje datoteke.",
        "cant-move-user-page": "Nemate dopuštenje da premještate korisničke stranice (bez podstranica).",
        "cant-move-to-user-page": "Nemate dopuštenje da premjestite stranicu na korisničku stranicu (osim na korisničku podstranicu).",
+       "cant-move-category-page": "Nemate dopuštene da premještate stranice kategorija.",
+       "cant-move-to-category-page": "Nemate dopuštenje da premjestite stranicu na stranicu kategorije.",
        "newtitle": "Novi naslov",
        "move-watch": "Prati ovu stranicu",
        "movepagebtn": "Premjesti stranicu",
        "movenosubpage": "Ova stranica nema podstranica.",
        "movereason": "Razlog:",
        "revertmove": "vrati",
-       "delete_and_move": "Brisanje i premještanje",
-       "delete_and_move_text": "==Brisanje neophodno==\nOdredišna stranica \"[[:$1]]\" već postoji.\nDa li je želite obrisati kako bi ste mogli izvršiti premještanje?",
+       "delete_and_move": "Obriši i premjesti",
+       "delete_and_move_text": "==Potebno brisanje==\nOdredišna stranica \"[[:$1]]\" već postoji.\nDa li je želite obrisati kako bi ste mogli izvršiti premještanje?",
        "delete_and_move_confirm": "Da, obriši stranicu",
        "delete_and_move_reason": "Obrisano da bi se napravio prostor za premještanje iz \"[[$1]]\"",
        "selfmove": "Izvorni i ciljani naziv su isti; strana ne može da se premjesti preko same sebe.",
        "immobile-target-namespace-iw": "Međuwiki link nije ispravno odredište premještanja stranice.",
        "immobile-source-page": "Ova stranica se ne može premještati.",
        "immobile-target-page": "Ne može se premjestiti na taj odredišni naslov.",
+       "bad-target-model": "Željeno odredište koristi drugačiji model sadržaja. Ne mogu pretvoriti iz $1 u $2.",
        "imagenocrossnamespace": "Ne može se premjestiti datoteka u nedatotečni imenski prostor",
        "nonfile-cannot-move-to-file": "Ne mogu se premjestiti podaci u datotečni imenski prostor",
        "imagetypemismatch": "Ekstenzija nove datoteke ne odgovara njenom tipu",
        "thumbnail-temp-create": "Ne mogu da napravim privremenu smanjenu sliku",
        "thumbnail-dest-create": "Ne mogu da sačuvam smanjenu sliku (\"thumbnail\") na destinaciju",
        "thumbnail_invalid_params": "Pogrešne postavke smanjenog prikaza",
+       "thumbnail_toobigimagearea": "Datoteka sa dimenzijama većim od $1",
        "thumbnail_dest_directory": "Ne može se napraviti odredišni folder",
        "thumbnail_image-type": "Tip slike nije podržan",
        "thumbnail_gd-library": "Nekompletna konfiguracija GD biblioteke: nedostaje funkcija $1",
        "thumbnail_image-missing": "Datoteka ne dostaje: $1",
+       "thumbnail_image-failure-limit": "Bilo je previše nedavnih greška ($1 ili više) pri pravljenju umanjene slike. Ponovo pokušajte kasnije.",
        "import": "Uvoz stranica",
        "importinterwiki": "Uvezeno sa druge wiki",
-       "import-interwiki-text": "Izaberi wiki i naslov stranice za uvoz.\nDatumi revizija i imena autora će biti sačuvani.\nSve akcije pri međuwiki uvozu će biti zapisane u [[Special:Log/import|zapisu uvoza]].",
+       "import-interwiki-text": "Izaberi wiki i naslov stranice za uvoz.\nDatumi i imena autora verzija će biti sačuvani.\nSve akcije pri međuwiki uvozu će biti zapisane u [[Special:Log/import|zapisniku uvoza]].",
+       "import-interwiki-sourcewiki": "Izvorna wiki:",
+       "import-interwiki-sourcepage": "Izvorna stranica:",
        "import-interwiki-history": "Kopiraj sve verzije historije za ovu stranicu",
        "import-interwiki-templates": "Uključi sve šablone",
        "import-interwiki-submit": "Uvoz",
+       "import-mapping-default": "Uvezi u predodređena mjesta",
+       "import-mapping-namespace": "Uvezi u imenski prostor:",
+       "import-mapping-subpage": "Uvezi kao podstranice sljedeće stranice:",
        "import-upload-filename": "Naziv datoteke:",
        "import-comment": "Komentar:",
        "importtext": "Molimo Vas da izvezete datoteku iz izvornog wikija koristeći [[Special:Export|alat za izvoz]].\nSačuvajte je na Vašem računaru i pošaljite ovdje.",
        "importcantopen": "Ne može se otvoriti uvozna datoteka",
        "importbadinterwiki": "Loš interwiki link",
        "importsuccess": "Uspješno ste uvezli stranicu!",
-       "importnosources": "Nije definisan međuwiki izvor za uvoz i direktna postavljanja historije su onemogućena.",
+       "importnosources": "Nije definisan međuwiki izvor za uvoz i direktna postavljanja historije su isključena.",
        "importnofile": "Uvozna datoteka nije postavljena.",
        "importuploaderrorsize": "Postavljanje uvozne datoteke nije uspjelo.\nDatoteka je veća nego što je dopušteno.",
        "importuploaderrorpartial": "Postavljanje uvozne datoteke nije uspjelo.\nDatoteka je samo djelimično postavljena.",
        "import-error-interwiki": "Stranica \"$1\" nije uvezena jer je njen naziv rezerviran za vanjsko povezivanje (interwiki).",
        "import-error-special": "Stranica \"$1\" nije uvezena jer pripada posebnom imenskom prostoru koje ne prihvata stranice.",
        "import-error-invalid": "Stranica \"$1\" nije uvezena jer je naziv pod kojim treba biti uvezena nije valjan na ovoj wiki.",
+       "import-error-unserialize": "Verzija $2 stranice $1 ne može biti pročitana, odnosno uvezena. Zapisano je da verzija koristi $3 tip sadržaja u $4 formatu.",
+       "import-error-bad-location": "Verzija $2 koja koristi model sadržaja $3 ne može se postaviti na stranicu \"$1\" ovog wikija, jer taj model sadržaja nije podržan na toj stranici.",
        "import-options-wrong": "{{PLURAL:$2|Pogrešna opcija|Pogrešne opcije}}: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "Navedena osnovna stranica ima neispravan naslov.",
        "import-rootpage-nosubpage": "Imenski prostor \"$1\" osnovne stranice ne dozvoljava podstranice.",
        "javascripttest": "Testiranje JavaScript-e",
        "javascripttest-pagetext-noframework": "Ova stranica je određena za pokretanje JavaScript testova.",
        "javascripttest-pagetext-unknownframework": "Nepoznat radni okvir testiranja\"$1\".",
+       "javascripttest-pagetext-unknownaction": "Nepoznata radnja \"$1\".",
        "javascripttest-pagetext-frameworks": "Molimo Vas izaberite jednu od sljedećih testnih okvira: $1",
        "javascripttest-pagetext-skins": "Izaberite s kojom temom želite da pokrenete probu:",
        "javascripttest-qunit-intro": "Pogledajte [$1 dokumentaciju za testiranje] na mediawiki.org.",
        "tooltip-ca-history": "Prethodne verzije ove stranice.",
        "tooltip-ca-protect": "Zaštitite stranicu od budućih izmjena",
        "tooltip-ca-unprotect": "Promijeni zaštitu za ovu stranicu",
-       "tooltip-ca-delete": "Izbrišite ovu stranicu",
+       "tooltip-ca-delete": "Obrišite ovu stranicu",
        "tooltip-ca-undelete": "Vratite izmjene koje su načinjene prije brisanja stranice",
        "tooltip-ca-move": "Premjesti ovu stranicu",
        "tooltip-ca-watch": "Dodajte stranicu u listu praćnih članaka",
-       "tooltip-ca-unwatch": "Izbrišite stranicu sa liste praćnih članaka",
+       "tooltip-ca-unwatch": "Ukloni ovu stranicu sa spiska praćenih članaka",
        "tooltip-search": "Pretraži projekat {{SITENAME}}",
        "tooltip-search-go": "Idi na stranicu s tačno ovim imenom ako postoji",
        "tooltip-search-fulltext": "Pretražite stranice s ovim tekstom",
        "tooltip-t-upload": "Postavi slike i druge medije",
        "tooltip-t-specialpages": "Spisak svih posebnih stranica",
        "tooltip-t-print": "Verzija ove stranice za štampanje",
-       "tooltip-t-permalink": "Stalni link ove verzije stranice",
+       "tooltip-t-permalink": "Trajni link ove verzije stranice",
        "tooltip-ca-nstab-main": "Pogledajte sadržaj članka",
        "tooltip-ca-nstab-user": "Pogledajte korisničku stranicu",
        "tooltip-ca-nstab-media": "Pogledajte medija fajl",
        "tooltip-ca-nstab-template": "Pogledajte šablon",
        "tooltip-ca-nstab-help": "Pogledajte stranicu za pomoć",
        "tooltip-ca-nstab-category": "Pogledajte stranicu kategorije",
-       "tooltip-minoredit": "Naznačite da se radi o maloj izmjeni",
-       "tooltip-save": "Sačuvajte Vaše izmjene",
-       "tooltip-preview": "Pregledajte Vaše izmjene; molimo Vas da koristite ovo prije nego što sačuvate stranicu!",
-       "tooltip-diff": "Prikaži moje izmjene u tekstu.",
-       "tooltip-compareselectedversions": "Pogledajte pazlike između dvije selektovane verzije ove stranice.",
-       "tooltip-watch": "Dodajte ovu stranicu na Vaš spisak praćenih članaka",
+       "tooltip-minoredit": "Označi kao manju izmjenu",
+       "tooltip-save": "Sačuvaj moje izmjene",
+       "tooltip-preview": "Pregledajte svoje izmjene. Preporučeno pri bilo kakvom uređivanju!",
+       "tooltip-diff": "Prikaži moje izmjene u tekstu",
+       "tooltip-compareselectedversions": "Uporedi razliku između dvije izabrane verzije ove stranice",
+       "tooltip-watch": "Dodaj ovu stranicu na svoj spisak praćenih članaka",
        "tooltip-watchlistedit-normal-submit": "Ukloni naslove",
        "tooltip-watchlistedit-raw-submit": "Ažuriraj spisak praćenja",
        "tooltip-recreate": "Ponovno pravljenje stranice iako je već brisana",
        "pageinfo-robot-index": "Dozvoljeno",
        "pageinfo-robot-noindex": "Nije dozvoljeno",
        "pageinfo-watchers": "Broj pratitelja stranice",
+       "pageinfo-visiting-watchers": "Broj korisnika koji prate ovu stranica i koji su je posjetili zbog najnovijih izmjena",
        "pageinfo-few-watchers": "Manje od $1 {{PLURAL:$1|pratioca|pratilaca}}",
+       "pageinfo-few-visiting-watchers": "Moguće je da postoji korisnik koji prati i posjećuje nedavne izmjene",
        "pageinfo-redirects-name": "Broj preusmjeravanja na ovu stranicu",
        "pageinfo-subpages-name": "Podstranice ove stranice",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|preusmjerenje|preusmjerenja}}; $3 {{PLURAL:$3|nepreusmjerenje|nepreusmjerenja}})",
        "pageinfo-redirectsto-info": "Informacije",
        "pageinfo-contentpage": "Broji se kao stranica sa sadržajem",
        "pageinfo-contentpage-yes": "Da",
+       "pageinfo-protect-cascading": "Prenosiva zaštita počinje od ove stranice",
        "pageinfo-protect-cascading-yes": "Da",
+       "pageinfo-protect-cascading-from": "Prenosiva zaštita počinje od",
        "pageinfo-category-info": "Informacije o kategoriji",
        "pageinfo-category-total": "Ukupan broj članova",
        "pageinfo-category-pages": "Broj stranica",
        "patrol-log-page": "Zapisnik patroliranja",
        "patrol-log-header": "Ovdje se nalazi zapis patroliranih revizija.",
        "log-show-hide-patrol": "$1 zapis patroliranja",
+       "log-show-hide-tag": "$1 zapisnik oznaka",
        "deletedrevision": "Obrisana stara revizija $1",
        "filedeleteerror-short": "Greška pri brisanju datoteke: $1",
        "filedeleteerror-long": "Desile su se greške pri brisanju datoteke:\n\n$1",
        "file-no-thumb-animation-gif": "'''Napomena: Zbog tehničkih ograničenja, minijature GIF slika visoke rezolucije kao što je ova neće biti animirane.'''",
        "newimages": "Galerija novih slika",
        "imagelisttext": "Ispod je spisak od '''$1''' {{PLURAL:$1|datoteke|datoteke|datoteka}} poredanih $2.",
-       "newimages-summary": "Ova specijalna stranica prikazuje posljednje postavljene datoteke.",
+       "newimages-summary": "Ova posebna stranica prikazuje nedavno postavljene datoteke.",
        "newimages-legend": "Filter",
        "newimages-label": "Ime datoteke (ili dio imena):",
        "newimages-showbots": "Pokaži datoteke koje su poslali botovi",
-       "noimages": "Ništa za prikazati.",
+       "noimages": "Nema ništa.",
        "ilsubmit": "Traži",
        "bydate": "po datumu",
        "sp-newimages-showfrom": "Prikaz novih datoteka počev od $2, $1",
        "confirmemail_oncreate": "Kod za potvrđivanje Vam je poslat na Vašu e-mail adresu.\nTaj kod nije neophodan za prijavljivanje, ali Vam ne potreban kako bi ste omogućili funkcije wikija zasnovane na e-mailu.",
        "confirmemail_sendfailed": "{{SITENAME}} Vam ne može poslati poštu za potvrđivanje. Provjerite adresu zbog nepravilnih karaktera.\n\nPovratna pošta: $1",
        "confirmemail_invalid": "Netačan kod za potvrdu. Moguće je da je kod istekao.",
-       "confirmemail_needlogin": "Morate $1 da bi ste potvrdili Vašu e-mail adresu.",
+       "confirmemail_needlogin": "Morate biti $1 da biste potvrdili adresu vaše e-pošte.",
        "confirmemail_success": "Adresa vaše e-pošte je potvrđena. Možete sad da se prijavite i uživate u viki.",
        "confirmemail_loggedin": "Adresa Vaše e-pošte je potvrđena.",
        "confirmemail_subject": "{{SITENAME}} – adresa e-pošte za potvrđivanje",
        "table_pager_limit_label": "Stavke po stranici:",
        "table_pager_limit_submit": "Idi",
        "table_pager_empty": "Bez rezultata",
-       "autosumm-blank": "Uklanjanje sadržaja stranice",
-       "autosumm-replace": "Zamjena stranice sa '$1'",
+       "autosumm-blank": "Uklonjen cjelokupan sadržaj stranice",
+       "autosumm-replace": "Zamijenjen sadržaj stranice sa \"$1\"",
        "autoredircomment": "Preusmjereno na [[$1]]",
-       "autosumm-new": "Napravljena stranica sa '$1'",
+       "autosumm-new": "Nova stranica: $1",
        "autosumm-newblank": "Napravljena prazna stranica",
        "size-bytes": "$1 B",
        "size-kilobytes": "$1 KB",
        "watchlistedit-clear-titles": "Naslovi:",
        "watchlistedit-clear-submit": "Isprazni spisak nadgledanja (Ovo je trajno!)",
        "watchlistedit-clear-done": "Vaš spisak praćenja je očišćen.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|1 naslov je uklonjen|$1 naslova su uklonjena|$1 naslova je uklonjeno}}:",
+       "watchlistedit-too-many": "Ima previše stranica za prikaz ovdje.",
        "watchlisttools-clear": "Očisti spisak nadgledanja",
        "watchlisttools-view": "Pogledaj srodne izmjene",
        "watchlisttools-edit": "Pogledaj i uredi spisak praćenja",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|razgovor]])",
        "timezone-utc": "KSV",
        "duplicate-defaultsort": "Upozorenje: Postavljeni ključ sortiranja \"$2\" zamjenjuje raniji ključ \"$1\".",
+       "duplicate-displaytitle": "<strong>Upozorenje:</strong> Prikazivani naslov \"$2\" poništava prethodni naslov \"$1\".",
+       "invalid-indicator-name": "<strong>Greška:</strong> <code>Imena</code> pokazatelja stanja strance ne smiju biti prazna.",
        "version": "Verzija",
        "version-extensions": "Instalirana proširenja (ekstenzije)",
        "version-skins": "Instalirane kože",
        "version-license": "Licenca",
        "version-ext-license": "Licenca",
        "version-ext-colheader-name": "Proširenje",
-       "version-skin-colheader-name": "Izgled",
+       "version-skin-colheader-name": "Tema",
        "version-ext-colheader-version": "Verzija",
        "version-ext-colheader-license": "Licenca",
        "version-ext-colheader-description": "Opis",
        "version-ext-colheader-credits": "Autori",
        "version-license-title": "Licenca za $1",
+       "version-license-not-found": "Za ovo proširenje nije pronađena informacija o licenci.",
+       "version-credits-title": "Zasluge za $1",
+       "version-credits-not-found": "Za ovo proširenje nisu pronađene informacije o zaslugama.",
        "version-poweredby-credits": "Ova wiki je zasnovana na '''[https://www.mediawiki.org/ MediaWiki]''', autorska prava zadržana © 2001-$1 $2.",
        "version-poweredby-others": "ostali",
+       "version-poweredby-translators": "translatewiki.net prevodioci",
        "version-credits-summary": "Željeli bismo se zahvaliti sljedećim ljudima na njihovom doprinosu [[Special:Version|MediaWikiju]].",
        "version-license-info": "Mediawiki je slobodni softver; možete ga redistribuirati i(li) mijenjati pod uvjetima opće javne GNU licence kao što je objavljeno od strane \"Free Software Foundationa\", bilo u verziji 2 licence ili (po Vašoj volji) nekoj od kasnijih verzija.\n\nMediawiki se distribuira u nadi da će biti korisna, ali BEZ IKAKVIH GARANCIJA, čak i bez ikakvih posrednih garancija o KOMERCIJALNOSTI ili DOSTUPNOSTI ZA ODREĐENU SVRHU. Pogledajte opću javnu GNU licencu za više detalja.\n\nTrebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU opće javne GNU licence] zajedno s ovim programom. Ako niste, pišite \"Free Software Foundationu\" na adresu: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ili je pročitajte [//www.gnu.org/licenses/old-licenses/gpl-2.0.html ovdje].",
        "version-software": "Instalirani softver",
        "version-entrypoints": "URL Adrese ulazne tačke",
        "version-entrypoints-header-entrypoint": "Ulazna tačka",
        "version-entrypoints-header-url": "URL",
+       "version-libraries": "Instalirane biblioteke",
+       "version-libraries-library": "Biblioteka",
        "version-libraries-version": "Verzija",
+       "version-libraries-license": "Licenca",
+       "version-libraries-description": "Opis",
+       "version-libraries-authors": "Autori",
+       "redirect": "Preusmjerenje na datoteku, korisnika, stranicu ili oznaku izmjene",
+       "redirect-legend": "Preusmjeri na datoteku ili stranicu",
+       "redirect-summary": "Ova posebna stranica preusmjerava na datoteku (datog imena), stranicu (date oznake izmjene) ili korisničku stranicu (datog numeričkog identifikatora korisnika). Oznake se koriste na sljedeći način: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ili [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Idi",
+       "redirect-lookup": "Tip vrijednosti:",
        "redirect-value": "Vrijednost:",
        "redirect-user": "Korisnički ID",
        "redirect-page": "ID stranice",
        "redirect-revision": "Verzija stranice",
        "redirect-file": "Naziv datoteke",
        "redirect-not-exists": "Vrijednost nije pronađena",
-       "fileduplicatesearch": "Pretraga za duplim datotekama",
+       "fileduplicatesearch": "Pretraga duplikata",
        "fileduplicatesearch-summary": "Pretraga za duplim datotekama na bazi njihove haš vrijednosti.",
        "fileduplicatesearch-legend": "Pretraga za dvojnicima",
        "fileduplicatesearch-filename": "Ime datoteke:",
        "tags-source-header": "Izvor",
        "tags-active-header": "Aktivna?",
        "tags-hitcount-header": "Označene izmjene",
+       "tags-actions-header": "Radnje",
        "tags-active-yes": "Da",
        "tags-active-no": "Ne",
        "tags-source-extension": "Definirano preko proširenja",
+       "tags-source-manual": "Ručno postavili korisnici ili botovi",
        "tags-source-none": "Više se ne koristi",
        "tags-edit": "uređivanje",
        "tags-delete": "izbriši",
        "tags-hitcount": "$1 {{PLURAL:$1|izmjena|izmjene|izmjena}}",
        "tags-manage-no-permission": "Nemate pravo upravljati promjenama oznaka.",
        "tags-create-heading": "Napravi novu oznaku",
+       "tags-create-explanation": "Predoređeno je da će korisnici i botovi moći koristiti novonapravljene oznake.",
        "tags-create-tag-name": "Naziv oznake:",
        "tags-create-reason": "Razlog:",
        "tags-create-submit": "Napravi",
        "tags-create-no-name": "Morate navesti ime oznake.",
+       "tags-create-invalid-chars": "Nazivi oznaka ne smiju sadržavati zareze (<code>,</code>) ni kose crte (<code>/</code>).",
+       "tags-create-invalid-title-chars": "Nazivi oznaka ne smiju sadržavati znakove koje se ne mogu koristiti u naslovima stranica.",
        "tags-create-already-exists": "Oznaka \"$1\" već postoji.",
+       "tags-create-warnings-above": "{{PLURAL:$2|Dogodila se sljedeća greška|Dogodile su se sljedeće greške}} pri stvaranju oznake \"$1\":",
+       "tags-create-warnings-below": "Želite li nastaviti stvaranje oznake?",
        "tags-delete-title": "Izbriši oznaku",
+       "tags-delete-explanation-initial": "Brišete oznaku \"$1\" iz baze podataka.",
+       "tags-delete-explanation-in-use": "Bit će obrisana sa {{PLURAL:$2|$2 verzije ili unosa u zapisniku|svih $2 verzija i/ili unosa u zapisniku}} na kojima se trenutno koristi.",
+       "tags-delete-explanation-warning": "Ova radnja se <strong>ne može povratiti</strong> te se <strong>ne može poništiti</strong>. Ovo ne mogu uraditi čak ni administratori baze podataka. Budite sigurni da je ovo oznaka koju želite obrisati.",
+       "tags-delete-explanation-active": "<strong>Oznaka \"$1\" je i dalje aktivna te će se nastaviti primjenjivati u budućnosti.</strong> Kako biste ovo spriječili, otiđite na mjesto (ili mjesta) na kojima je postavljeno da se oznaka postavlja, te je tamo isključite.",
        "tags-delete-reason": "Razlog:",
+       "tags-delete-submit": "Nepovratno obriši ovu oznaku",
+       "tags-delete-not-allowed": "Oznake koje su definirane proširenjem se ne mogu obrisati ukoliko to proširenje isključivo ne dopušta.",
        "tags-delete-not-found": "Oznaka \"$1\" ne postoji.",
+       "tags-delete-too-many-uses": "Oznaka \"$1\" je primjenjena na više od {{PLURAL:$2|revizija|revizijǎ}}, što znači da se ne može obrisati.",
+       "tags-delete-warnings-after-delete": "Oznaka \"$1\" uspješno je obrisana. Međutim, došlo je do {{PLURAL:$2|sljedećeg upozorenja|sljedećih upozorenja}}:",
+       "tags-activate-title": "Aktiviraj oznaku",
+       "tags-activate-question": "Aktivirate oznaku \"$1\".",
        "tags-activate-reason": "Razlog:",
+       "tags-activate-not-allowed": "Nije moguće aktivirati oznaku \"$1\".",
        "tags-activate-not-found": "Oznaka \"$1\" ne postoji.",
+       "tags-activate-submit": "Aktiviraj",
+       "tags-deactivate-title": "Deaktiviraj oznaku",
+       "tags-deactivate-question": "Deaktivirate oznaku \"$1\".",
+       "tags-deactivate-reason": "Razlog:",
+       "tags-deactivate-not-allowed": "Nije moguće deaktivirati oznaku \"$1\".",
+       "tags-deactivate-submit": "Deaktiviraj",
+       "tags-apply-no-permission": "Nemate dopuštenja da dodate izmjenske oznake zajedno s vašim promjenama.",
+       "tags-apply-not-allowed-one": "Oznaka \"$1\" se ne može ručno dodati.",
+       "tags-apply-not-allowed-multi": "{{PLURAL:$2|Sljedeća oznaka ne dozvoljava da se ručno doda|Sljedeće oznake ne dozvoljavaju da se ručno dodaju}}: $1",
+       "tags-update-no-permission": "Nemate dopuštenje da dodate ili uklonite izmjenske oznake sa zasebnih verzija ili zapisničkih unosa.",
+       "tags-update-add-not-allowed-one": "Oznaka \"$1\" se ne može ručno dodati.",
+       "tags-update-add-not-allowed-multi": "{{PLURAL:$2|Sljedeća oznaka ne dozvoljava da se ručno doda|Sljedeće oznake ne dozvoljavaju da se ručno dodaju}}: $1",
+       "tags-update-remove-not-allowed-one": "Oznaka \"$1\" se ne može ručno ukloniti.",
+       "tags-update-remove-not-allowed-multi": "{{PLURAL:$2|Sljedeća oznaka ne dozvoljava da se ručno ukloni|Sljedeće oznake ne dozvoljavaju da se ručno uklone}}: $1",
+       "tags-edit-title": "Uredi oznake",
+       "tags-edit-manage-link": "Upravljaj oznakama",
+       "tags-edit-revision-selected": "{{PLURAL:$1|Izabrana verzija|Izabrane verzije}} od [[:$2]]:",
+       "tags-edit-logentry-selected": "{{PLURAL:$1|Izabran unos zapisnika|Izabrani unosi zapisnika}}:",
+       "tags-edit-revision-legend": "Dodaj ili ukloni oznake sa {{PLURAL:$1|ove verzije|svih $1 verzija}}",
+       "tags-edit-logentry-legend": "Dodaj ili ukloni oznake sa {{PLURAL:$1|ove zapisničke stavke|svih $1 zapisničkih stavki}}",
+       "tags-edit-existing-tags": "Postojeće oznake:",
+       "tags-edit-existing-tags-none": "\"Nema\"",
+       "tags-edit-new-tags": "Nove oznake:",
+       "tags-edit-add": "Dodaj ove oznake:",
+       "tags-edit-remove": "Ukloni ove oznake:",
+       "tags-edit-remove-all-tags": "(ukloni sve oznake)",
+       "tags-edit-chosen-placeholder": "Izaberi neke oznake",
+       "tags-edit-chosen-no-results": "Odgovarajuće oznake nisu pronađene",
+       "tags-edit-reason": "Razlog:",
+       "tags-edit-revision-submit": "Primijeni izmjene {{PLURAL:$1|ovoj verziji|svim $1 verzijama}}",
+       "tags-edit-logentry-submit": "Primijeni izmjene {{PLURAL:$1|ovom zapisničkom unosu|svim $1 zapisničkim unosima}}",
+       "tags-edit-success": "Izmjene su uspješno primijenjene.",
+       "tags-edit-failure": "Nije bilo moguće primijeniti izmjene:\n$1",
+       "tags-edit-nooldid-title": "Neispravna odredišna verzija",
+       "tags-edit-nooldid-text": "Niste izabrali odredišnu verziju na koju treba primijeniti ovu funkciju, ili odredišna verzija na postoji.",
+       "tags-edit-none-selected": "Izaberite bar jednu oznaku koju treba dodati ili ukloniti.",
        "comparepages": "Usporedi stranice",
        "compare-page1": "Stranica 1",
        "compare-page2": "Stranica 2",
        "dberr-problems": "Žao nam je! Ova stranica ima određene tehničke poteškoće.",
        "dberr-again": "Pokušajte pričekati par minuta i zatim osvježiti.",
        "dberr-info": "(ne može se pristupiti bazi podataka: $1)",
+       "dberr-info-hidden": "(Ne mogu pristupiti bazi podataka)",
        "dberr-usegoogle": "U međuvremenu, možete pokušati pretraživanje putem Google.",
        "dberr-outofdate": "Zapamtite da njihovi indeksi našeg sadržaja ne moraju uvijek biti ažurni.",
        "dberr-cachederror": "Sljedeći tekst je keširana kopija zahtijevane stranice, koja možda nije potpuno ažurirana.",
        "htmlform-chosen-placeholder": "Izaberite opciju",
        "htmlform-cloner-create": "Dodaj još",
        "htmlform-cloner-delete": "Ukloni",
+       "htmlform-cloner-required": "Potrebna je barem jedna vrijednost.",
+       "htmlform-title-badnamespace": "[[:$1]] nije u imenskom prostoru \"{{ns:$2}}\".",
+       "htmlform-title-not-creatable": "Stranica \"$1\" se ne može napraviti",
+       "htmlform-title-not-exists": "[[:$1]] ne postoji.",
+       "htmlform-user-not-exists": "<strong>$1</strong> ne postoji.",
+       "htmlform-user-not-valid": "<strong>$1</strong> nije ispravno korisničko ime.",
        "sqlite-has-fts": "$1 sa podrškom pretrage cijelog teksta",
        "sqlite-no-fts": "$1 bez podrške pretrage cijelog teksta",
        "logentry-delete-delete": "$1 {{GENDER:$2|obrisao|obrisala}} je stranicu $3",
        "revdelete-unrestricted": "uklonjena ograničenja za administratore",
        "logentry-block-block": "$1 {{GENDER:$2|blokirao|blokirala}} je {{GENDER:$4|$3}} sa vremenom isticanja blokade od $5 $6",
        "logentry-block-unblock": "$1 {{GENDER:$2|deblokirao|deblokirala}} je {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|promijenio|promijenila}} je postavke za blokiranje {{GENDER:$4|korisnika|korisnice}} {{GENDER:$4|$3}} u trajanju od $5 $6",
        "logentry-suppress-block": "$1 {{GENDER:$2|blokirao|blokirala}} je {{GENDER:$4|$3}} sa vremenom isticanja blokade od $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|promijenio|promijenila}} je postavke za blokiranje {{GENDER:$4|korisnika|korisnice}} {{GENDER:$4|$3}} u trajanju od $5 $6",
+       "logentry-import-upload": "$1 {{GENDER:$2|uvezao|uvezla}} je $3 postavljanjem datoteke",
+       "logentry-import-interwiki": "$1 {{GENDER:$2|uvezao|uvezla}} je $3 s drugog wikija",
+       "logentry-merge-merge": "$1 {{GENDER:$2|spojio|spojila}} je $3 u $4 (sve do izmjene $5)",
        "logentry-move-move": "$1 {{GENDER:$2|premjestio|premjestila}} je stranicu $3 na $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|premjestio|premjestila}} je stranicu $3 na $4 bez ostavljanja preusmjerenja",
        "logentry-move-move_redir": "$1 {{GENDER:$2|premjestio|premjestila}} je stranicu $3 na $4 preko preusmjeravanja",
        "logentry-rights-autopromote": "$1 {{GENDER:$1|je automatski promijenjeno članstvo|su automatski promijenjena članstva}} iz $4 u $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|postavio|postavila}} je $3",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|postavio|postavila}} је novu verziju $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|postavio|postavila}} је $3",
        "log-name-managetags": "Zapisnik upravljanja oznaka",
+       "log-description-managetags": "Ovaj zapisnik sadrži spisak izmjena u vezi [[Special:Tags|oznaka]]. Zapisnik sadrži samo radnje izvršene od strane administratora; unosi za oznake napravljene ili obrisane od strane wiki softvera se ne nalaze u ovom zapisniku.",
+       "logentry-managetags-create": "$1 {{GENDER:$2|napravio|napravila}} je oznaku \"$4\"",
+       "logentry-managetags-delete": "$1 {{GENDER:$2|obrisao|obrisala}} je oznaku \"$4\" (uklonjena je iz $5 {{PLURAL:$5|izmjene ili zapisnika|izmjena i/ili zapisnikǎ}})",
+       "logentry-managetags-activate": "$1 {{GENDER:$2|aktivirao|aktivirala}} je oznaku \"$4\" za upotrebu od strane korisnika i botova",
+       "logentry-managetags-deactivate": "$1 {{GENDER:$2|deaktivirao|deaktivirala}} je oznaku \"$4\" za upotrebu od strane korisnika i botova",
        "log-name-tag": "Zapisnik oznaka",
+       "log-description-tag": "Ova stranica prikazaju kad su korisnici dodali ili ukonili [[Special:Tags|oznake]] s pojedinih verzija ili zapisničkih unosa. Zapisnik ne prikazuje označavačke radnje ako su se dogodile prilikom uređivanja, brisanja ili slične radnje.",
+       "logentry-tag-update-add-revision": "$1 {{GENDER:$2|dodao|dodala}} je {{PLURAL:$7|oznaku|oznaka}} $6 verziji $4 stranice $3",
+       "logentry-tag-update-add-logentry": "$1 {{GENDER:$2|dodao|dodala}} je {{PLURAL:$7|oznaku|oznaka}} $6 verziji $5 zapisničkog unosa $3",
+       "logentry-tag-update-remove-revision": "$1 {{GENDER:$2|uklonio|uklonila}} je {{PLURAL:$9|oznaku|oznake}} $8 sa verzije $4 stranice $3",
+       "logentry-tag-update-remove-logentry": "$1 {{GENDER:$2|uklonio|uklonila}} je {{PLURAL:$9|oznaku|oznake}} $8 sa zapisničkog unosa $5 stranice $3",
+       "logentry-tag-update-revision": "$1 {{GENDER:$2|ažurirao|ažurirala}} je oznake na verziji $4 strane $3 ({{PLURAL:$7|dodano}} $6; {{PLURAL:$9|uklonjeno}} $8)",
+       "logentry-tag-update-logentry": "$1 {{GENDER:$2|ažurirao|ažurirala}} je oznake na zapisničkom unosu $5 strane $3 ({{PLURAL:$7|dodano}} $6; {{PLURAL:$9|uklonjeno}} $8)",
        "rightsnone": "(nema)",
        "revdelete-summary": "sažetak",
        "feedback-adding": "Dodajem povratne informacije na stranicu...",
        "feedback-bugornote": "Ako ste spremni detaljno opisati tehnički problem, molimo [$1 prijavite \"bug\" (grešku)].\nInače, možete ispuniti jednostavan obrazac ispod. Vaš komentar bit će dodan na stranicu \"[$3 $2]\" zajedno s Vašim korisničkim imenom.",
        "feedback-cancel": "Odustani",
        "feedback-close": "Završeno",
+       "feedback-external-bug-report-button": "Podnesi tehnički zadatak",
        "feedback-dialog-title": "Pošalji povratne informacije",
+       "feedback-dialog-intro": "Možete koristiti jednostavni formular ispod kako biste poslali povratne informacije. Vaš komentar će biti dodan stranici \"$1\" zajedno s vašim korisničkim imenom.",
        "feedback-error-title": "Greška",
        "feedback-error1": "Greška: Neprepoznati rezultat od API",
        "feedback-error2": "Greška: Uređivanje nije uspjelo",
        "feedback-error3": "Greška: Nema odgovora od API",
+       "feedback-error4": "Greška: Ne može se postaviti na dati naslov",
        "feedback-message": "Poruka:",
        "feedback-subject": "Tema:",
        "feedback-submit": "Pošalji",
+       "feedback-terms": "Shvatam da moje korisničko agentske informacije sadrže tačne informacije o pregledniku i verziji operativnog sistema i da će javno biti podijeljene zajedno s mojim povratnim informacijama.",
+       "feedback-termsofuse": "Slažem se da ću pružati povratne informacije u skladu s Uslovima korištenja.",
        "feedback-thanks": "Hvala! Vaša povratna informacija postavljena je na stranicu \"[$2 $1]\".",
        "feedback-thanks-title": "Hvala!",
+       "feedback-useragent": "Korisnički agent:",
        "searchsuggest-search": "Traži",
        "searchsuggest-containing": "sadrži...",
        "api-error-badaccess-groups": "Nemate ovlasti da postavljate datoteke na ovoj wiki.",
        "api-error-overwrite": "Pisanje preko postojeće datoteke nije dopušteno.",
        "api-error-stashfailed": "Unutrašnja greška: server nije mogao da spremi privremenu datoteku.",
        "api-error-publishfailed": "Unutrašnja greška: Server nije uspio objaviti privremenu datoteku.",
+       "api-error-stasherror": "Dogodila se greška pri postavljaju datoteke u skladište.",
+       "api-error-stashedfilenotfound": "Skladištena datoteka nije pronađena pri pokušaju postavljanja iste iz skladišta.",
+       "api-error-stashpathinvalid": "Putanja na kojoj je trebala biti skladištena datoteka je neispravna.",
+       "api-error-stashfilestorage": "Dogodila se greška pri postavljaju datoteke u skladište.",
+       "api-error-stashzerolength": "Server nije mogao skladištiti datoteku jer joj je veličina iznosila 0.",
+       "api-error-stashnotloggedin": "Morate biti prijavljeni kako biste sačuvali datoteke u skladište postavljanja.",
+       "api-error-stashwrongowner": "Datoteka kojoj ste pokušali pristupiti u skladištu ne pripada vama.",
+       "api-error-stashnosuchfilekey": "Datotečni ključ kome ste pokušali pristupiti u skladištu ne pripada vama.",
        "api-error-timeout": "Server nije odgovorio unutar očekivanog vremena.",
        "api-error-unclassified": "Desila se nepoznata greška",
        "api-error-unknown-code": "Nepoznata greška: \"$1\"",
        "duration-centuries": "$1 {{PLURAL:$1|vijek|vijeka|vijekova}}",
        "duration-millennia": "$1 {{PLURAL:$1|milenij|milenija}}",
        "rotate-comment": "Slika rotirana za $1 {{PLURAL:$1|stepen|stepeni}} u smjeru kazaljke na satu",
+       "limitreport-title": "Podaci profiliranja analizatora:",
        "limitreport-cputime": "Vrijeme korištenja CPU",
        "limitreport-cputime-value": "$1 {{PLURAL:$1|sekunda|sekunde|sekundi}}",
        "limitreport-walltime": "Korištenje u realnom vremenu",
        "limitreport-walltime-value": "$1 {{PLURAL:$1|sekunda|sekunde|sekundi}}",
+       "limitreport-ppvisitednodes": "Broj predprocesiranih posjećenih nodova",
+       "limitreport-ppgeneratednodes": "Broj predprocesiranih generiranih nodova",
+       "limitreport-postexpandincludesize": "Nakon proširenja navedi i veličinu",
+       "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|bajt|bajta|bajtova}}",
+       "limitreport-templateargumentsize": "Veličina stavke šablona",
+       "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bajt|bajta|bajtova}}",
+       "limitreport-expansiondepth": "Najveća dubina proširenja",
+       "limitreport-expensivefunctioncount": "Broj funkcije ekspenzivnog analizatora",
        "expandtemplates": "Proširi šablone",
        "expand_templates_intro": "Ova posebna stranica uzima neki tekst i proširuje sve šablone u njemu rekurzivno.\nOna također proširuje parserske funkcije poput\n<code><nowiki>{{</nowiki>#language:…}}</code> i varijable poput\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>. U principu proširuje gotovo sve između dvostrukih zagrada.",
        "expand_templates_title": "Naslov konteksta, za {{FULLPAGENAME}} itd.:",
-       "expand_templates_input": "Tekst unosa:",
+       "expand_templates_input": "Unos:",
        "expand_templates_output": "Rezultat",
        "expand_templates_xml_output": "XML izlaz",
+       "expand_templates_html_output": "Sirov HTML prikaz",
        "expand_templates_ok": "U redu",
        "expand_templates_remove_comments": "Ukloni komentare",
        "expand_templates_remove_nowiki": "Onemogući oznake <nowiki> u rezultatima",
        "expand_templates_generate_xml": "Prikaži XML stablo parsera",
        "expand_templates_generate_rawhtml": "Pokaži izvorni HTML",
        "expand_templates_preview": "Pregled",
+       "expand_templates_preview_fail_html": "<em>Pošto stranica {{SITENAME}} ima uključen sirov HTML prikaz, te je bilo gubitka u podacima sesije, pregled je sakriven kao mjera predostrožnosti protiv JavaScript napada.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, molim da ponovo pokušate.</strong>\nAko i dalje ne bude radilo, pokušajte se [[Special:UserLogout|odjaviti]], pa ponovo prijaviti.",
+       "expand_templates_preview_fail_html_anon": "<em>Pošto stranica {{SITENAME}} ima uključen sirov HTML prikaz, a vi se niste prijavili, pregled je sakriven kao mjera predostrožnosti protiv JavaScript napada.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, molim da se [[Special:UserLogin|prijavite]] i pokušate ponovo.</strong>",
+       "pagelanguage": "Odabir jezika stranice",
        "pagelang-name": "Stranica",
        "pagelang-language": "Jezik",
        "pagelang-use-default": "Koristi podrazumijevani jezik",
        "pagelang-select-lang": "Izaberi jezik",
+       "right-pagelang": "promjena jezika stranice",
+       "action-pagelang": "promijenite jezik stranice",
        "log-name-pagelang": "Zapisnik promjene jezika",
+       "log-description-pagelang": "Ovo je zapisnik promjena jezika stranica.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|promijenio|promijenila}} je jezik stranice $3 iz $4 u $5.",
+       "default-skin-not-found": "Ups! Nije dostupna predodređena tema vašeg wikija, koja je definirana u <code dir=\"ltr\">$wgDefaultSkin</code> kao <code>$1</code>.\n\nVaša instalacija sadrži {{PLURAL:$4|sljedeću temu|sljedeće teme}}. Pogledajte [https://www.mediawiki.org/wiki/Manual:Skin_configuration Priručnik: Podešavanje tema] za više informacija o tome kako {{PLURAL:$4|je uključiti|ih uključiti i izabrati predodređenu}}.\n\n$2\n\n; Ako ste upravo instalirali MediaWiki:\n: Vjerovatno ste je instalirali sa gita ili sa izvornog koda koristeći se nekom drugom metodom. Ovo je za očekivati. Pokušajte instalirati neku temu sa [https://www.mediawiki.org/wiki/Category:All_skins kataloga tema] tako što ćete:\n:* Preuzeti [https://www.mediawiki.org/wiki/Download tarball instalacijsku datoteku] koji sadrži nekoliko tema i proširenja. Možete prekopirati folder <code>skins/</code> iz nje.\n:* Preuzeti zasebne instalacijske tarball datoteke sa stranice [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org]. \n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Koristiti Git kako biste preuzeli teme].\n: Ako ste MediaWiki razvijatelj, ovo ne bi trebalo utjecati na vaše git skladište.\n\n; Ako ste upravo nadogradili MediaWiki:\n: MediaWiki 1.24 i više verzije više ne automatski uključuju instalirane teme (pogledajte [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Priručni: Automatski traženje tema]). Možete prekopirati {{PLURAL:$5|sljedeći red kǒda|sljedeće redove kǒda}} u datoteku <code>LocalSettings.php</code> kako biste uključili {{PLURAL:$5|odgovarajuću instaliranu temu|sve instalirane teme}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Ako ste upravo promijenili datoteku <code>LocalSettings.php</code>:\n: Provjerite jeste li napravili grešku pri unosu naziva tema.",
+       "default-skin-not-found-no-skins": "Ups! Nije dostupna predodređena tema vašeg wikija, koja je definirana u <code dir=\"ltr\">$wgDefaultSkin</code> kao <code>$1</code>.\n\nNemate instaliranih tema.\n\n; Ako ste upravo nadogradili MediaWiki:\n: Vjerovatno ste je instalirali sa gita ili sa izvornog koda koristeći se nekom drugom metodom. Ovo je za očekivati. MediaWiki 1.24 i više ne sadržavaju teme u glavnom skladištu. Pokušajte instalirati neku temu sa [https://www.mediawiki.org/wiki/Category:All_skins kataloga tema] tako što ćete:\n:* Preuzeti [https://www.mediawiki.org/wiki/Download tarball instalacijsku datoteku] koji sadrži nekoliko tema i proširenja. Možete prekopirati folder <code>skins/</code> iz nje.\n:* Preuzeti zasebne instalacijske tarball datoteke sa stranice [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org]. \n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Koristiti Git kako biste preuzeli teme].\n: Ako ste MediaWiki razvijatelj, ovo ne bi trebalo utjecati na vaše git skladište.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (uključena)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (isključena)",
+       "mediastatistics": "Statistika datoteka",
+       "mediastatistics-summary": "Statistike o tipovima poslanih datoteka. Ovdje su uračunate samo najnovije verzije datoteka. Stare ili obrisane verzije nisu uračunate.",
+       "mediastatistics-nbytes": "{{PLURAL:$1|$1 bajt|$1 bajt|$1 bajtova}} ($2; $3%)",
+       "mediastatistics-table-mimetype": "MIME tip",
+       "mediastatistics-table-extensions": "Moguća proširenja",
        "mediastatistics-table-count": "Broj datoteka",
        "mediastatistics-table-totalbytes": "Kombinirana veličina",
        "mediastatistics-header-unknown": "Nepoznato",
+       "mediastatistics-header-bitmap": "Bitmap slike",
        "mediastatistics-header-drawing": "Crteži (vektorske slike)",
        "mediastatistics-header-audio": "Zvuk",
        "mediastatistics-header-video": "Videa",
        "mediastatistics-header-text": "Tekstualno",
        "mediastatistics-header-executable": "Izvršni",
        "mediastatistics-header-archive": "Kompresovani formati",
+       "json-warn-trailing-comma": "$1 {{PLURAL:$1|prateća tačka uklonjena je|pratećih tački uklonjeno je}} iz JSON-a",
+       "json-error-unknown": "Dogodio se problem s JSON-om. Greška: $1",
+       "json-error-depth": "Prekoračena je maksimalna dubina",
+       "json-error-state-mismatch": "Nevažeći ili pokvareni JSON",
+       "json-error-ctrl-char": "Greška kontrolnog simbola, moguće je da je neispravno enkodiran",
        "json-error-syntax": "Sintaksna greška",
+       "json-error-utf8": "Pokvareni UTF-8 znaci, moguće je da su neispravno enkodirani",
+       "json-error-recursion": "Jedna ili više rekurzivnih referenci u iznosu koga treba enkodirati",
+       "json-error-inf-or-nan": "Jedna ili više NAN ili INF vrijednosti u iznosu koga treba enkodirati",
+       "json-error-unsupported-type": "Data je vrijednost vrste koja se ne može enkodirati",
+       "headline-anchor-title": "Veza do ovog odjeljka",
        "special-characters-group-latin": "Latinica",
        "special-characters-group-latinextended": "Prošireni latinski",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-greek": "Grčki",
        "special-characters-group-cyrillic": "Ćirilica",
        "special-characters-group-arabic": "Arapski",
+       "special-characters-group-arabicextended": "Prošireni arapski",
        "special-characters-group-persian": "Perzijski",
        "special-characters-group-hebrew": "Hebrejski",
        "special-characters-group-bangla": "Bangladeški",
+       "special-characters-group-tamil": "Tamilski",
        "special-characters-group-telugu": "Telugu",
        "special-characters-group-sinhala": "Sinhala",
        "special-characters-group-gujarati": "Gujarati",
+       "special-characters-group-devanagari": "Devanagari",
        "special-characters-group-thai": "Tajlandski",
        "special-characters-group-lao": "Laoški",
-       "special-characters-group-khmer": "Kmerski"
+       "special-characters-group-khmer": "Kmerski",
+       "special-characters-title-endash": "crtica",
+       "special-characters-title-emdash": "duga crta",
+       "special-characters-title-minus": "minus",
+       "mw-widgets-titleinput-description-new-page": "stranica još ne postoji",
+       "mw-widgets-titleinput-description-redirect": "preusmjerava na $1"
 }
index 511d8af..f171f04 100644 (file)
        "rollback-success": "Edicions revertides de $1; s'ha canviat a la darrera versió de $2.",
        "sessionfailure-title": "Error de sessió",
        "sessionfailure": "S'ha produït un error amb la vostra sessió. S'ha anul·lat aquesta acció en prevenció de pirateig de sessió. Premeu «Torna», recarregueu la pàgina des d'on veniu i torneu-ho a intentar.",
+       "changecontentmodel-legend": "Canvia el model de contingut",
        "changecontentmodel-title-label": "Títol de la pàgina",
        "changecontentmodel-model-label": "Nou model de contingut",
        "changecontentmodel-reason-label": "Motiu:",
+       "changecontentmodel-success-title": "S'ha canviat el model de contingut",
+       "changecontentmodel-success-text": "S'ha canviat el tipus de contingut de [[:$1]].",
+       "changecontentmodel-cannot-convert": "El contingut a [[:$1]] no es pot convertir a un tipus de $2.",
+       "changecontentmodel-nodirectediting": "El model de contingut $1 no permet l'edició directa",
+       "log-name-contentmodel": "Registre de canvis del model de contingut",
+       "log-description-contentmodel": "Esdeveniments relacionats amb els models de contingut d'una pàgina",
        "logentry-contentmodel-change-revertlink": "reverteix",
        "logentry-contentmodel-change-revert": "reverteix",
        "protectlogpage": "Registre de protecció",
        "htmlform-title-badnamespace": "[[:$1]] no es troba en l'espai de noms \"{{ns:$2}}\".",
        "htmlform-title-not-creatable": "\"$1\" és un títol de pàgina no editable",
        "htmlform-title-not-exists": "[[:$1]] no existeix.",
+       "htmlform-user-not-exists": "<strong>$1</strong> no existeix.",
+       "htmlform-user-not-valid": "<strong>$1</strong> no és nom d'usuari vàlid.",
        "sqlite-has-fts": "$1, amb suport de búsqueda de text íntegre",
        "sqlite-no-fts": "$1, sense supor de búsqueda de text íntegre",
        "logentry-delete-delete": "$1 {{GENDER:$2|ha esborrat}} la pàgina $3",
        "special-characters-group-khmer": "Khmer",
        "special-characters-title-endash": "guió curt",
        "special-characters-title-emdash": "guió llarg",
-       "special-characters-title-minus": "signe menys"
+       "special-characters-title-minus": "signe menys",
+       "mw-widgets-titleinput-description-new-page": "la pàgina no existeix encara",
+       "mw-widgets-titleinput-description-redirect": "redirigeix a $1"
 }
index e20c3eb..b549ee0 100644 (file)
        "changecontentmodel-success-title": "Model obsahu byl změněn",
        "changecontentmodel-success-text": "Model obsahu stránky [[:$1]] byl změněn.",
        "changecontentmodel-cannot-convert": "Obsah stránky [[:$1]] nelze zkonvertovat na typ $2.",
-       "changecontentmodel-title-cantexist": "Pod názvem $1 nemůže být stránka.",
        "changecontentmodel-nodirectediting": "Model obsahu $1 nepodporuje přímou editaci",
        "log-name-contentmodel": "Kniha změny modelů obsahu",
        "log-description-contentmodel": "Události týkající se modelů obsahu stránek",
index 4176884..eb805a7 100644 (file)
        "changecontentmodel-success-title": "Das Inhaltsmodell wurde geändert",
        "changecontentmodel-success-text": "Der Inhaltstyp von [[:$1]] wurde geändert.",
        "changecontentmodel-cannot-convert": "Der Inhalt von [[:$1]] kann nicht zum Typ $2 konvertiert werden.",
-       "changecontentmodel-title-cantexist": "Auf $1 ist keine Seite möglich.",
        "changecontentmodel-nodirectediting": "Das Inhaltsmodell „$1“ unterstützt keine direkten Bearbeitungen",
        "log-name-contentmodel": "Inhaltsmodell-Änderungs-Logbuch",
        "log-description-contentmodel": "Ereignisse bezüglich den Inhaltsmodellen einer Seite",
        "specialpages-group-spam": "Spam-Werkzeuge",
        "specialpages-group-developer": "Entwicklerwerkzeuge",
        "blankpage": "Leere Seite",
-       "intentionallyblankpage": "Diese Seite ist absichtlich ohne Inhalt. Sie wird für Benchmarks verwendet.",
+       "intentionallyblankpage": "Diese Seite enthält absichtlich keinen Inhalt.",
        "external_image_whitelist": " #Diese Zeile nicht verändern.<pre>\n#Untenstehend können Fragmente regulärer Ausdrücke (der Teil zwischen den //) eingegeben werden.\n#Diese werden mit den URLs von Bildern aus externen Quellen verglichen.\n#Ein positiver Vergleich führt zur Anzeige des Bildes, andernfalls wird das Bild nur als Link angezeigt.\n#Zeilen, die mit einem # beginnen, werden als Kommentar behandelt.\n#Es wird nicht zwischen Groß- und Kleinschreibung unterschieden.\n\n#Fragmente regulärer Ausdrücke nach dieser Zeile eintragen. Diese Zeile nicht verändern.</pre>",
        "tags": "Gültige Änderungsmarkierungen",
        "tag-filter": "[[Special:Tags|Markierungs]]-Filter:",
index e9fca76..b498129 100644 (file)
        "viewsource-title": " $1 को स्रोत हेर",
        "actionthrottled": "कार्य रोकिईयो",
        "viewyourtext": "यै पानामी रह्याका '''तमरा सम्पादनहरू''' हेद्द या प्रतिलिपी गद्द सक्द्या हौ :",
+       "editinginterface": "<strong>चेतावनी:</strong> तमी यै पानालाई सम्पादन गद्द लाग्याछौ, जनले सफ्टवेयरको लागि \nइन्टरफेस सामग्रीहरू प्रदान गरन्छ।\nयै पानामी गरियाको परिवर्तनले यै विकिमी अरु प्रयोगकर्तानको इन्टरफेसको प्रदर्शनमी प्रभाव पडन्छ ।",
        "namespaceprotected": "तमलाई '''$1'''  नेमस्पेसमी रह्याका पानाहरू सम्पादन गद्या अनुमति छैन ।",
        "exception-nologin": "प्रवेश (लग ईन) नगरिएको",
        "virus-scanfailed": "जँचाई असफल(कोड $1)",
        "userlogin-resetlink": "प्रवेश सम्बन्धी विवरणहरू बिसरया भयो?",
        "userlogin-resetpassword-link": "पासवर्ड भुलिगया?",
        "userlogin-helplink2": "प्रवेश गद्दलाई सहयोग",
+       "userlogin-loggedin": "तमी {{GENDER:$1|$1}}को रूपमी प्रवेश (लग इन) भइ सक्यौ ।\nअर्को प्रयोगकर्ताको रूपमी प्रवेश (लग इन) गर्न तलको फारम प्रयोग गर ।",
        "userlogin-createanother": "दोसरो खाता खोल",
        "createacct-emailrequired": "इमेल ठेगाना",
        "createacct-emailoptional": "इमेल ठेगाना (ऐच्छिक)",
        "nouserspecified": "प्रयोगकर्ता नाम दिनु अनिवार्य छ।",
        "mailmypassword": "पासवर्ड पूर्वनिर्धारित गर",
        "passwordremindertitle": "{{SITENAME}}का लागि नयाँ अस्थायी पासवर्ड",
+       "passwordremindertext": "कसैले (सायद तमी, IP ठेगाना $1 बाट), {{SITENAME}}($4) को लागि नौलो पासवर्ड अनुरोध गर्या छ । प्रयोगकर्ता \"$2\" को लागि नौलो अस्थायी पासवर्ड \"$3\"तयार पारिया छ । यदि यो तमरो इच्छामी भयाको भया अहिले तमीले लगइन गरीबर नौलो पासवर्ड छान्नु पड्ड्या हुन्छ ।\nतमरो अस्थायी पासवर्ड  {{PLURAL:$5|एक दिन|$5 दिनहरू पछि}} अमान्य हुन्याछ ।\n\nयदि कोही अरुले नै अनुरोध गर्याको हो भण्या , या तमीले आफ्नो पासवर्ड सम्झ्यौ भण्या, अथवा\nत्यैलाई परिवर्तन गर्न चाहन्नौ भण्या, तमीले यो सन्देसको वेवास्ता गद्दसक्द्याहौ र पुरानै पासवर्ड प्रयोग गरिरहन सक्द्याहौ ।",
+       "blocked-mailpassword": "तमरो IP ठेगानालाई सम्पादन गद्द बठे रोक लगायाको छ, र त्यसैले दुरुपयोग रोक्दाको लागि प्रवेसशब्द पुनर्लाभ प्रक्रिया प्रयोग गद्या अनुमति छैन ।",
        "mailerror": " चिठी :$1 पठाउँदा गल्ती भयो",
+       "noemailprefs": "निम्न सुविधाहरू राम्डरी काम गद्दको लागि तमरो रोजाईमी आफ्नो ई-मेल ठेगाना खुलाओ ।",
        "emailconfirmlink": "तमरो ई-मेल ठेगाना पक्का गर",
+       "cannotchangeemail": "यै विकिमी तमरो खातासँग सम्बन्धित इमेल ठेगाना परिवर्तन गद्द नाइ सकिंदो ।",
        "emaildisabled": "ये साइटले इमेलहरू पठाउन सक्दैन।",
        "accountcreated": "खाता खोलिईयो",
        "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|वार्ता]])$1 प्रयोगकर्ताको लागि खाता खोलिइया छ ।",
        "createaccount-title": "{{SITENAME}}कोलागि खाता खोल्ने काम",
+       "createaccount-text": "कसैले तमरो इमेल ठेगानालाई {{SITENAME}} ($4) मी \"$2\" नामको खाता बनायाको छ, जैको पासवर्ड \"$3\" छ ।\nअब तमी तुरुन्त लगइन गरिबर आफ्नो पासवर्डशब्द परिवर्तन गर ।\nयदी यो खाता गल्तिले खोलियाको रहेछ भण्या तम यै सन्देशलाई बेवास्ता गद्द सक्द्याहौ ।",
+       "login-migrated-generic": "तमरो खाता स्थानान्तरण भयाको छ, र तमरो प्रयोगकर्ता नाम यै विकिमी नाइथि ।",
        "loginlanguagelabel": "भाषा: $1",
        "pt-login": "प्रवेश (लग ईन)",
        "pt-login-button": "प्रवेश",
        "resetpass-no-info": "ये पाना सिधाई हेद्दाई तमले प्रवेश गद्दु पडून्छ ।",
        "resetpass-submit-loggedin": "पासवर्ड परिवर्तन गर",
        "resetpass-submit-cancel": "रद्द",
+       "resetpass-temp-emailed": "तम अस्थाई इमेल कोडले लगइन गर्याछौ ।\nप्रवेश सफल पाड्डका लागि, तमीले यहाँ एक नौलो पासवर्ड राख्नु पड्डेछ:",
        "resetpass-temp-password": "अस्थाइ पासवर्ड",
        "resetpass-abort-generic": "एक्सटेन्सनले पासवर्ड परिवर्तनलाई बन्द गराईया छ ।",
        "passwordreset": "पासवर्ड पूर्वनिर्धारित गर",
        "blankarticle": "<strong>चेतावनी:</strong> तम एक खालि पानाको निर्माण गद्द लाग्याछौ ।\nयदि तमले \"{{int:savearticle}}\" लाई पुनः थिच्यौ भण्या पानो बिना कुनै सामग्री नै निर्मित गरिन्याछ ।",
        "anoneditwarning": "<strong>चेतावनी:</strong> तमले प्रवेश अरेको नाइथिन । तमरो आइपि ठेगाना पाना सम्पादन इतिहासमि दर्ता गरिन्या छ र यो सब्बैले हेद्द सक्कान । यदि तमलाईँ <strong>[$1 लगईन]</strong> वा <strong>[$2 नयाँ खाता बनाउन्या] गर्याभण्या तमबठे गरियाको सम्पादन तमरो प्रयोगकर्तानाममि जोडिन्याछ ।",
        "selfredirect": "<strong>चेतावनी:</strong> तम यै पानालाई आफुमी पुनः निर्देशित गद्द लाग्याछौ ।\nहुनसक्छ तम अनुप्रेषितको लागि गलत लक्ष्य निर्दिष्ट गद्द लाग्याछौ, वा गलत पानाको सम्पादन गद्द लाग्याछौ ।\nतम पुनः एकपल्ट \"{{int:savearticle}}\" क्लिक गद्दाछौ, पुनः निर्देशित तसै लै बनाइन्याछ।",
+       "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}}|administrator]] सँग रोकको बारेमी छलफल गर्न सम्पर्क गर्न सकुन्छौ ।\nतमले  'प्रयोगकर्तालाई इ-मेल गर्ने ' सुविधा मान्य इमेल ठेगाना [[Special:Preferences|account preferences]] मी नखुलाए सम्म प्रयोगगर्न पाउनुहुन्या छैन र येको प्रयोग गर्नबठे रोक लगाइया छैन ।\nतमरो IP ठेगाना $3 को, र रोक्का संख्या #$5.\nकृपया तमरा प्रश्नमी सबै जानकारी खुलाया ।",
        "blockednoreason": "कारण दिइईया नाइँथिन",
        "currentrevisionlink": "अहिलको पुनरावलोकन",
        "cur": "वर्तमान पाना लिङ्क इतिहास",
        "next": "दोसरो",
-       "last": "पल्लिको",
+       "last": "पà¥\88लà¥\8dलिà¤\95à¥\8b",
        "page_first": "पैल्लो",
        "page_last": "छाड्डीबारको",
        "histlegend": "अन्तर चयन:संशोधनहरूको तुलनाको लागि रेडियो बाकसमी क्लिक गरिबर इण्टर गर अथवा तल दियाको बटनमी थिच <br />\nलिजेंड: (चालू): '''({{int:cur}})''' = अवतरणको बीचमी अन्तर, '''({{int:last}})''' = पैल्लीका अवतरणको बीचमी अन्तर, '''{{int:minoreditletter}}''' = नानो परिवर्तन।",
        "timezoneregion-australia": "अष्ट्रेलिया",
        "timezoneregion-indian": "हिन्द महासागर",
        "prefs-files": "फाइलहरू",
+       "badsiglength": "तमरो दस्तखत मैथै लामो छ।\nयो $1 {{PLURAL:$1|अक्षर|अक्षरहरू}} भन्दा लामो हुनु हुँदैन ।",
+       "userrights-removed-self": "तमीले सफलतापूर्वक आफ्नो अधिकारहरूलाई मेटायौ । त्यै कारण तमी अब यो पानो हेद्द नाइसक्दा ।",
        "group-user": "प्रयोगकर्ताहरू",
        "group-autoconfirmed": "स्वत स्थापित प्रयोगकर्ताहरू",
        "right-move-subpages": "तिनीहरूको उपपाना सहित पानाको नाम बदल्ने",
        "imagelinks": "फाइलको प्रयोगहरु",
        "linkstoimage": "यै चित्रमी निम्न{{PLURAL:$1|पाना जोडिनान{{PLURAL:$1|}}|$1 पानाहरू जोडिनान्}}:",
        "nolinkstoimage": "यो चित्रसित लिंकभयाकि कोइ पाना नाइथी",
+       "morelinkstoimage": "यै फाइलको [[Special:WhatLinksHere/$1|थप लिंकहरू]] हेर ।",
        "sharedupload-desc-here": "यो फाइल $1 बठे हो र और  परियोजनाहरू बठे पन प्रयोग गद्द सकिन्याछ । \nताखाइ यैको [$2 फ़ाइल विवरण पानो]मि रयाका विवरण तल्तिर दियाको छ।",
        "upload-disallowed-here": "तमलाई यो फाइल अधिलेखन गद्द नाइसक्का ।",
        "filedelete-maintenance": "रखरखाव चलिरह्याको हुनाले अस्थायी रुपमी फाइलहरू मेट्ट्या र मेट्याकोलाई पुनर्बहाली गर्न निष्क्रिय गरियाकोछ।",
        "statistics-users-active": "सक्रिय प्रयोगकर्ताहरू",
        "statistics-users-active-desc": "प्रयोगकर्ताहरू जो {{PLURAL:$1|बितेको एक दिन|बितेका $1 दिनहरू}} बठे सक्रिय छन्",
        "nbytes": "$1 {{PLURAL:$1|बाइट|बाइटहरू}}",
+       "nlinks": "$1 {{PLURAL:$1|लिंक|लिंकहरू}}",
        "nmembers": "$1 {{PLURAL:$1|सदस्य|सदस्यहरू}}",
        "ntransclusions": "$1 {{PLURAL:$1पानामी प्रयोग भयाको|पनाहरूमी प्रयोग भयाका}}",
        "uncategorizedimages": "श्रेणीकरण नभयाका फाइलहरू",
        "emailpagetext": "तल दियाको फार्मले तमी यै {{GENDER:$1|प्रयोगकर्ता}}लाई इमेल पठाउन सक्द्या हौ । तमीले जो ठेगाना [[Special:Preferences|आफ्नो प्रयोगकर्ता रोजाईहरू]]मी दियाका छियौ त्यो यै इमेललाई \"पठाउने\" को रूपमी आउन्याछ, अतः प्राप्तकर्ता तमीलाई सिधै जवाफ दिनसक्द्याछ ।",
        "usermaildisabledtext": "यै विकिमी तम और प्रयोगकर्तानलाई ई-मेल पठाउन नाइसक्दा",
        "mywatchlist": "मेरो ध्यान सूची",
+       "nowatchlist": "तमरो ध्यान सूचीमी कोइ लै सामाग्री नाइथिन् ।",
+       "watchlistanontext": "कृपया तमरो ध्यान सूची हेद्द या सम्पादन गद्द कीलाइ लगइन गर ।",
+       "addedwatchtext-short": "\"$1\" पानो तमरो ध्यान सूचीमी जोडियाको छ ।",
+       "removedwatchtext": "\"[[:$1]]\" नामको पानो [[Special:Watchlist|तमरो ध्यान सूची]]बठे हटायाको छ।",
        "watch": "ध्यान राख",
        "watchthispage": "यै पानाको ध्यान राख",
        "unwatch": "ध्यान हटाओ",
        "unwatchthispage": "ध्यान हटाओ",
        "notanarticle": "सामाग्री छैन",
+       "watchlist-details": "तमरो ध्यान सूचीमी रहेका {{PLURAL:$1|$1 पाना|$1 पानाहरू}} कुरडी पाना गनियाका छैनन्।",
        "enotif_reset": "सब्बै पानाहरू हेर्याको भनी चिनो लाउन्या",
        "enotif_body": "प्रिय $WATCHINGUSERNAME,\n\n\n{{SITENAME}}को पाना $PAGETITLE  $PAGEEDITDATE का दिन $PAGEEDITOR द्वारा $CHANGEDORCREATED, \nअहिलको संशोधनको निउती हेर  $PAGETITLE_URL ।\n\n$NEWPAGE\n\nसम्पादकको सारांश: $PAGESUMMARY $PAGEMINOREDIT\n\nसम्पादकसित सम्पर्क राख:\nमेल: $PAGEEDITOR_EMAIL\nविकि: $PAGEEDITOR_WIKI\n\nतमी यै पानामी नगयासम्म अब उसो कुनै परिवर्तन भयाका खण्डमी कुनै सूचना दिन्याछैन ।\nतमरा सम्पूर्ण ध्यान सूचीका पानानको लागि तमीले सूचना पताकालाई ध्यान सूचीमी पुनर्बहाली गद्द सक्द्या हौ । \n\n             तमरो मित्र {{SITENAME}} सूचना प्रणाली\n--\nइमेल सूचना व्यवस्था परिवर्तन गद्द, जाओ\n{{canonicalurl:{{#special:Preferences}}}}\n\nध्यान सूची व्यवस्थित गर्न, जाओ\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nध्यान सूची मेट्न, जाओ\n$UNWATCHURL\n\nप्रतिक्रिया र अन्य सहयोगका निउती:\n$HELPPAGE",
        "confirmdeletetext": "तमी यो पानो र यैको इतिहास मेट्ट लाग्याछौ । कृपया पुष्टि गर कि [[{{MediaWiki:Policy-url}}|नियम]] मुताबिक तम मेट्ट लाग्याछौ।",
        "isimage": "फाइल लिङ्क",
        "whatlinkshere-prev": "{{PLURAL:$1|पैलो|पैलो $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|अर्को|अर्को $1}}",
-       "whatlinkshere-links": "â\86\90 à¤²à¤¿à¤\82à¤\95हरà¥\81",
+       "whatlinkshere-links": "â\86\90 à¤²à¤¿à¤\82à¤\95हरà¥\82",
        "whatlinkshere-hideredirs": "$1 अनुप्रेषित हुन्छ",
        "whatlinkshere-hidetrans": "$1 पारदर्शन",
        "whatlinkshere-hidelinks": "$1 लिङ्कहरु",
+       "whatlinkshere-hideimages": "$1 फाइल लिंकहरू",
        "whatlinkshere-filters": "छानियाका",
        "ipbreason-dropdown": "* ब्लक गर्नुका समान्य कारणहरू\n** झूटो सूचना दियाको\n** पानानबठे सामाग्रीहरू हटायाको\n** बाहिरी जालक्षेत्र (sites)सित नचाहिंदो लिङ्क गर्याको \n** पानानमी बकवास/गाली-गलौच हाल्याको\n** भै धेकाउने व्यवहार/उत्पीडन (सताउने कार्य) गर्याको\n** धेरै गलत खाताहरू बनायाको\n** प्रयोगकर्ता नाम अस्वीकार्य",
        "ipboptions": "२ घण्टाहरू:2 hours,१ दिन :1 day,३ दिनहरू:3 days,१ हप्ता:1 week,२ हप्ताहरू:2 weeks,१ महिना:1 month,३ महिनाहरू:3 months,६ महिनाहरू:6 months,१ वर्ष:1 year,अनगिन्ती:infinite",
        "blocklink": "रोक्न्या",
        "contribslink": "योगदानहरू",
        "block-log-flags-anononly": "नाम नभयाका प्रयोकर्ताहरू मात्र",
+       "proxyblockreason": "तमरो IP ठेगानामी रोक लगायाको छ किनकी यो खुला प्रोक्सी हो ।\nकृपया तमरो इन्टरनेट सेवा प्रदायक या प्राविधिक सहायतासँग सम्पर्क गरीबर यै सुरक्षा समस्याका बारेमी जानकारी गराओ ।",
+       "sorbsreason": "तमरो IP ठेगाना खुल्ला प्रोक्सीको रुपमी  DNSBL मा सूचीकरण गरिएको छ यैलाई{{SITENAME}}ले प्रयोगमी ल्यायाको छ।",
        "xffblockreason": "एउटा आइपि ठेगाना जुन X-Forwarded-For हेडरमी रह्याको छ, या त तमरो हो वा त्यै प्रक्सी सर्भरको हो जैको प्रयोग तमी गद्दा छौ रे यै माथि प्रतिबन्ध लगाइयाको छ । वास्तविक कारण थ्यो:$1",
        "ipbblocked": "तमी अरु प्रयोगकर्तानहरूलाई ब्लक गर्न वा उनीहरूको ब्लक खोल्न नाइसक्दा किनभने तमी आफै ब्लक भयाका छौ ।",
+       "ipbnounblockself": "तमी आफुलाई आफै अनब्लक गद्द नाइ सक्दा ।",
        "lockdbtext": "डेटाबेसमी ताला लगाउनाले सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो रौजाईमी परिवर्तन, आफ्नो ध्यानसूचीमी सम्पादन, र अन्य वस्तु जैको लागि डेटाबेसमी परिवर्तन गरें हुन्छ, त्यैबठे वन्चित हुन्याछ । कृपया यो सुनिश्चित गर कि तम यो गर्न चाहन्छौ, र तम रक्षण पश्चात ताला खोल्न्या हौ ।",
        "movepagetext-noredirectfixer": "तल दियाको फारमले पानाको नाम परिवर्तन गद्याछ, उइको सबै इतिहास पनि नयाँ नामले धेकिन्याछ ।\nपुरानो शीर्षक नयाँ नाममी अनुप्रेषण गद्याछ ।\nमूल शीर्षक तर्फ लिएर जान्या सबै अनुप्रेषणहरूलाई तम स्वचालित रूपले परिवर्तन गद्द सक्द्या हौ ।\nयदि तम यसो नाइ गद्या भया कृपया [[Special:DoubleRedirects|दोहोरो]] पुनर्निर्देशन वा [[Special:BrokenRedirects|टुटेको पुनर्निर्देशन]]का लागि पक्कै जाँच गर ।\nलिङ्क आफ्नो स्थानमै रहोस्, यो सुनिश्चित गर्ने जिम्मेवारी तमरो हो ।\n\nयदि नयाँ शीर्षकको लेख पहिले देखि छ भण्या नाम परिवर्तन '''हुन''' सक्दैन । तर यदि नयाँ शीर्षक भयाको लेख खाली छ अथवा कतै अन्य स्थानमी अनुप्रेषित गद्दैछ र साथै उइको पुरानो संस्करण छैन भण्या त्यैको नाम परिवर्तन हुन्याछ ।\nयैको अभिप्राय यो हो कि यदि तमीबठे गल्ती भयाको छ भण्या तम फेरी पुरानो नाममी यस पानालाई सार्न सक्द्याछौ, र साथै तम कुनै पहिली बठे रह्याको पानाको सट्टा यो स्थानान्तरण गद्द सक्द्या हौन ।\n\n<strong>चेतावनी!<strong>\nयदि पानो खासै लोकप्रिय छ भण्या त्यैको लागि यो एउटा ठुलो र अकस्मात परिवर्तन हुन सक्छ;\nअगाडी बढ्नु भन्ना पहिली तमी यैको नतिजासँग परिचित भयाकाछौ ।",
+       "movenologintext": "पानाको नाम बदल्नको लागि तमी दर्ता गरियाको र [[Special:UserLogin|लगइन गर्याको]] प्रयोगकर्ता हुनुपडन्छ ।",
        "cant-move-user-page": "तमसँग प्रयोगकर्ता पानाहरू साद्या अनुमती नाइथिन् (सहपानाहरू बाहेक)",
        "cant-move-to-user-page": "तमसँग पानाहरूलाई प्रयोगकर्ता पानामी साद्या अनुमती नाइथिन् (प्रयोगकर्ता सहपृष्ठहरूमी बाहेक)",
        "move-subpages": "उप पानाहरू सार्न्या($1 सम्मको)",
        "import-noarticle": "आयात गद्दाकी लाई पानाहरू नाइथिन्",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|संशोधन|संशोधनहरू}} आयात भयो",
        "tooltip-pt-userpage": "तमरो प्रयोगकर्ता पानो",
-       "tooltip-pt-mytalk": "तमरà¥\8b à¤\95à¥\81रणिकानी पानो",
+       "tooltip-pt-mytalk": "तमरà¥\8b à¤\95à¥\81रडà¥\80कानी पानो",
        "tooltip-pt-preferences": "तमरा अभिरुचिहरू",
        "tooltip-pt-watchlist": "पृष्ठहरूको सूची जैका फेरबदलहरुलाई तमले पहरा गरिराखेका छौ ।",
        "tooltip-pt-mycontris": "तमरो योगदानको सूची",
        "patrol-log-header": "गस्ती गर्याका संस्करणहरूको लग यस प्रकार रह्याका छन् ।",
        "previousdiff": "← पुरानो सम्पादन",
        "nextdiff": "नौलो सम्पादन →",
+       "mediawarning": "<storng>चेतावनी</storng>: यै फाइलमी घातक कोडहरू पनि हुनसक्दान\nयैलाई सञ्चालन गद्दा तमरो प्रणालीमी नियन्त्रण गरिन सक्छ ।",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|पानो|पानाहरू}}",
        "file-info-size": "$1 × $2 पिक्सेलहरु, फाइल आकार: $3, MIME प्रकार: $4",
        "file-info-size-pages": "$1 × $2 पिक्सेलहरू, फाइल आकार: $3, MIME प्रकार: $4, $5 {{PLURAL:$5|पानो|पानाहरू}}",
        "exif-orientation-1": "सानतिनो",
        "namespacesall": "सब्बै",
        "monthsall": "सब्बै",
+       "confirmemail_noemail": "तमरो प्रयोगकर्ता [[Special:Preferences|रोजाईमी]] मान्य इमेल ठेगाना राखीयाको छैन ।",
+       "confirmemail_success": "तमरो इमेल ठेगाना प्रमाणिकरण गरियाको छ ।\nअब तमी [[Special:UserLogin|प्रवेश गरी]] विकिको मजा लिन सक्द्याहौ ।",
        "confirmrecreate": "प्रयोगकर्ता [[User:$1|$1]] ([[User talk:$1|कुरडी]])ले  तमले  सम्पादन सुरु गर्यापछि यो पानो मेट्याकाछन् । कारण थ्यो:\n: ''$2''\nकृपया सुनिश्चित गर कि तम यो पानो साँच्चै निर्माण गद्द चाहन्छौ ।",
        "size-bytes": "$1 अक्षरहरू",
        "size-kilobytes": "$1 किलोबाइट",
        "tag-filter": "[[Special:Tags|पुछड]] छानिन्या",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ट्याग|ट्यागहरू}}]]: $2)",
        "tags-hitcount": "$1 {{PLURAL:$1|परिवर्तन|परिवर्तनहरू}}",
+       "tags-create-warnings-below": "क्या तमी यो ट्याग बनाउन्या काम जारी राख्न चाहन्छौ ?",
        "tags-delete-explanation-warning": "यो क्रिया <strong>अपरिवर्तनीय</strong> हो र <strong>त्यसलाई परिवर्तन गर्न नाईसकिंदो</strong>, डेटाबेस प्रवन्धक पनि यैलाई केहि गद्द सक्दाइनन् । विश्वासपूर्ण रूपले तम तय गर कि तमी यै ट्यागलाई हटाउन चाहन्छौ ।",
        "logentry-delete-delete": "$1 बठे पानो $3 {{GENDER:$2|मेटाइयो}}",
        "logentry-move-move": "$1 {{GENDER:$2|द्वारा}} $3 पृष्ठलाई $4 मि सारियो",
        "api-error-duplicate-archive": "यै साइटमी पहिलेबाट यस्तै सामग्री {{PLURAL:$1|भयाको [$2 अर्को फाइल थियो]|भयाका  [$2 केहि अरु फाइलहरू थिए]}} ।\nतर {{PLURAL:$1|यो मेट्याको थियो|यी मेटायाका थिए}} ।",
        "api-error-duplicate-archive-popup-title": "पैल्ली  {{PLURAL:$1|मेट्याको फाइलको|मेट्याका फाइलहरूको}} नकल प्रति बनाउन्या।",
        "api-error-duplicate-popup-title": "{{PLURAL:$1|फाइल|फाइलहरू}} नकल प्रति बनाउन्या",
+       "expand_templates_preview_fail_html": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तमीले लग इन गर्या छैनौ, पूर्वावलोकन लुकाइयाको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्द सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्ववावलोकन प्रयास हो भण्या पुन प्रयास गर ।</strong>\nयदि यसले कार्य पूर्ण भएन भण्या [[Special:UserLogout|लग आउट गरिबर]] फेरी लग इन गर्या ।",
+       "expand_templates_preview_fail_html_anon": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तमीले लग इन गर्या छैनौ, पूर्वावलोकन लुकाइयाको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्द सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्वावलोकन प्रयास हो भण्या कृपया [[Special:UserLogin|लग इन गरिबर]] पुनः प्रयास गर्या ।</strong>",
        "default-skin-not-found": "ओह! तमरो विकिको पूर्व निर्धारित खोल जस्तो कि <code dir=\"ltr\">$wgDefaultSkin</code> मी बताइयाको<code>$1</code>, उपलब्ध नाईथिन् ।\n\nतमरो इन्स्टलेसन यी खोलहरूलाई सम्मिलित गर्दछ {{PLURAL:$4|खोल|खोलहरू}}। हेर [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: खोललाई सम्मिलित गर्नु] ताकि तमीलाई जानकारी होस् कि कसरि {{PLURAL:$4|उसलाई|उसलाई सम्मिलित गर्न सकियोस् र निर्धारितलाई तय गद्दे}}।\n\n$2\n\n; यदि तमीले अहिले मीडियाविकि इन्स्टाल गर्याका छौ:\n: तमीले सम्भवत गिटबठे इन्स्टाल गर्याका छौ, वा सिधै स्रोत कोडबठे गर्याका छौ जैको लागि कुनै अर्कै तारिका प्रयोग गरियाको छ । यो आशा अनुरूप छ । कोशिश गर केहि खोलहरू\n[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's मीडियाविकिको खोल डाइरेक्ट्रीबाट डाउनलोड गद्या], जैको लागि तमी:\n:* डाउनलोड गर [https://www.mediawiki.org/wiki/Download टरबल इन्स्टालर], जुन कयौं खोलहरू र विस्तारमी उपलब्ध छन्। तमी खोलहरूको कोड <code>skins/</code> त्यसको डाइरेक्ट्रीबाट कपी-पेस्ट गद्द सक्द्या हौ। \n:* व्यक्तिगत खोलहरू टरबलबठे डाउनलोड गर\n[https://www.mediawiki.org/wiki/Special:SkinDistributor मीडिया विकि] बठे।\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins गिटको प्रयोग गरेर डाउनलोड गद्द सकन्छौ]।\n: यदि तमी विकासकर्ता हौ भण्या यसो गद्दा तमरो गिट-रिपजिटरीमी केहि हुनुहुँदैन । \n; यदि तमीले अहिले मीडियाविकिलाई अपग्रेड गर्याका छौ:\n: मीडियाविकि १.२४ र यैको नवीन रूप स्वतः रूपले खोलहरूलाई सक्षम गद्दैनन् (हेर [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual:खोलहरूको स्वतः खोज])। तमी निम्नलिखितलाई पेस्ट गद्द सकन्छौ: {{PLURAL:$5|लाइन|लाइनहरू}}  <code>LocalSettings.php</code> मी ताकि {{PLURAL:$5|उसले|सबै}} सक्षम होस् जस्तो कि तमीले इन्स्टाल गर्याको {{PLURAL:$5|खोल|खोलहरू}}को मामिलामी:\n\n<pre dir=\"ltr\">$3</pre>\n\n; यदि तमीले अहिले परिवर्तन गर्याका छौ<code>LocalSettings.php</code>:\n: खोल नामहरूको अगाडी डबल-क्लिक गर जसले तमलाई विभिन्न प्रकारहरूको विकल्प दिन्छ।"
 }
index 1fdd75d..d86100f 100644 (file)
@@ -21,7 +21,7 @@
        "tog-minordefault": "Mark all edits minor by default",
        "tog-previewontop": "Show preview before edit box",
        "tog-previewonfirst": "Show preview on first edit",
-       "tog-enotifwatchlistpages": "Email me when a page or file on my watchlist is changed",
+       "tog-enotifwatchlistpages": "Email me when a page or file on my watchlist is changed",
        "tog-enotifusertalkpages": "Email me when my user talk page is changed",
        "tog-enotifminoredits": "Email me also for minor edits of pages and files",
        "tog-enotifrevealaddr": "Reveal my email address in notification emails",
        "search-category": "(category $1)",
        "search-file-match": "(matches file content)",
        "search-suggest": "Did you mean: $1",
+       "search-rewritten": "Showing results for $1. Search instead for $2.",
        "search-interwiki-caption": "Sister projects",
        "search-interwiki-default": "Results from $1:",
        "search-interwiki-custom": "",
        "statistics-header-users": "User statistics",
        "statistics-header-hooks": "Other statistics",
        "statistics-articles": "Content pages",
+       "statistics-articles-desc": "",
        "statistics-pages": "Pages",
        "statistics-pages-desc": "All pages in the wiki, including talk pages, redirects, etc.",
        "statistics-files": "Uploaded files",
        "watchlistanontext": "Please log in to view or edit items on your watchlist.",
        "watchnologin": "Not logged in",
        "addwatch": "Add to watchlist",
-       "addedwatchtext": "The page \"[[:$1]]\" has been added to your [[Special:Watchlist|watchlist]].\nFuture changes to this page and its associated talk page will be listed there.",
+       "addedwatchtext": "\"[[:$1]]\" and its discussion page have been added to your [[Special:Watchlist|watchlist]].",
        "addedwatchtext-short": "The page \"$1\" has been added to your watchlist.",
        "removewatch": "Remove from watchlist",
-       "removedwatchtext": "The page \"[[:$1]]\" has been removed from [[Special:Watchlist|your watchlist]].",
+       "removedwatchtext": "\"[[:$1]]\" and its discussion page have been removed from your [[Special:Watchlist|watchlist]].",
        "removedwatchtext-short": "The page \"$1\" has been removed from your watchlist.",
        "watch": "Watch",
        "watchthispage": "Watch this page",
        "changecontentmodel-success-title": "The content model was changed",
        "changecontentmodel-success-text": "The content type of [[:$1]] has been changed.",
        "changecontentmodel-cannot-convert": "The content on [[:$1]] cannot be converted to a type of $2.",
-       "changecontentmodel-title-cantexist": "It is not possible to have a page at $1.",
        "changecontentmodel-nodirectediting": "The $1 content model does not support direct editing",
        "log-name-contentmodel": "Content model change log",
        "log-description-contentmodel": "Events related to the content models of a page",
index e39e8ce..e91accf 100644 (file)
        "emptyfile": "El archivo que has intentado subir parece estar vacío; por favor, verifica que realmente se trate del archivo que intentabas subir.",
        "windows-nonascii-filename": "Este wiki no admite nombres de archivo con caracteres especiales.",
        "fileexists": "Ya existe un archivo con este nombre. Comprueba <strong>[[:$1]]</strong> si {{GENDER:|tú}} no estás seguro de querer cambiarlo.\n[[$1|thumb]]",
-       "filepageexists": "La página de descripción de este archivo ya ha sido creada en <strong>[[:$1]]</strong>, pero no existe actualmente ningún fichero con este nombre.\nEl resumen que ha ingresado no aparecerá en la página de descripción. Para que el sumario aparezca, deberá editarlo manualmente.\n[[$1|thumb]]",
+       "filepageexists": "La página de descripción de este archivo ya ha sido creada en <strong>[[:$1]]</strong>, pero no existe actualmente ningún archivo con este nombre.\nEl resumen que has escrito no aparecerá en la página de descripción.\nPara que el resumen aparezca, deberás editarlo manualmente.\n[[$1|thumb]]",
        "fileexists-extension": "Existe un archivo con un nombre similar: [[$2|thumb]]\n* Nombre del archivo que se está subiendo: <strong>[[:$1]]</strong>\n* Nombre del archivo ya existente: <strong>[[:$2]]</strong>\n¿Quieres cambiar el nombre para que sea más distintivo?",
        "fileexists-thumbnail-yes": "El archivo parece ser una imagen de tamaño reducido ''(thumbnail)''. [[$1|thumb]]\nPor favor comprueba el archivo <strong>[[:$1]]</strong>.\nSi el archivo comprobado es la misma imagen a tamaño original no es necesario subir un thumbnail más.",
        "file-thumbnail-no": "El nombre del archivo comienza con <strong>$1</strong>.\nParece ser una imagen de tamaño reducido ''(thumbnail)''.\nSi tiene esta imagen a toda resolución súbala, si no, por favor cambie el nombre del archivo.",
        "backend-fail-stream": "No se pudo transmitir el archivo «$1».",
        "backend-fail-backup": "No pudo hacer copia de seguridad del archivo «$1».",
        "backend-fail-notexists": "El archivo  $1  no existe.",
-       "backend-fail-hashes": "No se pudieron obtener los hashes de los ficheros para compararlos.",
-       "backend-fail-notsame": "Ya existe un fichero distinto en $1.",
+       "backend-fail-hashes": "No se pudieron obtener los \"hashes\" de los archivos para compararlos.",
+       "backend-fail-notsame": "Ya existe un archivo distinto en \"$1\".",
        "backend-fail-invalidpath": "$1 no es una ruta de almacenamiento válida",
        "backend-fail-delete": "No se pudo borrar el archivo «$1».",
        "backend-fail-describe": "No pudieron cambiar los metadatos del archivo \"$1\".",
        "zip-bad": "El archivo es un ZIP dañado o que no se puede leer.\nNo se puede comprobar su seguridad.",
        "zip-unsupported": "El archivo es un archivo que utiliza características ZIP no compatibles con MediaWiki.\nNo puede comprobarse adecuadamente su seguridad.",
        "uploadstash": "Ficheros escondidos",
-       "uploadstash-summary": "Esta página da acceso a los ficheros enviados (o que están en el proceso de envío) pero que aún no han sido publicados en la wiki. Estos ficheros no son visibles para nadie, excepto para el usuario que los envió.",
+       "uploadstash-summary": "Esta página da acceso a los archivos subidos (o que están por subirse), pero que aún no han sido publicados en el wiki. Estos archivos no son visibles para nadie, excepto para el usuario que los subió.",
        "uploadstash-clear": "Borrar los ficheros escondidos",
        "uploadstash-nofiles": "No tienes archivos escondidos.",
        "uploadstash-badtoken": "No se pudo realizar la acción. Es posible que haya finalizado el tiempo de espera de la sesión. Inténtalo de nuevo.",
        "filerevert-defaultcomment": "Revertido a la versión subida el $1 a las $2",
        "filerevert-submit": "Revertir",
        "filerevert-success": "'''[[Media:$1|$1]]''' ha sido revertido a la [$4 versión del $2 a las $3].",
-       "filerevert-badversion": "No existe version local previa de este archivo con esa marca de tiempo.",
+       "filerevert-badversion": "No existe versión local previa de este archivo con esa marca de tiempo.",
        "filedelete": "Borrar $1",
        "filedelete-legend": "Borrar archivo",
        "filedelete-intro": "Estás borrando el archivo '''[[Media:$1|$1]]''' así como todo su historial.",
        "filedelete-comment": "Motivo:",
        "filedelete-submit": "Eliminar",
        "filedelete-success": "'''$1''' ha sido borrado.",
-       "filedelete-success-old": "La version de '''[[Media:$1|$1]]''' del $2 a las $3 ha sido borrada.",
+       "filedelete-success-old": "La versión de <strong>[[Media:$1|$1]]</strong> del $2 a las $3 ha sido borrada.",
        "filedelete-nofile": "'''$1''' no existe.",
        "filedelete-nofile-old": "No existe una versión guardada de '''$1''' con los atributos especificados.",
        "filedelete-otherreason": "Otra razón:",
        "filedelete-maintenance": "Borrado y restauración de archivos temporalmente deshabilitados durante el mantenimiento.",
        "filedelete-maintenance-title": "No se puede eliminar el archivo",
        "mimesearch": "Búsqueda por MIME",
-       "mimesearch-summary": "Esta página permite el filtrado de ficheros por su tipo MIME.\nEntrada: tipo/subtipo o tipo/*, p. ej. <code>image/jpeg</code>.",
+       "mimesearch-summary": "Esta página permite el filtrado de archivos por su tipo MIME.\nEntrada: tipo/subtipo o tipo/*, p. ej. <code>image/jpeg</code>.",
        "mimetype": "Tipo MIME:",
        "download": "descargar",
        "unwatchedpages": "Páginas no vigiladas",
        "pageswithprop": "Páginas con una propiedad de página",
        "pageswithprop-legend": "Páginas con una propiedad de página",
        "pageswithprop-text": "Esta página muestra las páginas que usan la propiedad de una página en particular",
-       "pageswithprop-prop": "Nombre de la propiedad",
+       "pageswithprop-prop": "Nombre de la propiedad:",
        "pageswithprop-submit": "Ir",
        "pageswithprop-prophidden-long": "hay un largo valor en la propiedad texto oculta ($1)",
        "pageswithprop-prophidden-binary": "valor de la propiedad binaria oculta ($1)",
        "wantedpages": "Páginas requeridas",
        "wantedpages-summary": "Lista de páginas inexistentes con el mayor número de enlaces a ellas, excluyendo páginas que son solo redirecciones a ellas. Para ver una lista de páginas inexistentes con redirecciones apuntando a ellas, consulta [[{{#special:BrokenRedirects}}|la lista de redirecciones rotas]].",
        "wantedpages-badtitle": "Título inválido en conjunto de resultados: $1",
-       "wantedfiles": "Ficheros requeridos",
+       "wantedfiles": "Archivos requeridos",
        "wantedfiletext-cat": "Los siguientes archivos están en uso, pero no existen. Es posible que algunos de ellos estén almacenados en repositorios externos y se hayan incluido aquí por error; dichas entradas aparecen <del>tachadas</del>. De igual manera, las páginas que incluyen archivos inexistentes se enumeran en [[:$1]].",
        "wantedfiletext-cat-noforeign": "Los siguientes archivos están en uso, pero no existen. Además, las páginas con archivos que no existen están listadas en [[:$1]].",
        "wantedfiletext-nocat": "Los siguientes archivos están en uso, pero no existen. Es posible que algunos de ellos estén almacenados en repositorios externos y se hayan incluido aquí por error; dichas entradas aparecen <del>tachadas</del>.",
        "notargettitle": "No hay página objetivo",
        "notargettext": "No has especificado sobre qué página deseas llevar a cabo esta acción.",
        "nopagetitle": "No existe la página destino",
-       "nopagetext": "La página destino que ha especificado no existe.",
+       "nopagetext": "La página destino que has especificado no existe.",
        "pager-newer-n": "{{PLURAL:$1|1 siguiente|$1 siguientes}}",
        "pager-older-n": "{{PLURAL:$1|1 anterior|$1 anteriores}}",
        "suppress": "Supresor de ediciones",
        "listusers-blocked": "({{GENDER:$1|bloqueado|bloqueada}})",
        "activeusers": "Lista de usuarios activos",
        "activeusers-intro": "Esta es una lista de usuarios que han tenido alguna actividad en los últimos $1 {{PLURAL:$1|día|días}}.",
-       "activeusers-count": "$1 {{PLURAL:$1|acción|acciones}} en los últimos {{PLURAL:$3|día|$3 días}}",
+       "activeusers-count": "$1 {{PLURAL:$1|acción|acciones}} en {{PLURAL:$3|el último día|los últimos $3 días}}",
        "activeusers-from": "Mostrando a los usuarios empezando por:",
        "activeusers-hidebots": "Ocultar robots",
        "activeusers-hidesysops": "Ocultar administradores",
        "notvisiblerev": "La última revisión de un usuario diferente ha sido borrada",
        "watchlist-details": "{{PLURAL:$1|$1 página|$1 páginas}} en tu lista de seguimiento, sin contar las de discusión.",
        "wlheader-enotif": "La notificación por correo está activada.",
-       "wlheader-showupdated": "Las páginas modificadas desde su última visita aparecen en '''negrita'''.",
+       "wlheader-showupdated": "Las páginas modificadas desde tu última visita aparecen en <strong>negrita</strong>.",
        "wlnote": "A continuación {{PLURAL:$1|se muestra el último cambio|se muestran los últimos '''$1''' cambios}} en {{PLURAL:$2|la última hora|las últimas '''$2''' horas}} a fecha de $4 $3.",
        "wlshowlast": "Ver los cambios de las últimas $1 horas, $2 días",
        "watchlist-options": "Opciones de la lista de seguimiento",
        "changecontentmodel-success-title": "Se cambió el modelo de contenido",
        "changecontentmodel-success-text": "Se ha cambiado el tipo de contenido de [[:$1]].",
        "changecontentmodel-cannot-convert": "El contenido de [[:$1]] no se puede convertir a un tipo de $2.",
-       "changecontentmodel-title-cantexist": "No es posible tener una página en $1.",
        "changecontentmodel-nodirectediting": "El modelo de contenido $1 no admite la edición directa",
        "log-name-contentmodel": "Registro de cambios del modelo de contenido",
        "log-description-contentmodel": "Eventos relacionados con los modelos de contenido de una página",
        "undelete-search-prefix": "Mostrar páginas que empiecen por:",
        "undelete-search-submit": "Buscar",
        "undelete-no-results": "No se encontraron páginas borradas para ese criterio de búsqueda.",
-       "undelete-filename-mismatch": "No se puede restaurar la versión con marca de tiempo $1: No concuerda el nombre de fichero",
-       "undelete-bad-store-key": "No se puede restaurar la versión con marca de tiempo $1: el fichero fue omitido antes del borrado.",
+       "undelete-filename-mismatch": "No se puede restaurar la revisión con marca de tiempo $1: no concuerda el nombre del archivo.",
+       "undelete-bad-store-key": "No se puede restaurar la revisión con marca de tiempo $1: el archivo fue omitido antes del borrado.",
        "undelete-cleanup-error": "Error al borrar el archivo no utilizado \"$1\".",
        "undelete-missing-filearchive": "No se ha podido restaurar el archivo de ID $1 debido a que no está en la base de datos.\nPuede que ya haya sido restaurado.",
        "undelete-error": "Error restaurando la página",
        "lockedbyandtime": "(por {{GENDER:$1|$1}} el $2 a las $3)",
        "move-page": "Trasladar $1",
        "move-page-legend": "Renombrar página",
-       "movepagetext": "Mediante el siguiente formulario puedes renombrar una página, moviendo todo su historial al nombre nuevo.\nEl título anterior redirigirá al nuevo.\nPuedes actualizar automáticamente las redirecciones que apuntan al título original.\nSi eliges no hacerlo, asegúrate de revisar posibles redirecciones [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|rotas]].\nTú eres responsable de asegurar que los enlaces continúen funcionando correctamente.\n\nNota que la página '''no''' se moverá si ya hay una página con el título nuevo, a menos de que ésta sea una redirección y no tenga historial de ediciones pasadas.\nEsto significa que puedes deshacer el renombrado en caso de un error, y que no puedes sobreescribir una página existente.\n\n'''Aviso'''\nEsto puede representar un cambio drástico e inesperado para una página popular;\nasegúrate de entender las consecuencias de esta acción antes de proceder.",
+       "movepagetext": "Mediante el siguiente formulario puedes renombrar una página, moviendo todo su historial al nombre nuevo.\nEl título anterior redirigirá al nuevo.\nPuedes actualizar automáticamente las redirecciones que apuntan al título original.\nSi eliges no hacerlo, asegúrate de revisar posibles redirecciones [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|rotas]].\nTú eres responsable de asegurar que los enlaces continúen funcionando correctamente.\n\nNota que la página <strong>no</strong> se moverá si ya hay una página con el título nuevo, a menos de que ésta sea una redirección y no tenga historial de ediciones pasadas.\nEsto significa que puedes deshacer el renombrado en caso de un error, y que no puedes sobreescribir una página existente.\n\n<strong>Aviso</strong>\nEsto puede representar un cambio drástico e inesperado para una página popular;\nasegúrate de entender las consecuencias de esta acción antes de proceder.",
        "movepagetext-noredirectfixer": "Usando el siguiente formulario se renombrará una página, trasladando todo su historial al nuevo nombre.\nEl título anterior se convertirá en una redirección al nuevo título.\nAsegúrate de no dejar [[Special:DoubleRedirects|redirecciones dobles]] o [[Special:BrokenRedirects|rotas]].\nTú eres responsable de hacer que los enlaces sigan apuntando adonde se supone que deberían hacerlo.\n\nRecuerda que la página '''no''' será renombrada si ya existe una página con el nuevo título, a no ser que sea una página vacía o una redirección sin historial.\nEsto significa que podrás renombrar una página a su título original si has cometido un error, pero que no podrás sobrescribir una página existente.\n\n'''¡Aviso!'''\nEste puede ser un cambio drástico e inesperado para una página popular;\npor favor, asegúrate de entender las consecuencias del procedimiento antes de seguir adelante.",
        "movepagetalktext": "La página de discusión asociada, si existe, será renombrada automáticamente '''a menos que:'''\n*Estés trasladando la página entre espacios de nombres diferentes,\n*Una página de discusión no vacía ya exista con el nombre nuevo, o\n*No marques el recuadro «Renombrar la página de discusión asociada».\n\nEn estos casos, deberás trasladar manualmente el contenido de la página de discusión.",
        "movearticle": "Renombrar página",
        "immobile-source-page": "Esta página no se puede renombrar.",
        "immobile-target-page": "No se puede trasladar a ese título.",
        "bad-target-model": "El destino deseado utiliza un modelo diferente de contenido. No se puede realizar la conversión de $1 a $2.",
-       "imagenocrossnamespace": "No se puede trasladar el fichero a otro espacio de nombres",
-       "nonfile-cannot-move-to-file": "No es posible trasladar lo que no es un archivo al espacio de nombres de archivo",
+       "imagenocrossnamespace": "No se puede trasladar el archivo a un espacio de nombres que no es para archivos.",
+       "nonfile-cannot-move-to-file": "No es posible trasladar lo que no es un archivo al espacio de nombres de archivos.",
        "imagetypemismatch": "La nueva extensión de archivo no corresponde con su tipo",
-       "imageinvalidfilename": "El nombre del fichero de destino no es válido",
+       "imageinvalidfilename": "El nombre del archivo de destino no es válido.",
        "fix-double-redirects": "Actualizar las redirecciones que apuntan al título original",
        "move-leave-redirect": "Dejar una redirección",
        "protectedpagemovewarning": "'''Advertencia:''' Esta página ha sido bloqueada de tal manera que solamente usuarios con privilegios de administrador puedan trasladarla.\nA continuación se muestra la última entrada de registro para referencia:",
        "thumbnail_dest_directory": "Incapaz de crear el directorio de destino",
        "thumbnail_image-type": "Tipo de imagen no contemplado",
        "thumbnail_gd-library": "Configuración de la librería GD incompleta: falta la función $1",
-       "thumbnail_image-missing": "El fichero parece no existir: $1",
+       "thumbnail_image-missing": "El archivo parece no existir: $1",
        "thumbnail_image-failure-limit": "Ha habido muchos intentos recientes ($1 o más) para representar esta miniatura. Inténtalo de nuevo más tarde.",
        "import": "Importar páginas",
        "importinterwiki": "Importar desde otro wiki",
        "importnosources": "No se definieron wikis de los cuales importar y no está permitido subir directamente el historial.",
        "importnofile": "No se subieron archivos de importación.",
        "importuploaderrorsize": "Falló la carga del archivo de importaciones.\nSu tamaño es superior al máximo permitido.",
-       "importuploaderrorpartial": "Falló la subida del fichero de importación.\nSe subió sólo parcialmente.",
-       "importuploaderrortemp": "Falló la subida del fichero de importación.\nNo hay un directorio temporal.",
+       "importuploaderrorpartial": "Falló la subida del archivo de importación.\nSe subió sólo parcialmente.",
+       "importuploaderrortemp": "Falló la subida del archivo de importación.\nNo hay un directorio temporal.",
        "import-parse-failure": "Error de lectura al importar XML",
        "import-noarticle": "¡No hay páginas para importar!",
        "import-nonewrevisions": "Ninguna revisión fue importada (todas ya estaban presentes o fueron omitido debido a errores).",
        "javascripttest-pagetext-unknownaction": "La acción «$1» es desconocida.",
        "javascripttest-pagetext-frameworks": "Por favor, seleccione uno de los marcos de pruebas siguientes: $1",
        "javascripttest-pagetext-skins": "Elige una apariencia con la que ejecutar las pruebas:",
-       "javascripttest-qunit-intro": "Consulte la [$1 documentación sobre las pruebas] en mediawiki.org.",
+       "javascripttest-qunit-intro": "Consulta la [$1 documentación sobre las pruebas] en mediawiki.org.",
        "tooltip-pt-userpage": "Tu página de {{gender:|usuario|usuaria}}",
        "tooltip-pt-anonuserpage": "La página de usuario de la IP desde la que editas",
        "tooltip-pt-mytalk": "Tu página de discusión",
        "filedelete-archive-read-only": "El servidor web no logra escribir en el directorio archivo \"$1\".",
        "previousdiff": "← Edición anterior",
        "nextdiff": "Edición siguiente →",
-       "mediawarning": "'''Atención''': Este fichero puede contener código malicioso.\nEjecutarlo podría comprometer la seguridad de su equipo.",
+       "mediawarning": "<strong>Advertencia:</strong> este archivo puede contener código malicioso.\nEjecutarlo podría comprometer la seguridad de tu equipo.",
        "imagemaxsize": "Límite de tamaño de imagen:<br />''(para páginas de descripción de archivo)''",
        "thumbsize": "Tamaño de las vistas en miniatura:",
        "widthheight": "$1 × $2",
        "newimages": "Galería de imágenes nuevas",
        "imagelisttext": "Debajo hay una lista de <strong>$1</strong> {{PLURAL:$1|archivo ordenado|archivos ordenados}} $2.",
        "newimages-summary": "Esta página especial muestra una galería de los últimos archivos subidos.",
-       "newimages-legend": "Nombre del fichero",
-       "newimages-label": "Nombre del fichero (o una parte):",
+       "newimages-legend": "Filtro",
+       "newimages-label": "Nombre del archivo (o una parte):",
        "newimages-showbots": "Mostrar cargas de bots",
        "noimages": "No hay nada que ver.",
        "ilsubmit": "Buscar",
        "exif-gpsspeed": "Velocidad del receptor GPS",
        "exif-gpstrackref": "Referencia para la dirección del movimiento",
        "exif-gpstrack": "Dirección del movimiento",
-       "exif-gpsimgdirectionref": "Referencia de la dirección de imágen",
+       "exif-gpsimgdirectionref": "Referencia para la dirección de la imagen",
        "exif-gpsimgdirection": "Dirección de imagen",
        "exif-gpsmapdatum": "Utilizados datos de medición geodésica",
        "exif-gpsdestlatituderef": "Referencia para la latitud del destino",
        "version-libraries-authors": "Autores",
        "redirect": "Redirigir por archivo, usuario, página o ID de revisión",
        "redirect-legend": "Redirigir a un archivo o página",
-       "redirect-summary": "Esta página especial redirige a un fichero (dado un nombre de fichero), a una página (dado un identificador de revisión o de página) o a una página de usuario (dado un identificador numérico de usuario). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
+       "redirect-summary": "Esta página especial redirige a un archivo (dado un nombre), a una página (dado un identificador de revisión o de página) o a una página de usuario (dado un identificador numérico de usuario). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] o [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Ir",
        "redirect-lookup": "Buscar:",
        "redirect-value": "Valor:",
        "redirect-user": "Id. del usuario",
        "redirect-page": "Identificador de la página",
        "redirect-revision": "Revisión de página",
-       "redirect-file": "Nombre de fichero",
+       "redirect-file": "Nombre de archivo",
        "redirect-not-exists": "No se encontró el valor",
        "fileduplicatesearch": "Búsqueda de archivos duplicados",
        "fileduplicatesearch-summary": "Búsqueda de archivos duplicados en base a su valor hash.",
        "fileduplicatesearch-legend": "Busca duplicados",
-       "fileduplicatesearch-filename": "Nombre del fichero:",
+       "fileduplicatesearch-filename": "Nombre de archivo:",
        "fileduplicatesearch-submit": "Buscar",
        "fileduplicatesearch-info": "$1 × $2 píxeles<br />Tamaño: $3<br />Tipo MIME: $4",
        "fileduplicatesearch-result-1": "El archivo «$1» no tiene duplicados idénticos.",
        "specialpages-group-spam": "Herramientas anti-SPAM",
        "specialpages-group-developer": "Herramientas para desarrolladores",
        "blankpage": "Página vacía",
-       "intentionallyblankpage": "Esta pagina está en blanco de manera intencionada.",
+       "intentionallyblankpage": "Esta página está en blanco de manera intencionada.",
        "external_image_whitelist": " #Deja esta línea exactamente como está<pre>\n#Colocar fragmentos de expresiones regulares (sólo la parte que va entre los //) debajo\n#Estos coincidirán con los URLs de las imágenes externas (hotlinked)\n#Aquellos que coincidan serán mostrados como imágenes, de lo contrario solamente un vínculo a la imagen será mostrada\n#Las líneas que empiezan por «#» se consideran comentarios\n#Esta es insensible a las mayúsculas\n\n#Colocar todos los fragmentos regex arriba de esta línea. Deja esta línea exactamente como está</pre>",
        "tags": "Etiquetas de cambios",
        "tag-filter": "Filtro de [[Special:Tags|etiquetas]]:",
        "duration-decades": "$1 {{PLURAL:$1|década|décadas}}",
        "duration-centuries": "$1 {{PLURAL:$1|siglo|siglos}}",
        "duration-millennia": "$1 {{PLURAL:$1|milenio|milenios}}",
-       "rotate-comment": "Imagen girada por $1 {{PLURAL:$1|grado|grados}} en el sentido de las agujas del reloj",
+       "rotate-comment": "Imagen girada $1 {{PLURAL:$1|grado|grados}} en sentido horario",
        "limitreport-title": "Datos de perfilado del analizador:",
        "limitreport-cputime": "Tiempo de uso de CPU",
        "limitreport-cputime-value": "$1 {{PLURAL:$1|segundo|segundos}}",
index ff936ad..e8ff399 100644 (file)
        "changecontentmodel-success-title": "Sisumudel on muudetud",
        "changecontentmodel-success-text": "Lehekülje [[:$1]] sisumudel on muudetud.",
        "changecontentmodel-cannot-convert": "Lehekülje [[:$1]] sisumudelit ei saa teisendada tüübiks $2.",
-       "changecontentmodel-title-cantexist": "Lehekülg ei saa olla pealkirja \"$1\" all.",
        "changecontentmodel-nodirectediting": "Sisumudel $1 ei võimalda otseredigeerimist.",
        "log-name-contentmodel": "Sisumudeli muutmislogi",
        "log-description-contentmodel": "Lehekülje sisumudelite muutmisega seotud sündmused",
index 4e6da13..12bc1d8 100644 (file)
        "prefs-rc": "Azken aldaketak",
        "prefs-watchlist": "Jarraipen zerrenda",
        "prefs-editwatchlist": "Aldatu jarraipen-zerrenda",
+       "prefs-editwatchlist-label": "Editatu sarrerak zure jarraipen zerrendan:",
+       "prefs-editwatchlist-edit": "Zure jarraipen zerrendako tituluak ikusi eta kendu",
        "prefs-editwatchlist-clear": "Garbitu zure jarraipen-zerrenda",
        "prefs-watchlist-days": "Jarraipen zerrendan erakutsi beharreko egun kopurua:",
        "prefs-watchlist-days-max": "Gehienez $1 {{PLURAL:$1|egun|egun}}",
        "action-viewmywatchlist": "zure jarraipen zerrenda ikusi",
        "action-viewmyprivateinfo": "zure informazio pribatua ikusi",
        "action-editmyprivateinfo": "zure informazio pribatua aldatu",
+       "action-managechangetags": "Etiketak sortu eta ezabatu datu basean",
        "nchanges": "{{PLURAL:$1|aldaketa 1|$1 aldaketa}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|azkeneko bisitatik}}",
        "enhancedrc-history": "historia",
        "randomincategory-invalidcategory": "\"$1\" ez da kategoria izen baliagarri bat.",
        "randomincategory-nopages": "Ez dago orrialderik [[:Category:$1|$1]] kategorian.",
        "randomincategory-category": "Kategoria:",
+       "randomincategory-legend": "Kategoriako ausazko orrialdea",
        "randomincategory-submit": "Joan",
        "randomredirect": "Ausazko birbideratzea",
        "randomredirect-nopages": "Ez dago birzuzenketarik \"$1\" izen-tartean.",
        "listgrouprights-removegroup-all": "Talde guztiak kendu daitezke",
        "listgrouprights-addgroup-self-all": "Talde guztiak norbere kontura gehitu",
        "listgrouprights-removegroup-self-all": "Talde guztiak norbere kontutik ezabatu",
+       "listgrouprights-namespaceprotection-namespace": "Izen-tartea",
+       "trackingcategories-disabled": "Kategoria desgaitua dago",
        "mailnologin": "Bidalketa helbiderik ez",
        "mailnologintext": "Beste erabiltzaileei e-posta mezuak bidaltzeko [[Special:UserLogin|saioa hasi]] eta baliozko e-posta helbidea behar duzu izan zure [[Special:Preferences|hobespenetan]].",
        "emailuser": "Erabiltzaile honi e-posta bidali",
        "mywatchlist": "Jarraipen zerrenda",
        "watchlistfor2": "$1 ($2)",
        "nowatchlist": "Zure jarraipen zerrenda hutsik dago.",
-       "watchlistanontext": "Mesedez $1 zure jarraipen zerrendako orrialdeak ikusi eta aldatu ahal izateko.",
+       "watchlistanontext": "Mesedez saioa hasi zure jarraipen zerrendako orrialdeak ikusi eta aldatu ahal izateko.",
        "watchnologin": "Saioa hasi gabe",
        "addwatch": "Jarraipen zerrendara gehitu",
        "addedwatchtext": "«[[:$1]]» orria zure [[Special:Watchlist|jarraipen zerrendara]] erantsi da. \n\nOrri honetan aurrerantzean egindako aldaketak zerrenda horretan agertuko dira.",
+       "addedwatchtext-short": "$1 orria zure jarraipen zerrendara gehitu da.",
        "removewatch": "Kendu zure jarraipen zerrendatik",
        "removedwatchtext": "\"[[:$1]]\" orrialdea zure [[Special:Watchlist|jarraipen zerrendatik]] kendu da.",
+       "removedwatchtext-short": "$1 orria zure jarraipen zerrendatik ezabatu da.",
        "watch": "Jarraitu",
        "watchthispage": "Orrialde hau jarraitu",
        "unwatch": "Ez jarraitu",
        "sessionfailure-title": "Saio-akatsa",
        "sessionfailure": "Badirudi saioarekin arazoren bat dagoela; bandalismoak saihesteko ekintza hau ezeztatu egin da. Mesedez, nabigatzaileko \"atzera\" botoian klik egin, hona ekarri zaituen orrialde hori berriz kargatu, eta saiatu berriz.",
        "changecontentmodel-title-label": "Orriaren izenburua",
+       "logentry-contentmodel-change-revertlink": "desegin",
+       "logentry-contentmodel-change-revert": "desegin",
        "protectlogpage": "Babes erregistroa",
        "protectlogtext": "Orri-babesteen zerrenda ageri da jarraian.\nIkus [[Special:ProtectedPages|orri babestuen zerrenda]], orain indarrean dauden orri babesen zerrenda ikusteko.",
        "protectedarticle": "\"[[$1]]\" babestu da\"",
        "redirect-lookup": "Ikuskatu:",
        "redirect-value": "Balioa:",
        "redirect-user": "Erabiltzailearen identifikazioa (ID):",
+       "redirect-page": "Orriaren IDa",
        "redirect-revision": "Orrialdearen berrikuspena",
        "redirect-file": "Fitxategiaren izena",
        "redirect-not-exists": "Ez da baliorik aurkitu",
        "tags-tag": "Etiketaren izena",
        "tags-display-header": "Aldaketa zerrenden itxura",
        "tags-description-header": "Esanahiaren deskribapen osoa",
+       "tags-source-header": "Iturria",
        "tags-active-header": "Aktiboa?",
        "tags-hitcount-header": "Etiketatutako aldaketak",
        "tags-actions-header": "Ekintzak",
        "tags-edit": "aldatu",
        "tags-delete": "ezabatu",
        "tags-activate": "aktibatu",
+       "tags-deactivate": "desaktibatu",
        "tags-hitcount": "$1 {{PLURAL:$1|aldaketa|aldaketa}}",
+       "tags-create-heading": "Etiketa berria sortu",
+       "tags-create-tag-name": "Etiketaren izena:",
        "tags-create-reason": "Arrazoia:",
        "tags-create-submit": "Sortu",
+       "tags-delete-title": "Etiketa ezabatu",
        "tags-delete-reason": "Arrazoia:",
        "tags-activate-reason": "Arrazoia:",
        "tags-activate-submit": "Aktibatu",
        "tags-deactivate-reason": "Arrazoia:",
+       "tags-deactivate-submit": "Desaktibatu",
        "tags-edit-new-tags": "Etiketa berriak:",
        "tags-edit-add": "Gehitu etiketa hauek:",
        "tags-edit-remove": "Kendu etiketa hauek:",
        "rightsnone": "(bat ere ez)",
        "revdelete-summary": "aldaketaren laburpena",
        "feedback-adding": "Orriari feedbacka gehitzen...",
+       "feedback-back": "Atzera",
        "feedback-bugnew": "Txekeatu dut. Bug berria bidaliko",
        "feedback-cancel": "Utzi",
        "feedback-close": "Egina",
        "expand_templates_remove_nowiki": "Ezabatu <nowiki> etiketen emaitzak",
        "expand_templates_generate_xml": "Erakutsi XML parse zuhaitza",
        "expand_templates_preview": "Aurreikusi",
+       "pagelanguage": "Orriaren hizkuntza aukeratu",
        "pagelang-language": "Hizkuntza",
+       "pagelang-use-default": "Hizkuntza lehenetsia erabili",
        "pagelang-select-lang": "Hizkuntza aukeratu",
        "right-pagelang": "Aldatu orrialdearen hizkuntza",
        "action-pagelang": "orrialdearen hizkuntza aldatu",
index 5afd8b3..5add3cc 100644 (file)
        "changecontentmodel-success-title": "نمونه محتوی تغییر یافت",
        "changecontentmodel-success-text": "نوع محتوی [[:$1]]  تغییر یافت",
        "changecontentmodel-cannot-convert": "محتوی در [[:$1]] نمی‌تواند به گونه‌ای از $2 تبدیل شود.",
-       "changecontentmodel-title-cantexist": "امکان داشتن صفحه در $1 نیست.",
        "changecontentmodel-nodirectediting": "نمونه محتوی $1 امکان ویرایش مستقیم را پشتیبانی نمی‌کند",
        "log-name-contentmodel": "سیاهه تغییر نمونه محتوی",
        "log-description-contentmodel": "رویدادهای مرتبط با نمونه محتوی‌های یک صفحه",
index cc8537a..5d7ab99 100644 (file)
        "changecontentmodel-success-title": "Sisältömallia on muutettu",
        "changecontentmodel-success-text": "Sisältötyyppiä kohteessa [[:$1]] on muutettu.",
        "changecontentmodel-cannot-convert": "Sisältöä sivulla [[:$1]] ei voida muuntaa tyypiksi $2.",
-       "changecontentmodel-title-cantexist": "Ei ole mahdollista, että kohteessa $1 on sivua.",
        "changecontentmodel-nodirectediting": "Sisältömalli $1 ei tue suoraa muokkaamista",
        "log-name-contentmodel": "Sisältömallin muutosloki",
        "log-description-contentmodel": "Tapahtumat, jotka liittyvät sivun sisältömalleihin",
        "pageinfo-robot-index": "Indeksoitava",
        "pageinfo-robot-noindex": "Ei indeksoitava",
        "pageinfo-watchers": "Sivun tarkkailijoiden lukumäärä",
-       "pageinfo-visiting-watchers": "Sivun tuoreiden muutosten tarkkailijoiden lukumäärä",
+       "pageinfo-visiting-watchers": "Sivun tuoreet muutokset nähneiden tarkkailijoiden määrä",
        "pageinfo-few-watchers": "Vähemmän kuin $1 {{PLURAL:$1|tarkkailija|tarkkailijaa}}",
        "pageinfo-few-visiting-watchers": "Tuoreita muutoksia saatetaan tarkkailla, mutta tämä ei ole varmaa",
        "pageinfo-redirects-name": "Sivulle johtavat ohjaukset",
        "htmlform-title-badnamespace": "Sivu [[:$1]] ei ole nimiavaruudessa ”{{ns:$2}}”.",
        "htmlform-title-not-creatable": "”$1” ei kelpaa sivun nimeksi.",
        "htmlform-title-not-exists": "Sivua [[:$1]] ei ole olemassa.",
+       "htmlform-user-not-exists": "Käyttäjää <strong>$1</strong> ei ole olemassa.",
+       "htmlform-user-not-valid": "<strong>$1</strong> ei ole kelvollinen käyttäjänimi.",
        "sqlite-has-fts": "$1, jossa on tuki kokotekstihaulle",
        "sqlite-no-fts": "$1, jossa ei ole tukea kokotekstihaulle",
        "logentry-delete-delete": "$1 {{GENDER:$2|poisti}} sivun $3",
index d6ab4d8..f3a2217 100644 (file)
        "changecontentmodel-success-title": "Le modèle de contenu a été modifié",
        "changecontentmodel-success-text": "Le modèle de contenu de [[:$1]] a été modifié.",
        "changecontentmodel-cannot-convert": "Le contenu sur [[:$1]] n’a pas pu être converti en un type de $2.",
-       "changecontentmodel-title-cantexist": "Impossible d’avoir une page à $1.",
        "changecontentmodel-nodirectediting": "Le modèle de contenu $1 ne permet pas la modification directe",
        "log-name-contentmodel": "Journal de modification de modèle de contenu",
        "log-description-contentmodel": "Événements relatifs aux modèles de contenu d’une page",
index 1093f27..1162606 100644 (file)
        "changecontentmodel-success-title": "מודל התוכן שוּנה",
        "changecontentmodel-success-text": "מודל התוכן של [[:$1]] שוּנה.",
        "changecontentmodel-cannot-convert": "התוכן בדף [[:$1]] אינו יכול להיות מומר לסוג של $2.",
-       "changecontentmodel-title-cantexist": "לא יכול להיות דף בשם $1.",
        "changecontentmodel-nodirectediting": "מודל התוכן $1 אינו תומך בעריכה ישירה",
        "log-name-contentmodel": "יומן שינויי מודל תוכן",
        "log-description-contentmodel": "אירועים שקשורים למודל תוכן של דפים",
index 404823a..84f6174 100644 (file)
        "missingcommentheader": "'''अनुस्मारक:''' आपने इस टिप्पणी का कोई शीर्षक नहीं दिया है।\nअगर आप \"{{int:savearticle}}\" पर दोबारा क्लिक करते हैं तो आपके बदलाव बिना शीर्षक के संजोये जायेंगे।",
        "summary-preview": "सारांश की झलक:",
        "subject-preview": "विषय/शीर्षक की झलक:",
-       "previewerrortext": "à¤\85ापके परिवर्तनों का पूर्वावलोकन करने का प्रयास करते समय एक त्रुटि हुई।",
+       "previewerrortext": "à¤\86पके परिवर्तनों का पूर्वावलोकन करने का प्रयास करते समय एक त्रुटि हुई।",
        "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\nकृपया ध्यान दें कि यदि आपक \"इस सदस्य को ई-मेल भेजें\" वाली सुविधा का प्रयोग करना चाहते हैं तो आपकी [[Special:Preferences|वरीयताओं]] में वैध ई-मेल पता होना चाहिए और इसका प्रयोग आपके लिए अवरोधित नहीं होना चाहिए।\n\nआपका मौजूदा आइ॰पी पता $3 है और अवरोध क्रमांक #$5 है।\nअपने किसी भी प्रश्न में कृपया यह सभी जानकारी भी शामिल करें।",
index 0787563..d00739c 100644 (file)
        "readonlywarning": "'''Attention: Le base de datos ha essite blocate pro mantenentia. Tu non pote salveguardar tu modificationes in iste momento.'''\nNos recommenda copiar-e-collar le texto in un file e salveguardar lo pro plus tarde.\n\nLe administrator qui ha blocate le base de datos ha fornite iste explication: $1",
        "protectedpagewarning": "'''Attention:  Iste pagina ha essite protegite de sorta que solmente usatores con privilegios de administrator pote modificar lo.''' Le ultime entrata del registro es fornite hic infra pro referentia:",
        "semiprotectedpagewarning": "'''Nota:''' Iste pagina ha essite protegite de maniera que solmente usatores registrate pote modificar lo. Le ultime entrata del registro es fornite hic infra pro referentia:",
-       "cascadeprotectedwarning": "'''Attention:''' Iste pagina ha essite protegite de maniera que solmente administratores pote modificar lo, proque illo es includite in le protection in cascada del sequente {{PLURAL:$1|pagina|paginas}}:",
+       "cascadeprotectedwarning": "<strong>Attention:</strong> Iste pagina ha essite protegite de maniera que solmente usatores con privilegios de administrator pote modificar lo, perque illo es transcludite in le sequente {{PLURAL:$1|pagina|paginas}} protegite in cascada:",
        "titleprotectedwarning": "'''Attention:  Iste pagina ha essite protegite de maniera que [[Special:ListGroupRights|permissiones specific]] es requirite pro crear lo.''' Le ultime entrata del registro es fornite hic infra pro referentia:",
        "templatesused": "{{PLURAL:$1|Patrono|Patronos}} usate in iste pagina:",
        "templatesusedpreview": "{{PLURAL:$1|Patrono|Patronos}} usate in iste previsualisation:",
        "content-model-css": "CSS",
        "content-json-empty-object": "Objecto vacue",
        "content-json-empty-array": "Array vacue",
+       "duplicate-args-warning": "<strong>Attention:</strong> [[:$1]] appella [[:$2]] con plure valores pro le parametro \"$3\". Solmente le ultime valor fornite essera usate.",
        "duplicate-args-category": "Paginas que usa parametros duplicate in appellos de patrono",
        "duplicate-args-category-desc": "Le pagina contine appellos de patrono que usa duplicatos de parametros, como per exemplo <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> or <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "Attention: Iste pagina contine troppo de appellos costose al functiones del analysator syntactic.\n\nIllo debe haber minus de $2 {{PLURAL:$2|appello|appellos}}, sed al momento ha $1 {{PLURAL:$1|appello|appellos}}.",
        "right-sendemail": "Inviar e-mail a altere usatores",
        "right-passwordreset": "Vider le e-mails pro reinitialisar le contrasigno",
        "right-managechangetags": "Crear e deler [[Special:Tags|etiquettas]] in le base de datos",
+       "right-applychangetags": "Applicar [[Special:Tags|etiquettas]] al proprie modificationes",
+       "right-changetags": "Adder e remover qualcunque [[Special:Tags|etiquettas]] sur individual versiones e entratas de registro",
        "newuserlogpage": "Registro de creation de usatores",
        "newuserlogpagetext": "Isto es un registro de creation de usatores.",
        "rightslog": "Registro de derectos de usator",
        "action-editmyprivateinfo": "modificar le proprie information private",
        "action-editcontentmodel": "modificar le modello de contento de un pagina",
        "action-managechangetags": "crear e deler etiquettas in le base de datos",
+       "action-applychangetags": "applicar etiquettas al proprie modificationes",
+       "action-changetags": "adder e remover qualcunque etiquettas sur individual versiones e entratas de registro",
        "nchanges": "$1 {{PLURAL:$1|modification|modificationes}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|desde le ultime visita}}",
        "enhancedrc-history": "historia",
index 215c489..8c07242 100644 (file)
@@ -11,7 +11,8 @@
                        "Renan",
                        "Valodnieks",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Srdjan m"
                ]
        },
        "tog-underline": "Ultracatenun:",
        "timezoneregion-europe": "Europe",
        "timezoneregion-indian": "Ocean Indian",
        "timezoneregion-pacific": "Ocean Pacific",
-       "youremail": "E-mail:",
+       "youremail": "Adresa e-pošte:",
        "username": "Nómine de usator:",
        "yourrealname": "Nómine real:",
        "yourlanguage": "Lingue:",
index 998070d..53653c4 100644 (file)
        "protectedinterface": "Daytoy a panid ket mangited iti testo ti interface para iti sopwer iti daytoy a wiki, ken nasalakniban tapno mapawilan ti panag-abuso.\nTi aginayon wenno panagibaliw kadagiti panagipatarus para kadagiti amin a wiki,  pangngaasi nga usaren ti [//translatewiki.net/ translatewiki.net], ti lokalisasion a gandat ti MediaWiki.",
        "editinginterface": "<strong>Ballaag:</strong> Ur-urnosem ti maysa a panid a maar-aramat a mangted iti testo ti interface para iti sopwer.\nDagiti panagsukat iti daytoy a panid ket maarigan ti langa ti interface ti agar-aramat para kadagiti sabali nga agar-aramat iti daytoy a wiki.",
        "translateinterface": "Ti aginayon wenno panagibaliw kadagiti panagipatarus para kadagiti amin a wiki,  pangngaasi nga usaren ti [//translatewiki.net/ translatewiki.net], ti lokalisasion a gandat ti MediaWiki.",
-       "cascadeprotected": "Daytoy a panid ket nasalaknibanen para iti panag-urnos ngamin ket nairaman kadagiti sumaganad {{PLURAL:$1|a panid, a|a pampanid, a}} nasalakniban iti nalukatan a pagpilian ti \"sariap\":\n$2",
+       "cascadeprotected": "Daytoy a panid ket nasalaknibanen manipud iti panagurnos gapu ta nailak-am {{PLURAL:$1|iti sumaganad a panid|kadagiti sumaganad a panid}} a nasalakniban iti nalukatan a pagpilian ti \"sariap\":\n$2",
        "namespaceprotected": "Awan ti pammalubosmo nga agurnos kadagiti panid iti nagan ti espasio ti <strong>$1</strong>.",
        "customcssprotected": "Awan ti pammalubosmo nga agurnos iti daytoy panid ti CSS, ngamin ket naglaon ti personal a pannakaisaad iti sabali agar-aramat.",
        "customjsprotected": "Awan ti pammalubosmo nga agurnos iti daytoy a panid ti JavaScript, ngamin ket naglaon ti personal a pannakaisaad iti sabali agar-aramat.",
        "readonlywarning": "<strong>Ballaag: Narikepan ti database tapno mataripato, isu a saanmo a mabalin nga idulin dagita inurnosmo tattan.</strong>\nMabalinmo ti agkopia ken agipegket ti testom iti papeles ti testo ken idulinmo daytoy intono madamdama.\n\nTi administrador a nangrikep ket nangited iti daytoy a palawag: $1",
        "protectedpagewarning": "<strong>Ballaag: Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan iti gundaway nga administrador ti makaurnos ditoy.</strong>\nTi naudi a naikabil iti listaan ket naited dita baba para iti reperensia:",
        "semiprotectedpagewarning": "<strong>Nota:</strong> Nasalakniban daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaurnos ditoy.\nTi naudi a naikabil iti listaan ket naited dita baba para iti reperensia:",
-       "cascadeprotectedwarning": "<strong>Ballaag:</strong> Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan iti gundaway nga administrador ti makaurnos ngamin ket nairaman kadagiti sumaganad a nasalakniban iti sariap\n{{PLURAL:$1|a panid|a pampanid}}:",
+       "cascadeprotectedwarning": "<strong>Ballaag:</strong> Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan iti gundaway nga administrador ti makaurnos gapu ta nailak-am {{PLURAL:$1|iti sumaganad a panid|kadagiti sumaganad a panid}} a nasalakniban iti sariap:",
        "titleprotectedwarning": "<strong>Ballaag:  Nasalakniban daytoy a panid tapno [[Special:ListGroupRights|dagiti naisangayan ti karbengan]] ket nasken a makapartuat iti daytoy.</strong>\nTi naudi a naikabil iti listaan ket naited dita baba para iti reperensia:",
        "templatesused": "{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a naaramat iti daytoy a panid:",
        "templatesusedpreview": "{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a naaramat iti daytoy a panagpadas:",
        "rollback-success": "Naibabawi dagiti panagurnos babaen ni $1;\nnaisubli manen ti naudi a rebision babaen ni $2.",
        "sessionfailure-title": "Napaay ti sesion",
        "sessionfailure": "Adda parikut ti sesion ti panagserrekmo;\ndaytoy nga aramid ket naibabawi a kas pagpawilan ti panaghijack ti sesion.\nAgsublika iti naggapuam a panid, ikargam manen ti panid ken padasen manen.",
+       "changecontentmodel": "Baliwan ti modelo ti linaon ti panid",
+       "changecontentmodel-legend": "Baliwan ti modelo ti linaon ti panid",
        "changecontentmodel-title-label": "Titulo ti panid",
        "changecontentmodel-model-label": "Baro a modelo ti linaon",
        "changecontentmodel-reason-label": "Rason:",
        "changecontentmodel-success-title": "Nabaliwan ti modelo ti linaon",
        "changecontentmodel-success-text": "Nabaliwanen ti kita ti linaon ti [[:$1]].",
        "changecontentmodel-cannot-convert": "Ti linaon iti [[:$1]] ket saan a mabaliwan iti kita ti $2.",
-       "changecontentmodel-title-cantexist": "Saan a mabalin nga addaan iti panid iti $1.",
        "changecontentmodel-nodirectediting": "Ti modelo ti linaon ti $1 ket saan a mangsuporta ti dagus a panagurnos",
        "log-name-contentmodel": "Listaan ti panagbaliw ti modelo ti linaon",
        "log-description-contentmodel": "Dagiti pasamak a mainaig kadagiti modelo ti linaon ti panid",
        "protect-locked-blocked": "Saanmo a mabalin a sukatan dagiti kita ti salaknib no naserraanka.\nAdda ditoy kadagiti agdama a kasasaad ti panid ti <strong>$1</strong>:",
        "protect-locked-dblock": "Ti kita ti salaknib ket saan a masukatan gapu ti agdama a kandado ti database.\nAdda ditoy kadagiti agdama a kasasaad ti panid ti <strong>$1</strong>:",
        "protect-locked-access": "Ti pakabilangam ket awan pammalubosna a mangsukat kadagiti agpang ti salaknib ti panid.\nDagitoy ti agdama a pannakaisaad para iti panid ti <strong>$1</strong>:",
-       "protect-cascadeon": "Daytoy a panid ket agdama a nasalakniban gapu ta nairaman kadagiti sumaganad a {{PLURAL:$1|panid, nga addaan|pampanid, nga addaan}} iti nalukatan a salaknib ti sariap.\nDagiti panagbaliw iti agpang ti salaknib iti daytoy a panid ket saan a mabanagan ti salaknib ti sariap.",
+       "protect-cascadeon": "Daytoy a panid ket agdama a nasalakniban gapu ta nailak-am {{PLURAL:$1|iti sumaganad a panid|kadagiti sumaganad a panid}} nga addaan iti nalukatan a salaknib ti sariap.\nDagiti panagbaliw iti agpang ti salaknib iti daytoy a panid ket saan a mabanagan ti salaknib ti sariap.",
        "protect-default": "Palubosan amin nga agar-aramat",
        "protect-fallback": "Palubosan laeng dagiti agar-aramat nga adda iti \"$1\" a pammalubos",
        "protect-level-autoconfirmed": "Palubosan laeng dagiti automatiko a napasingkedan nga agar-aramat",
        "htmlform-cloner-create": "Agnayon pay ti adu",
        "htmlform-cloner-delete": "Ikkaten",
        "htmlform-cloner-required": "Saan a basbassit ngem maysa a pateg ti masapul.",
+       "htmlform-title-not-exists": "Awan ti [[:$1]].",
+       "htmlform-user-not-exists": "Awan ti <strong>$1</strong>.",
+       "htmlform-user-not-valid": "Saan nga umiso a nagan ti agar-aramat ti <strong>$1</strong>.",
        "sqlite-has-fts": "Ti $1 nga addaan iti suporta ti panagbiruk ti napno a testo",
        "sqlite-no-fts": "Ti $1 nga awan iti suporta ti panagbiruk ti napno a testo",
        "logentry-delete-delete": "{{GENDER:$2|Inikkat}} ni $1 ti panid ti $3",
index f16d239..b623469 100644 (file)
@@ -86,7 +86,8 @@
                        "Alexmar983",
                        "Federico Mugnaini",
                        "Fpugliajno",
-                       "Fringio"
+                       "Fringio",
+                       "Aquatech"
                ]
        },
        "tog-underline": "Sottolinea i collegamenti:",
        "history-feed-description": "Cronologia della pagina su questo sito",
        "history-feed-item-nocomment": "$1 il $2",
        "history-feed-empty": "La pagina richiesta non esiste; potrebbe essere stata cancellata dal sito o rinominata. Verificare con la [[Special:Search|pagina di ricerca]] se vi sono nuove pagine.",
-       "history-edit-tags": "Modifica le etichette delle versioni selezioniate",
+       "history-edit-tags": "Modifica le etichette delle versioni selezionate",
        "rev-deleted-comment": "(Oggetto della modifica rimosso)",
        "rev-deleted-user": "(nome utente rimosso)",
        "rev-deleted-event": "(dettagli del registro rimossi)",
        "changecontentmodel-success-title": "Il modello di contenuto è stato modificato",
        "changecontentmodel-success-text": "Il tipo di contenuto di [[:$1]] è stato modificato.",
        "changecontentmodel-cannot-convert": "Il contenuto di [[:$1]] non può essere convertito in tipo $2.",
-       "changecontentmodel-title-cantexist": "Non è possibile avere una pagina in $1.",
        "changecontentmodel-nodirectediting": "Il modello di contenuto $1 non supporta la modifica diretta",
        "log-name-contentmodel": "Registro delle modifiche del modello contenuti",
        "log-description-contentmodel": "Eventi relativi al modello di contenuto di una pagina",
        "htmlform-title-badnamespace": "[[:$1]] non si trova nel namespace \"{{ns:$2}}\".",
        "htmlform-title-not-creatable": "\"$1\" è il titolo di una pagina non creabile",
        "htmlform-title-not-exists": "[[:$1]] non esiste.",
+       "htmlform-user-not-exists": "<strong>$1</strong> non esiste.",
+       "htmlform-user-not-valid": "<strong>$1</strong> non è un nome utente valido.",
        "sqlite-has-fts": "$1 con la possibilità di ricerca completa nel testo",
        "sqlite-no-fts": "$1 senza la possibilità di ricerca completa nel testo",
        "logentry-delete-delete": "$1 {{GENDER:$2|ha cancellato}} la pagina $3",
index 55188ea..dc1f5f9 100644 (file)
        "changecontentmodel-success-title": "コンテント・モデルは変更されました",
        "changecontentmodel-success-text": "[[:$1]]のコンテント・タイプは変更されています。",
        "changecontentmodel-cannot-convert": "[[:$1]]上のコンテントは$2の型には変換できません。",
-       "changecontentmodel-title-cantexist": "$1 でページを持つことは不可能です。",
        "changecontentmodel-nodirectediting": "$1 コンテント・モデルは、ダイレクト編集をサポートしていません。",
        "log-name-contentmodel": "コンテント・モデル変更ログ",
        "log-description-contentmodel": "ページのコンテント・モデルに関連するイベント",
index d8eda8d..d0d324b 100644 (file)
        "tooltip-pt-logout": "កត់ឈ្មោះចេញ",
        "tooltip-pt-createaccount": "អ្នកត្រូវបានលើកទឹកចិត្តបង្កើតគណនីនិងកត់ឈ្មោះចូល។ ប៉ុន្តែនេះមិនមែនជាការបង្ខំទេ។",
        "tooltip-ca-talk": "ការពិភាក្សា​អំពីទំព័រខ្លឹមសារ​នេះ",
-       "tooltip-ca-edit": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85â\80\8bá\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\93á\9f\81á\9f\87 á\9f\94 á\9e\9fá\9e¼á\9e\98á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\94á\9f\8aá\9e¼á\9e\8fá\9e»á\9e\84 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\80á\9e¶á\9e\9aá\9e\98á\9e¾á\9e\9bá\9e\98á\9e»á\9e\93' á\9e\98á\9e»á\9e\93á\9e\93á\9e¹á\9e\84â\80\8bá\9e\9aá\9e\80á\9f\92á\9e\9fá\9e¶á\9e\91á\9e»á\9e\80â\80\8bá\9e\9cá\9e¶  á\9f\94",
+       "tooltip-ca-edit": "á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87",
        "tooltip-ca-addsection": "ចាប់​ផ្ដើមផ្នែកថ្មីមួយក្នុងទំព័រពិភាក្សានេះ",
        "tooltip-ca-viewsource": "ទំព័រ​នេះ​បានត្រូវការពារ ។ អ្នកអាច​មើល​អក្សរកូដ​របស់វាបាន ។",
        "tooltip-ca-history": "កំណែកន្លងមករបស់ទំព័រនេះ ។",
index 8b4563c..400cdb2 100644 (file)
        "enterlockreason": "Jevv aan, woröm un för wie lang dat de Daatebank jesperrt wääde soll",
        "readonlytext": "De Daatebank es jesperrt. Neu Saache dren avspeichere jeiht jrad nit, un ändere och nit. Dä Jrund: „$1“",
        "missing-article": "Dä Tex för de Sigg „$1“ $2 kunnte mer nit en de Daatebank finge.\nDe Sigg es villeich fottjeschmesse oder ömjenannt woode.\nWann dat nidd esu sin sollt, dann hadder villeich ene Fähler en de Soffwär jefunge.\nVerzällt et enem [[Special:ListUsers/sysop|Wiki_Köbes]],\nun doht em och de URL vun dä Sigg heh sage.",
-       "missingarticle-rev": "(Version Numero: $1)",
+       "missingarticle-rev": "(Väsjohn Numero: $1)",
        "missingarticle-diff": "(Ongerscheed zwesche de Versione $1 un $2)",
        "readonly_lag": "De Daatebank es för en koote Zigg automattesch jesperrt, för de Daate vun de ongerjeodente Rääschner mem Houprääschner avzejliiche.",
        "internalerror": "De Wiki-Soffwär hät ene Fähler jefunge",
        "welcomecreation-msg": "Dinge Zohjang es enjerescht.\nWann De wells, künnts De Ding [[Special:Preferences|Enschtällonge aanpaße]].",
        "yourname": "Metmaacher_Naame:",
        "userlogin-yourname": "Der Metmaacher_Nahme",
-       "userlogin-yourname-ph": "Donn Dinge Metmaachername aanjevve",
+       "userlogin-yourname-ph": "Donn Dinge Metmaachernahme aanjävve",
        "createacct-another-username-ph": "Jivv ene Metmaacher_Nahme aan",
        "yourpassword": "Paßwoot:",
        "userlogin-yourpassword": "Et Paßwoot",
        "user-mail-no-addy": "Do häs versöhg en <i lang=\"en\">e-mail</i> der ohne en Adräß ze verschecke",
        "user-mail-no-body": "En dä <i lang=\"en\">e-mail</i> schteiht nix udder zoh winnisch dren.",
        "changepassword": "Passwood *",
-       "resetpass_announce": "Do moß jäz e neu Paßwoot för op Duur aanjevve.",
+       "resetpass_announce": "Do moß jäz e neu Paßwoot för op Duur aanjävve.",
        "resetpass_text": "<!-- Donn der Täx hee dobei -->",
        "resetpass_header": "Neu Passwood faßlääje",
        "oldpassword": "Et ahle Passwood:",
        "resetpass-submit-cancel": "Nix donn!",
        "resetpass-wrong-oldpass": "Dat Zweschepaßwood udder dat aktoälle Paßwood stemmp nit.\nMöjjelesch, Do häs Ding Paßwood ald jetuusch, künnt och sin,\nDo häs Der enzwesche e neu Zweschepaßwood jehollt.",
        "resetpass-recycled": "Donn för Ding neu Paßwoot jät anders aanjävve, wi Ding Paßwoot vun jäz.",
-       "resetpass-temp-emailed": "Do beß jez enjelogg med ennem Zweschepasswoot, wat De övver e-mail krääje häs. Dat kanns De nit einfar_esu behallde. Alsu donn jetz e neu Passwoot för op Duur aanjevve.",
+       "resetpass-temp-emailed": "Do beß jez enjelogg med ennem Zweschepasswoot, wat De övver e-mail krääje häs. Dat kanns De nit einfar_esu behallde. Alsu donn jetz e neu Passwoot för op Duur aanjävve.",
        "resetpass-temp-password": "Zweschepasswood:",
        "resetpass-abort-generic": "E Zohsazprojramm häd_et nit zohjelohße, et Paßwoot ze ändere.",
        "resetpass-expired": "Di Paßwood es afjeloufe. Donn jetz e neu Passwoot för et Enlogg faßlääje.",
        "difference-title-multipage": "Ongerscheide zwesche dä Sigge „$1“ un „$2“",
        "difference-multipage": "(Ongerscheide zwesche Sigge)",
        "lineno": "Reih $1:",
-       "compareselectedversions": "Dun de markeete Version verjliche",
+       "compareselectedversions": "Dun de markehte Väsjohn verjliiche",
        "showhideselectedversions": "De ußjewählte Versione aanzeije udder vershteiche",
        "editundo": "De läzde Änderong zeröck nämme",
        "diff-empty": "(Keine Ongerscheid)",
        "prefs-help-realname": "Dinge rechteje Nahme kanns De fott lohße.\nWann De en ävver nenne wells, dann kann dä jebruch weede, öm Ding Beidrähch domet ze schmöcke.",
        "prefs-help-email": "Ding <i lang=\"en\">e-mail</i> Adress - kanns De fottlooße, un se es för Andre nit ze sinn - mäht et ävver müjjelich, Der e neu Passwoot ze schecke, wann De et ens verjäße häß.",
        "prefs-help-email-others": "Do kannß och zohlohße, dat mer Der domet övver Ding Metmaacherklaafsigg en <i lang=\"en\">e-mail</i> schecke kann. Esu künne ander Metmaacher met Der en Kontak kumme, ohne dat se Dinge Name oder Ding <i lang=\"en\">e-Mail</i> Adress kenne mööte.",
-       "prefs-help-email-required": "Do moß en <i lang=\"en>e-mail</i>-Addräß aanjevve.",
+       "prefs-help-email-required": "Do moß en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß aanjävve.",
        "prefs-info": "Jrundlare",
        "prefs-i18n": "Schprohche-Enschtällonge",
        "prefs-signature": "Ongerschreff",
        "filedelete-maintenance": "Datteie Fottschmiiße un widder zerök Holle jeiht jez jrad nit, mer hann Waadong.",
        "filedelete-maintenance-title": "Di Dattei künne mer nit fottschmiiße",
        "mimesearch": "Dateije övver dänne ehre <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Multi-Purpose Internet Mail Extensions\">MIME</i>-Zoot söhke",
-       "mimesearch-summary": "Op hee dä {{int:nstab-special}} könne de Dateie noh de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Multi-Purpose Internet Mail Extensions\">MIME</i>-Zoot ußjesöhk wähde.\nMer moß der Medijetüp un der Ongertüp aanjevve mem scheive Schtresch derzwesche, zem Bejschpell: <code xml:lang=\"en\" lang=\"en\">image/jpeg</code> udder <code xml:lang=\"en\" lang=\"en\">text/*</code> udder esu.",
+       "mimesearch-summary": "Op hee dä {{int:nstab-special}} könne de Dateie noh de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Multi-Purpose Internet Mail Extensions\">MIME</i>-Zoot ußjesöhk wähde.\nMer moß de Zoot Medije un de Ongerzppd aanjävve mem scheive Schtresch derzwesche, zem Bejschpell: <code xml:lang=\"en\" lang=\"en\">image/jpeg</code> udder <code xml:lang=\"en\" lang=\"en\">text/*</code> udder esu.",
        "mimetype": "<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Multi-Purpose Internet Mail Extensions\">MIME</i>-Zoot:",
        "download": "eronger laade",
        "unwatchedpages": "Sigge, wo keiner drop oppass",
        "allpages-hide-redirects": "Ömleidonge fott lohße",
        "cachedspecial-viewing-cached-ttl": "Dat heh küdd ussem Zewescheschpeischer un kann bes op $1 alt sin.",
        "cachedspecial-viewing-cached-ts": "Dat heh küdd ussem Zewescheschpeischer un nünnt nidd om neuste Schtand sin.",
-       "cachedspecial-refresh-now": "De neuste Version.",
+       "cachedspecial-refresh-now": "De neuste Väsjohn.",
        "categories": "Saachjroppe",
        "categoriespagetext": "Heh {{PLURAL:$1|es nur en Saachjropp|sin nur Saachjroppe|es kein Saachjropp}} jeleß, woh jät dren {{PLURAL:$1|es|es|wöhr}}. Mer han_er eije Leßte för de\n[[Special:UnusedCategories|Saachjropp met nix dren]], un de\n[[Special:WantedCategories|jewönschte un nit aanjelaate Saachjroppe]].",
        "categoriesfrom": "Zeijsch Saachjroppe vun heh af:",
        "linksearch-pat": "Sök noh:",
        "linksearch-ns": "Appachtemang:",
        "linksearch-ok": "Söhke",
-       "linksearch-text": "Beim Söke künnd_Er Schtäänsche aanjevve för e Schtöcksche fun ennem Nahme, wo mer nit jenou weiß, wi et heiß udder wat me nit kenne deit, zem Beischpöll esu: <code>http://*.example.com</code> un ene bövverschte Name för en Domain moß aanjejovve sin, zem Beishpöll esu: <code>http://*.org</code> \n\n{{PLURAL:$2|Dat Brauserprotokoll, wat|De Brauserprotokolle, di|Kein Brauserprotokolle, di}} mer beim Söhke aanjävve kann, sin: $1, un der Schtandatt es <code>http://</code> wann nix aanjejovve es.",
+       "linksearch-text": "Beim Söke künnd_Er Schtähnsche aanjävve för e Schtöcksche fun ennem Nahme, wo mer nit jenou weiß, wi et heiß udder wat me nit kenne deit, zem Beischpöll esu: <code>http://*.example.com</code> un ene bövverschte Name för en Domain moß aanjejovve sin, zem Beishpöll esu: <code>http://*.org</code> \n\n{{PLURAL:$2|Dat Brauserprotokoll, wat|De Brauserprotokolle, di|Kein Brauserprotokolle, di}} mer beim Söhke aanjävve kann, sin: $1, un der Schtandatt es <code>http://</code> wann nix aanjejovve es.",
        "linksearch-line": "„$2“ hät ene Link op $1",
        "linksearch-error": "Shternshe kam_mer nor aam Aanfang fum Domain-Name bruche.",
        "listusersfrom": "Zeich de Metmaacher vun:",
        "unwatch": "Nimeh drobb oppaßße",
        "unwatchthispage": "Nit mih op di Sigg oppaßße",
        "notanarticle": "Keine Atikkel",
-       "notvisiblerev": "Di Version es fottjeschmesse",
+       "notvisiblerev": "Di Väsjohn es fottjeschmesse",
        "watchlist-details": "Do häß {{PLURAL:$1|ein Sigg|$1 Sigge|kein Sigg}} en Dinge Oppaßleß{{PLURAL:$1|, un di Klaafsigg dohzoh|, un de Klaafsigge dohzoh|}}.",
        "wlheader-enotif": "Et <i lang=\"en\">e-mail</i> Schecke es enjeschalt.",
        "wlheader-showupdated": "Wann se Einer jeändert hätt, zickdäm De se et letzte Mol aanjeluurt häs, sin di Sigge <strong>extra markeet</strong>.",
        "sessionfailure": "Et jov wall e täschnesch Problehm met Dingem Login. Dröm ham_mer dat us Vörseesch jäz nix jemaht, domet mer nit velleich Ding Änderong däm verkihrte Metmaacher ongerjubele. Jangk zeröck un versöhk et noch ens.",
        "changecontentmodel-title-label": "Dä Sigg ier Övverschreff",
        "changecontentmodel-reason-label": "Der Jrond:",
-       "changecontentmodel-title-cantexist": "Mer kann kein  Sigge en $1 aanlähje.",
        "logentry-contentmodel-change-revertlink": "retuhr_nämme",
        "logentry-contentmodel-change-revert": "retuhr_nämme",
        "protectlogpage": "Logbohch vum Sigge Schötze",
        "import-comment": "Jrond:",
        "importtext": "Dun de Daate met däm „[[Special:Export|Export]]“ vun doh vun enem Wiki Exporteere un - etwa bei Dir om Rechner - avspeichere, un dann heh wider huhlade.",
        "importstart": "Ben Sigge am emporteere …",
-       "import-revision-count": "({{PLURAL:$1|ein Version|$1 Versione|kein Version}})",
+       "import-revision-count": "({{PLURAL:$1|ein Väsjohn|$1 Väsjohne|kein Väsjohn}})",
        "importnopages": "Kein Sigg för ze Emporteere jefunge.",
        "imported-log-entries": "{{PLURAL:$1|Eine Enndraach woodt|$1 Enndrääsch woodte|Keine Enndraach wood}} en et Logbooch empotteert.",
        "importfailed": "Dat Importeere es donevve jejange: $1",
        "comparepages": "Sigge verjliesche",
        "compare-page1": "De ein Sigg",
        "compare-page2": "De ander Sigg",
-       "compare-rev1": "de ein Version",
+       "compare-rev1": "de ein Väsjohn",
        "compare-rev2": "de ander Väsjohn",
        "compare-submit": "Verjlieshe!",
        "compare-invalid-title": "De aanjejovve Övverschreff es nit jöltesch",
index ebb128f..9e8ac1b 100644 (file)
        "changecontentmodel-reason-label": "Grond:",
        "changecontentmodel-success-title": "De Modell vum Inhalt gouf geännert",
        "changecontentmodel-success-text": "Den Typ vum Inhalt vu(n) [[:$1]] gouf geännert.",
-       "changecontentmodel-title-cantexist": "Et ass net méiglech enger Säit den Numm $1 ze ginn.",
        "logentry-contentmodel-change-revertlink": "zrécksetzen",
        "logentry-contentmodel-change-revert": "zrécksetzen",
        "protectlogpage": "Protektiounslogbuch",
index 678979b..acdbcad 100644 (file)
        "userloginnocreate": "ڤامین ئوٙمائن",
        "logout": "د ساموٙنە دئرئوٙمائن",
        "userlogout": "د ساموٙنە دئرئوٙمائن",
-       "notloggedin": "Ù\86بÙ\88Ù\99Û\95 Ø¨Û\8cاÛ\8cیت ڤامین",
+       "notloggedin": "Ù\86أبÙ\88Ù\99Ø£ Ø¨Û\8cائیت ڤامین",
        "userlogin-noaccount": "یئ گئل حئساڤ ناریت؟",
        "userlogin-joinproject": "ڤأصل بوٙییت {{SITENAME}}",
        "nologin": "یئ گئل حئساڤ کاریاری ناريت؟$1",
        "noemailcreate": "شوما بایأد یئ گئل تیرنئشوٙن أنجومانە جادیار سی خوتوٙ داشتوٙییت.",
        "passwordsent": "یئ گئل رازینە گوڤاردئن هأنی کئل بییە سی تیرنئشوٙن أنجومانامە یی کئ \"$1\" ڤاش ثأڤت نام کئردە.\nخاهئشت می کیم هأنی روٙییت ڤامین و ئوٙسئ بئریتئش.",
        "blocked-mailpassword": "نئها آی پی شوما سی ڤیرایئشت کاری گئرئتە بییە، هأنی صئلا یە نە نارە کئ د رازینە گوڤاردئن د نۊ کئل بییە سی نئهاگئری د گأن کاری نارە.",
-       "eauthentsent": "یه گل انجومانامه پشت راس کردنی د یه گل تیرنشون ویجه کل بیه.\nدما یه که یه گل انجومانامه هنی د حساو کل بوئه، شما واس دما رئنمونی نه د انجومانامه بئریت، سی یه که حساو شما راستکی پشت راست بوئه.",
-       "throttled-mailpassword": "یه گل رازینه گواردن دواره زنه بیه ایسه کل بیه، د آخری {{PLURAL:$1|ساعت|$1 ساعتیا}}.\nسی نهاگری د اذیت دئن،فقط یه گل رازینه گواردن د انجومانامه دواره زنه بیه د هر {{PLURAL:$1|ساعت|$1 ساعتیا}} کل بیه.",
-       "mailerror": "خطا Ø¯Ø§Ø±Ù\87 Ú©Ù\84 Ù\85Ù\88ئÙ\87:$1",
-       "acct_creation_throttle_hit": "سیل کریا ای ویکی تیرنشون آی پی شما وه کار گرتنه د روز دمایی {{PLURAL:$1|1 حساو|$1 حساویا}} نه دروس کردنه، و وه د بیشترونه صلا دئن د ای دوره گاتی انجوم بیه.\nد نتیجه، سیل کریایی که د ای تیرنشون آی پی وه کار گرتنه نمی تونن  حساویا بیشتری د ای گات دروس بکن.",
-       "emailauthenticated": "تÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 ØªÙ\88Ù\86Ù\87 Ø¯ $2 Ø³Û\8c 3$ Ù\85ئکÙ\85 Ø¨Û\8cÙ\87.",
-       "emailnotauthenticated": "تÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 Ø´Ù\85ا ØªØ§ Ø§Û\8cسÙ\87 Ù¾Ø´Øª Ø±Ø§Ø³Ú¯Ø±Û\8c Ù\86بÛ\8cÙ\87.\nÙ\87Ù\86Û\8c Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 Ø§Û\8c Ø³Û\8c Ú\86Û\8cا Ø±Û\8c Ø¨Ù\87 Ù\86Ù\87ا Ú©Ù\84 Ù\86بÛ\8cÙ\87.",
-       "noemailprefs": "یه گل تیرنشون انجومانامه د الویتیاتو سی یه که ای ویجه گیا کار بکن انتخاو بکیت.",
-       "emailconfirmlink": "پشت راس کردن تیرنشون انجومانامه",
-       "invalidemailaddress": "تÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 Ø­Ø§Ø³ØªÙ\86Û\8c Ù\86ئ Ø´Ú©Ù\84 Ù\88Ù\87 Ú\86Ù\88ئÙ\87 Ø®Ù\88ئÛ\8c Ù\86ارÙ\87.\nÙ\84Ø·Ù\81Ù\86 Û\8cÙ\87 Ú¯Ù\84 ØªÛ\8cرÙ\86Ø´Ù\88Ù\86 Ú\86Ù\88ئÙ\87 Ø¯Ø§Ø± Ù\88ارد Ø¨Ú©Û\8cت Û\8cا Ø§Û\8c Ø±Ø´Ù\86Ù\87 Ú¯Ù\87 Ù\86Ù\87 Ø­Ø§Ù\84Û\8c Ø¨نیت.",
-       "cannotchangeemail": "تÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 Ø­Ø³Ø§Ù\88 Ù\86تÙ\88Ù\86Ù\87 Ø¯ Ø§Û\8c Ù\88Û\8cÚ©Û\8c Ø¢Ù\84شت Ø¨Ù\88ئÙ\87.",
-       "emaildisabled": "اÛ\8c Ù\85اÙ\84Ú¯Ù\87 Ù\86تÙ\88Ù\86Ù\87 Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 Ú©Ù\84 Ù\86Ù\85Û\8c Ú©Ù\87",
+       "eauthentsent": "یئ گئل أنجومانامە پوشت راست کئردئنی د یئ گئلٛ تیرنئشوٙن ڤیجە کئل بییە.\nدئما یە کئ یئ گئل أنجومانامە هأنی د حئساڤ کئل بوٙأ، شوما ڤاس دئما رأدیارکونی نە د أنجومانامە بئیریت، سی یە کئ حئساڤ شوما راستأکی پوشت راست بوٙأ.",
+       "throttled-mailpassword": "یئ گئل رازینە گوڤاردئن د نۊ زئنە بییە و ئیسئ کئل بییە، د آخئری {{PLURAL:$1|ساعأت|$1 ساعأتیا}}.\nسی نئهاگئری د أذیأت بییئن، فأقأط یئ گئل رازینە گوڤاردئن د أنجومانامە د نۊ زئنە بییە د هأر {{PLURAL:$1|ساعأت|$1 ساعأتیا}} کئل بییە.",
+       "mailerror": "خأطا Ø¯ Ú©Ø¦Ù\84 Ø¨Û\8cÛ\8cئÙ\86 Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95:$1",
+       "acct_creation_throttle_hit": "سئل کاریا ئی ڤیکی تیرنئشوٙن آی پی شوما نە ڤئ کار گئرئتئنە د روٙز دئمایی {{PLURAL:$1|1 حئساڤ|$1 حئساڤیا}} نە رأڤأندیاری کئردئنە، و ڤئ د بیشتأروٙنە صئلا دأئنە د ئی دورە گاتی أنجوم بییە.\nد نأتیجە، سئل کاریایی کئ د ئی تیرنئشوٙن آی پی ڤئ کار گئرئتئنە نئمی توٙنئن حئساڤیا بیشتأری نە د ئی گات دوروس بأکأن.",
+       "emailauthenticated": "تÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 ØªÙ\88Ù\99 Ø¯ $2 Ø³Û\8c 3$ Ù¾Ù\88شت Ø±Ø§Ø³Ú©Ø§Ø±Û\8c Ø¨Û\8cÛ\8cÛ\95.",
+       "emailnotauthenticated": "تÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 Ø´Ù\88Ù\85ا ØªØ§ Ø¦Û\8cسئ Ù¾Ù\88شت Ø±Ø§Ø³ Ú©Ø§Ø±Û\8c Ù\86أبÛ\8cÛ\8cÛ\95.\nÙ\87Ø£Ù\86Û\8c Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 Û\8cÛ\8c Ø³Û\8c Ø¦Û\8c Ú\86Û\8cا Ú©Ø¦ Ù\87اÙ\86 Ø±Û\8c Ù\86ئÙ\87ا Ú©Ø¦Ù\84 Ù\86أبÛ\8cÛ\8cÛ\95.",
+       "noemailprefs": "یئ گئل تیرنئشوٙن أنجومانامە د چیا نازار شوما سی یە کئ ئی خوصوٙصیأتیا کار بأکأن ئنتئخاڤ بأکیت.",
+       "emailconfirmlink": "تیرنئشوٙن أنجومانامە توٙنە پوشت راسکاری بأکیت",
+       "invalidemailaddress": "تÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 Ù\82Ø£Ú¤Ù\88Ù\99Ù\84 Ø¨Û\8cئÙ\86Û\8c Ù\86Û\8c Ø³Û\8c Û\8cÛ\95 Ú©Ø¦ Ú\86Û\8c Ø¯ Ú¤Û\8cر Ù\88 Ø¨Ø§Ú¤Ø£Ø± Ù\85Û\8cا Ú©Ø¦ Ú¤Ø¦ Ø´Û\8cÚ¤Û\95 Ø®Ù\88Ù\99Û\8cÛ\8c Ù\86ارÛ\95.\nÙ\84Ù\88Ø·Ù\81 Ø¨Ø£Ú©Û\8cت Û\8cئ Ú¯Ø¦Ù\84 ØªÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ú\86Ù\88Ù\99Ø£ Ø¯Ø§Ø± Ù\86Û\95 Ø¨Ø£Ø²Ø£Ù\86Û\8cت Û\8cا Ø¦Û\8c Ø¬Ø§Ú¯Û\95 Ù\86Û\95 Ø­Ø§Ù\84Û\8c Ø¨Ø£نیت.",
+       "cannotchangeemail": "تÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 Ø­Ø¦Ø³Ø§Ú¤ Ø¯ Ø¦Û\8c Ú¤Û\8cÚ©Û\8c Ø¢Ù\84ئشت Ú©Ø§Ø±Û\8c Ù\86أبÙ\88Ù\99Ø£.",
+       "emaildisabled": "ئÛ\8c Ø¯Û\8cارگÛ\95 Ù\86ئÙ\85Û\8c ØªÙ\88Ù\99Ù\86Û\95 Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 Ú©Ø¦Ù\84 Ø¨Ø£Ú©Û\95.",
        "accountcreated": "حئساڤ راس بی",
        "accountcreatedtext": "حئساڤ کاریاری سی [[{{ns:کاریار}}:$1|$1]] ([[{{ns:کاریار چأک چئنە}}:$1|چأک چئنە]]) دوروس بییە.",
        "createaccount-title": "حئساڤ سی {{SITENAME}} راس بی",
        "pt-login-button": "ڤامین ئوٙمائن",
        "pt-createaccount": "حئساڤ راس بأکیت",
        "pt-userlogout": "د ساموٙنە دئرئوٙمائن",
-       "php-mail-error-unknown": "خأطا نادیاری د آلئشتگئر PHP's mail()",
+       "php-mail-error-unknown": "خأطا نادیار د آلئشتگئر PHP's mail()",
        "user-mail-no-addy": "سی کئل کئردئن أنجومانامە د یئ گئل أنجومانامە بی تیرنئشوٙن أنجومانامه تئلاش بییە.",
        "user-mail-no-body": "سی کئل کئردئن أنجومانامە ڤا مینوٙنە حالی یا کوچئک بییئن سی دألیل یا غئر مأنطئقی بییئن ڤئ تئلاش بأکیت.",
        "changepassword": "رارینە گوڤاردئن نە آلئشت بأکیت",
        "resetpass-validity-soft": "رازینە گوڤاردئن توٙ نادیاره:$1\n\n لوطف بأکیت یئ گئل رازینە گوڤاردئن هأنی نە ئنتئخاڤ بأکیت، یا سی د نۊ زئنە کئردئن د نئهاتئر د ئیچئ \"{{int:resetpass-submit-cancel}}\" بأپوٙرنیت.",
        "passwordreset": "د نۊ دأئن رازینە گوڤاردئن",
        "passwordreset-text-one": "ئی نوم بألگە نە سی گئرئتئن یئ گئل رازینە گوڤاردئن موڤأقأت ڤا أنجومانامە توٙ پور بأکیت.",
-       "passwordreset-text-many": "{{PLURAL:$1|یه گل د رشنه گه یا نه سی یه که رازینه گواردن موقتی وا انجومانامه گرته بوئه پر بکیت}}",
-       "passwordreset-disabled": "نو کرد رازینه گواردن د ای ویکی ناکشتگر بیه.",
-       "passwordreset-emaildisabled": "چی یا هنی انجومانامه د ای ویکی ناکشتگر بیه.",
+       "passwordreset-text-many": "{{PLURAL:$1|یئ گئل د جاگە یا نە سی گئرئتئن رازینە گوڤاردئن موڤأقأتی نە ڤا أنجومانامە گئرئتە بوٙأ پور بأکیت.}}",
+       "passwordreset-disabled": "نۊ کئردئن رازینە گوڤاردئن د ئی ڤیکی ناکونئشگأر بییە.",
+       "passwordreset-emaildisabled": "چیا هأنی کئ هان د أنجومانامە د ئی ڤیکی ناکونئشتگأر بینە.",
        "passwordreset-username": "نوم کاریاری:",
        "passwordreset-domain": "پوشگئر",
-       "passwordreset-capture": "اÙ\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 Ù\86تÛ\8cجÙ\87 Ù\86Ù\87 Ø¨Ù\88Û\8cÙ\86Û\8cتÙ\88؟",
-       "passwordreset-capture-help": "ار Ø´Ù\85ا Ø§Û\8c Ø¬Ø¹Ù\88Ù\87 Ù\86Ù\87 Ù\88ارسÛ\8c Ø¨Ú©Û\8cد. Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 Ù\88 Ø®Ù\88ئÛ\8c Ø§Ù\88سÙ\87 Ú©Ù\87 Ø³Û\8c Ú©Ø§Ø±Û\8cار Ú©Ù\84 Ø¨Û\8cÙ\87 Ø¨Ù\88ئÙ\87 Ø¨Ù\88Û\8cÙ\86Û\8cتش.",
+       "passwordreset-capture": "Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 Ù\86أتÛ\8cجÛ\95 Ù\86Û\95 Ø³Ø¦Ù\84 Ø¨Ø£Ú©Û\8cت؟",
+       "passwordreset-capture-help": "أر Ø´Ù\88Ù\85ا Ø¦Û\8c Ø¬Ø£Ú¤Û\95 Ù\86ئ Ú¤Ø§Ø±Ø¦Ø³Û\8c Ø¨Ø£Ú©Û\8cت.Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 (ڤا Ø±Ø§Ø²Û\8cÙ\86Û\95 Ú¯Ù\88ڤاردئÙ\86 Ù\85Ù\88ڤأÙ\82أتÛ\8c) Ø¬Ù\88Ù\99رÛ\8c Ú©Ø¦ Ø³Û\8c Ú©Ø§Ø±Û\8cارÛ\8cا Ù\87Ø£Ù\86Û\8c Ú©Ø¦Ù\84 Ø¨Û\8cÛ\8cÛ\95 Ø¯Û\8cارÛ\8c Ù\85Û\8cÚ©Û\95.",
        "passwordreset-email": "تیرنئشوٙن أنجومانامە",
-       "passwordreset-emailtitle": "جزئیات حساو ها د {{نوم مالگه}}",
+       "passwordreset-emailtitle": "جوزئیات حئساڤ ها د {{نوم مالگە}}",
        "passwordreset-emailtext-ip": "یه کسی(شات خوتو، وا تیرنشون آی پی $1) سی د نو زنه کردن رازینه گواردن تو د {{SITENAME}}  درحاست کرده($4).\nسی کاریار «$2» یه گل رازینه گواردن موقتی دروس بیه و و هؤمبراور «$3» ئه.\nار تمارزو تو یه بیه ایسه باید بیایت وامین سامونه و یه گل رازینه گواردن هنی بهاییت\nرازینه گواردن شما د طیل {{PLURAL:$5|یه رو|$5 رو}} باطل بوئه.\n\nار کس هنی چنی درحاستی کرده یا یه که شما رازینه گواردن دمایی خوتونه د ویر اوردیت و تر نمیهایت ونه آلشت بیئت، می تونیت د ای پیغوم تیه پوشی بکیت و همو رازینه گواردن دمایی نه وه کار به ونیت.",
        "passwordreset-emailtext-user": "کاریار $1 د {{SITENAME}} د نو زنه کردن رازینه گواردن شمانه د{{SITENAME}} ($4) کرده. {{PLURAL:$3|حساو|حساویا}} کاریاری که هان د هار د وا ای تیرنشون انجومانامه ها د ارتواط:\n\n$2\n\n{{PLURAL:$3|ای رازینه گواردن موقت|ای رازینه گواردنیا موقت}} تا {{PLURAL:$5|یه رو|$5 رو}} باطل بوئه.\nار کس هنی چنی درحاستی کرده یا یه که شما رازینه گواردن دمایی خوتونه د ویر اوردیت و تر نمیهایت ونه آلشت بیئت، می تونیت د ای پیغوم تیه پوشی بکیت و همو رازینه گواردن دمایی نه وه کار به ونیت.",
        "passwordreset-emailelement": "نوم کاریاری: $1\nرازینه گواردن موقتی: $2",
        "selfredirect": "<strong>هشدار:</strong> شما د حال و بار آلشت دئن لا بلگه وه خوش هیئن.\nشایت دال اشتوایی سی آلشت دئن لا نه انتخاو کردیته، یا شایت بلگه نه اشتوایی ویرایشت می کیت.\n\nار ری \"{{int:savearticle}}\" دوبار بپورنیت، آلشت دئن لا دروس بوئه.",
        "missingcommenttext": "لطفن د ایچه ویر و باور بیئتو",
        "missingcommentheader": "<strong>د ویر ونا:</strong> شما هنی یه گل موضوع/سرخط سی ای ویر و باور نها اماییه نکردیته.\nار شما د نو د ری\"{{int:savearticle}}\" بپورنیت, ویرایشت شما حالی اماییه بوئه.",
-       "summary-preview": "چکسته پیش سیل:",
+       "summary-preview": "چئکئسە پیش سئیل:",
        "subject-preview": "پیش سیل موضو سرخط",
        "previewerrortext": "یه گل خطا د گاتی که شما میهاستیت یه گل پیش سیل د آلشتیاتو داشتوین پیش اومائه.",
        "blockedtitle": "کاریار نهاگری بیه",
        "sitejspreview": "<strong>د ویر داشتوئیت که شما فقط می تونیت ای ای جاوا اسکریپت نه فقط پیش سیل بکیت. وه د ایسنی هنی اماییه نبیه!</strong>",
        "userinvalidcssjstitle": "<strong>زئنار:</strong> پوسه \"$1\" نیئش.\nسی اس اس جاونه و بلگه یا جاوا اسکریپت  سرون وا حرف کؤچک نه وه کار بسته، همچنو{{ns:کاریار}}:فو/وکتور.سی اس اس چی د ضد{{ns:کاریار}}:فو/وکتور. سی اس اسه.",
        "updated": "(تازه بيه)",
-       "note": "'''نيسنن:'''",
+       "note": "'''نیسأنئن:'''",
        "previewnote": "فقط ای پیش سیل د ویرتو با.\nآلشتیاتو هنی اماییه نبیه.",
        "continue-editing": "رو د راساگه ویرایشت",
        "previewconflict": "ورگشت پیش سیل د نیسسه د راساگه وارو ویرایشت چی شکل دیار بیین بوئه ار شما وه نه سی اماییه کردن انتخاو بکیت.",
        "editing": "د حال و بال ڤیرایئشت $1",
        "creating": "راس کئردئن $1",
        "editingsection": "د حال و بال ڤیرایئشت $1 (بأرجا$1)",
-       "editingcomment": "د حال و بال ویرایشت$1 (بهرجا تازه)",
+       "editingcomment": "د حال و بال ڤیرایئشت $1 (بأرجا تازە)",
        "editconflict": "ری ڤئ ری کاری د ڤیرایئشت: $1",
        "explainconflict": "داوسه که شما شرو د ویرایشت ای بلگه کردیته، یه نفر هنی ای بلگه نه آلشت دئه.\nراساگه وارو نیسسه بلگه نیسسه نه چی یه که وجود داشتوه د ور میئره.\nآلشتیا شما د نیسسه هاری نشو دئه هئ.\nشما با آلشتیاتونه د نیسسه که هئش یکی بکید.\nفقط متنی که ها د رو د گاتی که شما\"{{رقم:اماییه کاری گوتار}}\" نه گزارشت می کید اماییه بوئه",
        "yourtext": "نیسئسە شوما",
-       "storedversion": "دوواره دیئن انبار بیه.",
+       "storedversion": "ڤانئیأری ئمایە بییە",
        "nonunicodebrowser": "<strong>زئنار:دووارته نئر شما وا نیسسه یا یونیکد سازگاری ناره.</strong>\nیه گل راحل وه کار گرته بیه سی یه که شما بلگه یا نه وا امنیت ویرایشت بکیت:\nنیسه یا غیر-ASCII  د پایه رازینه یا 16 تایی دتو نشو دئه بوئه.",
        "editingold": "<strong>زئنار:شما داریت یه گل وانئری نا به هنگوم بیه نه سی ای بلگه ویرایشت می کید</strong>\nار شما ونه اماییه بکیت،هر آلشتی که د اول سی ای وانئری انجوم بیه گم بوئه.",
        "yourdiff": "فأرخیا",
        "log-fulllog": "دیئن هأمە پئهئرستنوٙمە یا",
        "edit-hook-aborted": "ویرایشت وا قلاو نهاگری بیه.\nهیچ توضیئ سیش نئ.",
        "edit-gone-missing": "نبوئه ای بلگه نه وه هنگوم بکیت.\nوه نظر میا که وه پاکسا بیه.",
-       "edit-conflict": "ڤیرایئشت ری ڤئ ری کاری.",
+       "edit-conflict": "ری ڤئ ری کاری د ڤیرایئشت.",
        "edit-no-change": "سی یه که آلشتیا د یه گل نیسسه دروس بیه د ویرایشت شما تیه پوشی بیه.",
        "postedit-confirmation-created": "بألگە دوروس بییە.",
        "postedit-confirmation-restored": "بألگە د نۊ ئمایە بییە.",
        "prefs-edits": "شماره ویرایشتا:",
        "prefsnologintext2": "لطف بکیت بیایت وامین و ترجیحات خوتونه آلشت بئیت.",
        "prefs-skin": "پوس",
-       "skin-preview": "پیش سیل",
+       "skin-preview": "پیش سئیل",
        "datedefault": "هیچ ترجیحات دش نئ",
        "prefs-labs": "گزینشتیا ازماشتی",
-       "prefs-user-pages": "بلگه یا کاریار",
-       "prefs-personal": "پروفایل کاریار",
-       "prefs-rc": "Ø¢Ù\84شتÛ\8cا ØªØ§Ø²Ù\87 Ø¨Ø§Ù\88",
-       "prefs-watchlist": "سیل برگ",
-       "prefs-editwatchlist": "ویرایشت سیل برگ",
+       "prefs-user-pages": "بألگە کاریار",
+       "prefs-personal": "پوروفایل کاریار",
+       "prefs-rc": "Ø¢Ù\84ئشتÛ\8cا Ø¦Û\8cسئÙ\86Û\8c",
+       "prefs-watchlist": "سئیل بأرگ",
+       "prefs-editwatchlist": "ڤیرایئشت سئیل بأرگ",
        "prefs-editwatchlist-label": "داده یا نه د سیل برگ خوتو ویرایشت بکیت:",
        "prefs-editwatchlist-edit": "داسونانه سیل بکیت و ونونه د سیل برگ خوتو ورداریت",
        "prefs-editwatchlist-raw": "ویرایشت ردیفی سیل برگ",
        "timezoneregion-indian": "جهوناو هند",
        "timezoneregion-pacific": "جهوناو آروم",
        "allowemail": "انجومانامه نه سی کاریاریا هنی کنشتگر کو",
-       "prefs-searchoptions": "پی جوری",
+       "prefs-searchoptions": "پئی جوٙری",
        "prefs-namespaces": "نوم جایا",
        "default": "پيش فرض",
        "prefs-files": "جانیایا",
        "prefs-common-css-js": " سی اس اس/جاوا اسکریپت بهر بیه سی همه پوسه یا:",
        "prefs-reset-intro": "شما می تونیت ای بلگه سی د نو زنه کردن ترجیحات خوت وه شکل تیارگه پیش فرض وه کار بوونیت.\nیه ورئشت پذیر نئ.",
        "prefs-emailconfirm-label": "پش راست کردن انجومانامه:",
-       "youremail": "اÙ\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87:",
+       "youremail": "Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95:",
        "username": "{{GENDER:$1|نوم کاریاری}}:",
        "prefs-memberingroups": "{{GENDER:$2|اندوم}}  {{PLURAL:$1|گرویا|گرویا}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-help-email-required": "تیرنشون انجومانامه واس با.",
        "prefs-info": "دونسمنیا اولیه",
        "prefs-i18n": "جهون ولاتمنی",
-       "prefs-signature": "امضا",
+       "prefs-signature": "ئمضا",
        "prefs-dateformat": "شلک گات",
        "prefs-timeoffset": "جا وه جایی گاتی",
        "prefs-advancedediting": "گزینه یا خلکمنی",
        "prefs-editor": "ويرايشتگر",
-       "prefs-preview": "پیش سیل",
+       "prefs-preview": "پیش سئیل",
        "prefs-advancedrc": "گزینه یا پیشکرده",
        "prefs-advancedrendering": "گزینه یا پیشکرده",
        "prefs-advancedsearchoptions": "گزینه یا پیشکرده",
        "userrights-irreversible-marker": "$1*",
        "userrights-conflict": "تعارض دسرسیا کاریاری! لطف بکیت یه گل وارسی انجوم بئیت و آلشتانه پشت راس بکیت.",
        "userrights-removed-self": "شما د خوئی حقوق خوتونه ؤرداشتیته، چی یه که مثلا شما تر نمی تونیت وه ای بلگه دسرسی داشتویت.",
-       "group": "گرو",
+       "group": "جأرغە",
        "group-user": "کاریاریا",
        "group-autoconfirmed": "کاریاریا خود پوشت راس بییە",
        "group-bot": "بوتیا",
index 5a10de5..96c0a12 100644 (file)
        "changecontentmodel-success-title": "Turinio modelis buvo atnaujintas",
        "changecontentmodel-success-text": "Turinys, kurio tipas [[:$1]], buvo atnaujintas.",
        "changecontentmodel-cannot-convert": "Turinys [[:$1]] negali būti konvertuotas į $2 tipą.",
-       "changecontentmodel-title-cantexist": "Negalima turėti puslapio $1.",
        "changecontentmodel-nodirectediting": "$1 turinio modelis nepalaiko tiesioginio redagavimo",
        "log-name-contentmodel": "Turinio modelio kaitos istorija",
        "log-description-contentmodel": "Įvykiai susiję su puslapio turinio modeliu",
        "logentry-merge-merge": "$1 {{GENDER:$2|sujungė}} $3 į $4 (versijas iki $5)",
        "logentry-move-move": "$1 pervadino puslapį $3 į $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|perkėlė}} puslapį $3 į $4 be nukreipimo",
-       "logentry-move-move_redir": "$1 {{GENDER:$2|perkėlė}} puslapį $3 į $4 per nukreipimą",
+       "logentry-move-move_redir": "$1 {{GENDER:$2|perkėlė}} puslapį $3 į $4 (anksčiau buvo nukreipiamasis)",
        "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|pervadino}} puslapį $3 į $4, nesukurdamas nukreipimo",
        "logentry-patrol-patrol": "$1 {{GENDER:$2|payžėmjo}} versiją $4 puslapio $3 kaip patruliuojama",
        "logentry-patrol-patrol-auto": "$1 automatiškai {{GENDER:$2|pažymėjo}} versiją $4 puslapio $3 kaip patruliuojama",
index 546bd0e..5dfc242 100644 (file)
        "sunday": "یە شأمە",
        "monday": "دوٙشمە",
        "tuesday": "سەشمە",
-       "wednesday": "چار شمه",
+       "wednesday": "چار شأمأھ",
        "thursday": "پأشأمە",
        "friday": "جوٙمَ",
        "saturday": "شأمە",
-       "sun": "یه شمه",
+       "sun": "یە شأمأھ",
        "mon": "دوٙشأمأھ",
        "tue": "سەشأمە",
-       "wed": "چارشمه",
-       "thu": "پشÙ\85Ù\87",
+       "wed": "چارشأمأھ",
+       "thu": "پأشأÙ\85Û\95",
        "fri": "جومَ",
-       "sat": "شمه",
+       "sat": "شأمأھ",
        "january": "أڤأل قأھارھ",
        "february": "لیریشگوٙن",
        "march": "ئنهزینوٙن",
        "october": "مالبارکوٙنوٙن",
        "november": "ئا سأردکوٙنوٙن",
        "december": "ئا ریجیکنوٙن",
-       "january-gen": "اÙ\88Ù\84 Ù\82هارھ",
+       "january-gen": "أڤأÙ\84 Ù\82Ø£هارھ",
        "february-gen": "لیریشگوٙن",
-       "march-gen": "ئنهزنۉن",
+       "march-gen": "ئنهزینوٙن",
        "april-gen": "نۉرۉزماھ",
        "may-gen": "گلبارماھ",
        "june-gen": "جۉرش",
        "july-gen": "میۉھ رسۉن",
-       "august-gen": "مه گرمه",
-       "september-gen": "شنیارۉن",
-       "october-gen": "Ù\85اÙ\84بارکÙ\86Û\89ن",
-       "november-gen": "ئا Ø³Ø±Ø¯Ú©Ù\86Û\89ن",
-       "december-gen": "ئا رجکنۉن",
+       "august-gen": "مە گأرمە",
+       "september-gen": "شینیاروٙن",
+       "october-gen": "Ù\85اÙ\84بارکÙ\88Ù\99Ù\86Ù\88Ù\99ن",
+       "november-gen": "ئا Ø³Ø£Ø±Ø¯Ú©Ù\88Ù\99Ù\86Ù\88Ù\99ن",
+       "december-gen": "ئا ریجیکنوٙن",
        "jan": "أڤأل قأھارھ",
        "feb": "لیریشگوٙن",
        "mar": "ئنهزینوٙن",
        "november-date": "نوامبر $1",
        "december-date": "دسامبر $1",
        "pagecategories": "{{PLURAL:$1|دسە|دسە یل}}",
-       "category_header": "بلگه یل مئن دسه \"$1\"",
-       "subcategories": "دسه یل فرعی",
+       "category_header": "بألگە یل مئن دأسە \"$1\"",
+       "subcategories": "دسە یل فأرعی",
        "category-media-header": "مدیا مئن دسه \"$1\"",
        "category-empty": "ای دسه الآن هیچ بلگه یا مدیا ناره",
        "hidden-categories": "{{PLURAL:$1|دسە قائم|دسە یل قائم}}",
        "category-article-count-limited": "دومن الذکر {{PLURAL:$1|بلگه هس|$1 بلگه هسن}} د او دسه جریانی.",
        "category-file-count": "{{PLURAL:$2|ای دسه فقط فایلل دۉمنه دارھ.|دۉمن الذکر{{PLURAL:$1|فایل هس|$1 فایلل هسن}} د ای دسه, بیشتر زھ$2 کل.}}",
        "category-file-count-limited": "دومن الذکر {{PLURAL:$1|فایل هس|$1 فایلل هسن}} د او دسه جریانی.",
-       "listingcontinuesabbrev": "دنباله",
+       "listingcontinuesabbrev": "دۉنبالە",
        "index-category": "بلگه یل ایندکس وابیده",
        "noindex-category": "بلگه یل ایندکس نوابیده",
        "broken-file-category": "بلگه یل وا فایلل لینک اشکسه",
        "about": "درباره",
        "article": "بلگه محتوا",
-       "newwindow": "(د یه پنجرھ دیه ۉا کۉ )",
-       "cancel": "Ù\84غÙ\88",
+       "newwindow": "(د یە پأنجیرھ دیە ڤا کۉ )",
+       "cancel": "Ù\84أغڤ",
        "moredotdotdot": "بیشتر...",
        "morenotlisted": "ای نوم بلگه کامل نی",
        "mypage": "بلگه",
-       "mytalk": "گپ",
+       "mytalk": "گأپ",
        "anontalk": "سی ای آدرس آی پی گپ بزه",
-       "navigation": "هدایت کردن",
+       "navigation": "هدایت کیردأن",
        "and": "&#32;ڤ",
        "qbfind": "سیل کردن",
        "qbbrowse": "نوم بلگه",
        "variants": "أنۉاع",
        "navigation-heading": "مأنۉ ناۉ ۉری",
        "errorpagetitle": "خطا",
-       "returnto": "بازگشت وھ $1.",
+       "returnto": "بازگشت ڤە $1.",
        "tagline": "زھ {{SITENAME}}",
        "help": "هوٙمیاری",
        "search": "جۉستأن",
        "permalink": "لینکل دائمی",
        "print": "چاپ",
        "view": "نما",
-       "view-foreign": "نما مئن  $1",
+       "view-foreign": "نیما مئن  $1",
        "edit": "ئیصلاح",
        "edit-local": "اصلاح توضیحتل محلی",
        "create": "درست کردن",
-       "create-local": "ۉندن تۉضیحتل محلی",
+       "create-local": "ڤأندن توٙضیحأتل مأحألی",
        "editthispage": "اصلاح ای بلگه",
        "create-this-page": "درست کو ای بلگه نه",
        "delete": "حذف",
        "protectthispage": "ای بلگنه حفاظت کو",
        "unprotect": "تغییر دائن حالت حفاظت",
        "unprotectthispage": "تغییر دائن حالت حفاظت ای بلگه",
-       "newpage": "بلگه نۉ",
+       "newpage": "بألگە نۉ",
        "talkpage": "گپ زئن ای بلگه",
        "talkpagelinktext": "گأپ",
        "specialpage": "بلگه مخصوص",
        "otherlanguages": "مئن زۉۉنل دیە",
        "redirectedfrom": "(تصحیح مجدد زھ $1)",
        "redirectpagesub": "بلگه تصحیح و هدایت زه مجدد",
-       "redirectto": "تغÛ\8cÛ\8cر Ø¯Ø§Ø¦Ù\86 Ù\85سÛ\8cر Û\89Ú¾:",
+       "redirectto": "تأغÛ\8cÛ\8cر Ø¯Ø§Ø¦Ù\86 Ù\85أسÛ\8cر Ú¤Û\95:",
        "lastmodifiedat": "ئی بألگە اخیرا تأغییر ڤ ئیصلاح ڤابیە مأئنە $1, مأئنە $2.",
        "viewcount": "ای بلگه قابل دسترسی وابیه {{PLURAL:$1|یه بار|$1 مدتل}}.",
        "protectedpage": "بلگه حفاظت وابیه",
        "aboutsite": "پۉرۉجھ : دأربارھ",
        "aboutpage": "Project:دأربارھ",
        "copyright": "مطلب دومن $ 1 هس نکه خلاف هونو ذکر وابی.",
-       "copyrightpage": "{{ns:project}}:کپی رایت",
+       "copyrightpage": "{{ns:project}}:کۉپی رایت",
        "currentevents": "اتفاقل جاری",
        "currentevents-url": "Project:اتفاقل جاری",
        "disclaimers": "ئینکار کنندھ یل",
        "disclaimerpage": "Project:ئینکار کارۉأران",
-       "edithelp": "هۉمیاری سی اصلاح",
+       "edithelp": "هوٙمیاری سی ئیصلاح",
        "mainpage": "بألگە أصلی",
        "mainpage-description": "بألگە أصلی",
        "policy-url": "Project:خط مشی",
        "newmessagesdifflinkplural": "آخر {{PLURAL:$1|تغییر|999=تغییرل}}",
        "youhavenewmessagesmulti": "ایشا پیوم نو داریت مئنه\n$1",
        "editsection": "ئیصلاح",
-       "editold": "اصلاح",
+       "editold": "ئÛ\8cصلاح",
        "viewsourceold": "دیئن منبع",
        "editlink": "ئیصلاح",
        "viewsourcelink": "دیئن سأرچیشمە",
        "sort-descending": "مرتب سازی وا صعودی",
        "sort-ascending": "مرتب سازی وا صعودی",
        "nstab-main": "بألگە",
-       "nstab-user": "بلگه کارۉر",
+       "nstab-user": "بألگە کارڤأر",
        "nstab-media": "بلگه مدیا",
        "nstab-special": "بألگە یل ڤیجە",
        "nstab-project": "بلگه پرۉجه",
        "nstab-image": "فایل",
        "nstab-mediawiki": "پیوم",
-       "nstab-template": "اÙ\84Ú¯Û\89",
+       "nstab-template": "ئÛ\89Ù\84Ú¯Ù\88Ù\99",
        "nstab-help": "بلگه هومیاری",
        "nstab-category": "دسە",
        "nosuchaction": "چنی دستوری موجود نی",
        "badarticleerror": "ای عمل نیوا ری ای بلگه اجرا وابی.",
        "cannotdelete-title": "نیوا بلگنه حذف کی \"$1\"",
        "badtitle": "عنۉان بد",
-       "badtitletext": "عنۉان درخۉاستی نامعتبر، خالی، یا عنۉانی بین زۉۉنی یا بین‌ۉیکی‌ای با پیۉند نادرسته.\nۉ ممکنه  یه یا چند کاراکتر داشته بۉھ که مئن عنۉان مربۉط نۉا زش استفادھ کنین.",
-       "viewsource": "دÛ\8cئÙ\86 Ø³Ø±Ú\86Ø´Ù\85Ú¾",
+       "badtitletext": "عۉنڤان دأرخڤاستی نامۉعتأبأر، خالی، یا عۉنڤانی بین زوٙوٙنی یا بین‌ ڤیکی‌ ئی با پیڤأند نادۉرۉستە.\nڤ مۉمکینە  یە یا چأند کاراکتیر داشتە بۉھ کە مئن عۉنڤان مأربوٙط نأڤا زیش ئیستیفادھ کۉنین.",
+       "viewsource": "دÛ\8cئÙ\86 Ø³Ø£Ø±Ú\86Û\8cØ´Ù\85Û\95",
        "viewsource-title": "دیئن منبع سی $1",
        "actionthrottled": "عمل متوقف وابی",
        "protectedpagetext": "ای بلگه سیکه اصلاح یا دیهر عملل ریش انجام نبی محافظت وابیه",
        "virus-unknownscanner": "آنتی ویروس ناشناخته",
        "welcomeuser": "خش اومیت، $1!",
        "yourname": "نوم کارور:",
-       "userlogin-yourname": "نۉم کارۉر",
-       "userlogin-yourname-ph": "نۉم کارۉری خۉتۉنه بنیت ایچھ",
+       "userlogin-yourname": "نۉم کارڤأر",
+       "userlogin-yourname-ph": "نۉم کارڤأری خۉتوٙنە بینیت ئیچە",
        "createacct-another-username-ph": "نوم کارورنه وار بکیت",
        "yourpassword": "رمز:",
-       "userlogin-yourpassword": "رمز",
+       "userlogin-yourpassword": "رأمز",
        "userlogin-yourpassword-ph": "رمز خۉتۉنه ۉارد بکنیت",
        "createacct-yourpassword-ph": "رمزنه ۉارد بکنیت",
        "yourpasswordagain": "مجددا رمزنه تایپ بکیت",
        "userlogin-signwithsecure": "د اتصال ایمن استفاده کو",
        "yourdomainname": "دومین کارو:",
        "password-change-forbidden": "ایشا نیتریت مئنه ای ویکی رمزه یلنه اصلاح بکیت",
-       "login": "ئۉیدن ۉھ سیستم",
+       "login": "ئوٙییدن ڤە سیستم",
        "nav-login-createaccount": "اوییدن وه سیستم / درست کردن اکانت",
        "userlogin": "اوییدن وه سیستم / درست کردن اکانت",
        "userloginnocreate": "اویدن وه سیستم",
        "userlogin-joinproject": "ملحق شۉ ۉھ {{SITENAME}}",
        "nologin": "اکانت ناریت؟ $1.",
        "nologinlink": "راست کردن یه حساو کاروری",
-       "createaccount": "راس کردن حسآۉ",
+       "createaccount": "راس کیردأن حیسآۉ",
        "gotaccount": "اکانت داریت؟ $1.",
        "gotaccountlink": "اویدن وه سیستم",
        "userlogin-resetlink": "مشخصه یل ورود خوتونه نونیت؟",
        "createaccountreason": "دلیل:",
        "createacct-reason": "دلیل",
        "createacct-reason-ph": "سیچه داریت یه اکانت دیه ایسازیت",
-       "createacct-captcha": "چک کردن امنیتی",
-       "createacct-imgcaptcha-ph": "اÛ\8c Ù\86شتÙ\86Ù\87 Ú©Ú¾ Ø¯Û\89Ù\85Ù\86 Ø³Û\8cÙ\84 Ú©Û\8c Û\89ارد کۉ",
+       "createacct-captcha": "چیک کیردأن أمنیأتی",
+       "createacct-imgcaptcha-ph": "ئÛ\8c Ù\86شتÙ\86Û\95 Ú©Û\95 Ø¯Ù\88Ù\99Ù\85Û\8cÙ\86 Ø³Û\8cÙ\84 Ú©Û\8c Ú¤Ø§Ø±Û\8cد کۉ",
        "createacct-submit": "حسآۉ خۉتۉنه راس کنیت",
        "createacct-another-submit": "یه اکانت دیه بساز",
        "createacct-benefit-heading": "{{SITENAME}} ۉا بجلی کپ خۉتۉن راسھ بیه.",
        "accountcreated": "اکانت ساخته بی",
        "createaccount-title": "اکانت سازی سی {{SITENAME}}",
        "login-abort-generic": "ورود ایشا ناموفق وابی - سقط وابی",
-       "loginlanguagelabel": "زۉۉن:$1",
+       "loginlanguagelabel": "زوٙوٙن:$1",
        "pt-login": "ئۉیدأن ڤھ سیستم",
        "pt-login-button": "ئۉیدن ۉھ سیستم",
-       "pt-createaccount": "راس کردن حسآۉ",
-       "pt-userlogout": "رتن زھ سیستم",
+       "pt-createaccount": "راس کیردأن حیسآۉ",
+       "pt-userlogout": "رأتÙ\86 Ø²Ú¾ Ø³Û\8cستÙ\85",
        "changepassword": "تغییر رمز",
        "resetpass_announce": "سی پایان ورود ، ایشا واسی یه رمز جدید سیخوت به ونی.",
        "resetpass_header": "تغییر رمز اکانت",
        "resetpass-temp-password": "رمز جایگزین",
        "resetpass-expired": "رمز ایشانه اعتبار ناره.لطفا یه رمز نو سیخوتون بونیت.",
        "passwordreset": "تعویض رمز",
-       "bold_sample": "Ù\85تÙ\86 Ú¯Ù¾ Ù\86ما",
-       "bold_tip": "Ù\85تÙ\86 Ú¯Ù¾ Ù\86ما",
-       "italic_sample": "Ù\85تÙ\86 Ø´Ú©Ø³ØªÙ\87",
-       "italic_tip": "Ù\85تÙ\86 Ø´Ú©Ø³ØªÙ\87",
-       "link_sample": "عنۉان لینک",
-       "link_tip": "لینک داخلی",
-       "extlink_sample": "http://www.example.com عنۉان لینک",
-       "extlink_tip": "(به خاطر بسپار http:// prefix)\nلینک خارجی",
-       "headline_sample": "سرخط Ù\85تن",
-       "headline_tip": "2سرخط یکسان",
-       "nowiki_sample": "Ù\85تÙ\86 Ø´Ú©Ù\84 Ù\86دائھ Û\8cاÙ\81رÙ\85ت Ù\86Û\89ابÛ\8cدھ Ø±Ø§ Ø§Û\8cچۉ بنین",
-       "nowiki_tip": "زھ فرمت کردن یا شکل دائن ۉیکی دس ۉردار",
-       "image_tip": "فایل محاط ۉابید",
-       "media_tip": "لینک فایل",
-       "sig_tip": "اÙ\85ضا Ø§Û\8cشا Û\89 Ø¨Ø±Ú\86سب Ø²Ù\85ان",
-       "hr_tip": "خط Ø§Ù\81Ù\82Û\8c (Ú©Ù\85 Ø§Ø³ØªÙ\81ادھ Ú©نین)",
-       "summary": "خلاصه:",
-       "minoredit": "اÛ\8c Û\8cÙ\87 Ø§ØµÙ\84اح Ú©Ú\86Ú© Û\89ابی",
-       "watchthis": "Ù¾Û\8cÚ¯Û\8cرÛ\8c Ø§Û\8c Ø¨Ù\84Ú¯Ù\87",
-       "savearticle": "بلگه ضبط بوھ",
-       "showpreview": "پیش‌نمایش",
-       "showdiff": "نشۉدائن تغییرل",
-       "anoneditwarning": "<strong>هشدار:</strong> ایشا نۉایته مئنه سیستم. آی پی ایشا سی عۉمۉم قابل رۉیت هی ار اصلاحی بکنیت. ار ایشا <strong>[$1 ورود]</strong> یا <strong>[$2 راس کردن یه حسآۉ]</strong>, اصلاحل ایشا به حسآۉ کارۉری ایشا ھشتھ ایۉان ۉا منفعل حسآۉل دیه..",
-       "loginreqlink": "ئۉیدن ۉھ سیستم",
+       "bold_sample": "Ù\85أتÙ\86 Ú¾ Ú¯Ø£Ù¾ Ù\86Û\8cما",
+       "bold_tip": "Ù\85أتÙ\86 Ú¾ Ú¯Ø£Ù¾ Ù\86Û\8cما",
+       "italic_sample": "Ù\85أتÙ\86 Ú¾ Ø´Û\8cکأستÛ\95",
+       "italic_tip": "Ù\85أتÙ\86 Ú¾ Ø´Û\8cکأستÛ\95",
+       "link_sample": "عۉنڤان ھ لینک",
+       "link_tip": "لینک ھ داخلی",
+       "extlink_sample": "http://www.example.com عۉنڤان ھ لینک",
+       "extlink_tip": "(ڤە خاطیر بیسپار http:// prefix)\nلینک ھ خاریجی",
+       "headline_sample": "سأرخأط Ù\85Ø£تن",
+       "headline_tip": "2سأرخأط یکسان",
+       "nowiki_sample": "Ù\85أتÙ\86 Ø´Û\8cÚ©Ù\84 Ù\86أدائÛ\95 Û\8cا Ù\81Û\89رÙ\85أت Ù\86أڤابÛ\8cدھ Ø±Ù\86Û\95 Ø¦Ø¨چۉ بنین",
+       "nowiki_tip": "زھ فۉرمأت کیردأن یا شیکل دائن ڤیکی دس ڤیردار",
+       "image_tip": "فایل مۉحاط ڤابید",
+       "media_tip": "لینک ھ فایل",
+       "sig_tip": "ئÛ\8cÙ\85ضا Ø¦Û\8cشا Ú¤ Ø¨Ø£Ø±Ú\86أسب Ø²Û\8cÙ\85Ù\88Ù\99ن",
+       "hr_tip": "خأط Ø¦Ù\88Ù\81Û\89Ù\82Û\8c (Ú©Ø£Ù\85 Ø¦Û\8cستÛ\8cÙ\81ادھ Ú©Û\89نین)",
+       "summary": "خۉلاصە:",
+       "minoredit": "ئÛ\8c Û\8cÛ\95 Ø¦Û\8cصÙ\84اح Ú©Ù\88Ù\99Ú\86Û\8cر Ú¤ابی",
+       "watchthis": "Ù¾Û\8cÚ¯Û\8cرÛ\8c Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95",
+       "savearticle": "بألگە ضأبط ڤا",
+       "showpreview": "پیش‌نمۉیش",
+       "showdiff": "نیشۉدائن تأغییرل",
+       "anoneditwarning": "<strong>هۉشدار:</strong> ئیشا نأڤایتە مئنە سیستم. ئای پی ئیشا سی عۉموٙم قابل رۉیأت هی أر ئیصلاحی بۉکۉنیت. أر ئیشا <strong>[$1 وروٙد]</strong> یا <strong>[$2 راس کیردأن یە حیسآۉ]</strong>, ئیصلاحل ئیشا بە حیسآۉ کارڤأری ئیشا ھشتە ئیڤان ڤا مۉنفأعیل حیسآڤل دیە..",
+       "loginreqlink": "ئوٙییدن ڤە سیستم",
        "newarticletext": "ایشا یه لینک ۉھ یه بلگنه که هنی ۉجود نارنه دنبال کردیته.\nسی راس کردن ای بلگه،نوشتنه مئنه جعبه زیر شرۉع کنیت(بینیتۉ [$1 help page] سی اصلاعات اضافی).\nار ایشا ۉا خطا ایچه هیسیت، ری <strong>back</strong> button مرۉرگر ایشا کلیژ کیت.",
        "noarticletext": "ألان مأتنی مئنە ئی بألگە نی.\nئیشا ئیتأرید [[Special:Search/{{PAGENAME}}|جۉستأن سی عۉنڤان ئی بألگە]] مئنە بألگە یلە دیە.\n<span class=\"plainlinks\">[{{fullurl:{{#مأخصوٙص:نیمایل}}|بألگە={{FULLPAGENAMEE}}}} جۉستأن سی نیمایل مأربوٙط], یا [{{fullurl:{{FULLPAGENAME}}|ئیقدام=ئیصلاح}} ئیصلاح کۉ ئی بألگنە]</span>.",
-       "noarticletext-nopermission": "د Ø­Ø§Ù\84 Ø¬Ø§Ø±Û\8c Ù\85تÙ\86Û\8c Ù\85ئÙ\86Ù\87 Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Ù\86Û\8cسس.\nاÛ\8cشا Ø§Û\8cترÛ\8cد [[Special:Search/{{PAGENAME}}|search for this page title]] Ù\85ئÙ\86Ù\87 Ø¨Ù\84Ú¯Ù\84 Ø¯Û\8cÙ\87Ø\8c Û\8cا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs]</span>Ø\8c Û\89Ù\84Û\8c Ø§Û\8cشا Ù\86Û\8cترÛ\8cد Ø§Û\8c Ø¨Ù\84Ú¯Ù\86Ù\87 Ø±Ø§Ø³ Ø¨Ú©نیت.",
+       "noarticletext-nopermission": "د Ø­Ø§Ù\84 Ø¬Ø§Ø±Û\8c Ù\85أتÙ\86Û\8c Ù\85ئÙ\86Û\95 Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Ù\86Û\8cسس.\nئÛ\8cشا Ø¦Û\8cتأرÛ\8cد [[Special:Search/{{PAGENAME}}|search for this page title]] Ù\85ئÙ\86Û\95 Ø¨Ø£Ù\84Ú¯Ù\84 Ø¯Û\8cÛ\95Ø\8c Û\8cا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs]</span>Ø\8c Ú¤Ø£Ù\84Û\8c Ø¦Û\8cشا Ù\86Û\8cتأرÛ\8cد Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Ù\86Û\95 Ø±Ø§Ø³ Ø¨Û\89Ú©Û\89نیت.",
        "editing": "درحال اصلاح $1",
        "creating": "راس کردن $1",
        "editingsection": "درحال اصلاح $1 (قسمت)",
        "templatesused": "{{PLURAL:$1|قالب|قالبل}} اسفادھ بیه مئنه ای بلگه:",
        "template-protected": "(تأحت حمایت)",
-       "template-semiprotected": "(نیمه حمایت ۉابیدھ)",
+       "template-semiprotected": "(نیمە حیمایت ڤابیدھ)",
        "hiddencategories": "ای بلگه عضۉ {{PLURAL:$1|1 دسه بنی قائم|$1 دسه بنی یل قائم}} هیسس :",
        "permissionserrorstext-withaction": "ایشا اجازھ ناریت که $2, سی ای {{PLURAL:$1|دلیل|دلیلل}}:",
        "moveddeleted-notice": "ای بلگه حذف ۉابیدھ.\nحذف ۉ انتقال سیاهه ای بلگه فراهم ۉابیدھ دۉمن سرچشمه.",
        "previousrevision": "← ئیصلاح قأبلی",
        "nextrevision": "ۉرژن نۉتر →",
        "currentrevisionlink": "آخرین ۉرژن",
-       "cur": "فعلی",
-       "last": "قبلی",
-       "rev-delundel": "Ù\82ابÙ\84Û\8cت Øªغییر دائن",
+       "cur": "فیعلی",
+       "last": "Ù\82أبÙ\84Û\8c",
+       "rev-delundel": "Ù\82ابÙ\84Û\8cأت ØªØ£غییر دائن",
        "history-title": "تاریخچه اصلاحل $1",
        "difference-title": "فرخ ۉا بین تجدید نطرل \"$1\"",
        "lineno": "سأطر $1:",
        "diff-multi-sameuser": "({{PLURAL:$1|یه ۉرزن متۉسط|$1 ۉرژنل متۉسط}} تۉسط کارۉر مشابه نشۉ نۉابیه)",
        "searchresults": "نأتیجل جۉستأن",
        "searchresults-title": "نأتیجل جۉستأن سی \"$1\"",
-       "prevn": "قبلی {{PLURAL:$1|$1}}",
-       "nextn": "بعدی {{PLURAL:$1|$1}}",
-       "nextn-title": "بعدÛ\8c $1 {{PLURAL:$1|Ù\86تÛ\8cجÙ\87\86تیجل}}",
+       "prevn": "Ù\82أبÙ\84Û\8c {{PLURAL:$1|$1}}",
+       "nextn": "بأعدÛ\8c {{PLURAL:$1|$1}}",
+       "nextn-title": "بأعدÛ\8c $1 {{PLURAL:$1|Ù\86أتÛ\8cجÛ\95\86Ø£تیجل}}",
        "shown-title": "نیشۉ دائن $1 {{PLURAL:$1|نأتیجە|نأتیجل}} د هر بألگە",
-       "viewprevnext": "مشاهدھ ($1 {{int:pipe-separator}} $2) ($3)",
-       "searchmenu-new": "<strong>درست Ú©Û\89 Ø§Û\8c Ø¨Ù\84Ú¯Ù\86Ù\87 \"[[:$1]]\" Ù\85ئÙ\86Ù\87 Ø§Û\8c Û\89Û\8cÚ©Û\8c!</strong> {{PLURAL:$2|0=|Ù\87Ù\85Ú\86Ù\86Û\8cÙ\86 Ø³Ù\84 Ú©Û\89 Ø¨Ù\84Ú¯Ù\87 Ø§Û\8c Ú©Ù\87 Û\89ا Ø¬Ø³ØªÙ\86 Ù¾Û\8cداش Ú©Ø±Ø¯Û\8cÙ\87.|Ù\87Ù\85Ú\86Ù\86Û\8cÙ\86 Ø³Ù\84 Ú©Û\89 Ù\86تÛ\8cجÙ\84 Ø¬Ø³ØªÙ\86Ù\87.}}",
+       "viewprevnext": "مۉشاهدھ ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-new": "<strong>راس Ú©Û\89 Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Ù\86Û\95 \"[[:$1]]\" Ù\85ئÙ\86Û\95 Ø¦Û\8c Ú¤Û\8cÚ©Û\8c!</strong> {{PLURAL:$2|0=|Ù\87Ø£Ù\85Ú\86Û\8cÙ\86Û\8cÙ\86 Ø³Ù\84 Ú©Û\89 Ø¨Ø£Ù\84Ú¯Û\95 Ø¦Û\8c Ú©Û\95 Ú¤Ø§ Ø¬Û\89ستأÙ\86 Ù¾Û\8cداش Ú©Ø£Ø±Ø¯Û\8cÛ\95.|Ù\87Ø£Ù\85Ú\86Û\8cÙ\86Û\8cÙ\86 Ø³Ù\84 Ú©Û\89 Ù\86أتÛ\8cجÙ\84 Ø¬Û\89ستأÙ\86Û\95.}}",
        "searchprofile-articles": "بألگە مۉحتڤا",
        "searchprofile-images": "چأندرسانە ئی",
        "searchprofile-everything": "همە چیا",
        "searchprofile-everything-tooltip": "جۉستأن سی مۉحتڤا(شامل بألگل گأپ)",
        "searchprofile-advanced-tooltip": "جۉستأن مأئنە هۉمدیرأنگل سفارشی",
        "search-result-size": "$1 ({{PLURAL:$2|1 کألمە|$2 کألمل}})",
-       "search-redirect": "(تغÛ\8cÛ\8cر Ù\85سیر $1)",
-       "search-section": "(قسمت $1)",
+       "search-redirect": "(تأغÛ\8cÛ\8cر Ù\85Ø£سیر $1)",
+       "search-section": "(قیسمأت $1)",
        "search-suggest": "آیا منطۉر ایشا ای بی:$1",
-       "searchall": "همه",
-       "search-showingresults": "{{PLURAL:$4|نتیجه <strong>$1</strong> ز <strong>$3</strong>|نتیجل <strong>$1 - $2</strong> ز <strong>$3</strong>}}",
-       "search-nonefound": "Ù\86تÛ\8cجÙ\87 Ø§Û\8c Ù\85رتبط Û\89ا Ù\87Û\89Ù\86Û\8c Ú©Ù\87 Ø¯Ø± Ø®Û\89است Ø¯Û\8cتÙ\87 نی.",
-       "mypreferences": "تنظیمل",
+       "searchall": "ھأمە",
+       "search-showingresults": "{{PLURAL:$4|Ù\86تÛ\8cجÙ\87 <strong>$1</strong> Ø² <strong>$3</strong>|Ù\86أتÛ\8cجÙ\84 <strong>$1 - $2</strong> Ø² <strong>$3</strong>}}",
+       "search-nonefound": "Ù\86أتÛ\8cجÛ\95 Ø¦Û\8c Ù\85Û\89رتأبÛ\8cØ· Ú¤Ø§ Ù\87Û\89Ù\86Û\8c Ú©Û\95 Ø¯Ø£Ø±Ø®Ú¤Ø§Ø³Øª Ø¯Û\8cتÛ\95 نی.",
+       "mypreferences": "تأرجیحل",
        "right-writeapi": "ئیستفادھ د نڤشتن ڤە صوٙرأت API",
-       "newuserlogpage": "سیاهە راس کردن حسآۉ",
-       "enhancedrc-history": "تاریخچھ",
+       "newuserlogpage": "سیاهە راس کیردأن حیسآۉ",
+       "enhancedrc-history": "ڤیرگار",
        "recentchanges": "تأغییرل نۉ",
-       "recentchanges-legend": "گزینه یل تغییرل اخیر",
-       "recentchanges-summary": "Ø´Û\8cار ØªØºÛ\8cÛ\8cرÙ\84 Ø§Ø®Û\8cر Ù\85ئÙ\86Ù\87 Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Û\89Ú¾ Û\89یکی .",
+       "recentchanges-legend": "گۉزینە یل تأغییرل أخیر",
+       "recentchanges-summary": "Ø´Û\8cار ØªØ£ØºÛ\8cÛ\8cرÙ\84 Ø£Ø®Û\8cر Ù\85ئÙ\86Û\95 Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Ú¤Û\95 Ú¤یکی .",
        "recentchanges-label-newpage": "ئی ئیصلاح یە بألگە نوٙ ئیسازھ",
        "recentchanges-label-minor": "ئی یە ئیصلاح کوٙچیر ڤابی",
        "recentchanges-label-bot": "ئی ئیصلاح تأڤأسۉط یە روٙبات انجام ڤابیە",
-       "recentchanges-label-unpatrolled": "اÛ\8c Ø§ØµÙ\84اح Ù\87Û\89Ù\86Û\89 Ú¯Ø´Øª Ù\86Û\89ابیدھ",
-       "recentchanges-label-plusminus": "اÙ\86دازھ Ø¨Ù\84Ú¯Ù\87 Û\89ا Ø§Û\8c ØªØ¹Ø¯Ø§Ø¯ Ø¨Ø§Û\8cت ØªØºÛ\8cÛ\8cر Ø¯Ø§Ø¯Ú¾ Ø¨Û\8cÙ\87",
-       "recentchanges-legend-heading": "'''Ø¢Ù\84شتÛ\8cا Ø¦Û\8cÚ¾ Ø³Ù\86Û\8c :'''",
-       "recentchanges-legend-newpage": "{{عضۉل انجۉمن:تغییرل اخیر-برچسب-بلگه نۉ}} (هنی سل کۉ [[Special:NewPages|لیست بلگل نۉ]])",
-       "rclistfrom": "نشۉدائن تغییرل نۉ ۉا شرۉع زھ $3 $2",
-       "rcshowhideminor": "اصلاحل کچک $1",
+       "recentchanges-label-unpatrolled": "ئÛ\8c Ø¦Û\8cصÙ\84اح Ù\87Û\89Ù\86Û\89 Ú¯Ø£Ø´Øª Ù\86Ø£Ú¤ابیدھ",
+       "recentchanges-label-plusminus": "Ø£Ù\86دازھ Ø¨Ø£Ù\84Ú¯Û\95 Ú¤Ø§ Ø¦Û\8c ØªÛ\8cعداد Ø¨Ø§Û\8cت ØªØ£ØºÛ\8cÛ\8cر Ø¯Ø§Ø¯Ú¾ Ø¨Û\8cÛ\95",
+       "recentchanges-legend-heading": "'''تأغÛ\8cÛ\8cرÙ\84 Ù\86Û\89 :'''",
+       "recentchanges-legend-newpage": "{{عۉضڤل أنجوٙمأن:تأغییرل أخیر-بأرچأسب-بألگە نۉ}} (هأنی سل کۉ [[Special:NewPages|لیست بألگل نۉ]])",
+       "rclistfrom": "نیشۉ دائن تأغییرل نۉ ڤا شۉرۉ زھ $3 $2",
+       "rcshowhideminor": "ئÛ\8cصلاحل کچک $1",
        "rcshowhideminor-show": "نشۉ دائن",
-       "rcshowhideminor-hide": "قائم کردن",
-       "rcshowhidebots": "$1 ربات‌ل یا بۉتل",
-       "rcshowhidebots-show": "نشۉ دائن",
+       "rcshowhideminor-hide": "قائم کیردأن",
+       "rcshowhidebots": "$1 رۉبات‌یل یا بوٙتیل",
+       "rcshowhidebots-show": "نیشۉ دائن",
        "rcshowhidebots-hide": "قائم کردن",
-       "rcshowhideliu": "$1 حسآۉل وارد وابیدھ",
-       "rcshowhideliu-hide": "قائم کردن",
-       "rcshowhideanons": "$1 کارۉران داخل نۉابیدھ",
+       "rcshowhideliu": "$1 حیسآڤل ڤارید نڤابیدھ",
+       "rcshowhideliu-hide": "قائم کیردأن",
+       "rcshowhideanons": "$1 کارڤأرل ڤارید نڤابیدھ",
        "rcshowhideanons-show": "نشۉ دائن",
-       "rcshowhideanons-hide": "قائم کردن",
-       "rcshowhidemine": "$1 Ø§صلاحل مۉ",
+       "rcshowhideanons-hide": "قائم کیردأن",
+       "rcshowhidemine": "$1 Ø¦Û\8cصلاحل مۉ",
        "rcshowhidemine-show": "نشۉ دائن",
-       "rcshowhidemine-hide": "قائم کردن",
-       "rclinks": "نشودائن ئاخرین $1 تغییر مئن $2 روز اخیر؛ $3",
+       "rcshowhidemine-hide": "قائم کیردأن",
+       "rclinks": "نیشۉ دائن ئاخأرین $1 تأغییر مئن $2 روٙز أخیر؛ $3",
        "diff": "فأرخ",
        "hist": "گۉزاریش",
-       "hide": "قائم کردن",
-       "show": "نشۉ دائن",
+       "hide": "قائم کیردأن",
+       "show": "نیشۉ دائن",
        "minoreditletter": "رز",
        "newpageletter": "تا",
        "boteditletter": "ر",
        "rc-change-size-new": "$1 {{PLURAL:$1|بایت|بایتل}} بأعد تأغییر",
-       "recentchangeslinked": "تغÛ\8cÛ\8cرÙ\84 Ù\85ربÛ\89ط",
+       "recentchangeslinked": "تأغÛ\8cÛ\8cرÙ\84 Ù\85أربÙ\88Ù\99ط",
        "recentchangeslinked-toolbox": "تأغییرل مأربوٙط",
-       "recentchangeslinked-title": "تغÛ\8cÛ\8cرÙ\84 Ù\85رتبط Û\89ا $1",
+       "recentchangeslinked-title": "تأغÛ\8cÛ\8cرÙ\84 Ù\85Û\89رتأبÛ\8cØ· Ú¤ا $1",
        "recentchangeslinked-summary": "ئی بألگە خاص تأغییرل اخیر مأئنە بألگل لینک ڤابیدھ ڤە ئی بألگنە نیشۉ ادھ.\nبألگلی کە مأئنە [[Special:Watchlist|لیست پیگیری یل]] ئیشا هیسن بە شکل '''سیاھ''' نیشۉ دادھ ابۉن.",
-       "recentchangeslinked-page": "نۉم بلگه:",
-       "recentchangeslinked-to": "نشۉ دائن تغییرل بلگلی که ۉ بلگه دادھ بیه لینک دادھ شدنه به جای",
+       "recentchangeslinked-page": "نۉم بألگە:",
+       "recentchangeslinked-to": "نیشۉ دائن تأغییرل بألگلی کە ڤە بألگە دادھ بیە لینک دادھ شۉدنە بە جای",
        "upload": "بلم گیر کردن فایل",
-       "filedesc": "خلاصه",
-       "license-header": "صدۉر مجۉز",
+       "filedesc": "خۉلاصە",
+       "license-header": "صۉدوٙر مۉجأڤیز",
        "imgfile": "فایل",
        "file-anchor-link": "فایل",
        "filehist": "ڤیرگار فایل",
        "filehist-comment": "توٙضیح",
        "imagelinks": "ئیستفادھ د فایل",
        "linkstoimage": "دوٙمین الذکر {{PLURAL:$1|لینکل بألگە|$1 لینک بألگل}} بە ئی فایل:",
-       "nolinkstoimage": "بلگه یلی که ۉھ ای فایل لینک دائنه نی.",
+       "nolinkstoimage": "بألگە یلی کە ڤە ئی فایل لینک دائنە نی.",
        "sharedupload-desc-here": "ئی فایل ز $1 ئوٙمائە ڤ شاید د پۉرۉجە یل دیە مورد ئیستفادھ ڤابین.\nتوٙضیحتل ری [$2 بألگە تۉضیح فایل] دوٙمین نیشۉ ڤابیە .",
-       "upload-disallowed-here": "اÛ\8cشا Ù\86Û\8cترÛ\8cد Ø§Û\8c Ù\81اÛ\8cÙ\84Ù\86Ù\87 Ø¨Ù\86Û\89Û\8cسÛ\8cد",
+       "upload-disallowed-here": "ئÛ\8cشا Ù\86Û\8cتأرÛ\8cت Ø¦Û\8c Ù\81اÛ\8cÙ\84Ù\86Û\95 Ø¨Û\8cÙ\86Ú¤Û\8cسÛ\8cت",
        "randompage": "بألگە بأختە کی",
        "nbytes": "$1 {{PLURAL:$1|بایت|بایتل}}",
        "nmembers": "$1 {{PLURAL:$1|عضۉ|اعضۉل}}",
        "newpages": "بألگە یل نوٙ",
        "pager-older-n": "{{PLURAL:$1|قدیمی تر 1|قدیمی تر $1}}",
-       "booksources": "سرÚ\86Ø´Ù\85Ù\84 Ú©تآۉ",
+       "booksources": "سأرÚ\86Û\8cØ´Ù\85Û\8cÙ\84 Ú©Û\8cتآۉ",
        "booksources-search-legend": "جستن سی سرچشمل کتآۉ",
        "booksources-search": "جستن",
-       "log": "نمایل",
+       "log": "نیمایل",
        "allarticles": "همه بلگل",
        "allpagessubmit": "رۉ",
        "categories": "دسه یل",
-       "mywatchlist": "فهرست پیگیری یل",
+       "mywatchlist": "فیهرست پیگیری یل",
        "watch": "پی‌گیری",
        "dellogpage": "نمایه حذف",
        "rollbacklink": "عأقأب گرد",
        "namespace_association": "هۉمدرأنگل مۉرتأبط",
        "tooltip-namespace_association": "ئینتخاب کۉ ئی جأڤأنە سیکە گأپ یا مۉضوٙع هۉمدرأنگ مۉرتأبط ڤا هۉمدرأنگل ئینتخاب ڤابینە قرار بئنی.",
        "blanknamespace": "(أصلی)",
-       "contributions": "{{GENDER:$1|سھمل}} کارۉر",
-       "mycontris": "سھمل",
+       "contributions": "{{GENDER:$1|سأھمیل}} کارڤأر",
+       "mycontris": "سأھمیل",
        "month": "مئنھ ای ماھ (ۉ قبل زھ ھۉ):",
        "year": "مئنھ ای سال (ۉ قبل زھ ھۉ):",
        "whatlinkshere": "لینکل ئی بألگە",
-       "whatlinkshere-title": "بلگل که لینک دائنه ۉھ \"$1\"",
-       "whatlinkshere-page": "بلگه",
-       "linkshere": "لینک بلگل دۉمن الذکر ۉھ '''[[:$1]]''':",
-       "isredirect": "بلگه تغییر مسیر",
-       "istemplate": "استÙ\81ادھ Û\89ابÛ\8cدھ Ø¯Ø§Ø®Ù\84 Ø¨Ù\84Ú¯Ù\87",
+       "whatlinkshere-title": "بألگل کە لینک دائنە ڤە \"$1\"",
+       "whatlinkshere-page": "بألگە:",
+       "linkshere": "لینک بألگل دوٙمین الذیکر ڤە '''[[:$1]]''':",
+       "isredirect": "بألگە تأغییر مأسیر",
+       "istemplate": "ئÛ\8cستÛ\8cÙ\81ادھ Ú¤Ø§Ø¨Û\8cدھ Ø¯Ø§Ø®Ù\84 Ø¨Ø£Ù\84Ú¯Û\95",
        "isimage": "لینک فایل",
-       "whatlinkshere-prev": "{{PLURAL:$1|Ù\82بÙ\84Û\8c |Ù\85Û\89رد Ù\82بلی$1}}",
-       "whatlinkshere-next": "{{PLURAL:$1|بعدÛ\8c |Ù\85Û\89رد Ø¨عدی $1}}",
+       "whatlinkshere-prev": "{{PLURAL:$1|Ù\82أبÙ\84Û\8c |Ù\85Û\89رد Ù\82Ø£بلی$1}}",
+       "whatlinkshere-next": "{{PLURAL:$1|بأعدÛ\8c |Ù\85Û\89رد Ø¨Ø£عدی $1}}",
        "whatlinkshere-links": "← لینکل",
-       "whatlinkshere-hideredirs": "$1 ØªØºÛ\8cÛ\8cرÙ\84 Ù\85سیر",
-       "whatlinkshere-hidetrans": "$1 ØªØ±Ø§Ú¯Ù\86جایش",
+       "whatlinkshere-hideredirs": "$1 ØªØ£ØºÛ\8cÛ\8cرÙ\84 Ù\85Ø£سیر",
+       "whatlinkshere-hidetrans": "$1 ØªØ£Ø±Ø§Ú¯Û\89Ù\86جاÛ\8cیش",
        "whatlinkshere-hidelinks": "$1 لینکل",
-       "whatlinkshere-filters": "فیلترل",
+       "whatlinkshere-filters": "فیلتیرل",
        "blocklink": "بسە بۉھ",
        "contribslink": "شۉراکأتل",
        "movelogpage": "نمایه جابجایی",
-       "export": "بلگل صادرھ",
+       "export": "بألگل صادرھ",
        "thumbnail-more": "گأپ کردن",
-       "tooltip-pt-userpage": "حسآۉ کارۉری ایشا",
-       "tooltip-pt-mytalk": "بلگه گپ ایشا",
-       "tooltip-pt-preferences": "اÛ\89Ù\84Û\89Û\8cتل مۉ",
-       "tooltip-pt-watchlist": "لیست بلگلی که ایشا تغییرل هۉنۉنه  دنبال اکنین",
-       "tooltip-pt-mycontris": "لیست سھمل ایشا",
+       "tooltip-pt-userpage": "حیسآۉ کارڤأری ئیشا",
+       "tooltip-pt-mytalk": "بألگە گأپ ئیشا",
+       "tooltip-pt-preferences": "ئÛ\89Ù\84Ø£Ú¤Û\8cØ£تل مۉ",
+       "tooltip-pt-watchlist": "لیست بألگلی کە ئیشا تأغییرل هۉنۉنە  دۉنبال ئیکۉنین",
+       "tooltip-pt-mycontris": "لیست سأھمیل ئیشا",
        "tooltip-pt-login": "توٙصیە ڤابوٙھ کە ڤە سیستم داخل بوٙین. أما ئیجباری نیسس",
-       "tooltip-pt-logout": "رتن زھ سیستم",
+       "tooltip-pt-logout": "رأتÙ\86 Ø²Ú¾ Ø³Û\8cستÙ\85",
        "tooltip-pt-createaccount": "توٙصیە ڤابوٙھ کە حسآڤ کارڤأری راس بکنیت یا ڤە سیستم داخل بوٙین. اما ئیجباری نیسس",
        "tooltip-ca-talk": "قسە د بألگە مۉحتڤا",
        "tooltip-ca-edit": "ایسھ ترین ای بلگھ نھ اصلاح کنیت.لطفا قبل اصلاح ای بلگھ ز دۉکمه پیش نمایش استفاده کنیت",
-       "tooltip-ca-addsection": "ئاغاز کردن یە قسمت نوٙ",
-       "tooltip-ca-viewsource": "اÛ\8c Ø¨Ù\84Ú¯Ù\87  Ø¯Û\89Ù\85Ù\86 Ø­Ù\85اÛ\8cتÙ\87. \nاÛ\8cشا ØªØ±Û\8cÙ\86 Ø³Ø±Ú\86Ø´Ù\85Ú¾ Ø³Ú¾ Ø¨Û\89Û\8cÙ\86Û\8cÙ\86",
+       "tooltip-ca-addsection": "ئاغاز کیردأن یە قسمت نوٙ",
+       "tooltip-ca-viewsource": "ئÛ\8c Ø¨Ø£Ù\84Ú¯Û\95 Ø¯Ù\88Ù\99Ù\85Û\8cÙ\86 Ø­Û\8cÙ\85اÛ\8cأتÛ\95. \nئÛ\8cشا ØªØ£Ø±Û\8cÙ\86 Ø³Ø£Ø±Ú\86Û\8cØ´Ù\85Û\95 Ø³Û\95 Ø¨Û\8cØ®Ù\88Ù\99Ù\86Û\8cت",
        "tooltip-ca-history": "ڤیرگار",
        "tooltip-ca-move": "جابجاکردن ای بلگه",
        "tooltip-ca-watch": "ئیضاف کردن ئی بألگە ڤە لیست پیگیری یل ئیشا",
        "tooltip-n-help": "ینە جا سی سیل کردن",
        "tooltip-t-whatlinkshere": "فهرست همە بألگە یل ڤیکی کە ئیچوٙ لینک دارن",
        "tooltip-t-recentchangeslinked": "تأغییرل آخر مئن بألگە کە لینک دانە ڤە ئی بألگە",
-       "tooltip-feed-atom": "تغذÛ\8cÙ\87 Ú©Ú\86Ú© ØªØ±Û\8cÙ\86 Ø¬Ø²Ø¡  Ø§Û\8c Ø¨Ù\84Ú¯Ù\87",
-       "tooltip-t-contributions": "یه لیست ز مشارکت کنندھ یل ۉ مقاله دهندھ یل ای بلگه",
+       "tooltip-feed-atom": "تأغذÛ\8cÛ\95 Ú©Ú\86Ú© ØªØ£Ø±Û\8cÙ\86 Ø¬Û\89زء  Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95",
+       "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-user": "دیئن بألگە کارڤأر",
        "tooltip-ca-nstab-special": "ئی بألگە ھا ڤیجە ڤ ئیشا نیتأرین خۉد ئی بألگنە ئیصلاح کنیت",
        "tooltip-ca-nstab-project": "دیئن بلگه پرۉجه",
        "tooltip-ca-nstab-image": "دیئن بألگە فایل",
-       "tooltip-ca-nstab-template": "دیئن قالب",
+       "tooltip-ca-nstab-template": "دیئن قالیب",
        "tooltip-ca-nstab-category": "دیئن بألگە دسە بأنی",
-       "tooltip-save": "ضبط Ú©Ø±Ø¯Ù\86 ØªØºÛ\8cÛ\8cرÙ\84 Ø§یشا",
-       "tooltip-preview": " Ø¯Û\8cئÙ\86 ØªØºÛ\8cÛ\8cرÙ\84 Ø\8c Ù\84Ø·Ù\81ا Ù\82بÙ\84 Ø¶Ø¨Ø· Ú©Ø±Ø¯Ù\86 Ø¯ Ø§Û\8c Ø®Ø¯Ù\85ت Ø§Ø³ØªÙ\81ادھ Ú©نیت!",
-       "tooltip-diff": "دÛ\8cئÙ\86 ØªØºÛ\8cÛ\8cرÙ\84Û\8c Ú©Ù\87 Ø§Û\8cشا Ù\85ئÙ\86 Ø§Û\8c Ù\85تÙ\86 Ø§Ù\86جاÙ\85 Ø¯Ø§Ø¯Û\8cÙ\86Ù\87",
+       "tooltip-save": "ضأبط Ú©Û\8cردأÙ\86 ØªØ£ØºÛ\8cÛ\8cرÙ\84 Ø¦یشا",
+       "tooltip-preview": " Ø¯Û\8cئÙ\86 ØªØ£ØºÛ\8cÛ\8cرÙ\84 Ø\8c Ù\84Û\89Ø·Ù\81اÙ\8b Ù\82أبÙ\84 Ú¾ Ø¶Ø£Ø¨Ø· Ú©Û\8cردأÙ\86 Ø¯ Ø¦Û\8c Ø®Û\8cدÙ\85أت Ø¦Û\8cستÛ\8cÙ\81ادھ Ú©Û\89نیت!",
+       "tooltip-diff": "دÛ\8cئÙ\86 ØªØ£ØºÛ\8cÛ\8cرÙ\84Û\8c Ú©Û\95 Ø¦Û\8cشا Ù\85ئÙ\86 Ø¦Û\8c Ù\85تÙ\86 Ø£Ù\86جاÙ\85 Ø¯Ø§Ø¯Û\8cÙ\86Û\95",
        "tooltip-rollback": "\"اعادە\" ۉرگأردوٙندأن بە ڤأضع أڤألیە سی ئی بألگە کە سی مۉشارکأت  ئاخر ئیصلاح ڤابیدھ ڤا یە کلیک",
-       "tooltip-undo": "\"Ù\84غÙ\88\"Û\89رگشت Ø§Û\8c Ø§ØµÙ\84اح Û\89 Û\89ا Û\89Û\8cدÙ\86 Ù\81رÙ\85 Ø§ØµÙ\84اح Ù\85ئÙ\86Ù\87 Ù¾Û\8cØ´ Ù\86Ù\85اÛ\8cØ´.اجازھ Ø§Û\8cدھ Ú©Ù\87 Û\8cÙ\87 Ø¯Ù\84Û\8cÙ\84 Û\89Ú¾ Ø®Ù\84اصÙ\87 Ø§Ø¶Ø§Ù\81Ù\87 Ø¨Ú©نی.",
-       "tooltip-summary": "یه خلاصه کچکی بنویسیت",
-       "simpleantispam-label": "اÙ\86تخاب Ø¢Ù\86تÛ\8c-اسپÙ\85\nپر <strong>Ù\86Ú©Ù\86Û\8cت</strong> Ø§Û\8cÙ\86Ù\87 مئن!",
+       "tooltip-undo": "\"Ù\84أغڤ\" Ú¤Û\89رگأشت Ø¦Û\8c Ø¦Û\8cصÙ\84اح Ú¤ Ú¤Ø§ Ú¤Û\8cدÙ\86 Ù\81Û\89رÙ\85 Ø¦Û\8cصÙ\84اح Ù\85ئÙ\86Û\95 Ù¾Û\8cØ´ Ù\86Û\8cÙ\85اÛ\8cØ´.ئÛ\8cجازھ Ø¦Û\8cدھ Ú©Û\95 Û\8cÛ\95 Ø¯Ø£Ù\84Û\8cÙ\84 Ú¤Û\95 Ø®Û\89Ù\84اصÛ\95 Ø¦Û\8cضاÙ\81Û\95 Ø¨Û\89Ú©Û\89نی.",
+       "tooltip-summary": "یە خۉلاصە کچکی بینڤیسیت",
+       "simpleantispam-label": "ئÛ\8cÙ\86تÛ\8cخاب Ø¦Ø§Ù\86تÛ\8c-ئÛ\8cسپÛ\8cÙ\85\nÙ¾Û\89ر <strong>Ù\86Ø£Ú©Û\89Ù\86Û\8cت</strong> Ø¦Û\8cÙ\86Û\95 مئن!",
        "pageinfo-toolboxlink": "اطلاعات بألگە",
        "previousdiff": "← اصلاح قدیمی",
        "nextdiff": "اصلاح نۉتر→",
        "file-info-size": "$1 × $2 پیکسل, اندازھ فایل: $3, MIME نۉع: $4",
-       "file-nohires": "Ù\82ابÙ\84Û\8cت ØªÙ\81Ú©Û\8cÚ© Ø¨Ø§Ù\84اترÛ\8c Ø¯Ø± Ø¯Ø³ØªØ±س نی.",
-       "svg-long-desc": "SVG فایل, تقریبا$1 × $2 پیکسل, اندازھ فایل: $3",
+       "file-nohires": "Ù\82ابÙ\84Û\8cأت ØªØ£Ù\81Ú©Û\8cÚ© Ø¨Ø§Ù\84اتأرÛ\8c Ù\85ئÙ\86 Ø¯Ø£Ø³ØªØ±Û\8cس نی.",
+       "svg-long-desc": "SVG فایل, تأقریبا$1 × $2 پیکسل, اندازھ فایل: $3",
        "show-big-image": "اندازھ أصلی",
        "show-big-image-preview": "اندازھ ئی پیش نمایش:$1.",
        "show-big-image-other": "دیە {{PLURAL:$2|تأفکیک پأذیری|تأفکیک پأذیری یل}}: $1.",
        "show-big-image-size": "$1 × $2 پیکسلل",
        "metadata": "فرادادھ",
-       "metadata-help": " Ø§Û\8c Ù\81اÛ\8cÙ\84 Ø¯Ø§Ø±Ø§Û\8c Ø§Ø·Ù\84اعات Ø§Ø¶Ø§Ù\81Ù\87â\80\8cاÛ\8c Ù\87Û\8c Ú©Ù\87 Ø§Ø­ØªÙ\85اÙ\84اÙ\8b Û\89ا Ø¯Û\89ربÛ\8cÙ\86 Ø¯Û\8cجÛ\8cتاÙ\84Û\8câ\80\8c Û\8cا Ù¾Û\89Û\8cشگرÛ\8c Ú©Ù\87 Ø³Û\8c Ø§Û\8cجاد Û\8cا Ø¯Û\8cجÛ\8cتاÙ\84Û\8câ\80\8cکردÙ\86 Ù\87Û\89 Û\89Ú¾ Ú©Ø§Ø± Ø±Ù\87دھ Ø§Ø¶Ø§Ù\81 Û\89ابÛ\8cدھ . Ø§Û\8cر Ù\81اÛ\8cÙ\84 Ø²Ú¾ Û\89ضعÛ\8cت Ø§Û\89Ù\84Û\8cÙ\87 Ø§Ø³ ØªØºÛ\8cÛ\8cر Ø¯Ø§Ø¯Ú¾ Û\89ابÛ\8cدھ Ø¨Ù\88Ú¾ Ù\85Ù\85Ú©Ù\86Ù\87 Ù\87Ù\85Ù\87 ØªÙ\88ضÛ\8cحات Ù\85Û\89جÙ\88د Ø§Ø·Ù\84اعات Ø¹Û\8cس Ø±Ù\86Ú¾ Ù\85Ù\86عکس Ù\86Ú©Ù\86Ù\87.",
+       "metadata-help": " Ø¦Û\8c Ù\81اÛ\8cÙ\84 Ø¯Ø§Ø±Ø§Û\8c Ø¦Û\8cØ·Ù\84اعات Ú¾ Ø¦Û\8cضاÙ\81Û\95ئÛ\8c Ù\87Û\8c Ú©Û\95 Ø¦Û\8cحتÙ\85اÙ\84Ù\8b Ú¤Ø§ Ø¯Ù\88Ù\99ربÛ\8cÙ\86 Ø¯Û\8cجÛ\8cتاÙ\84Û\8câ\80\8c Û\8cا Ù¾Ù\88Ù\99Û\8cشگرÛ\8c Ú©Û\95 Ø³Û\8c Ø¦Û\8cجاد Û\8cا Ø¯Û\8cجÛ\8cتاÙ\84Û\8câ\80\8cÚ©Û\8cردأÙ\86 Ù\87Û\89 Ú¤Û\95 Ú©Ø§Ø± Ø±Ø£Ù\87دھ Ø¦Û\8cضاÙ\81 Ú¤Ø§Ø¨Û\8cدھ . Ø§Û\8cر Ù\81اÛ\8cÙ\84 Ø²Ú¾ Ú¤Ø£Ø¶Ø¹Û\8cأت Ø£Ú¤Ø£Ù\84Û\8cÛ\95 Ú¾Ø³ ØªØ£ØºÛ\8cÛ\8cر Ø¯Ø§Ø¯Ú¾ Ú¤Ø§Ø¨Û\8cدھ Ø¨Û\89Ú¾ Ù\85Ù\88Ù\99Ù\85Ú©Û\8cÙ\86Û\95 Ù\87Ø£Ù\85Û\95 ØªÙ\88Ù\99ضÛ\8cØ­Ù\84 Ù\85Û\89جÙ\88Ù\99د Ø¦Û\8cØ·Ù\84اعات Ø¹Ø£Û\8cس Ø±Ù\86Û\95 Ù\85Û\89Ù\86عأکÛ\8cس Ù\86Ø£Ú©Û\89Ù\86Û\95.",
        "metadata-fields": "زأمینە یل عأیس فرادادھ کە مأئنە ئی پیوٙم لیس ڤابینە ، قرار ڤابی گرتن ری بألگە نوٙمایش عأیس ۉقتی کە جدڤل فرادادھ فروٙریخت.\nبقیە قائم میشن ڤە صوٙرت پیش فأرض.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
-       "exif-orientation": "گرایش",
-       "exif-xresolution": "تفکیک پذیری افقی",
-       "exif-yresolution": "تفکیک پذیری عمۉدی",
-       "exif-datetime": "تغÛ\8cÛ\8cرÙ\84 ØªØ§Ø±Û\8cØ® Ù\88 Ø²Ù\85ان فایل",
-       "exif-make": "کۉمپانی راسندھ دۉربین",
-       "exif-model": "مدل دۉربین",
-       "exif-software": "Ù\86رÙ\85 Ø§Ù\81زار Ù\85Û\89رد Ø§Ø³Øªفادھ",
-       "exif-exifversion": "ۉرژن Exif",
-       "exif-colorspace": "Ù\81ضاÛ\8c Ø±نگ",
-       "exif-datetimeoriginal": "تاریخ ۉ زمان تۉلید دادھ یل",
-       "exif-datetimedigitized": "تاریخ ۉ زمان دیجیتالی ۉابیدن",
+       "exif-orientation": "گیرایش",
+       "exif-xresolution": "تأفکیک پأذیری ئوفۉقی",
+       "exif-yresolution": "تأفکیک پأذیری عأموٙدی",
+       "exif-datetime": "تأغÛ\8cÛ\8cرÙ\84 ØªØ§Ø±Û\8cØ® Ú¤ Ø²Û\8cÙ\85Ù\88Ù\99ن فایل",
+       "exif-make": "کۉمپانی راسأندھ دوٙربین",
+       "exif-model": "مۉدیل دوٙربین",
+       "exif-software": "Ù\86أرÙ\85 Ø£Ù\81زار Ù\85Û\89رد Ø¦Û\8cستÛ\8cفادھ",
+       "exif-exifversion": "ڤیرژین Exif",
+       "exif-colorspace": "Ù\81أضاÛ\8c Ø±Ø£نگ",
+       "exif-datetimeoriginal": "تاریخ ڤ زیموٙن تۉلید دادھ یل",
+       "exif-datetimedigitized": "تاریخ ڤ زیموٙن دیجیتالی ڤابیدن",
        "exif-orientation-1": "عادی",
        "namespacesall": "همە",
        "monthsall": "همه",
        "semicolon-separator": "؛&#32;",
-       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|گپ]])",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|گأپ]])",
        "specialpages": "بألگە یل ڤیجە",
        "tag-filter": "[[Special:Tags|بأرچأسب]] فیلتر:",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|بأرچسب|بأرچسبل}}]]: $2)",
-       "logentry-delete-delete": "$1 {{GENDER:$2|حذÙ\81 Û\89ابÛ\8cدھ}} Ø¨Ù\84Ú¯Ù\87 $3",
+       "logentry-delete-delete": "$1 {{GENDER:$2|حأذÙ\81 Ú¤Ø§Ø¨Û\8cدھ}} Ø¨Ø£Ù\84Ú¯Û\95 $3",
        "logentry-move-move": "$1 {{GENDER:$2|انتقال دادھ بیه}} بلگه $3 ۉھ $4",
        "logentry-newusers-create": "حسآۉ کارڤأر $1 ڤابیە {{GENDER:$2|راس ڤیدھ }}",
        "logentry-upload-upload": "$1 {{GENDER:$2|بلم گیر کردھ ۉابی}} $3",
index 5da3700..c9a50df 100644 (file)
        "tooltip-pt-logout": "Hidio",
        "tooltip-pt-createaccount": "Amporisihana mafy ianao hanokatra kaonty ary miditra; na dia izany aza, tsy voatery atao izany.",
        "tooltip-ca-talk": "resaka momba io takelaka io",
-       "tooltip-ca-edit": "Azonao atao no manova n'ity pejy ity.\nAmpesao ny topi-maso aloha no mihatiry.",
+       "tooltip-ca-edit": "Hanova ity pejy ity",
        "tooltip-ca-addsection": "hanomboka fizaràna vaovao",
        "tooltip-ca-viewsource": "Voaaro ilay pejy. Fa afaka itanao ny voatotiny.",
        "tooltip-ca-history": "Ny revision natao tamin'ity pejy ity",
        "watchlisttools-view": "pejy arahako maso",
        "watchlisttools-edit": "Jereo sy ovao ny lisitra ny pejy fanaraha-maso",
        "watchlisttools-raw": "Ovay ilay pejy arahako maso amizao",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|resaka]])",
        "duplicate-defaultsort": "'''Tandremo''' : manitsaka ny sort key taloha \"$1\" ilay sort key ankehitriny \"$2\".",
        "version": "Versiona",
        "version-extensions": "Fanitarana nampidirina",
index c8dec2a..f30257b 100644 (file)
        "changecontentmodel-success-title": "Содржинскиот модел е изменет",
        "changecontentmodel-success-text": "Содржинскиот тип [[:$1]] е изменет.",
        "changecontentmodel-cannot-convert": "Содржината на [[:$1]] не може да се претвори во типот $2.",
-       "changecontentmodel-title-cantexist": "Не е возможно да се направи страница на $1.",
        "changecontentmodel-nodirectediting": "Содржинскиот модел $1 не поддржува непосредно уредување",
        "log-name-contentmodel": "Дневник на измени во содржинските модели",
        "log-description-contentmodel": "Настани поврзани со содржинските модели на една страница",
index 90d1f90..c4305ef 100644 (file)
        "changecontentmodel-success-title": "'O mudello 'e cuntenuto fuje cagnato",
        "changecontentmodel-success-text": "'O tipo 'e cuntenut 'e [[:$1]] è stato cagnato.",
        "changecontentmodel-cannot-convert": "'E cuntenute dint'a [[:$1]] nun se ponno scagnà a nu tipo 'e $2.",
-       "changecontentmodel-title-cantexist": "Nun è pussibbele 'e n'avé na paggena dint'a $1.",
        "changecontentmodel-nodirectediting": "'O mudello 'e cuntenute $1 nun suppurtasse 'o cagnamiento diretto",
        "log-name-contentmodel": "Riggistro 'e cagnamiente d' 'o mudello 'e cuntenute",
        "log-description-contentmodel": "Evvente azzeccate c' 'o mudello 'e cuntenute 'e na paggena",
index c4278b4..5c11e8f 100644 (file)
        "viewsourcetext": "तपाईँले यस पृष्ठको स्रोत हेर्न र प्रतिलिपी गर्न सक्नुहुन्छ ।",
        "viewyourtext": "यस पृष्ठमा रहेका '''तपाईँका सम्पादनहरू''' हेर्न या प्रतिलिपी गर्न सक्नुहुन्छ :",
        "protectedinterface": "यो पृष्ठले सफ्टवेयरको लागि अन्तरमोहडा पाठ प्रदान गर्दछ , र यसलाई दुरुपयोग हुनबाट बचाउन सुरक्षा प्रादन गरिएको छ।\nसम्पूर्ण विकिहरूका लागि अनुवादमा परिवर्तन गर्नको लागि [//translatewiki.net/ translatewiki.net], प्रयोग गर्नुहोस् ,  मिडियाविकि स्थानियकरण परियोजना ।",
-       "editinginterface": "<strong>चेतावनी:</strong> तपाई यस पृष्ठलाई सम्पादन गर्नुहुँदैछ, जसले सफ्टवेयरको लागि \nइन्टरफेस सामग्रीहरू प्रदान गर्दछ।\nयस पृष्ठमा गरिएकोपरिवर्तनले यस विकिमा अरु प्रयोगकर्ताको इन्टरफेसको प्रदर्शनमा प्रभाव पार्नेछ ।",
+       "editinginterface": "<strong>चेतावनी:</strong> तपाई यस पृष्ठलाई सम्पादन गर्नुहुँदैछ, जसले सफ्टवेयरको लागि \nइन्टरफेस सामग्रीहरू प्रदान गर्दछ।\nयस पृष्ठमा गरिएकोपरिवर्तनले यस विकिमा अरु प्रयोगकर्ताको इन्टरफेसको प्रदर्शनमा प्रभाव पार्नेछ ।",
        "translateinterface": "सबै विकिहरूको लागी अनुवाद जोड्न वा परिवर्तन गर्नका लागि मीडियाविकि क्षेत्रीयकरण परियोजना [//translatewiki.net/ ट्रान्सलेटविकि.नेट]को प्रयोग गर्नुहोस।",
        "cascadeprotected": "यो पृष्ठ सम्पादन गर्नबाट सुरक्षित गरिएकोछ किनभनें {{PLURAL:$1|पृष्ठ |पृष्ठहरू}}मा सुरक्षित गर्नुका साथै प्रपात (\"cascading\") विकल्प खुल्ला राखिएको छ:\n$2",
        "namespaceprotected": " '''$1'''  नेमस्पेसमा रहेका पृष्ठहरू सम्पादन गर्ने अनुमति यहाँलाई छैन ।",
        "notloggedin": "प्रवेश (लग ईन) नगरिएको",
        "userlogin-noaccount": "के खाता छैन ?",
        "userlogin-joinproject": "{{SITENAME}} मा खाता खोल्नुहोस् ।",
-       "nologin": "तपाà¤\88à¤\95à¥\8b à¤\96ाता à¤\9bà¥\88न? $1।",
+       "nologin": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\96ाता à¤\9bà¥\88न ? $1।",
        "nologinlink": "नयाँ खाता खोल्नुहोस्",
        "createaccount": "खाता खोल्नुहोस्",
        "gotaccount": "के तपाईँसँग पहिले देखि नै खाता छ ? '''$1''' ।",
        "userlogin-resetlink": "प्रवेश सम्बन्धी विवरणहरू बिर्सनु भयो?",
        "userlogin-resetpassword-link": "पासवर्ड भुल्नुभयो?",
        "userlogin-helplink2": "प्रवेश गर्नको लागि सहयोग",
-       "userlogin-loggedin": "तपाई {{GENDER:$1|$1}}को रूपमा प्रवेश (लग इन) भइ सक्नु भयो ।\nअर्को प्रयोगकर्ताको रूपमा प्रवेश (लग इन) गर्न तलको फारम प्रयोग गर्नुहोस् ।",
+       "userlogin-loggedin": "तपाई {{GENDER:$1|$1}}को रूपमा प्रवेश (लग इन) भइ सक्नु भयो ।\nअर्को प्रयोगकर्ताको रूपमा प्रवेश (लग इन) गर्न तलको फारम प्रयोग गर्नुहोस् ।",
        "userlogin-createanother": "अर्को खाता खोल्नुहोस्",
        "createacct-emailrequired": "इमेल ठेगाना",
        "createacct-emailoptional": "इमेल ठेगाना (ऐच्छिक)",
        "password-login-forbidden": "यो प्रयोगकर्ता नाम र प्रवेश शव्द वर्जित गरिएकोछ ।",
        "mailmypassword": "पासवर्ड पूर्वनिर्धारित गर्नुहोस्",
        "passwordremindertitle": "{{SITENAME}}को लागि नयाँ अस्थायी पासवर्ड",
-       "passwordremindertext": "à¤\95सà¥\88लà¥\87 (सायद à¤¤à¤ªà¤¾à¤\88à¤\81, IP à¤ à¥\87à¤\97ाना $1 à¤¬à¤¾à¤\9f), {{SITENAME}}($4) à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¨à¤¯à¤¾à¤\81 à¤ªà¥\8dरवà¥\87शशवà¥\8dद à¤\85नà¥\81रà¥\8bध à¤\97रà¥\8dनà¥\81भà¤\8fà¤\95à¥\8b à¤\9b à¥¤ à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता \"$2\" à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¨à¤¯à¤¾à¤\81 à¤\85सà¥\8dथायà¥\80 à¤ªà¥\8dरवà¥\87शशवà¥\8dद \"$3\"तयार à¤ªà¤¾à¤°à¤¿à¤\8fà¤\95à¥\8b à¤\9b। à¤¯à¤¦à¤¿ à¤¯à¥\8b à¤¤à¤ªà¤¾à¤\88à¤\95à¥\8b à¤\87à¤\9aà¥\8dà¤\9bामा à¤­à¤\8fà¤\95à¥\8b à¤­à¤\8f à¤\85हिलà¥\87 à¤¤à¤ªà¤¾à¤\88à¤\81लà¥\87 à¤ªà¥\8dरवà¥\87शà¤\97रà¥\80 à¤¨à¤¯à¤¾à¤\81 à¤ªà¥\8dरवà¥\87शशवà¥\8dद à¤\9bानà¥\8dनà¥\81 à¤ªà¤°à¥\8dनà¥\87 à¤¹à¥\81नà¥\8dà¤\9b।\nतपाà¤\88à¤\95à¥\8b à¤\85सà¥\8dथायà¥\80 à¤ªà¥\8dरवà¥\87शशवà¥\8dद  {{PLURAL:$5|à¤\8fà¤\95 à¤¦à¤¿à¤¨|$5 à¤¦à¤¿à¤¨à¤¹à¤°à¥\82 à¤ªà¤\9bि}} à¤\85मानà¥\8dय à¤¹à¥\81नà¥\87à¤\9b à¥¤\n\nयदि à¤\95à¥\8bहà¥\80 à¤\85रà¥\81लà¥\87 à¤¨à¥\88 à¤\85नà¥\81रà¥\8bध à¤\97रà¥\87à¤\95à¥\8b à¤¹à¥\8b à¤­à¤¨à¥\87 , à¤¯à¤¾ à¤¤à¤ªà¤¾à¤\88लà¥\87 à¤\86फà¥\8dनà¥\8b à¤ªà¥\8dरवà¥\87शशवà¥\8dद à¤¸à¤®à¥\8dà¤\9dिनà¥\81 à¤­à¤¯à¥\8b à¤­à¤¨à¥\87, à¤\85थवा\nतà¥\8dयसलाà¤\88 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤\9aाहनà¥\81हà¥\81नà¥\8dन à¤­à¤¨à¥\87, à¤¤à¤ªà¤¾à¤\88à¤\81लà¥\87 à¤¯à¥\8b à¤¸à¤¨à¥\8dदà¥\87शà¤\95à¥\8b à¤µà¥\87वासà¥\8dता à¤\97रà¥\8dनसà¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¤° à¤ªà¥\81रानà¥\88 à¤ªà¥\8dरवà¥\87शशव्द प्रयोग गरिरहन सक्नुहुन्छ ।",
+       "passwordremindertext": "à¤\95सà¥\88लà¥\87 (सायद à¤¤à¤ªà¤¾à¤\88à¤\81, IP à¤ à¥\87à¤\97ाना $1 à¤¬à¤¾à¤\9f), {{SITENAME}}($4) à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¨à¤¯à¤¾à¤\81 à¤ªà¥\8dरवà¥\87सशबà¥\8dद à¤\85नà¥\81रà¥\8bध à¤\97रà¥\8dनà¥\81भà¤\8fà¤\95à¥\8b à¤\9b à¥¤ à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता \"$2\" à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¨à¤¯à¤¾à¤\81 à¤\85सà¥\8dथायà¥\80 à¤ªà¥\8dरवà¥\87सशबà¥\8dद \"$3\"तयार à¤ªà¤¾à¤°à¤¿à¤\8fà¤\95à¥\8b à¤\9b à¥¤ à¤¯à¤¦à¤¿ à¤¯à¥\8b à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\87à¤\9aà¥\8dà¤\9bामा à¤­à¤\8fà¤\95à¥\8b à¤­à¤\8f à¤\85हिलà¥\87 à¤¤à¤ªà¤¾à¤\88à¤\81लà¥\87 à¤ªà¥\8dरवà¥\87शà¤\97रà¥\80 à¤¨à¤¯à¤¾à¤\81 à¤ªà¥\8dरवà¥\87सशबà¥\8dद à¤\9bानà¥\8dनà¥\81 à¤ªà¤°à¥\8dनà¥\87 à¤¹à¥\81नà¥\8dà¤\9b।\nतपाà¤\88à¤\82à¤\95à¥\8b à¤\85सà¥\8dथायà¥\80 à¤ªà¥\8dरवà¥\87सशबà¥\8dद  {{PLURAL:$5|à¤\8fà¤\95 à¤¦à¤¿à¤¨|$5 à¤¦à¤¿à¤¨à¤¹à¤°à¥\82 à¤ªà¤\9bि}} à¤\85मानà¥\8dय à¤¹à¥\81नà¥\87à¤\9b à¥¤\n\nयदि à¤\95à¥\8bहà¥\80 à¤\85रà¥\81लà¥\87 à¤¨à¥\88 à¤\85नà¥\81रà¥\8bध à¤\97रà¥\87à¤\95à¥\8b à¤¹à¥\8b à¤­à¤¨à¥\87 , à¤¯à¤¾ à¤¤à¤ªà¤¾à¤\88à¤\82लà¥\87 à¤\86फà¥\8dनà¥\8b à¤ªà¥\8dरवà¥\87सशबà¥\8dद à¤¸à¤®à¥\8dà¤\9dिनà¥\81 à¤­à¤¯à¥\8b à¤­à¤¨à¥\87, à¤\85थवा\nतà¥\8dयसलाà¤\88 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤\9aाहनà¥\81हà¥\81नà¥\8dन à¤­à¤¨à¥\87, à¤¤à¤ªà¤¾à¤\88à¤\81लà¥\87 à¤¯à¥\8b à¤¸à¤¨à¥\8dदà¥\87सà¤\95à¥\8b à¤µà¥\87वासà¥\8dता à¤\97रà¥\8dनसà¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¤° à¤ªà¥\81रानà¥\88 à¤ªà¥\8dरवà¥\87सशब्द प्रयोग गरिरहन सक्नुहुन्छ ।",
        "noemail": "प्रयोगकर्ता  \"$1\"को लागि कुनै पनि इ-मेल दर्ता गरिएको छैन ।",
        "noemailcreate": "तपाईंले सही ई-मेल ठेगाना दिनुपर्छ",
        "passwordsent": "\"$1\" को लागि दर्ता गरिएको ई-मेल ठेगानामा एक प्रवेशशव्द पठाइएको छ।\nकृपया त्यसलाई प्राप्त गरेपछि प्रवेश गर्नुहोला ।",
-       "blocked-mailpassword": "तपाà¤\88à¤\95à¥\8b IP à¤ à¥\87à¤\97ानालाà¤\88 à¤¸à¤®à¥\8dपादनà¤\97रà¥\8dनबाà¤\9f à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤\9b, à¤° à¤¤à¥\8dयसà¥\88लà¥\87 à¤¦à¥\81रà¥\81पयà¥\8bà¤\97 à¤°à¥\8bà¤\95à¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤ªà¥\8dरवà¥\87शशव्द पुनर्लाभ प्रक्रिया प्रयोग गर्न अनुमति छैन ।",
+       "blocked-mailpassword": "तपाà¤\88à¤\82à¤\95à¥\8b IP à¤ à¥\87à¤\97ानालाà¤\88 à¤¸à¤®à¥\8dपादनà¤\97रà¥\8dनबाà¤\9f à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤\9b, à¤° à¤¤à¥\8dयसà¥\88लà¥\87 à¤¦à¥\81रà¥\81पयà¥\8bà¤\97 à¤°à¥\8bà¤\95à¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤ªà¥\8dरवà¥\87सशब्द पुनर्लाभ प्रक्रिया प्रयोग गर्न अनुमति छैन ।",
        "eauthentsent": "दिइएको इमेल ठेगानामा इमेल पठाइएको छ ।\nतपाईँको खातामा अरु इमेल पठउनु अघि , इमेलमा लेखिएको मार्गदर्शन अनुसार , त्यो खाता तपाईँकै हो भनेर निश्चित गर्नु पर्नेछ ।",
        "throttled-mailpassword": "बितेको {{PLURAL:$1|घण्टा|$1 घण्टाहरु}} भित्र एउटा पासवर्ड अनुस्मारक पठाई सकिएको छ।\nदुरुपयोगबाट बचाउकोलागि प्रत्येक {{PLURAL:$1|घण्टा|$1 घण्टाहरु}}मा केवल एउटा पासवर्ड अनुस्मारक पठाइन्छ।",
        "mailerror": " चिठी :$1 पठाउँदा त्रुटी भयो",
        "acct_creation_throttle_hit": "तपाईंको आईपी ठेगानाबाट आएका आगन्तुकद्वारा बितेको चौबिस घण्टामा यस विकिमा {{PLURAL:$1|एउटा खाता बनाइसकिएको छ|$1 खाताहरु बनाइसकिएका छन्}}, यस समयावधिमा यति नैं अधिकतम सीमा हो।\nअतः यस समय यस आईपी ठेगानाको प्रयोग गर्ने आगन्तुकले अरु खाता खोल्न सक्नेछैनन्।",
        "emailauthenticated": "तपाईंको इमेल ठेगाना $2 को $3 मा प्रमाणित गरिएको थियो।",
        "emailnotauthenticated": "तपाईँको इमेल ठेगाना अहिले सम्म प्रमाणित गरिएको छैन ।\nनिम्न सुविधाको लागि कुनै पनि इमेल पठाइने छैन ।",
-       "noemailprefs": "निमà¥\8dन à¤¸à¥\81विधाहरà¥\81 à¤°à¤¾à¤®à¥\8dररà¥\80 à¤\95ाम à¤\97रà¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¤à¤ªà¤¾à¤\88को अभिरुचिमा आफ्नो ई-मेल ठेगाना खुलाउनुहोस् ।",
+       "noemailprefs": "निमà¥\8dन à¤¸à¥\81विधाहरà¥\82 à¤°à¤¾à¤®à¥\8dररà¥\80 à¤\95ाम à¤\97रà¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¤à¤ªà¤¾à¤\88à¤\82को अभिरुचिमा आफ्नो ई-मेल ठेगाना खुलाउनुहोस् ।",
        "emailconfirmlink": "तपाईंको ई-मेल ठेगाना पक्का गर्नुहोस्",
        "invalidemailaddress": "ई-मेल ठेगाना स्वीकार गर्न सकिएन किन भनें यो सही प्रारूपमा छैन, कृपया सही प्रारूपको  ठेगाना दिनुहोस्।",
-       "cannotchangeemail": "यस विकिमा तपाईको खातासँग सम्बन्धित इमेल ठेगाना परिवर्तन गर्न सकिन्न ।",
+       "cannotchangeemail": "यस à¤µà¤¿à¤\95िमा à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\96ातासà¤\81à¤\97 à¤¸à¤®à¥\8dबनà¥\8dधित à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤¸à¤\95िनà¥\8dन à¥¤",
        "emaildisabled": "यो साइटले इमेलहरू पठाउन सक्दैन।",
        "accountcreated": "खाता खोलियो",
        "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|वार्ता]])$1 प्रयोगकर्ताको लागि खाता खोलिएको छ ।",
        "createaccount-title": "{{SITENAME}}कोलागि खाता खोल्ने काम",
-       "createaccount-text": "à¤\95सà¥\88लà¥\87 à¤¤à¤ªà¤¾à¤\88à¤\95à¥\8b à¤\87मà¥\87ल à¤ à¥\87à¤\97ानालाà¤\88 {{SITENAME}} ($4) à¤®à¤¾ \"$2\" à¤¨à¤¾à¤®à¤\95à¥\8b à¤\96ाता à¤¬à¤¨à¤¾à¤\8fà¤\95à¥\8b à¤\9b, à¤\9cसà¤\95à¥\8b à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड \"$3\" à¤\9b।",
+       "createaccount-text": "à¤\95सà¥\88लà¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\87मà¥\87ल à¤ à¥\87à¤\97ानालाà¤\88 {{SITENAME}} ($4) à¤®à¤¾ \"$2\" à¤¨à¤¾à¤®à¤\95à¥\8b à¤\96ाता à¤¬à¤¨à¤¾à¤\8fà¤\95à¥\8b à¤\9b, à¤\9cसà¤\95à¥\8b à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड \"$3\" à¤\9b à¥¤\nà¤\85ब à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¤à¥\81रà¥\81नà¥\8dत à¤²à¤\97à¤\87न à¤\97रà¥\87र à¤\86फà¥\8dनà¥\8b à¤ªà¥\8dरवà¥\87सशबà¥\8dद à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dनà¥\81हà¥\8bला à¥¤\nयदà¥\80 à¤¯à¥\8b à¤\96ाता à¤\97लà¥\8dतिलà¥\87 à¤\96à¥\8bलिà¤\8fà¤\95à¥\8b à¤°à¤¹à¥\87à¤\9b à¤­à¤¨à¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¯à¥\8b à¤¸à¤¨à¥\8dदà¥\87शलाà¤\88 à¤¬à¥\87वासà¥\8dता à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b ।",
        "login-throttled": "तपाईंले भर्खरै धेरै पल्ट प्रवेशको निम्ति प्रयास गर्नुभएको छ ,कृपया $1 पर्खेर मात्र प्रयास गर्नुहोस्।",
        "login-abort-generic": "तपाईंको प्रवेश असफल भयो - छोड़ियो",
-       "login-migrated-generic": "तपाà¤\88à¤\95à¥\8b à¤\96ाता à¤¸à¥\8dथानानà¥\8dतरण à¤­à¤\8fà¤\95à¥\8b à¤\9b, à¤° à¤¤à¤ªà¤¾à¤\88को प्रयोगकर्ता नाम यस विकिमा छैन ।",
+       "login-migrated-generic": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\96ाता à¤¸à¥\8dथानानà¥\8dतरण à¤­à¤\8fà¤\95à¥\8b à¤\9b, à¤° à¤¤à¤ªà¤¾à¤\88à¤\82को प्रयोगकर्ता नाम यस विकिमा छैन ।",
        "loginlanguagelabel": "भाषा: $1",
        "suspicious-userlogout": "तपाईंको निर्गमन अनुरोध अस्विकार गरिन्छ किन कि यो खराब ब्राउजर वा क्यासिङ प्रोक्सिले पठाएको जस्तो देखिन्छ।",
        "createacct-another-realname-tip": "वास्तविक नाम ऐच्छिक हो ।\nतपाईले यो खुलाउनु भएको खण्डमा तपाईको काममा प्रयोगकर्ता श्रेय दिनको लागि यसको प्रयोग गरिने छ ।",
        "resetpass-submit-cancel": "रद्द गर्ने",
        "resetpass-wrong-oldpass": "अस्थायी अथवा हा्लिएको प्रवेश शव्द अमान्य\nतपाईंले अघिबाट नैं प्रवेश शव्द सफलता पूर्वक परिवर्तन गरिसक्नु भएको हो वा नयाँ प्रवेश शव्दको निम्ति निवेदन गर्नुभएकोछ।",
        "resetpass-recycled": "कृपया वर्तमान पासर्वड भन्दा फरक पासर्वडलाई पुनः मिलाउनुहोस् ।",
-       "resetpass-temp-emailed": "तपाई अस्थाई इमेल कोडले प्रवेश गर्नुभएको छ।\nप्रवेश सफल पार्नका लागि, तपाईंले यहाँ एउटा नयाँ पासवर्ड राख्नु पर्नेछ:",
+       "resetpass-temp-emailed": "तपाई अस्थाई इमेल कोडले प्रवेश गर्नुभएको छ।\nप्रवेश सफल पार्नका लागि, तपाईंले यहाँ एउटा नयाँ पासवर्ड राख्नु पर्नेछ:",
        "resetpass-temp-password": "अस्थाइ पासवर्ड",
        "resetpass-abort-generic": "एक्सटेन्सनले पासवर्ड परिवर्तनलाई बन्द गराएको छ ।",
        "resetpass-expired": "तपाईको पासवर्ड पूरानो भएकोछ । कृपया प्रवेश (लग इन) को लागी नयाँ पासवर्ड राख्नुहोस् ।",
        "missingsummary": "'''यादगर्नुहोस् :''' तपाईले सम्पादन सारांश दिनुभएको छैन ।\nयदि तपाईले संग्रहगर्नुहोस्  थिच्नुभयो भने , सारांश बिना नै संग्रहित गरिने छ ।",
        "selfredirect": "<strong>चेतावनी:</strong> तपाईं यस पृष्ठलाई आफुमा पुनः निर्देशित गर्दै हुनुहुन्छ।\nहुनसक्छ तपाईं अनुप्रेषितको लागि गलत लक्ष्य निर्दिष्ट गर्दै हुनुहुन्छ, वा गलत पृष्ठको सम्पादन गर्दै हुनुहुन्छ।\nतपाईं पुनः एकपटक \"{{int:savearticle}}\" क्लिक गर्नुहुन्छ, पुनः निर्देशित त्यसै पनि बनाइनेछ।",
        "missingcommenttext": "कृपया टिप्पणी प्रविष्ठ गर्नुहोस् ।",
-       "missingcommentheader": "'''याद गर्नुहोस् :''' तपाईँले टिप्पणीमा विषय /शीर्ष पंक्ति  दिनुभएको छैन ।\nतपाईँले फेरि \"{{int:savearticle}}\"  थिच्नु भएमा , तपाईको सम्पादन यसै रुपमा संग्रहित हुनेछ ।",
+       "missingcommentheader": "'''याद à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d :''' à¤¤à¤ªà¤¾à¤\88à¤\81लà¥\87 à¤\9fिपà¥\8dपणà¥\80मा à¤µà¤¿à¤·à¤¯ /शà¥\80रà¥\8dष à¤ªà¤\82à¤\95à¥\8dति  à¤¦à¤¿à¤¨à¥\81भà¤\8fà¤\95à¥\8b à¤\9bà¥\88न à¥¤\nतपाà¤\88à¤\81लà¥\87 à¤«à¥\87रि \"{{int:savearticle}}\"  à¤¥à¤¿à¤\9aà¥\8dनà¥\81 à¤­à¤\8fमा , à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤¸à¤®à¥\8dपादन à¤¯à¤¸à¥\88 à¤°à¥\81पमा à¤¸à¤\82à¤\97à¥\8dरहित à¤¹à¥\81नà¥\87à¤\9b à¥¤",
        "summary-preview": "सारांश पूर्वालोकन:",
        "subject-preview": "विषय/शीर्षपंक्ति पूर्वरुप:",
-       "previewerrortext": "तपाईको परिवर्तनको पूर्वावलोकन बनाउन खोज्दा समस्या आएको छ ।",
+       "previewerrortext": "तपाà¤\88à¤\82à¤\95à¥\8b à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनà¤\95à¥\8b à¤ªà¥\82रà¥\8dवावलà¥\8bà¤\95न à¤¬à¤¨à¤¾à¤\89न à¤\96à¥\8bà¤\9cà¥\8dदा à¤¸à¤®à¤¸à¥\8dया à¤\86à¤\8fà¤\95à¥\8b à¤\9b à¥¤",
        "blockedtitle": "प्रयोककर्तालाई रोक लगाइएको छ",
        "blockedtext": "'''तपाईँको प्रयोगकर्ता नाम या IP ठेगानालाई रोक लगाइएको छ ।'''\n\nरोक लगाउने  $1.\nरोक लगाउनाको कारण ''$2''.\n\n* रोक सुरू हुने : $8\n* रोक सकिने: $6\n* रोकबाट लक्षित: $7\n\nतपाईले  $1 वा अरु कुनै  [[{{MediaWiki:Grouppage-sysop}}|administrator]] सँग रोकको बारेमा छलफल गर्न सम्पर्क गर्न सक्नुहुन्छ ।\nतपाईँले  'प्रयोगकर्तालाई इ-मेल गर्ने ' सुविधा मान्य इमेल ठेगाना [[Special:Preferences|account preferences]] मा नखुलाए सम्म प्रयोगगर्न पाउनुहुने छैन र यसको प्रयोग गर्नबाट रोक लगाइएको छैन ।\nतपाईको IP ठेगाना $3 को, र रोक्का संख्या #$5.\nकृपया तपाईँको प्रश्नमा सबै जानकारी खुलाउनुहोला ।",
        "autoblockedtext": "तपाईंको IP ठेगानामाथि रोक लगाइएकोछ किन भनें यो अर्को प्रयोगकर्ताले प्रयोग गरेको थियो, जसलाई $1ले रोक लगाएका थिए। \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कृपया कुनै बेला सोधनी गर्नु परे उपर्युक्त विवरण दर्शाउनु होला।",
        "yournick": "नयाँ हस्ताक्षर:",
        "prefs-help-signature": "वार्तालाप पृष्ठका टिप्पणीहरु \"<nowiki>~~~~</nowiki>\" द्वारा दस्तखत गरिनुपर्छ ,जुन पछि तपाईँको दस्तखत र समयरेखामा रुपान्तरित हुनेछ ।",
        "badsig": "अमान्य कच्चा दस्तखत।\nHTML ट्यागहरु जाँच्नुहोस् ।",
-       "badsiglength": "तपाईको दस्तखत धेरै लामो छ।\nयो $1 {{PLURAL:$1|अक्षर|अक्षरहरू}} भन्दा लामो हुनु हुँदैन ।",
+       "badsiglength": "तपाà¤\88à¤\82à¤\95à¥\8b à¤¦à¤¸à¥\8dतà¤\96त à¤§à¥\87रà¥\88 à¤²à¤¾à¤®à¥\8b à¤\9b।\nयà¥\8b $1 {{PLURAL:$1|à¤\85à¤\95à¥\8dषर|à¤\85à¤\95à¥\8dषरहरà¥\82}} à¤­à¤¨à¥\8dदा à¤²à¤¾à¤®à¥\8b à¤¹à¥\81नà¥\81 à¤¹à¥\81à¤\81दà¥\88न à¥¤",
        "yourgender": "कसरी वताउन चाहनुहुन्छ ?",
        "gender-unknown": "म खुलाउन चाहन्न",
        "gender-male": "उसले विकि पृष्ठहरू सम्पादन गर्छ",
        "userrights-unchangeable-col": "तपाईले परिवर्तन गर्न सक्नुनहुने समूहहरु",
        "userrights-irreversible-marker": "$1*",
        "userrights-conflict": "प्रयोगकर्ताको अधिकार परिवर्तनमा मतभेद भयो ! कृपया तपाईको परिवर्तन पुनरावलोकन तथा पुष्टि गर्नु होस् ।",
-       "userrights-removed-self": "तपाà¤\88लà¥\87 à¤¸à¤«à¤²à¤¤à¤¾à¤ªà¥\82रà¥\8dवà¤\95 à¤\86फà¥\8dनà¥\8b à¤\85धिà¤\95ारहरà¥\82लाà¤\88 à¤®à¥\87à¤\9fाà¤\89नà¥\81 à¤­à¤¯à¥\8b à¥¤ à¤¤à¥\8dयस à¤\95ारण à¤¤à¤ªà¤¾à¤\88 à¤\85ब à¤¯à¥\8b à¤ªà¥\83षà¥\8dठ à¤¹à¥\87रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81 à¤¹à¥\81नà¥\87 à¤\9bà¥\88नà¥\8d ।",
+       "userrights-removed-self": "तपाà¤\88à¤\82लà¥\87 à¤¸à¤«à¤²à¤¤à¤¾à¤ªà¥\82रà¥\8dवà¤\95 à¤\86फà¥\8dनà¥\8b à¤\85धिà¤\95ारहरà¥\82लाà¤\88 à¤®à¥\87à¤\9fाà¤\89नà¥\81 à¤­à¤¯à¥\8b à¥¤ à¤¤à¥\8dयस à¤\95ारण à¤¤à¤ªà¤¾à¤\88à¤\82 à¤\85ब à¤¯à¥\8b à¤ªà¥\83षà¥\8dठ à¤¹à¥\87रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81 à¤¹à¥\81नà¥\8dन ।",
        "group": "समूह :",
        "group-user": "प्रयोगकर्ताहरू",
        "group-autoconfirmed": "स्वत निश्चित गरिएका प्रयोगकर्ताहरू",
        "linkstoimage": "यस फाइलमा निम्न{{PLURAL:$1|पृष्ठ जोडिन्छ|$1 पृष्ठहरू जोडिन्छन्}}:",
        "linkstoimage-more": "$1 भन्दा अधिक {{PLURAL:$1|पृष्ठ लिङ्क|पृष्ठ लिङ्कहरू}} यस फाइलसँग जोडिएको छ। \nनिम्नलिखित सूची फाइलसँग {{PLURAL:$1|पहिलो पृष्ठ लिङ्क|पहिलो $1 पृष्ठ लिङ्कहरू}} जोडिने देखाउँछ।\n[[Special:WhatLinksHere/$2|पूर्ण सूची]] पनि उपलब्ध छ।",
        "nolinkstoimage": "यो फाईलसंग लिंकभएको कुनै पृष्ठ छैन.",
-       "morelinkstoimage": "हà¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d [[Special:WhatLinksHere/$1|थप à¤²à¤¿à¤\82à¤\95हरà¥\81]] à¤¯à¥\8b à¤«à¤¾à¤\87लà¤\95à¥\8b।",
+       "morelinkstoimage": "यस à¤«à¤¾à¤\87लà¤\95à¥\8b [[Special:WhatLinksHere/$1|थप à¤²à¤¿à¤\82à¤\95हरà¥\82]] à¤¹à¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d ।",
        "linkstoimage-redirect": "$1 (फाइल अनुप्रेषण) $2",
        "duplicatesoffile": "निम्नलिखित {{PLURAL:$1|फाइलको प्रतिलिपि हो|$1 फाइलहरूको प्रतिलिपि हो}} ([[Special:FileDuplicateSearch/$2|अधिक जानकारीहरू]]):",
        "sharedupload": "यो फाइल $1 को हो र अन्य परियोजनामा प्रयोग गरिएको हुनसक्छ।",
        "nbytes": "$1 {{PLURAL:$1|बाइट|बाइटहरू}}",
        "ncategories": "$1 {{PLURAL:$1|श्रेणी|श्रेणीहरू}}",
        "ninterwikis": "$1 {{PLURAL:$1|अन्तरविकि|अन्तरविकिहरू}}",
-       "nlinks": "$1 {{PLURAL:$1|लिà¤\82à¤\95|लिà¤\82à¤\95हरà¥\81}}",
+       "nlinks": "$1 {{PLURAL:$1|लिà¤\82à¤\95|लिà¤\82à¤\95हरà¥\82}}",
        "nmembers": "$1 {{PLURAL:$1|सदस्य|सदस्यहरू}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|सदस्य|सदस्यहरू}}",
        "nrevisions": "$1 {{PLURAL:$1|पुनरावलोकन|पुनरावलोकनहरु}}",
        "watchlist": "अवलोकन सूची",
        "mywatchlist": "अवलोकनसूची",
        "watchlistfor2": "$1को $2",
-       "nowatchlist": "तपाईको अवलोकन सूचीमा कुनै पनि सामाग्री छैन।",
-       "watchlistanontext": "à¤\95à¥\83पया à¤¤à¤ªà¤¾à¤\88à¤\95à¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\81ची हेर्न या सम्पादन गर्न लगइन गर्नुहोस्।",
+       "nowatchlist": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\85वलà¥\8bà¤\95न à¤¸à¥\82à¤\9aà¥\80मा à¤\95à¥\81नà¥\88 à¤ªà¤¨à¤¿ à¤¸à¤¾à¤®à¤¾à¤\97à¥\8dरà¥\80 à¤\9bà¥\88न।",
+       "watchlistanontext": "à¤\95à¥\83पया à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82ची हेर्न या सम्पादन गर्न लगइन गर्नुहोस्।",
        "watchnologin": "प्रवेश (लग ईन) नगरिएको",
        "addwatch": "निगरानी सुचीमा थप्ने",
        "addedwatchtext": "\"[[:$1]]\" पृष्ठ [[Special:Watchlist|अवलोकनसूची]]मा थपियो\nयो पृष्ठ र यससित सम्बद्ध वार्तालाप पृष्ठमा भविष्यमा हुने परिवर्तन सूचिबद्ध गरिनेछ।",
-       "addedwatchtext-short": "\"$1\" à¤ªà¥\83षà¥\8dठ à¤¤à¤ªà¤¾à¤\88à¤\95à¥\8b à¤\85बलोकन सूचीमा थप भएको छ ।",
+       "addedwatchtext-short": "\"$1\" à¤ªà¥\83षà¥\8dठ à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\85वलोकन सूचीमा थप भएको छ ।",
        "removewatch": "निगरानी सुचीबाट हटाउने",
-       "removedwatchtext": "पृष्ठ \"[[:$1]]\" [[Special:Watchlist|तपाईको निगरानी सूची]]बाट हटाइएको छ।",
+       "removedwatchtext": "\"[[:$1]]\" नामको पृष्ठ [[Special:Watchlist|तपाईंको निगरानी सूची]]बाट हटाइएको छ।",
        "removedwatchtext-short": "पृष्ठ \"$1\" तपाईंको अवलोकनसूची बाट हटाइयो",
        "watch": "अवलोकन",
        "watchthispage": "यो पृष्ठ अवलोकन गर्नुहोस्",
        "unwatchthispage": "निगरानीबाट हटाउने",
        "notanarticle": "सामाग्री सहितको पेज हैन",
        "notvisiblerev": "पूर्वावलोकन हटाइयो",
-       "watchlist-details": "तपाà¤\88à¤\95à¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82à¤\9aà¥\80मा à¤°à¤¹à¥\87à¤\95ा {{PLURAL:$1|$1 à¤ªà¥\83षà¥\8dठ|$1 à¤ªà¥\83षà¥\8dठहरà¥\81}}वारà¥\8dतालापमा à¤ªà¥\83षà¥\8dठमा गनिएका छैनन्।",
+       "watchlist-details": "तपाà¤\88à¤\82à¤\95à¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82à¤\9aà¥\80मा à¤°à¤¹à¥\87à¤\95ा {{PLURAL:$1|$1 à¤ªà¥\83षà¥\8dठ|$1 à¤ªà¥\83षà¥\8dठहरà¥\82}} à¤µà¤¾à¤°à¥\8dतालाप à¤ªà¥\83षà¥\8dठ गनिएका छैनन्।",
        "wlheader-enotif": "ईमेल जानकारी सक्रिय गरियो ।",
        "wlheader-showupdated": "तपाईँले पछिल्लो पल्ट भ्रमण गरेपछि परिवर्तन भएका पृष्ठहरूलाई <strong>गाढा<strong> गरेर देखाइएको छ ।",
        "wlnote": "$3 र $4 अनुसार विगत {{PLURAL:$2|घण्टामा|'''$2''' घण्टाहरूमा}} {{PLURAL:$1|गरिएको अन्तिम परिवर्तन तल दिइएकोछ|गरिएका अन्तिम  '''$1''' परिवर्तनहरू तल दिइएका छन्}}।",
        "delete-confirm": "मेट्नुहोस् \"$1\"",
        "delete-legend": "मेट्नुहोस्",
        "historywarning": "<strong>चेतावनी:</strong> तपाईंले मेटाउन लाग्नुभएको पृष्ठको इतिहासको लगभग $1 {{PLURAL:$1|पुनरावृत्ति छ|पुनरावृत्तिहरू छन्}}:",
-       "confirmdeletetext": "तपाई यो पृष्ठ र यसको इतिहास मेट्न गइरहनु भएकोछ। कृपया पुष्टि गर्नुहोस् कि [[{{MediaWiki:Policy-url}}|नियम]] मुताबिक तपाईं मेट्न गइरहनु भएकोछ।",
+       "confirmdeletetext": "तपाई यो पृष्ठ र यसको इतिहास मेट्न गइरहनु भएकोछ। कृपया पुष्टि गर्नुहोस् कि [[{{MediaWiki:Policy-url}}|नियम]] मुताबिक तपाईं मेट्न गइरहनु भएकोछ।",
        "actioncomplete": "काम सकियो",
        "actionfailed": "कार्य असफल",
        "deletedtext": "\"$1\" मेटिएको छ।\nहालै हटाइएको सूची $2 मा हेर्नुहोस् ।",
        "isimage": "फाइल लिङ्क",
        "whatlinkshere-prev": "{{PLURAL:$1|पहिलो|पहिलो $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|अर्को|अर्को $1}}",
-       "whatlinkshere-links": "â\86\90 à¤²à¤¿à¤\82à¤\95हरà¥\81",
+       "whatlinkshere-links": "â\86\90 à¤²à¤¿à¤\82à¤\95हरà¥\82",
        "whatlinkshere-hideredirs": "$1 अनुप्रेषित हुन्छ",
        "whatlinkshere-hidetrans": "$1 पारदर्शन",
        "whatlinkshere-hidelinks": "$1 लिङ्कहरु",
-       "whatlinkshere-hideimages": "$1 à¤¤à¤¸à¥\8dवà¥\80र à¤²à¤¿à¤\82à¤\95हरà¥\81",
+       "whatlinkshere-hideimages": "$1 à¤«à¤¾à¤\87ल à¤²à¤¿à¤\82à¤\95हरà¥\82",
        "whatlinkshere-filters": "फिल्टरहरू",
        "autoblockid": "अटोब्लक #$1",
        "block": "प्रयोगकर्तालाई रोकलगाउने",
        "ip_range_invalid": "IP क्षेत्र अमान्य ।",
        "ip_range_toolarge": " /$1 भन्दा ठूलो रेन्ज रोक लगाउन पाइदैन ।.",
        "proxyblocker": "प्रोक्सी निषेध गर्ने",
-       "proxyblockreason": "तपाà¤\88à¤\95à¥\8b IP à¤ à¥\87à¤\97ानामा à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤\9b à¤\95िनà¤\95à¥\80 à¤¯à¥\8b à¤\96à¥\81ला à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80 à¤¹à¥\8b à¥¤\nà¤\95à¥\83पया à¤¤à¤ªà¤¾à¤\88à¤\95à¥\8b à¤\87नà¥\8dà¤\9fरनà¥\87à¤\9f à¤¸à¥\87वा à¤ªà¥\8dरदायà¤\95 à¤¯à¤¾ à¤ªà¥\8dराविधिà¤\95 à¤¸à¤¹à¤¾à¤¯à¤¤à¤¾à¤²à¤¾à¤\88 सम्पर्क गरी यस सुरक्षा समस्याको बारेमा जानकारी गराउनुहोस् ।",
+       "proxyblockreason": "तपाà¤\88à¤\82à¤\95à¥\8b IP à¤ à¥\87à¤\97ानामा à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤\9b à¤\95िनà¤\95à¥\80 à¤¯à¥\8b à¤\96à¥\81ला à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80 à¤¹à¥\8b à¥¤\nà¤\95à¥\83पया à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\87नà¥\8dà¤\9fरनà¥\87à¤\9f à¤¸à¥\87वा à¤ªà¥\8dरदायà¤\95 à¤¯à¤¾ à¤ªà¥\8dराविधिà¤\95 à¤¸à¤¹à¤¾à¤¯à¤¤à¤¾à¤¸à¤\81à¤\97 सम्पर्क गरी यस सुरक्षा समस्याको बारेमा जानकारी गराउनुहोस् ।",
        "sorbs": "DNSBL",
-       "sorbsreason": "तपाà¤\88à¤\95à¥\8b IP à¤ à¥\87à¤\97ाना à¤\96à¥\81लà¥\8dला à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80à¤\95à¥\8b à¤°à¥\81पमा  DNSBL à¤®à¤¾ à¤¸à¥\81चीकरण गरिएको छ यसलाई{{SITENAME}}ले प्रयोगमा ल्याएको छ।",
+       "sorbsreason": "तपाà¤\88à¤\82à¤\95à¥\8b IP à¤ à¥\87à¤\97ाना à¤\96à¥\81लà¥\8dला à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80à¤\95à¥\8b à¤°à¥\81पमा  DNSBL à¤®à¤¾ à¤¸à¥\82चीकरण गरिएको छ यसलाई{{SITENAME}}ले प्रयोगमा ल्याएको छ।",
        "sorbs_create_account_reason": "तपाईको IP ठेगाना खुल्ला प्रोक्सीको रुपमा  DNSBL मा सुचीकरण गरिएको छ यसलाई{{SITENAME}}ले प्रयोगमा ल्याएको छ।\nतपाईले खाता खोल्न सक्नुहुन्न ।",
        "xffblockreason": "एउटा आइपि ठेगाना जुन X-Forwarded-For हेडरमा रहेको छ, या त तपाईंको हो वा त्यस प्रक्सी सर्भरको हो जसको प्रयोग तपाईं गर्दै हुनुहुन्छ र यस माथि प्रतिबन्ध लगाइएको छ। वास्तविक कारण थियो:$1",
        "cant-see-hidden-user": "तपाईले रोक लगाउन खोज्नु भएको प्रयोगकर्ता पहिले नै रोकलगाइ लुकाइ सकिएको छ ।\nतपाईसँग hideuser अधिकार नभएकोले यसलाई हेर्ना या सम्पादन गर्न सक्नुहुन्न ।",
        "ipbblocked": "तपाईंले अरु प्रयोगकर्ताहरूलाई प्रतिबन्धित गर्न वा उनीहरूको प्रतिबन्ध खोल्न सक्नुहुन्न किनभने तपाईं आफै प्रतिबन्धित हुनुहुन्छ।",
-       "ipbnounblockself": "तपाई आफैले आफैलाई रोक खुलाउन सक्नुहुन्न ।",
+       "ipbnounblockself": "तपाई आफैले आफैलाई रोक खुलाउन सक्नुहुन्न ।",
        "lockdb": "डेटाबेस ताल्चामार्ने",
        "unlockdb": "डेटाबेसको ताल्चा खोल्ने",
        "lockdbtext": "डेटाबेसमा ताला लगाउनाले सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो अभिरूचीमा परिवर्तन, आफ्नो ध्यानसूचीमा सम्पादन, र अन्य वस्तु जसको लागि डेटाबेसमा परिवर्तन गरें हुन्छ, त्यसबाट वन्चित हुनेछ। कृपया यो सुनिश्चित गर्नुहोस् कि तपाईं यो गर्न चाहनुहुन्छ, र तपाईं रक्षण पश्चात ताला खोल्नुहुन्छ ।",
        "movearticle": "पृष्ठ सार्नुहोस्",
        "moveuserpage-warning": "'''चेतावनी:''' तपाईंले प्रयोगकर्ता पृष्ठ सार्न आँट्नु भएकोछ। कृपया याद राख्नुहोस् पृष्ठ मात्र सारिने छ र प्रयोगकर्ताको अर्को नाम राख्न '''सकिंदैन'''।",
        "movecategorypage-warning": "<strong>चेतावनी:</strong> तपाईं एउटा श्रेणी पृष्ठलाई स्थानान्तरित गर्न जादै हुनुहुन्छ। याद राख्नुहोस् कि मात्रै यो पृष्ठ स्थानान्तरित हुनेछ र पुरानो श्रेणीमा सामेल पृष्ठ नयाँ श्रेणी अन्तर्गत <em>जाने</em> छैन।",
-       "movenologintext": "पृष्ठ सार्नको लागि तपाई दर्ता गरिएको र [[Special:UserLogin|प्रवेश गरेको]] प्रयोगकर्ता हुनुपर्छ ।",
+       "movenologintext": "पृष्ठ सार्नको लागि तपाई दर्ता गरिएको र [[Special:UserLogin|प्रवेश गरेको]] प्रयोगकर्ता हुनुपर्छ ।",
        "movenotallowed": "तपाईँलाई पृष्ठ सार्ने अनुमति छैन",
        "movenotallowedfile": "फाइल हटाउने अनुमति तपाईँलाई  छैन।",
        "cant-move-user-page": "तपाईसँग प्रयोगकर्ता पृष्ठहरू सार्न अनुमती छैन (सहपृष्ठहरू बाहेक)",
        "javascripttest-pagetext-frameworks": "कृपया निम्न परीक्षण ढाँचाहरू मध्ये एउटा छान्नुहोस्: $1",
        "javascripttest-pagetext-skins": "परीक्षणको लागि खोल छान्नुहोस्:",
        "javascripttest-qunit-intro": "mediawiki.org मा [$1 जाँचको कागजात] हेर्नुहोस् ।",
-       "tooltip-pt-userpage": "तपाईको प्रयोगकर्ता पृष्ठ",
+       "tooltip-pt-userpage": "तपाà¤\88à¤\82à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤ªà¥\83षà¥\8dठ",
        "tooltip-pt-anonuserpage": "तपाईले जुन IP ठेगानाको रुपमा सम्पादन गर्दै हुनुहुन्छ , त्यसको प्रयोगकर्ता पृष्ठ निम्न छ :",
-       "tooltip-pt-mytalk": "तपाईको वार्ता पृष्ठ",
+       "tooltip-pt-mytalk": "तपाà¤\88à¤\82à¤\95à¥\8b à¤µà¤¾à¤°à¥\8dता à¤ªà¥\83षà¥\8dठ",
        "tooltip-pt-anontalk": "यो IP ठेगानाबाट गरिएका सम्पादनका बारेमा बार्तालाप",
        "tooltip-pt-preferences": "तपाईंका अभिरुचिहरू",
        "tooltip-pt-watchlist": "पृष्ठहरूको सूची जसका परिवर्तनहरूलाई तपाईँले निगरानी गरिरहनु भएको छ",
        "filedelete-archive-read-only": "यस अभिलेख डाइरेक्टरी \"$1\"मा वेव सर्भरलाई लेख्न सक्दैन ।",
        "previousdiff": "← पुरानो सम्पादन",
        "nextdiff": "नयाँ सम्पादन →",
-       "mediawarning": "'''चेतावनी''': यो फाइलमा घातक कोडहरु पनि हुनसक्छन\nयसलाई सञ्चालन गरेर तपाईको प्रणालीमा नियन्त्रण गरिन सक्छ ।",
+       "mediawarning": "<storng>चेतावनी</storng>: यो फाइलमा घातक कोडहरू पनि हुनसक्छन\nयसलाई सञ्चालन गर्दा तपाईंको प्रणालीमा नियन्त्रण गरिन सक्छ ।",
        "imagemaxsize": "तस्विर आकार सिमा:<br />''(फाइल जानकारी पृष्ठको लागि )''",
        "thumbsize": "थम्बनेल आकार:",
        "widthheight": "$1 × $2",
        "namespacesall": "सबै",
        "monthsall": "सबै",
        "confirmemail": "इमेल ठेगाना पक्का गर्नुहोस्",
-       "confirmemail_noemail": "तपाईको प्रयोगकर्ता [[Special:Preferences|अभिरुचीमा]] मान्य इमेल ठेगाना राखीएको छैन ।",
+       "confirmemail_noemail": "तपाà¤\88à¤\82à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता [[Special:Preferences|à¤\85भिरà¥\81à¤\9aà¥\80मा]] à¤®à¤¾à¤¨à¥\8dय à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना à¤°à¤¾à¤\96à¥\80à¤\8fà¤\95à¥\8b à¤\9bà¥\88न à¥¤",
        "confirmemail_text": "{{SITENAME}} मा उपलब्ध इमेल सुविधाहरूको लाभ उठाउनका लागि प्रमाणित ठेगाना हुनु जरूरी छ।\nतपाईंको इमेल ठेगानामा एउटा निश्चित कोड पठाउनका लागि तल दिइएको बटनमा क्लिक गर्नुहोस।\nत्यस मेलमा एउटा कोडले भरिएको एउटा लिङ्क हुनेछ;\nतपाईंको इमेललाई प्रमाणिकरणका लागि यसलाई आफ्नो ब्राउजरआ खोल्नुहोला।",
        "confirmemail_pending": "तपाईको इमेलमा प्रपाणिकरण कोड पहिले नै पठाइ सकिएको छ;\nयदि तपाईले अहिले नै खाता खोल्नु भएको हो कोडको निम्ती पुन: अनुरोध गर्नु अगि कोड नआइपुगुन्जेल कृपया केही समय प्रतिक्षा गर्नुहोस ।",
        "confirmemail_send": "एक यकिन कोड मेल गर्नुहोस",
        "confirmemail_sendfailed": "{{SITENAME}} प्रमाणिकरण इमेल पठाउन सकिएन।\nतपाईको इमेलमा अमान्य वर्णहरु छन् कि जाँच गर्नुहोस् ।\n\nहुलाकीले दिएको त्रुटी सन्देश: $1",
        "confirmemail_invalid": "अमान्य प्रमाणिकरण कोड ।\nकोडको मान्य अवधी समाप्त भएको हुनसक्छ ।",
        "confirmemail_needlogin": "तपाईले आफ्नो इमेल प्रमाणिकरण गराउन $1 गर्नु पर्छ ।",
-       "confirmemail_success": "तपाà¤\88à¤\95à¥\8b à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना à¤ªà¥\8dरमाणिà¤\95रण à¤\97रिà¤\8fà¤\95à¥\8b à¤\9b।\nतपाà¤\88 [[Special:UserLogin|प्रवेश गरी]] विकिको मजा लिन सक्नुहुन्छ ।",
+       "confirmemail_success": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना à¤ªà¥\8dरमाणिà¤\95रण à¤\97रिà¤\8fà¤\95à¥\8b à¤\9b à¥¤\nà¤\85ब à¤¤à¤ªà¤¾à¤\88à¤\82 [[Special:UserLogin|प्रवेश गरी]] विकिको मजा लिन सक्नुहुन्छ ।",
        "confirmemail_loggedin": "तपाईको इमेल ठेगाना प्रमाणित भयो।",
        "confirmemail_subject": "{{SITENAME}} ई मेलl ठेगानाको पुष्टि",
        "confirmemail_body": "कसैले, सायद तपाईंले, आई पी ठेगाना $1बाट,\n{{SITENAME}}मा एउटा  खाता  \"$2\"को नाममा यस ई मेल ठेगानामा  पञ्जीकरण गरेकोछ।\n\nयो खाता साँच्ची नैं तपाईंको हो भनेर पुष्टि गर्न र {{SITENAME}}मा यो ई मेलका सुविधाहरु  सक्रिय गर्न तपाईंको ब्राउजरमा यो लिंक खोल्नुहोस्:\n\n$3 \n\nयदि त्यो खाता तपाईंले पञ्जीकरण गर्नु भएको *होइन* भनें, ई मेलको पुष्टिकरण रद्द गर्न यो लिंक पहिल्याउनुहोस्:\n\n$5\n\nयो पुष्टिकरणको समय  $4 मा सकिनेछ।",
        "tags-create-invalid-title-chars": "ट्याग नामहरूमा यस्तो क्यारेक्टर हुनुहुँदैन जुन पृष्ठको शीर्षकमा प्रयोग नहोस्।",
        "tags-create-already-exists": "ट्याग $1 पहिला देखि नै उपलब्ध ।",
        "tags-create-warnings-above": "निम्नलिखित {{PLURAL:$2|चेतावनी देखाइयो|चेतावनीहरू देखाइयो}} जब ट्याग \"$1\" बनाउने प्रयास गरिएको थियो:",
-       "tags-create-warnings-below": "à¤\9fà¥\8dयाà¤\97 à¤¬à¤¨à¤¾à¤\89दà¥\88, à¤\95à¥\87 à¤¤à¤ªà¤¾à¤\88 जारी राख्न चाहनु हुन्छ ?",
+       "tags-create-warnings-below": "à¤\95à¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¯à¥\8b à¤\9fà¥\8dयाà¤\97 à¤¬à¤¨à¤¾à¤\89नà¥\87 à¤\95ाम जारी राख्न चाहनु हुन्छ ?",
        "tags-delete-title": "ट्याग मेट्नुहोस्",
        "tags-delete-explanation-initial": "तपाईले ट्याग \"$1\" लाई डाटावेसबाट हटाउन खोज्दै हुनु हुन्छ ।",
        "tags-delete-explanation-in-use": "ट्यागलाई {{PLURAL:$2|$2 संशोधन वा लग प्रविष्टि|सबै $2 संशोधन र/वा लग प्रविष्टिहरू}}बाट हटाइनेछ जहाँ अहिले त्यसको प्रयोग गरिंदै छ।",
        "expand_templates_generate_xml": "एक्सएमएल पार्स रूख देखाउने",
        "expand_templates_generate_rawhtml": "सुद्ध HTML देखाउने",
        "expand_templates_preview": "पूर्वावलोकन",
-       "expand_templates_preview_fail_html": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तपाई लग इन गर्नुभएको छैन, पूर्वावलोकन लुकाइएको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्न सकियोस।</em>\n\n<strong>यदि यो मान्य पूर्ववावलोकन प्रयास हो, भने पुन प्रयास गर्नुहोस।</strong>\nयदि यसले कार्य पूर्ण भएन भने [[Special:UserLogout|लग आउट गरेर]] फेरी लग इन गर्नुहोला।",
-       "expand_templates_preview_fail_html_anon": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तपाई लग इन गर्नुभएको छैन, पूर्वावलोकन लुकाइएको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्न सकियोस।</em>\n\n<strong>यदि यो मान्य पूर्वावलोकन प्रयास हो भने कृपया [[Special:UserLogin|लग इन गरेर]] पुन प्रयास गर्नुहोला।</strong>",
+       "expand_templates_preview_fail_html": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तपाईंले लग इन गर्नुभएको छैन, पूर्वावलोकन लुकाइएको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्न सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्ववावलोकन प्रयास हो, भने पुन प्रयास गर्नुहोस् ।</strong>\nयदि यसले कार्य पूर्ण भएन भने [[Special:UserLogout|लग आउट गरेर]] फेरी लग इन गर्नुहोला ।",
+       "expand_templates_preview_fail_html_anon": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तपाईंले लग इन गर्नुभएको छैन, पूर्वावलोकन लुकाइएको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्न सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्वावलोकन प्रयास हो भने कृपया [[Special:UserLogin|लग इन गरेर]] पुन प्रयास गर्नुहोला।</strong>",
        "pagelanguage": "पृष्ठ भाषा छान्ने",
        "pagelang-name": "पृष्ठ",
        "pagelang-language": "भाषा",
index 1cf0f75..1468176 100644 (file)
        "actionthrottledtext": "Mechanizm obrony przed spamem ogranicza liczbę wykonań tej czynności w jednostce czasu. Usiłowałeś przekroczyć to ograniczenie. Spróbuj jeszcze raz za kilka minut.",
        "protectedpagetext": "Wyłączono możliwość edycji tej strony.",
        "viewsourcetext": "Tekst źródłowy strony można podejrzeć i skopiować.",
-       "viewyourtext": "Tekst źródłowy '''zmodyfikowanej''' przez Ciebie strony możesz podejrzeć i skopiować",
+       "viewyourtext": "Tekst źródłowy '''zmodyfikowanej przez Ciebie''' strony możesz podejrzeć i skopiować.",
        "protectedinterface": "Ta strona zawiera tekst interfejsu oprogramowania wiki i jest zabezpieczona przed nadużyciami.\nBy dodać lub zmienić tłumaczenia wszystkich serwisów wiki, użyj [//translatewiki.net/ translatewiki.net], projektu lokalizacji MediaWiki.",
        "editinginterface": "<strong>Ostrzeżenie:</strong> Edytujesz stronę, która zawiera tekst interfejsu oprogramowania.\nZmiany na tej stronie zmienią wygląd interfejsu dla innych użytkowników tej wiki.",
        "translateinterface": "Aby dodać lub zmienić tłumaczenia wszystkich wiki, użyj [//translatewiki.net/ translatewiki.net], projekt lokalizacji oprogramowania MediaWiki.",
        "logouttext": "'''Nie jesteś już zalogowany.'''\n\nZauważ, że do momentu wyczyszczenia pamięci podręcznej przeglądarki niektóre strony mogą wyglądać tak, jakbyś wciąż był zalogowany.",
        "welcomeuser": "Witaj, $1!",
        "welcomecreation-msg": "Twoje konto zostało utworzone.\nMożesz zmienić swoje [[Special:Preferences|preferencje]], jeśli chcesz.",
-       "yourname": "Nazwa {{GENDER:|użytkownika|użytkowniczki}}",
+       "yourname": "Nazwa {{GENDER:|użytkownika|użytkowniczki}}:",
        "userlogin-yourname": "Nazwa użytkownika",
        "userlogin-yourname-ph": "Wprowadź swoją nazwę użytkownika",
        "createacct-another-username-ph": "Wprowadź nazwę użytkownika",
        "yourdiff": "Różnice",
        "copyrightwarning": "Wkład na {{SITENAME}} jest udostępniany na licencji $2 (szczegóły w $1). Jeśli nie chcesz, żeby Twój tekst był dowolnie zmieniany przez każdego i rozpowszechniany bez ograniczeń, nie umieszczaj go tutaj.<br />\nZapisując swoją edycję, oświadczasz, że ten tekst jest Twoim dziełem lub pochodzi z materiałów dostępnych na warunkach ''domeny publicznej'' lub kompatybilnych.\n'''PROSZĘ NIE WPROWADZAĆ MATERIAŁÓW CHRONIONYCH PRAWEM AUTORSKIM BEZ POZWOLENIA WŁAŚCICIELA!'''",
        "copyrightwarning2": "Wszelki wkład na {{SITENAME}} może być edytowany, zmieniany lub usunięty przez innych użytkowników.\nJeśli nie chcesz, żeby Twój tekst był dowolnie zmieniany przez każdego i rozpowszechniany bez ograniczeń, nie umieszczaj go tutaj.<br />\nZapisując swoją edycję, oświadczasz, że ten tekst jest Twoim dziełem lub pochodzi z materiałów dostępnych na warunkach ''domeny publicznej'' lub kompatybilnych (zobacz także $1).\n'''PROSZĘ NIE WPROWADZAĆ MATERIAŁÓW CHRONIONYCH PRAWEM AUTORSKIM BEZ POZWOLENIA WŁAŚCICIELA!'''",
+       "editpage-cannot-use-custom-model": "Model zawartości tej strony nie może być zmieniony.",
        "longpageerror": "'''Błąd! Wprowadzony przez Ciebie tekst ma {{PLURAL:$1|1 kilobajt|$1 kilobajty|$1 kilobajtów}}. Długość tekstu nie może przekraczać {{PLURAL:$2|1 kilobajt|$2 kilobajty|$2 kilobajtów}}. Tekst nie może być zapisany.'''",
        "readonlywarning": "'''Uwaga! Baza danych została zablokowana do celów administracyjnych. W tej chwili nie można zapisać nowej wersji strony. Jeśli chcesz, może skopiować ją do pliku, aby móc zapisać ją później.'''\n\nAdministrator, który zablokował bazę, podał następujące wyjaśnienie: $1",
        "protectedpagewarning": "'''Uwaga! Możliwość modyfikacji tej strony została zabezpieczona. Mogą ją edytować jedynie użytkownicy z uprawnieniami administratora.'''\nOstatni wpis z rejestru jest pokazany poniżej.",
        "revdelete-radio-unset": "Widoczny",
        "revdelete-suppress": "Utajnij informacje przed administratorami, tak samo jak przed innymi",
        "revdelete-unsuppress": "Wyłącz utajnianie dla odtwarzanej historii zmian",
-       "revdelete-log": "Powód",
+       "revdelete-log": "Powód:",
        "revdelete-submit": "Zaakceptuj dla {{PLURAL:$1|wybranej|wybranych}} wersji",
        "revdelete-success": "'''Uaktualniono widoczność wersji.'''",
        "revdelete-failure": "'''Widoczność wersji nie może zostać uaktualniona – '''\n$1",
        "revdelete-otherreason": "Inny lub dodatkowy powód:",
        "revdelete-reasonotherlist": "Inny powód",
        "revdelete-edit-reasonlist": "Edytuj listę przyczyn usunięcia",
-       "revdelete-offender": "Autor wersji",
+       "revdelete-offender": "Autor wersji:",
        "suppressionlog": "Rejestr utajniania",
        "suppressionlogtext": "Poniżej znajduje się lista usunięć i blokad utajnionych przed administratorami.\nZobacz [[Special:BlockList|rejestr blokad]], jeśli chcesz sprawdzić aktualne zakazy i blokady.",
        "mergehistory": "Scalanie historii stron",
        "mergehistory-autocomment": "Historia [[:$1]] scalona z [[:$2]]",
        "mergehistory-comment": "Historia [[:$1]] scalona z [[:$2]]: $3",
        "mergehistory-same-destination": "Strona źródłowa i docelowa nie mogą być takie same",
-       "mergehistory-reason": "Powód",
+       "mergehistory-reason": "Powód:",
        "mergelog": "Scalone",
        "revertmerge": "Rozdziel",
        "mergelogpagetext": "Poniżej znajduje się lista ostatnich scaleń historii zmian stron.",
        "search-nonefound": "Brak wyników spełniających kryteria podane w zapytaniu.",
        "powersearch-legend": "Wyszukiwanie zaawansowane",
        "powersearch-ns": "Przeszukaj przestrzenie nazw:",
-       "powersearch-togglelabel": "Zaznacz",
+       "powersearch-togglelabel": "Zaznacz:",
        "powersearch-toggleall": "wszystko",
        "powersearch-togglenone": "nic",
        "powersearch-remember": "Zapamiętaj wybór dla kolejnych wyszukiwań",
        "rows": "Wiersze:",
        "columns": "Kolumny:",
        "searchresultshead": "Wyszukiwanie",
-       "stub-threshold": "Maksymalny (w bajtach) rozmiar strony oznaczanej jako <a href=\"#\" class=\"stub\">zalążek (stub)</a>",
+       "stub-threshold": "Maksymalny (w bajtach) rozmiar strony oznaczanej jako <a href=\"#\" class=\"stub\">zalążek (stub)</a>:",
        "stub-threshold-disabled": "Wyłączone",
        "recentchangesdays": "Liczba dni prezentowanych w ostatnich zmianach:",
        "recentchangesdays-max": "(maksymalnie $1 {{PLURAL:$1|dzień|dni}})",
        "prefs-registration": "Data rejestracji:",
        "yourrealname": "Imię i nazwisko:",
        "yourlanguage": "Język interfejsu:",
-       "yourvariant": "Wariant języka treści",
+       "yourvariant": "Wariant języka treści:",
        "prefs-help-variant": "Preferowany wariant ortografii, który ma zostać użyty przy wyświetlaniu treści tej wiki.",
        "yournick": "Nowy podpis:",
        "prefs-help-signature": "Wypowiedzi na stronach dyskusji powinny być podpisywane za pomocą „<nowiki>~~~~</nowiki>”, dzięki temu automatycznie wstawiany jest Twój podpis wraz z bieżącą datą.",
        "email-address-validity-invalid": "Wymagany jest prawidłowy adres!",
        "userrights": "Zarządzanie uprawnieniami użytkowników",
        "userrights-lookup-user": "Zarządzaj grupami użytkownika",
-       "userrights-user-editname": "Wprowadź nazwę użytkownika",
+       "userrights-user-editname": "Wprowadź nazwę użytkownika:",
        "editusergroup": "Edytuj grupy użytkownika",
        "editinguser": "Zmiana uprawnień {{GENDER:$1|użytkownika|użytkowniczki}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Edytuj grupy użytkownika",
        "userrights-groupsmember": "Należy do:",
        "userrights-groupsmember-auto": "Na stałe należy do:",
        "userrights-groups-help": "Możesz zmienić przynależność tego użytkownika do podanych grup:\n* Zaznaczone pole oznacza przynależność użytkownika do danej grupy.\n* Niezaznaczone pole oznacza, że użytkownik nie należy do danej grupy.\n* Gwiazdka * informuje, że nie możesz usunąć użytkownika z grupy po dodaniu do niej lub dodać po usunięciu.",
-       "userrights-reason": "Powód",
+       "userrights-reason": "Powód:",
        "userrights-no-interwiki": "Nie masz dostępu do edycji uprawnień na innych wiki.",
        "userrights-nodatabase": "Baza danych $1 nie istnieje lub nie jest lokalna.",
        "userrights-nologin": "Musisz [[Special:UserLogin|zalogować się]] na konto administratora, by nadawać uprawnienia użytkownikom.",
        "userrights-notallowed": "Nie jesteś upoważniony do nadawania i odbierania uprawnień użytkownikom.",
-       "userrights-changeable-col": "Grupy, które możesz wybrać:",
-       "userrights-unchangeable-col": "Grupy, których nie możesz wybrać:",
+       "userrights-changeable-col": "Grupy, które możesz wybrać",
+       "userrights-unchangeable-col": "Grupy, których nie możesz wybrać",
        "userrights-conflict": "Konflikt zmiany uprawnień użytkownika! Proszę sprawdzić i potwierdzić swoje zmiany.",
        "userrights-removed-self": "Pomyślnie odebrałeś sobie uprawnienia. W związku z tym nie masz już dostępu do tej strony.",
-       "group": "Grupa",
+       "group": "Grupa:",
        "group-user": "Użytkownicy",
        "group-autoconfirmed": "Automatycznie zatwierdzeni użytkownicy",
        "group-bot": "Boty",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|obserwujący użytkownik|obserwujących użytkowników}}]",
        "rc_categories": "Ogranicz do kategorii (oddzielaj za pomocą „|”)",
-       "rc_categories_any": "Wszystkie",
+       "rc_categories_any": "Dowolna z wybranych",
        "rc-change-size-new": "$1 {{PLURAL:$1|bajt|bajty|bajtów}} po zmianie",
        "newsectionsummary": "/* $1 */ nowa sekcja",
        "rc-enhanced-expand": "Pokaż szczegóły",
        "uploadlogpagetext": "Lista ostatnio przesłanych plików.\nPrzejdź na stronę [[Special:NewFiles|galerii nowych plików]], by zobaczyć pliki jako miniaturki.",
        "filename": "Nazwa pliku",
        "filedesc": "Opis",
-       "fileuploadsummary": "Opis",
+       "fileuploadsummary": "Opis:",
        "filereuploadsummary": "Zmiany w pliku:",
-       "filestatus": "Status prawny",
-       "filesource": "Źródło",
+       "filestatus": "Status prawny:",
+       "filesource": "Źródło:",
        "ignorewarning": "Zignoruj ostrzeżenia i wymuś zapisanie pliku",
        "ignorewarnings": "Ignoruj wszystkie ostrzeżenia",
        "minlength1": "Nazwa pliku musi składać się co najmniej z jednej litery.",
        "file-thumbnail-no": "Nazwa pliku zaczyna się od <strong>$1</strong>.\nWydaje się, że jest to pomniejszona grafika ''(miniaturka)''.\nJeśli posiadasz tę grafikę w pełnym rozmiarze – prześlij ją. Jeśli chcesz wysłać tę – zmień nazwę przesyłanego obecnie pliku.",
        "fileexists-forbidden": "Plik o tej nazwie już istnieje i nie może zostać nadpisany.\nJeśli chcesz przesłać plik cofnij się i prześlij go pod inną nazwą. [[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Plik o tej nazwie już istnieje we współdzielonym repozytorium plików.\nCofnij się i załaduj plik pod inną nazwą. [[File:$1|thumb|center|$1]]",
-       "file-exists-duplicate": "Ten plik jest kopią {{PLURAL:$1|pliku|następujących plików:}}",
+       "file-exists-duplicate": "Ten plik jest kopią {{PLURAL:$1|pliku|następujących plików}}:",
        "file-deleted-duplicate": "Identyczny do tego plik ([[:$1]]) został wcześniej usunięty.\nSprawdź historię usunięć tamtego pliku zanim prześlesz go ponownie.",
        "file-deleted-duplicate-notitle": "Plik jest identyczny z plikiem, który został wcześniej usunięty, a jego nazwa została ukryta. Należy poprosić kogoś z możliwością przeglądania ukrytych danych, aby przeanalizował sytuację przed przystąpieniem do jego ponownego przesłania.",
        "uploadwarning": "Ostrzeżenie o przesyłaniu",
        "uploadvirus": "W pliku jest wirus! Szczegóły: $1",
        "uploadjava": "Ten plik zawiera deklarację klasy Java skompresowaną ZIP.\nPrzesyłanie plików Java nie jest dozwolone, ponieważ mogłoby zostać użyte do obchodzenia zabezpieczeń.",
        "upload-source": "Plik źródłowy",
-       "sourcefilename": "Nazwa pierwotna",
-       "sourceurl": "Źródłowy adres URL",
-       "destfilename": "Nazwa docelowa",
+       "sourcefilename": "Nazwa pierwotna:",
+       "sourceurl": "Źródłowy adres URL:",
+       "destfilename": "Nazwa docelowa:",
        "upload-maxfilesize": "Wielkość pliku ograniczona jest do $1",
        "upload-description": "Opis pliku",
        "upload-options": "Opcje przesyłania",
        "upload-curl-error6-text": "Podany adres URL jest nieosiągalny. Upewnij się, czy podany adres URL jest prawidłowy i czy dana strona jest dostępna.",
        "upload-curl-error28": "Upłynął limit czasu odpowiedzi",
        "upload-curl-error28-text": "Zbyt długi czas odpowiedzi serwera.\nSprawdź, czy strona działa, odczekaj kilka minut i spróbuj ponownie.\nMożesz także spróbować w czasie mniejszego obciążenia serwera.",
-       "license": "Licencja",
+       "license": "Licencja:",
        "license-header": "Licencja",
        "nolicense": "Nie wybrano",
        "licenses-edit": "Edytuj opcje licencji",
        "upload_source_file": "(wybrany plik na twoim komputerze)",
        "listfiles-delete": "usuń",
        "listfiles-summary": "Na tej stronie specjalnej prezentowane są wszystkie przesłane pliki.",
-       "listfiles_search_for": "Szukaj pliku o nazwie",
+       "listfiles_search_for": "Szukaj pliku o nazwie:",
        "listfiles-userdoesnotexist": "Konto użytkownika „$1” nie jest zarejestrowane.",
        "imgfile": "plik",
        "listfiles": "Lista plików",
        "filerevert": "Przywracanie $1",
        "filerevert-legend": "Przywracanie poprzedniej wersji pliku",
        "filerevert-intro": "Zamierzasz przywrócić '''[[Media:$1|$1]]''' do [$4 wersji z $3, $2].",
-       "filerevert-comment": "Powód",
+       "filerevert-comment": "Powód:",
        "filerevert-defaultcomment": "Przywrócono wersję z $2, $1",
        "filerevert-submit": "Przywróć",
        "filerevert-success": "Plik '''[[Media:$1|$1]]''' został cofnięty do [$4 wersji z $3, $2].",
        "filedelete-legend": "Usuń plik",
        "filedelete-intro": "Chcesz usunąć plik '''[[Media:$1|$1]]''' razem z całą jego historią.",
        "filedelete-intro-old": "Usuwasz wersję pliku '''[[Media:$1|$1]]''' z datą [$4 $3, $2].",
-       "filedelete-comment": "Powód",
+       "filedelete-comment": "Powód:",
        "filedelete-submit": "Usuń plik",
        "filedelete-success": "Usunięto plik '''$1'''.",
        "filedelete-success-old": "Usunięto plik '''[[Media:$1|$1]]''' w wersji z $3, $2.",
        "filedelete-nofile": "Plik '''$1''' nie istnieje.",
        "filedelete-nofile-old": "Brak zarchiwizowanej wersji '''$1''' o podanych atrybutach.",
-       "filedelete-otherreason": "Inny powód",
+       "filedelete-otherreason": "Inny powód:",
        "filedelete-reason-otherlist": "Inny powód",
        "filedelete-reason-dropdown": "* Najczęstsze przyczyny usunięcia\n** Naruszenie praw autorskich\n** Kopia już istniejącego pliku",
        "filedelete-edit-reasonlist": "Edycja listy powodów usunięcia pliku",
        "filedelete-maintenance-title": "Nie można usunąć pliku",
        "mimesearch": "Wyszukiwanie MIME",
        "mimesearch-summary": "Ta strona umożliwia wyszukiwanie plików ze względu na ich typ MIME.\nUżycie: typ_treści/podtyp albo typ_treści/*, np. <code>image/jpeg</code>.",
-       "mimetype": "Typ MIME",
+       "mimetype": "Typ MIME:",
        "download": "pobierz",
        "unwatchedpages": "Nieobserwowane strony",
        "listredirects": "Lista przekierowań",
        "double-redirect-fixed-maintenance": "Automatyczna naprawa podwójnego przekierowania podczas prac konserwacyjnych z [[$1]] na [[$2]].",
        "double-redirect-fixer": "Naprawiacz przekierowań",
        "brokenredirects": "Zerwane przekierowania",
-       "brokenredirectstext": "Poniższe przekierowania wskazują na nieistniejące strony.",
+       "brokenredirectstext": "Poniższe przekierowania wskazują na nieistniejące strony:",
        "brokenredirects-edit": "edytuj",
        "brokenredirects-delete": "usuń",
        "withoutinterwiki": "Strony bez odnośników do projektów w innych językach",
        "unusedimages": "Nieużywane pliki",
        "wantedcategories": "Brakujące kategorie",
        "wantedpages": "Najpotrzebniejsze strony",
-       "wantedpages-summary": "Najczęściej linkowane nieistniejące strony, z wyłączeniem stron, do których linkują wyłącznie przekierowania. Lista nieistniejących stron, do których linkują przekierowania, znajduje się na [[{{#special:BrokenRedirects}}]].",
+       "wantedpages-summary": "Lista najczęściej linkowanych, nieistniejących stron, z wyłączeniem stron, do których linkują wyłącznie przekierowania. By zobaczyć listę nieistniejących stron, do których linkują przekierowania, zobacz [[{{#special:BrokenRedirects}}|listę zerwanych przekierowań]].",
        "wantedpages-badtitle": "Nieprawidłowy tytuł wśród wyników – $1",
        "wantedfiles": "Potrzebne pliki",
        "wantedfiletext-cat": "Następujące pliki są używane, ale nie istnieją. Pliki z obcych repozytoriów mogą być wymienione pomimo istnienia. Takie fałszywe wyniki zostaną <del>przekreślone</del>. Ponadto strony, które osadzają pliki, które nie istnieją, są wymienione w [[:$1]].",
        "usereditcount": "$1 {{PLURAL:$1|edycja|edycje|edycji}}",
        "usercreated": "{{GENDER:$3|Utworzył|Utworzyła|Utworzone}} $1 o $2",
        "newpages": "Nowe strony",
-       "newpages-username": "Nazwa użytkownika",
+       "newpages-username": "Nazwa użytkownika:",
        "ancientpages": "Najstarsze strony",
        "move": "Przenieś",
        "movethispage": "Przenieś tę stronę",
        "booksources-search": "Szukaj",
        "booksources-text": "Poniżej znajduje się lista odnośników do innych witryn, które pośredniczą w sprzedaży nowych i używanych książek, a także mogą posiadać dalsze informacje na temat poszukiwanej przez Ciebie książki.",
        "booksources-invalid-isbn": "Podany numer ISBN został rozpoznany jako nieprawidłowy. Sprawdź czy podany numer zgadza się z numerem zaczerpniętym ze źródła.",
-       "specialloguserlabel": "Kto",
-       "speciallogtitlelabel": "Co (tytuł lub użytkownik)",
+       "specialloguserlabel": "Kto:",
+       "speciallogtitlelabel": "Co (tytuł lub użytkownik):",
        "log": "Rejestr operacji",
        "all-logs-page": "Wszystkie publiczne operacje",
        "alllogstext": "Wspólny rejestr wszystkich typów operacji dla {{GRAMMAR:D.lp|{{SITENAME}}}}.\nMożesz zawęzić liczbę wyników poprzez wybranie typu rejestru, nazwy użytkownika albo tytułu strony.",
        "allpages": "Wszystkie strony",
        "nextpage": "Następna strona ($1)",
        "prevpage": "Poprzednia strona ($1)",
-       "allpagesfrom": "Strony o tytułach rozpoczynających się od",
-       "allpagesto": "Strony o tytułach kończących się na",
+       "allpagesfrom": "Strony o tytułach rozpoczynających się od:",
+       "allpagesto": "Strony o tytułach kończących się na:",
        "allarticles": "Wszystkie artykuły",
        "allinnamespace": "Wszystkie strony (w przestrzeni nazw $1)",
        "allpagessubmit": "Pokaż",
-       "allpagesprefix": "Pokaż strony o tytułach rozpoczynających się od",
+       "allpagesprefix": "Pokaż strony o tytułach rozpoczynających się od:",
        "allpagesbadtitle": "Podana nazwa jest nieprawidłowa, zawiera prefiks międzyprojektowy lub międzyjęzykowy. Może ona także zawierać w sobie jeden lub więcej znaków, których użycie w nazwach jest niedozwolone.",
        "allpages-bad-ns": "W {{GRAMMAR:MS.lp|{{SITENAME}}}} nie istnieje przestrzeń nazw „$1”.",
        "allpages-hide-redirects": "Ukryj przekierowania",
        "cachedspecial-refresh-now": "Najpóźniejszy widok.",
        "categories": "Kategorie",
        "categoriespagetext": "Strona przedstawia {{PLURAL:$1|kategorię zawierającą|listę kategorii zawierających}} strony lub pliki.\n[[Special:UnusedCategories|Nieużywane kategorie]] zostały ukryte.\nZobacz również [[Special:WantedCategories|brakujące kategorie]].",
-       "categoriesfrom": "Wyświetl kategorie, zaczynając od",
+       "categoriesfrom": "Wyświetl kategorie, zaczynając od:",
        "special-categories-sort-count": "sortowanie według liczby",
        "special-categories-sort-abc": "sortowanie alfabetyczne",
        "deletedcontributions": "Usunięty wkład użytkownika",
        "deletedcontributions-title": "Usunięty wkład użytkownika",
        "sp-deletedcontributions-contribs": "wkład",
        "linksearch": "Wyszukiwarka linków zewnętrznych",
-       "linksearch-pat": "Wzorzec wyszukiwania",
+       "linksearch-pat": "Wzorzec wyszukiwania:",
        "linksearch-ns": "Przestrzeń nazw:",
        "linksearch-ok": "Szukaj",
        "linksearch-text": "Można użyć symboli wieloznacznych, takich jak „*.wikipedia.org”.\nWymaganie jest podanie co najmniej domeny najwyższego poziomu np. „*.org”.<br />\n{{PLURAL:$2|Obsługiwany protokół|Obsługiwane protokoły}}: $1 (jeśli nie podano, domyślny to http://).",
        "linksearch-line": "$1 link na stronie $2",
        "linksearch-error": "Symbolu wieloznacznego można użyć wyłącznie na początku nazwy hosta.",
-       "listusersfrom": "Pokaż użytkowników zaczynając od",
+       "listusersfrom": "Pokaż użytkowników zaczynając od:",
        "listusers-submit": "Pokaż",
        "listusers-noresult": "Nie znaleziono żadnego użytkownika.",
        "listusers-blocked": "({{GENDER:$1|zablokowany|zablokowana|zablokowany}})",
        "activeusers": "Lista aktywnych użytkowników",
        "activeusers-intro": "Poniżej znajduje się lista użytkowników, którzy byli aktywni w ciągu {{PLURAL:$1|ostatniego dnia|ostatnich $1 dni}}.",
        "activeusers-count": "w ciągu {{PLURAL:$3|ostatniego dnia|ostatnich $3 dni}} {{GENDER:$2|wykonał|wykonała|wykonał}} $1 {{PLURAL:$1|operację|operacje|operacji}}",
-       "activeusers-from": "Pokaż użytkowników zaczynając od",
+       "activeusers-from": "Pokaż użytkowników zaczynając od:",
        "activeusers-hidebots": "Ukryj boty",
        "activeusers-hidesysops": "Ukryj administratorów",
        "activeusers-noresult": "Nie odnaleziono żadnego użytkownika.",
        "nowikiemailtext": "Ten użytkownik nie chce otrzymywać wiadomości e‐mail od innych użytkowników.",
        "emailnotarget": "Adresat nie istnieje lub podana nazwa użytkownika jest nieprawidłowa.",
        "emailtarget": "Wpisz nazwę użytkownika, który jest adresatem",
-       "emailusername": "Nazwa użytkownika",
+       "emailusername": "Nazwa użytkownika:",
        "emailusernamesubmit": "Wyślij",
        "email-legend": "Wyślij e‐mail do innego użytkownika {{GRAMMAR:D.lp|{{SITENAME}}}}",
-       "emailfrom": "Od",
-       "emailto": "Do",
-       "emailsubject": "Temat",
+       "emailfrom": "Od:",
+       "emailto": "Do:",
+       "emailsubject": "Temat:",
        "emailmessage": "Wiadomość:",
        "emailsend": "Wyślij",
        "emailccme": "Wyślij mi kopię mojej wiadomości.",
        "dellogpagetext": "Poniżej znajduje się lista ostatnio wykonanych usunięć.",
        "deletionlog": "rejestr usunięć",
        "reverted": "Przywrócono poprzednią wersję",
-       "deletecomment": "Powód",
+       "deletecomment": "Powód:",
        "deleteotherreason": "Inny lub dodatkowy powód:",
        "deletereasonotherlist": "Inny powód",
        "deletereason-dropdown": "* Najczęstsze przyczyny usunięcia\n** Spam\n** Wandalizm\n** Naruszenia praw autorskich\n** Prośba autora\n** Zerwane przekierowanie",
        "sessionfailure": "Wystąpił problem z weryfikacją zalogowania.\nPolecenie zostało anulowane, aby uniknąć przechwycenia sesji.\nNaciśnij „wstecz” w przeglądarce, przeładuj stronę, po czym ponownie wydaj polecenie.",
        "changecontentmodel": "Edycja modelu zawartości strony",
        "changecontentmodel-title-label": "Tytuł strony",
+       "changecontentmodel-model-label": "Nowy model zawartości",
        "changecontentmodel-reason-label": "Powód:",
+       "changecontentmodel-success-title": "Model zawartości został zmieniony",
+       "changecontentmodel-success-text": "Typ zawartości [[:$1]] został zmieniony.",
+       "changecontentmodel-cannot-convert": "Zawartość [[:$1]] nie może być przekształcona do typu $2.",
+       "changecontentmodel-nodirectediting": "Model zawartości $1 nie obsługuje bezpośredniego edytowania",
+       "log-name-contentmodel": "Rejestr zmian modelu zawartości",
        "logentry-contentmodel-change-revertlink": "Przywróć",
        "logentry-contentmodel-change-revert": "Przywróć",
        "protectlogpage": "Zabezpieczone",
        "protect-norestrictiontypes-text": "Ta strona nie może być chroniona, gdyż nie ma dla niej żadnych dostępnych typów ograniczeń.",
        "protect-norestrictiontypes-title": "Nieblokowalna strona",
        "protect-legend": "Potwierdź zabezpieczenie",
-       "protectcomment": "Powód",
-       "protectexpiry": "Czas wygaśnięcia",
+       "protectcomment": "Powód:",
+       "protectexpiry": "Czas wygaśnięcia:",
        "protect_expiry_invalid": "Podany czas automatycznego odbezpieczenia jest nieprawidłowy.",
        "protect_expiry_old": "Podany czas automatycznego odblokowania znajduje się w przeszłości.",
        "protect-unchain-permissions": "Odblokuj dodatkowe opcje zabezpieczania",
        "protect-expiry-indefinite": "na zawsze",
        "protect-cascade": "Dziedziczenie zabezpieczenia – zabezpiecz wszystkie strony zawarte na tej stronie.",
        "protect-cantedit": "Nie możesz zmienić poziomu zabezpieczenia tej strony, ponieważ nie masz uprawnień do jej edycji.",
-       "protect-othertime": "Inny okres",
+       "protect-othertime": "Inny okres:",
        "protect-othertime-op": "inny okres",
        "protect-existing-expiry": "Obecny czas wygaśnięcia: $2 o $3",
        "protect-existing-expiry-infinity": "Obecny czas wygaśnięcia: nieskończony",
-       "protect-otherreason": "Inny lub dodatkowy powód",
+       "protect-otherreason": "Inny lub dodatkowy powód:",
        "protect-otherreason-op": "Inny powód",
        "protect-dropdown": "*Najczęstsze powody zabezpieczenia\n** Częste wandalizmy\n** Częste spamowanie\n** Wojna edycyjna\n** Wygłupy",
        "protect-edit-reasonlist": "Edytuj listę przyczyn zabezpieczenia",
        "protect-expiry-options": "1 godzina:1 hour,1 dzień:1 day,1 tydzień:1 week,2 tygodnie:2 weeks,1 miesiąc:1 month,3 miesiące:3 months,6 miesięcy:6 months,1 rok:1 year,na zawsze:infinite",
-       "restriction-type": "Ograniczenia",
-       "restriction-level": "Stopień",
+       "restriction-type": "Ograniczenia:",
+       "restriction-level": "Stopień:",
        "minimum-size": "Minimalny rozmiar",
-       "maximum-size": "Maksymalny rozmiar",
+       "maximum-size": "Maksymalny rozmiar:",
        "pagesize": "(bajtów)",
        "restriction-edit": "edytowanie",
        "restriction-move": "przenoszenie",
        "undeletelink": "pokaż lub odtwórz",
        "undeleteviewlink": "pokaż",
        "undeleteinvert": "Odwróć zaznaczenie",
-       "undeletecomment": "Powód",
+       "undeletecomment": "Powód:",
        "undeletedrevisions": "odtworzono {{PLURAL:$1|1 wersję|$1 wersje|$1 wersji}}",
        "undeletedrevisions-files": "odtworzono $1 {{PLURAL:$1|wersję|wersje|wersji}} i $2 {{PLURAL:$2|plik|pliki|plików}}",
        "undeletedfiles": "odtworzył $1 {{PLURAL:$1|plik|pliki|plików}}",
        "contributions-userdoesnotexist": "Konto użytkownika „$1” nie jest zarejestrowane.",
        "nocontribs": "Brak zmian odpowiadających tym kryteriom.",
        "uctop": "(ostatnia)",
-       "month": "Do miesiąca (włącznie)",
-       "year": "Do roku (włącznie)",
+       "month": "Do miesiąca (włącznie):",
+       "year": "Do roku (włącznie):",
        "sp-contributions-newbies": "Pokaż wyłącznie wkład nowych użytkowników",
        "sp-contributions-newbies-sub": "Dla nowych użytkowników",
        "sp-contributions-newbies-title": "Wkład nowych użytkowników",
        "sp-contributions-talk": "dyskusja",
        "sp-contributions-userrights": "zarządzanie uprawnieniami użytkownika",
        "sp-contributions-blocked-notice": "To konto użytkownika jest obecnie zablokowane. Ostatni wpis rejestru blokad jest pokazany poniżej.",
-       "sp-contributions-blocked-notice-anon": "Ten adres IP jest obecnie zablokowany.\nPoniżej znajduje się ostatni wpis w rejestrze blokowania.",
+       "sp-contributions-blocked-notice-anon": "Ten adres IP jest obecnie zablokowany.\nOstatni wpis rejestru blokad jest pokazany poniżej.",
        "sp-contributions-search": "Szukaj wkładu",
-       "sp-contributions-username": "Adres IP lub nazwa użytkownika",
+       "sp-contributions-username": "Adres IP lub nazwa użytkownika:",
        "sp-contributions-toponly": "Pokaż wyłącznie ostatnie wersje",
        "sp-contributions-newonly": "Pokazuj tylko edycje tworzące nową stronę",
        "sp-contributions-submit": "Szukaj",
        "whatlinkshere": "Linkujące",
        "whatlinkshere-title": "Strony linkujące do „$1”",
-       "whatlinkshere-page": "Strona",
+       "whatlinkshere-page": "Strona:",
        "linkshere": "Następujące strony odwołują się do '''[[:$1]]''':",
        "nolinkshere": "Żadna strona nie odwołuje się do '''[[:$1]]'''.",
        "nolinkshere-ns": "Żadna strona nie odwołuje się do '''[[:$1]]''' w wybranej przestrzeni nazw.",
        "blockip": "Zablokuj {{GENDER:$1|użytkownika|użytkowniczkę}}",
        "blockip-legend": "Zablokuj użytkownika",
        "blockiptext": "Użyj poniższego formularza do zablokowania możliwości edycji spod określonego adresu IP lub konkretnemu użytkownikowi.\nBlokować należy jedynie po to, by zapobiec wandalizmom, zgodnie z [[{{MediaWiki:Policy-url}}|przyjętymi zasadami]].\nPodaj powód (np. umieszczając nazwy stron, na których dopuszczono się wandalizmu).",
-       "ipaddressorusername": "Adres IP lub nazwa użytkownika",
-       "ipbexpiry": "Upływa",
-       "ipbreason": "Powód",
+       "ipaddressorusername": "Adres IP lub nazwa użytkownika:",
+       "ipbexpiry": "Czas trwania:",
+       "ipbreason": "Powód:",
        "ipbreason-dropdown": "*Najczęstsze przyczyny blokad\n** Ataki na innych użytkowników\n** Naruszenie praw autorskich\n** Niedozwolona nazwa użytkownika\n** Open proxy lub Tor\n** Spamowanie\n** Usuwanie treści stron\n** Wprowadzanie fałszywych informacji\n** Wulgaryzmy\n** Wypisywanie bzdur na stronach",
        "ipb-hardblock": "Zablokuj możliwość edytowania przez zalogowanych użytkowników z tego adresu IP.",
        "ipbcreateaccount": "Zapobiegnij utworzeniu konta",
        "movepagetext": "Za pomocą poniższego formularza zmienisz nazwę strony, przenosząc jednocześnie jej historię.\nPod starym tytułem zostanie umieszczona strona przekierowująca.\nMożesz automatycznie zaktualizować przekierowania wskazujące na tytuł przed zmianą.\nJeśli nie wybierzesz tej opcji, upewnij się po przeniesieniu strony, czy nie powstały [[Special:DoubleRedirects|podwójne]] lub [[Special:BrokenRedirects|zerwane przekierowania]].\nJesteś odpowiedzialny za to, by linki w dalszym ciągu prowadziły tam, gdzie powinny.\n\nStrona '''nie''' zostanie przeniesiona, jeśli strona o nowej nazwie już istnieje, chyba że jest pusta lub jest przekierowaniem i ma pustą historię edycji.\nTo oznacza, że błędną operację zmiany nazwy można bezpiecznie odwrócić, zmieniając nową nazwę strony na poprzednią, i że nie można nadpisać istniejącej strony.\n\n'''UWAGA!'''\nMoże to być drastyczna lub nieprzewidywalna zmiana w przypadku popularnych stron.\nUpewnij się co do konsekwencji tej operacji, zanim się na nią zdecydujesz.",
        "movepagetext-noredirectfixer": "Za pomocą poniższego formularza zmienisz nazwę strony, przenosząc jednocześnie jej historię.\nPod starym tytułem zostanie umieszczona strona przekierowująca.\nUpewnij się po przeniesieniu strony, czy nie powstały [[Special:DoubleRedirects|podwójne]] lub [[Special:BrokenRedirects|zerwane przekierowania]].\nJesteś odpowiedzialny za to, by linki w dalszym ciągu pokazywały tam, gdzie powinny.\n\nStrona '''nie''' zostanie przeniesiona, jeśli strona o nowej nazwie już istnieje, chyba że jest pusta lub jest przekierowaniem i ma pustą historię edycji.\nTo oznacza, że błędną operację zmiany nazwy można bezpiecznie odwrócić, zmieniając nową nazwę strony na poprzednią, i że nie można nadpisać istniejącej strony.\n\n'''UWAGA!'''\nMoże to być drastyczna lub nieprzewidywalna zmiana w przypadku popularnych stron.\nUpewnij się co do konsekwencji tej operacji, zanim się na nią zdecydujesz.",
        "movepagetalktext": "Powiązana strona dyskusji, jeśli istnieje, będzie przeniesiona automatycznie, chyba że:\n*niepusta strona dyskusji już jest pod nową nazwą\n*usuniesz zaznaczenie z poniższego pola wyboru\n\nW takich przypadkach treść dyskusji można przenieść tylko ręcznie.",
-       "movearticle": "Przeniesienie strony",
+       "movearticle": "Przeniesienie strony:",
        "moveuserpage-warning": "'''Uwaga!''' Masz zamiar przenieść stronę użytkownika. Miej na uwadze, że zostanie przeniesiona tylko strona, a '''nazwa użytkownika pozostanie niezmieniona'''.",
        "movecategorypage-warning": "<strong>Uwaga!</strong> Masz zamiar przenieść stronę kategorii. Miej na uwadze, że strony, które należały do starej kategorii, <em>nie</em> zostaną przeniesione do nowej.",
        "movenologintext": "Przenoszenie stron jest możliwe dopiero po zarejestrowaniu się i [[Special:UserLogin|zalogowaniu]].",
        "cant-move-to-user-page": "Nie masz uprawnień do przenoszenia strony do strony użytkownika (za wyjątkiem podstron użytkownika).",
        "cant-move-category-page": "Nie masz uprawnień do przenoszenia stron kategorii.",
        "cant-move-to-category-page": "Nie masz uprawnień do przenoszenia strony do strony kategorii.",
-       "newtitle": "Nowy tytuł",
+       "newtitle": "Nowy tytuł:",
        "move-watch": "Obserwuj",
        "movepagebtn": "Przenieś stronę",
        "pagemovedsub": "Przeniesienie powiodło się",
        "exportnohistory": "----\n'''Uwaga:''' Wyłączono możliwość eksportowania pełnej historii stron z użyciem tego narzędzia z powodu kłopotów z wydajnością.",
        "exportlistauthors": "Dołącz pełną listę autorów dla każdej strony",
        "export-submit": "Eksportuj",
-       "export-addcattext": "Dodaj strony z kategorii",
+       "export-addcattext": "Dodaj strony z kategorii:",
        "export-addcat": "Dodaj",
-       "export-addnstext": "Dodaj strony z przestrzeni nazw",
+       "export-addnstext": "Dodaj strony z przestrzeni nazw:",
        "export-addns": "Dodaj",
        "export-download": "Zapisz do pliku",
        "export-templates": "Dołącz szablony",
        "allmessages-filter-unmodified": "Niezmodyfikowane",
        "allmessages-filter-all": "Wszystkie",
        "allmessages-filter-modified": "Zmodyfikowane",
-       "allmessages-prefix": "Tytuły rozpoczynające się od",
+       "allmessages-prefix": "Tytuły rozpoczynające się od:",
        "allmessages-language": "Język:",
        "allmessages-filter-submit": "Pokaż",
        "allmessages-filter-translate": "Przetłumacz",
        "import-mapping-default": "Importuj do domyślnych lokalizacji",
        "import-mapping-namespace": "Importuj do przestrzeni nazw:",
        "import-mapping-subpage": "Importuj jako podstrony strony:",
-       "import-upload-filename": "Nazwa pliku",
+       "import-upload-filename": "Nazwa pliku:",
        "import-comment": "Komentarz:",
        "importtext": "Korzystając na źródłowej wiki z narzędzia [[Special:Export|eksportu]] wyeksportuj plik.\nZapisz go na swoim dysku, a następnie prześlij go tutaj.",
        "importstart": "Trwa importowanie stron...",
        "imagelisttext": "Poniżej na {{PLURAL:$1||posortowanej $2}} liście {{PLURAL:$1|znajduje|znajdują|znajduje}} się '''$1''' {{PLURAL:$1|plik|pliki|plików}}.",
        "newimages-summary": "Na tej stronie specjalnej prezentowane są ostatnio przesłane pliki.",
        "newimages-legend": "Filtruj",
-       "newimages-label": "Nazwa pliku (lub jej fragment)",
+       "newimages-label": "Nazwa pliku (lub jej fragment):",
        "newimages-showbots": "Pokaż pliki przesłane przez boty",
        "noimages": "Brak plików do pokazania.",
        "ilsubmit": "Szukaj",
        "table_pager_first": "Pierwsza strona",
        "table_pager_last": "Ostatnia strona",
        "table_pager_limit": "Pokaż $1 pozycji na stronie",
-       "table_pager_limit_label": "Pozycji na stronie",
+       "table_pager_limit_label": "Pozycji na stronie:",
        "table_pager_limit_submit": "Pokaż",
        "table_pager_empty": "Brak wyników",
        "autosumm-blank": "UWAGA! Usunięcie treści (strona pozostała pusta)!",
        "fileduplicatesearch": "Wyszukiwanie duplikatów pliku",
        "fileduplicatesearch-summary": "Wyszukiwanie duplikatów pliku na podstawie wartości funkcji skrótu.",
        "fileduplicatesearch-legend": "Szukaj duplikatów pliku",
-       "fileduplicatesearch-filename": "Nazwa pliku",
+       "fileduplicatesearch-filename": "Nazwa pliku:",
        "fileduplicatesearch-submit": "Szukaj",
        "fileduplicatesearch-info": "$1 × $2 pikseli<br />Wielkość pliku: $3<br />Typ MIME: $4",
        "fileduplicatesearch-result-1": "Brak duplikatu pliku „$1”.",
        "intentionallyblankpage": "Tę stronę umyślnie pozostawiono pustą.",
        "external_image_whitelist": " #Pozostaw tę linię dokładnie tak, jak jest.<pre>\n#Wstaw poniżej fragmenty wyrażeń regularnych (tylko to, co znajduje się między //).\n#Wyrażenia te zostaną dopasowane do adresów URL zewnętrznych (bezpośrednio linkowanych) grafik.\n#Dopasowane adresy URL zostaną wyświetlone jako grafiki, w przeciwnym wypadku będzie pokazany jedynie link do grafiki.\n#Linie zaczynające się od # są traktowane jako komentarze.\n#We wpisach ma znaczenie wielkość znaków.\n\n#Wstaw wszystkie deklaracje wyrażeniami regularnymi poniżej tej linii. Pozostaw tę linię dokładnie tak, jak jest.</pre>",
        "tags": "Sprawdź zmiany w oparciu o wzorce tekstu",
-       "tag-filter": "Filtr [[Special:Tags|znaczników]]",
+       "tag-filter": "Filtr [[Special:Tags|znaczników]]:",
        "tag-filter-submit": "Filtr",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Znacznik|Znaczniki}}]]: $2)",
        "tags-title": "Znaczniki",
        "feedback-error3": "Błąd – brak odpowiedzi API",
        "feedback-error4": "Błąd: Nie można wysłać danego tytułu opinii",
        "feedback-message": "Wiadomość:",
-       "feedback-subject": "Temat",
+       "feedback-subject": "Temat:",
        "feedback-submit": "Wyślij",
        "feedback-terms": "Rozumiem, że mój identyfikator User Agenta zawiera informacje o wersjach mojej przeglądarki i systemu operacyjnego oraz że będzie udostępniony publicznie wraz z moim komentarzem.",
        "feedback-termsofuse": "Zgadzam się udostępnić komentarz zgodnie z warunkami korzystania.",
        "limitreport-expensivefunctioncount": "Liczba wywołań kosztownych funkcji parsera",
        "expandtemplates": "Rozwijanie szablonów",
        "expand_templates_intro": "We wprowadzonym na tej stronie tekście źródłowym zostaną rozwinięte rekurencyjnie wszystkie szablony.\nRozwinięte także zostaną funkcje parsera takie jak\n<code><nowiki>{{</nowiki>#language:…}}</code> i zmienne jak\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nW zasadzie rozwijane jest prawie wszystko w podwójnych nawiasach klamrowych.",
-       "expand_templates_title": "Pozorny tytuł strony dla zmiennych takich jak {{FULLPAGENAME}}",
-       "expand_templates_input": "Tekst wejściowy",
+       "expand_templates_title": "Pozorny tytuł strony dla zmiennych takich jak {{FULLPAGENAME}}:",
+       "expand_templates_input": "Tekst wejściowy:",
        "expand_templates_output": "Rezultat",
        "expand_templates_xml_output": "wynik w formacie XML",
        "expand_templates_html_output": "Wyświetlanie surowego HTML",
index b207f10..0536304 100644 (file)
@@ -14,7 +14,8 @@
                        "לערי ריינהארט",
                        "Shirayuki",
                        "아라",
-                       "Kolega2357"
+                       "Kolega2357",
+                       "Purodha"
                ]
        },
        "tog-underline": "Anliure con la sotliniadura",
index 6681d50..017caf3 100644 (file)
        "title-invalid-talk-namespace": "O título da página solicitada refere-se a uma página de discussão que não existe.",
        "title-invalid-characters": "O título da página solicitada contém carateres inválidos: \"$1\".",
        "title-invalid-too-long": "O título da página solicitada é demasiado longo. Não deverá ser maior que $1 {{PLURAL:$1|byte|bytes}} na codificação UTF-8.",
+       "title-invalid-leading-colon": "O título da página solicitada contém um erro de pontuação (:) no início.",
        "perfcached": "Os seguintes dados encontram-se armazenados na ''cache'' e podem não estar atualizados. No máximo {{PLURAL:$1|um resultado é disponível|$1 resultados são disponíveis}} na ''cache''.",
        "perfcachedts": "Os seguintes dados encontram-se armazenados na ''cache'' e foram atualizados pela última vez a $1. No máximo {{PLURAL:$4|um resultado está disponível|$4 resultados estão disponíveis}} na ''cache''.",
        "querypage-no-updates": "As atualizações estão presentemente desativadas para esta página.\nPor enquanto, os dados aqui presentes não poderão ser atualizados.",
        "creating": "A criar $1",
        "editingsection": "A editar $1 (secção)",
        "editingcomment": "A editar $1 (nova secção)",
-       "editconflict": "As suas alterações não puderam ser gravadas devido a um conflito de edição. Gostaria de resolver o conflito manualmente?",
+       "editconflict": "Conflito de edição: $1",
        "explainconflict": "A página foi alterada por alguém desde que começou a editá-la.\nA caixa de texto abaixo mostra o texto existente neste momento.\nAs suas mudanças são mostradas na área ao fundo da página.\nTerá de reintegrar as suas mudanças no texto da caixa abaixo.\n'''Só''' o texto desta caixa será gravado quando clicar \"{{int:savearticle}}\".",
        "yourtext": "O seu texto",
        "storedversion": "Versão gravada",
        "rows": "Linhas:",
        "columns": "Colunas:",
        "searchresultshead": "Pesquisar",
-       "stub-threshold": "Ligações para páginas curtas terão <a href=\"#\" class=\"stub\">este formato</a> se ocuparem menos de (bytes):",
+       "stub-threshold": "Limite para a formatação de <a href=\"#\" class=\"stub\">ligações para esboços</a> (bytes):",
        "stub-threshold-disabled": "Desativado",
        "recentchangesdays": "Dias a apresentar nas mudanças recentes:",
        "recentchangesdays-max": "Máximo: $1 {{PLURAL:$1|dia|dias}}",
        "rollback-success": "Foram revertidas as edições de $1, com o conteúdo passando a estar como na última edição de $2.",
        "sessionfailure-title": "Erro de sessão",
        "sessionfailure": "Foram detectados problemas com a sua sessão;\na operação foi cancelada como medida de proteção contra a interceptação de sessões.\nVolte à página anterior, recarregue-a e tente novamente.",
+       "changecontentmodel": "Editar o modelo de conteúdo de uma página",
+       "changecontentmodel-legend": "Editar modelo de contéudo",
        "changecontentmodel-title-label": "Título da página",
+       "changecontentmodel-model-label": "Novo modelo de conteúdo",
        "changecontentmodel-reason-label": "Motivo:",
+       "changecontentmodel-success-title": "O modelo de conteúdo foi alterado",
+       "changecontentmodel-success-text": "O tipo de conteúdo de [[:$1]] foi alterado.",
        "logentry-contentmodel-change-revertlink": "reverter",
        "logentry-contentmodel-change-revert": "reverter",
        "protectlogpage": "Registo de proteção",
        "deletedwhileediting": "<strong>AVISO:</strong> Esta página foi eliminada depois de ter começado a editá-la!",
        "confirmrecreate": "Depois de ter começado a editar esta página, o utilizador [[User:$1|$1]] ([[User talk:$1|conversar]]) eliminou-a pelo seguinte motivo:\n: <em>$2</em>\nPor favor, confirme que quer realmente recriar esta página.",
        "confirmrecreate-noreason": "O utilizador [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou esta página depois de ter começado a editá-la. Confirme que deseja recriar a página, por favor.",
-       "recreate": "A página que começou a editar foi eliminada entretanto. Pressione \"$1\" para recriá-la.",
+       "recreate": "Recriar",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Limpar a memória cache desta página?",
        "confirm-purge-bottom": "Recarregar uma página, limpa a cache e força a sua versão mais recente a aparecer.",
        "tags-edit-logentry-submit": "Aplicar alterações a {{PLURAL:$1|esta entrada de registo|$1 entradas de registo}}",
        "tags-edit-success": "As alterações foram aplicadas com sucesso.",
        "tags-edit-failure": "As alterações não puderam ser aplicadas:\n$1",
+       "tags-edit-nooldid-title": "Revisão de página inválida",
        "tags-edit-none-selected": "Por favor, selecione pelo menos uma etiqueta para adicionar ou remover.",
        "comparepages": "Comparar páginas",
        "compare-page1": "Página 1",
        "htmlform-title-badnamespace": "[[:$1]] não se encontra no domínio \"{{ns:$2}}\".",
        "htmlform-title-not-creatable": "\"$1\" não é um título que possa ser atribuído a uma página",
        "htmlform-title-not-exists": "[[:$1]] não existe.",
+       "htmlform-user-not-exists": "<strong>$1</strong> não existe.",
        "sqlite-has-fts": "$1 com suporte de pesquisa de texto completo",
        "sqlite-no-fts": "$1 sem suporte de pesquisa de texto completo",
        "logentry-delete-delete": "$1 apagou a página $3",
        "feedback-bugornote": "Se está pronto para descrever um problema técnico em detalhe, por favor, [$1 comunique o defeito].\nCaso contrário, pode facilmente usar o formulário abaixo. O seu comentário será adicionado à página \"[$3 $2]\", junto com o seu nome de utilizador e o navegador que está a usar.",
        "feedback-cancel": "Cancelar",
        "feedback-close": "Feito",
+       "feedback-external-bug-report-button": "Assinalar erro técnico",
        "feedback-dialog-title": "Enviar opinião",
        "feedback-dialog-intro": "Pode usar o fácil formulário abaixo para enviar os seus comentários. A sua opinião será adicionada à página \"$1\", juntamente com o seu nome de utilizador(a).",
        "feedback-error-title": "Erro",
index 872a89f..f3d80ee 100644 (file)
        "search-category": "This text will be shown on the search result listing after the page title of a result if the search algorithm thinks that the page being in a particular category is relevant.\n\nParameters:\n* $1 - the category's name with any matching portion highlighted\n{{Identical|Category}}",
        "search-file-match": "This text will be shown on the search result listing after the page title of a result if the search engine got search results from the contents of files, rather than the pages.",
        "search-suggest": "Used for \"Did you mean\" suggestions:\n* $1 - suggested link",
+       "search-rewritten": "Used when the user is served the results for a query other than what they provided. Parameters:\n* $1 - a link to search for the current result set.* $2 - a link to perform the original search without rewriting.",
        "search-interwiki-caption": "Used in [[Special:Search]], when showing search results from other wikis.",
        "search-interwiki-default": "Parameters:\n* $1 - the hostname of the remote wiki from where the additional results listed below are returned",
        "search-interwiki-custom": "#REDIRECT [[MediaWiki:Wmf-search-interwiki-custom/qqq]]",
        "statistics-header-users": "Used in [[Special:Statistics]].\n{{Identical|User statistics}}",
        "statistics-header-hooks": "Header of a section on [[Special:Statistics]] containing data provided by MediaWiki extensions",
        "statistics-articles": "Used in [[Special:Statistics]].\n\nA 'content page' is a page that forms part of the purpose of the wiki. It includes the main page and pages in the main namespace and any other namespaces that are included when the wiki is customised. For example on Wikimedia Commons 'content pages' include pages in the file and category namespaces. On Wikinews 'content pages' include pages in the Portal namespace. For technical definition of 'content namespaces' see [[mw:Manual:Using_custom_namespaces#Content_namespaces|MediaWiki]].\n\nPossible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.\n\n{{Identical|Content page}}",
+       "statistics-articles-desc": "Caption shown below ''Content pages'' on [[Special:Statistics]]",
        "statistics-pages": "Used in [[Special:Statistics]]\n{{Identical|Page}}",
        "statistics-pages-desc": "Tooltip shown over ''Pages'' (or as a note below it) in [[Special:Statistics]]",
        "statistics-files": "Used in [[Special:Statistics]].\n{{Identical|Uploaded file}}",
        "changecontentmodel-success-title": "Title of the success page of the change content model special page",
        "changecontentmodel-success-text": "Message telling user that their change has been successfully done.\n* $1 - Target page title",
        "changecontentmodel-cannot-convert": "Error message shown if the content model cannot be changed to the specified type. $1 is the page title, $2 is the localized content model name.",
-       "changecontentmodel-title-cantexist": "Error message shown if the page the user provided is a special page.\n\nParameters:\n* $1 - the page title which cannot exist",
        "changecontentmodel-nodirectediting": "Error message shown if the content model does not allow for direct editing. $1 is the localized name of the content model.",
        "log-name-contentmodel": "{{doc-logpage}}\n\nTitle of [[Special:Log/contentmodel]].",
        "log-description-contentmodel": "Text in [[Special:Log/contentmodel]].",
index c5e723b..5e7b3c4 100644 (file)
        "changecontentmodel-success-title": "Modelul de conținut a fost modificat",
        "changecontentmodel-success-text": "Tipul de conținut al paginii [[:$1]] a fost modificat.",
        "changecontentmodel-cannot-convert": "Conținutul paginii [[:$1]] nu poate fi convertit în tipul $2.",
-       "changecontentmodel-title-cantexist": "Nu se poate utiliza titlul de pagină: $1.",
        "changecontentmodel-nodirectediting": "Modelul de conținut $1 nu acceptă editarea directă",
        "log-name-contentmodel": "Jurnal modificări model de conținut",
        "log-description-contentmodel": "Evenimente referitoare la modelele de conținut ale paginilor",
index 256c3ba..c5b9cef 100644 (file)
        "changecontentmodel-success-title": "Модель содержимого была изменена",
        "changecontentmodel-success-text": "Модель содержимого [[:$1]] была изменена.",
        "changecontentmodel-cannot-convert": "Содержимое [[:$1]] не может быть преобразовано к типу $2.",
-       "changecontentmodel-title-cantexist": "Невозможно иметь страницу в $1.",
        "changecontentmodel-nodirectediting": "Модель содержимого $1 не поддерживает прямое редактирование",
        "log-name-contentmodel": "Журнал изменения моделей содержимого",
        "log-description-contentmodel": "События, связанные с моделями содержимого страниц",
        "htmlform-title-badnamespace": "[[:$1]] находится не в пространстве имён «{{ns:$2}}».",
        "htmlform-title-not-creatable": "«$1» не является создаваемым заголовком страницы",
        "htmlform-title-not-exists": "[[:$1]] не существует.",
+       "htmlform-user-not-exists": "<strong>$1</strong> не существует.",
+       "htmlform-user-not-valid": "<strong>$1</strong> не является допустимым именем пользователя.",
        "sqlite-has-fts": "$1 с поддержкой полнотекстового поиска",
        "sqlite-no-fts": "$1 без поддержки полнотекстового поиска",
        "logentry-delete-delete": "$1 {{GENDER:$2|удалил|удалила}} страницу $3",
index 5bb3512..11952ec 100644 (file)
        "htmlform-cloner-create": "Өссө эп",
        "htmlform-cloner-delete": "Сот",
        "htmlform-cloner-required": "Саатар биирин толоруохтаах эбиккин.",
+       "htmlform-title-not-creatable": "«$1» оҥоһуллар сирэй аата буолбатах",
+       "htmlform-title-not-exists": "[[:$1]] суох.",
+       "htmlform-user-not-exists": "<strong>$1</strong> суох.",
        "sqlite-has-fts": "$1 толору тиэкистээх көрдөөһүнү өйүүр",
        "sqlite-no-fts": "$1 толору тиэкистээх көрдөөһүнү өйөөбөт",
        "logentry-delete-delete": "$3 сирэйи $1 соппут",
        "logentry-rights-rights-legacy": "$3 бөлөхтөргө киириитин $1 уларыппыт",
        "logentry-rights-autopromote": "$1 мантан $4 манна $5 көһөрүллүбүт",
        "logentry-upload-upload": "$1 {{GENDER:$2|укпут}} $3",
+       "log-name-managetags": "Тиэктэр сурунааллара",
        "rightsnone": "(суох)",
        "revdelete-summary": "уларытыылар туһунан",
        "feedback-adding": "Сирэй туһунан санаа этии...",
index db80f6f..87350a8 100644 (file)
        "protectedinterface": "Sta pàggina cunteni un elementu ca fà parti dâ nterfaccia utenti dû software eggh'è  prutetta p'evitari pussìbbili abbusi. Pi jùnciri o canciari li traduzzioni pi tutti li wiki usari [//translatewiki.net/translatewiki.net] lu pruggettu di lucalizzazzioni di Mediawiki.",
        "editinginterface": "<strong>Accura:</strong> Lu testu di sta pàggina fà parti di l'interfaccia utenti dû situ.\nTutti li canciamenti appurtati a sta pàggina si riflèttinu supra li missaggi visualizzati pi tutti l'utenti di sta wiki.",
        "translateinterface": "Pi' agghiunciri o canciari traduzzioni pi' tutti i wiki, pi' favuri adupirati [//translatewiki.net/ translatewiki.net], lu pruggettu di lucalizzazzioni di MediaWiki.",
-       "cascadeprotected": "Supra sta pàggina nun è pussìbbili effittuari canciamenti pirchì veni nclusa nt{{PLURAL:$1|â pàggina siquenti, ca fu prutetta|ê pàggini siquenti, ca foru prutetti}} silizziunannu la prutizzioni \"ricursiva\":\n$2",
+       "cascadeprotected": "Sta pàggina è prutetta dî canciamenti pirchì veni trasclusa {{PLURAL:$1|ntâ pàggina siquenti, ca fu' prutiggiuta|ntê pàggini siquenti, ca foru prutiggiuti}} cu' l'opzioni «a' cascata»:\n$2",
        "namespaceprotected": "Nun hai lu pirmissu pi canciari li pàggini ntô namespace '''$1'''.",
        "customcssprotected": "Nun hai lu pirmissu pi' canciari sta pàggina CSS picchì cunteni i mpustazzioni pirsunali di n'autru utenti.",
        "customjsprotected": "Nun hai lu pirmissu pi' canciari sta pàggina JavaScript picchì cunteni i mpustazzioni pirsunali di n'autru utenti.",
        "readonlywarning": "<strong>Accura: Lu database è fermu pi manutinzioni, pirciò nun poi sarvari li tò canciamenti nta stu mumentu.</strong>\nLa cosa megghia è fari un copia e ncodda dû testu nta n'àutru prugramma e sarvàrilu pi quannu lu database torna accissìbbili.\n\nL'amministraturi ca bluccau lu database desi sta spiegazzioni: $1",
        "protectedpagewarning": "<strong>Accura: Sta pàggina fu' prutetta a' manera chi' sulu l'utenti cu' privileggi d'amministraturi a ponnu canciari.</strong>\nPi' rifirimentu, ccassutta è ripurtata l'ultima vuci dû riggistru:",
        "semiprotectedpagewarning": "<strong>Nota:</strong> Sta pàggina fu' prutetta a' manera chi' sulu l'utenti riggistrati la ponnu canciari.\nPi' rifirimentu, ccassutta è ripurtata l'ultima vuci dû riggistru:",
-       "cascadeprotectedwarning": "<strong>Accura:</strong> Sta pàggina havi statu bluccata di manera ca sulu l'utenti cu' privileggi di amministraturi la ponnu canciari, pirchì veni nclusa {{PLURAL:$1|nta siquente pàggina ca havi statu prutiggiuta|ntê siquenti pàggini ca hannu statu prutiggiuti}} a' cascata:",
+       "cascadeprotectedwarning": "<strong>Accura:</strong> Sta pàggina fu' bluccata di manera ca sulu l'utenti cu' privileggi di amministraturi la ponnu canciari, pirchì veni trasclusa {{PLURAL:$1|nta siquenti pàggina ca è prutiggiuta|ntê siquenti pàggini ca sunnu prutiggiuti}} a' cascata:",
        "titleprotectedwarning": "<strong>Accura: Sta pàggina fu' prutetta a' manera chi' giuvunu [[Special:ListGroupRights|privileggi spicìfici]] pi' criàrila.</strong>\nPi' rifirimentu, ccassutta è ripurtata l'ultima vuci dû riggistru:",
        "templatesused": "{{PLURAL:$1|Template adupiratu|Template adupirati}} nta sta pàggina:",
        "templatesusedpreview": "{{PLURAL:$1|Template adupiratu|Template adupirati}} nta st'antiprima:",
        "changecontentmodel-success-title": "Lu mudellu dû cuntinutu fu’ canciatu",
        "changecontentmodel-success-text": "Lu tipu dû cuntinutu di [[:$1]] fu’ canciatu.",
        "changecontentmodel-cannot-convert": "Nun si po’ cunvèrtiri lu cuntinutu di [[:$1]] ntô tipu $2.",
-       "changecontentmodel-title-cantexist": "Nun si po’ mèttiri na pàggina nta $1.",
        "changecontentmodel-nodirectediting": "Lu mudellu dû cuntinutu $1 nun cunsenti lu canciamentu direttu.",
        "log-name-contentmodel": "Riggistru dî canciamenti ô mudellu dû cuntinutu",
        "log-description-contentmodel": "Eventi ca riguàrdunu lu mudellu dû cuntinutu di na pàggina",
        "protect-locked-blocked": "Nun si ponnu canciari li livedda di prutizzioni quannu unu è bluccatu.\nCca cci su' li mpustazzioni attuali dâ pàggina <strong>$1</strong>:",
        "protect-locked-dblock": "Nun si ponnu canciari li livedda di prutizzioni picchì cc'è attivatu un bloccu dâ basi di dati.\nCca cci su' li mpustazzioni attuali dâ pàggina <strong>$1</strong>:",
        "protect-locked-access": "Lu to cuntu nun havi lu pirmissu di canciari li livedda di prutizzioni.\nCca cci su' li mpustazzioni attuali dâ pàggina <strong>$1</strong>:",
-       "protect-cascadeon": "Com'ad ora sta pàggina è prutetta picchi' veni nclusa {{PLURAL:$1|ntâ pàggina innicata di sèquitu, supra â quali|ntê pàggini innicati di sèquitu, supra ê quali}} è attivata la prutizzioni a' cascata.\nI canciamenti fatti ô liveddu di prutizzioni di sta pàggina nun vannu a' canciari la prutizzioni a' cascata.",
+       "protect-cascadeon": "Com'ad ora sta pàggina è prutetta picchì veni trasclusa {{PLURAL:$1|ntâ siquenti pàggina, ca havi|ntê siquenti pàggini, ca hannu}} la prutizzioni a' cascata attivata.\nLi canciamenti ca si fannu ô liveddu di prutizzioni di sta pàggina nun vannu a' canciari la prutizzioni a' cascata.",
        "protect-default": "Cunsenti a' tutti l'utenti",
        "protect-fallback": "Cunsenti sulu a' l'utenti cû pirmissu \"$1\"",
        "protect-level-autoconfirmed": "Cunsenti sulu a' l'utenti autu-cunfirmati",
        "pageinfo-robot-index": "Cunsintuta",
        "pageinfo-robot-noindex": "Pruibbuta",
        "pageinfo-watchers": "Quanti talìunu sta pàggina",
-       "pageinfo-visiting-watchers": "Nùmmiru d’utenti ntirissati a’ sta pàggina ca talìunu li canciamenti cchiu’ ricenti",
+       "pageinfo-visiting-watchers": "Nùmmiru d’utenti ntirissati a’ sta pàggina ca hannu taliatu li canciamenti cchiu’ ricenti",
        "pageinfo-few-watchers": "Cchiu' picca di $1 {{PLURAL:$1|taliaturi|taliatura}}",
        "pageinfo-few-visiting-watchers": "Forsi cc’è quarchi utenti ntirissatu ca talìa li canciamenti ricenti, forsi no",
        "pageinfo-redirects-name": "Nùmmiru di rimanni a' sta pàggina",
        "htmlform-cloner-create": "Agghiunci autru",
        "htmlform-cloner-delete": "Leva",
        "htmlform-cloner-required": "Cci voli almenu nu valuri.",
+       "htmlform-title-badnamespace": "[[:$1]] nun sta ntô namespace «{{ns:$2}}».",
+       "htmlform-title-not-creatable": "«$1» nun è tìtulu di na pàggina ca si po’ criari",
+       "htmlform-title-not-exists": "[[:$1]] nun esisti.",
+       "htmlform-user-not-exists": "<strong>$1</strong> nun esisti.",
+       "htmlform-user-not-valid": "<strong>$1</strong> nun è vàlidu comu nomu utenti.",
        "sqlite-has-fts": "$1 cu' capacità di risciduta a' tuttu testu",
        "sqlite-no-fts": "$1 senza capacità di risciduta a' tuttu testu",
        "logentry-delete-delete": "$1 {{GENDER:$2|cancillau}} la pàggina $3",
index db71ab1..d317988 100644 (file)
        "tooltip-pt-logout": "නික්මීම",
        "tooltip-pt-createaccount": "ඔබ ගිණුමක් තනා පිවිසෙන්නේ නම් මැනවි; කෙසේ වුවත්, එය අනිවාර්ය නොවේ.",
        "tooltip-ca-talk": "අන්තර්ගත පිටුව පිළිබඳ සාකච්ඡාව",
-       "tooltip-ca-edit": "à¶\94බâ\80\8dට à¶¸à·\99ම à¶´à·\92ටà·\94à·\80 à·\83à¶\82à·\83à·\8aà¶\9aරණය à¶\9aල à·\84à·\90à¶\9a. à·\83à¶\82à¶\9aරණ à·\83à·\94රà·\90à¶\9aà·\93මට à¶´à·\99ර à¶´à·\99රදà·\83à·\94න à¶¶à·\9cතà·\8aතම à¶·à·\8fà·\80à·\92තà·\8fà¶\9aà·\92රà·\93ම à¶ºà·\9dà¶\9cà·\8aâ\80\8dයà·\80à·\9a.",
+       "tooltip-ca-edit": "මà·\99ම à¶´à·\92ටà·\94à·\80 à·\83à¶\82à·\83à·\8aà¶\9aරණය à¶\9aරනà·\8aන",
        "tooltip-ca-addsection": "නව කොටසක් අරඹන්න",
        "tooltip-ca-viewsource": "මෙම පිටුව ආරක්‍ෂණය කොට ඇත.\nඔබට එහි මූලාශ්‍රය නැරඹිය හැක.",
        "tooltip-ca-history": "මෙම පිටුවේ පෙර සංශෝධන",
index 9a6e537..d97838f 100644 (file)
        "changecontentmodel-success-title": "Spremenili smo model vsebine",
        "changecontentmodel-success-text": "Spremenili smo vrsto vsebine [[:$1]].",
        "changecontentmodel-cannot-convert": "Vsebine na [[:$1]] ni mogoče pretvoriti v vrsto $2.",
-       "changecontentmodel-title-cantexist": "Na $1 ni mogoče imeti strani.",
        "changecontentmodel-nodirectediting": "Model vsebine $1 ne podpira neposrednega urejanja",
        "log-name-contentmodel": "Dnevnik sprememb modela vsebine",
        "log-description-contentmodel": "Dogodki, povezani z modeli vsebin strani",
index 27704dc..8e41d14 100644 (file)
@@ -26,7 +26,8 @@
                        "לערי ריינהארט",
                        "아라",
                        "Nemo bis",
-                       "Aktron"
+                       "Aktron",
+                       "Srdjan m"
                ]
        },
        "tog-underline": "Подвлачење веза:",
        "wrongpassword": "Унели сте неисправну лозинку. Покушајте поново.",
        "wrongpasswordempty": "Нисте унели лозинку. Покушајте поново.",
        "passwordtooshort": "Лозинка мора имати најмање {{PLURAL:$1|један знак|$1 знака|$1 знакова}}.",
+       "passwordtoolong": "Лозинке не могу бити дуже од {{PLURAL:$1|$1 знака|$1 знакова}}.",
        "password-name-match": "Лозинка се мора разликовати од корисничког имена.",
        "password-login-forbidden": "Коришћење овог корисничког имена и лозинке је забрањено.",
        "mailmypassword": "Ресетуј лозинку",
        "linksearch-pat": "Образац претраге:",
        "linksearch-ns": "Именски простор:",
        "linksearch-ok": "Претражи",
-       "linksearch-text": "Могу се користити џокери попут „*.wikipedia.org“.\nПотребан је највиши домен, као „*.org“.<br />\n{{PLURAL:$2|Подржан протокол|Подржани протоколи}}: $1 (задаје http:// ако не наведете протокол).",
+       "linksearch-text": "Могу се користити џокери попут „*.wikipedia.org“.\nПотребан је највиши домен, као „*.org“.<br />\n{{PLURAL:$2|1=Подржан протокол|Подржани протоколи}}: $1 (задаје http:// ако не наведете протокол).",
        "linksearch-line": "$1 веза у $2",
        "linksearch-error": "Џокери се могу појавити само на почетку адресе.",
        "listusersfrom": "Прикажи кориснике почев од:",
        "rollback-success": "Враћене су измене {{GENDER:$1|корисника|кориснице}} $1\nна последњу измену {{GENDER:$2|корисника|кориснице}} $2.",
        "sessionfailure-title": "Сесија је окончана",
        "sessionfailure": "Изгледа да постоји проблем с вашом сесијом;\nова радња је отказана да би се избегла злоупотреба.\nВратите се на претходну страницу, поново је учитајте и покушајте поново.",
+       "changecontentmodel": "Промени модел садржаја странице",
+       "changecontentmodel-legend": "Промени модел садржаја",
+       "changecontentmodel-title-label": "Наслов странице",
+       "changecontentmodel-model-label": "Нови модел садржаја",
+       "changecontentmodel-reason-label": "Разлог:",
+       "changecontentmodel-success-title": "Модел садржаја је промењен",
+       "changecontentmodel-success-text": "Модел садржаја странице [[:$1]] је промењен.",
+       "changecontentmodel-cannot-convert": "Модел садржаја странице [[:$1]] се не може претворити у врсту $2.",
+       "changecontentmodel-nodirectediting": "Модел садржаја $1 не подржава изравно уређивање",
+       "log-name-contentmodel": "Дневник промене модела садржаја",
+       "log-description-contentmodel": "Догађаји који имају везу са моделима садржаја страница",
+       "logentry-contentmodel-change": "$1 је {{GENDER:$2|променио|променила}} модел садржаја странице $3 из „$4“ у „$5“",
+       "logentry-contentmodel-change-revertlink": "врати",
        "protectlogpage": "Дневник закључавања",
        "protectlogtext": "Испод је списак заштићених страница.\nПогледајте [[Special:ProtectedPages|списак заштићених страница]] за више детаља.",
        "protectedarticle": "{{GENDER:|је заштитио|је заштитила}} „[[$1]]“",
        "prot_1movedto2": "је преместио [[$1]] на [[$2]]",
        "protect-badnamespace-title": "Незаштитљив именски простор",
        "protect-badnamespace-text": "Странице у овом именском простору се не могу заштитити.",
+       "protect-norestrictiontypes-text": "Ова страница се не може заштитити јер нема доступних врста ограничења.",
        "protect-norestrictiontypes-title": "Незаштитљива страна",
        "protect-legend": "Потврдите заштиту",
        "protectcomment": "Разлог:",
        "import-interwiki-history": "Копирај све верзије историје за ову страницу",
        "import-interwiki-templates": "Укључи све шаблоне",
        "import-interwiki-submit": "Увези",
+       "import-mapping-namespace": "Увези у именски простор:",
        "import-upload-filename": "Назив датотеке:",
        "import-comment": "Коментар:",
        "importtext": "Извезите датотеку с изворног викија користећи [[Special:Export|извоз]].\nСачувајте је на рачунар и пошаљите овде.",
index 3e86908..1fcd544 100644 (file)
@@ -17,7 +17,8 @@
                        "Михајло Анђелковић",
                        "לערי ריינהארט",
                        "아라",
-                       "Nemo bis"
+                       "Nemo bis",
+                       "Srdjan m"
                ]
        },
        "tog-underline": "Podvlačenje veza:",
        "delete-hook-aborted": "Brisanje je prekinula kuka.\nNije dato nikakvo obrazloženje.",
        "badtitle": "Neispravan naslov",
        "badtitletext": "Naslov stranice je neispravan, prazan ili je međujezički ili međuviki naslov pogrešno povezan.\nMožda sadrži znakove koji se ne mogu koristiti u naslovima.",
+       "title-invalid-characters": "Zatraženi naslov stranice sadrži neispravne znakove: „$1“.",
        "perfcached": "Sledeći podaci su keširani i mogu biti zastareli. Keš sadrži najviše {{PLURAL:$1|jedan rezultat|$1 rezultata|$1 rezultata}}.",
        "perfcachedts": "Sledeći podaci su keširani i poslednji put su ažurirani $2 u $3. U kešu {{PLURAL:$4|1=je dostupan najviše jedan rezultat|su dostupna najviše $4 rezultata|je dostupno najviše $4 rezultata}}.",
        "querypage-no-updates": "Ažuriranje ove stranice je trenutno onemogućeno.\nPodaci koji se ovde nalaze mogu biti zastareli.",
        "wrongpassword": "Uneli ste neispravnu lozinku. Pokušajte ponovo.",
        "wrongpasswordempty": "Niste uneli lozinku. Pokušajte ponovo.",
        "passwordtooshort": "Lozinka mora imati najmanje {{PLURAL:$1|jedan znak|$1 znaka|$1 znakova}}.",
+       "passwordtoolong": "Lozinke ne mogu biti duže od {{PLURAL:$1|$1 znaka|$1 znakova}}.",
        "password-name-match": "Lozinka se mora razlikovati od korisničkog imena.",
        "password-login-forbidden": "Korišćenje ovog korisničkog imena i lozinke je zabranjeno.",
        "mailmypassword": "Resetuj lozinku",
        "notextmatches": "Nijedan tekst stranice ne odgovara",
        "prevn": "prethodnih {{PLURAL:$1|$1}}",
        "nextn": "sledećih {{PLURAL:$1|$1}}",
+       "prev-page": "prethodna stranica",
+       "next-page": "sledeća stranica",
        "prevn-title": "$1 {{PLURAL:$1|prethodni  rezultat|prethodna rezultata|prethodnih rezultata}}",
        "nextn-title": "$1 {{PLURAL:$1|sledeći rezultat|sledeća rezultata|sledećih rezultata}}",
        "shown-title": "Prikaži $1 {{PLURAL:$1|rezultat|rezultata|rezultata}} po stranici",
        "listfiles-delete": "obriši",
        "listfiles-summary": "Ova posebna stranica prikazuje sve poslate datoteke.",
        "listfiles_search_for": "Naziv datoteke:",
+       "listfiles-userdoesnotexist": "Korisnički nalog „$1“ nije registrovan.",
        "imgfile": "datoteka",
        "listfiles": "Spisak datoteka",
        "listfiles_thumb": "Minijatura",
        "linksearch-pat": "Obrazac pretrage:",
        "linksearch-ns": "Imenski prostor:",
        "linksearch-ok": "Pretraži",
-       "linksearch-text": "Mogu se koristiti džokeri poput „*.wikipedia.org“.\nPotreban je najviši domen, kao „*.org“.<br />\n{{PLURAL:$2|Podržan protokol|Podržani protokoli}}: $1 (zadaje http:// ako ne navedete protokol).",
+       "linksearch-text": "Mogu se koristiti džokeri poput „*.wikipedia.org“.\nPotreban je najviši domen, kao „*.org“.<br />\n{{PLURAL:$2|1=Podržan protokol|Podržani protokoli}}: $1 (zadaje http:// ako ne navedete protokol).",
        "linksearch-line": "$1 veza u $2",
        "linksearch-error": "Džokeri se mogu pojaviti samo na početku adrese.",
        "listusersfrom": "Prikaži korisnike počev od:",
        "rollback-success": "Vraćene su izmene {{GENDER:$1|korisnika|korisnice}} $1\nna poslednju izmenu {{GENDER:$2|korisnika|korisnice}} $2.",
        "sessionfailure-title": "Sesija je okončana",
        "sessionfailure": "Izgleda da postoji problem s vašom sesijom;\nova radnja je otkazana da bi se izbegla zloupotreba.\nVratite se na prethodnu stranicu, ponovo je učitajte i pokušajte ponovo.",
+       "changecontentmodel": "Promeni model sadržaja stranice",
+       "changecontentmodel-legend": "Promeni model sadržaja",
+       "changecontentmodel-title-label": "Naslov stranice",
+       "changecontentmodel-model-label": "Novi model sadržaja",
+       "changecontentmodel-reason-label": "Razlog:",
+       "changecontentmodel-success-title": "Model sadržaja je promenjen",
+       "changecontentmodel-success-text": "Model sadržaja stranice [[:$1]] je promenjen.",
+       "changecontentmodel-cannot-convert": "Model sadržaja stranice [[:$1]] se ne može pretvoriti u vrstu $2.",
+       "changecontentmodel-nodirectediting": "Model sadržaja $1 ne podržava izravno uređivanje",
+       "log-name-contentmodel": "Dnevnik promene modela sadržaja",
+       "log-description-contentmodel": "Događaji koji imaju vezu sa modelima sadržaja stranica",
+       "logentry-contentmodel-change": "$1 je {{GENDER:$2|promenio|promenila}} model sadržaja stranice $3 iz „$4“ u „$5“",
+       "logentry-contentmodel-change-revertlink": "vrati",
+       "logentry-contentmodel-change-revert": "vrati",
        "protectlogpage": "Dnevnik zaključavanja",
        "protectlogtext": "Ispod je spisak zaštićenih stranica.\nPogledajte [[Special:ProtectedPages|spisak zaštićenih stranica]] za više detalja.",
        "protectedarticle": "{{GENDER:|je zaštitio|je zaštitila}} „[[$1]]“",
        "prot_1movedto2": "je premestio [[$1]] na [[$2]]",
        "protect-badnamespace-title": "Nezaštitljiv imenski prostor",
        "protect-badnamespace-text": "Stranice u ovom imenskom prostoru se ne mogu zaštititi.",
+       "protect-norestrictiontypes-text": "Ova stranica se ne može zaštititi jer nema dostupnih vrsta ograničenja.",
        "protect-norestrictiontypes-title": "Nezaštitljiva strana",
        "protect-legend": "Potvrdite zaštitu",
        "protectcomment": "Razlog:",
        "import": "Uvoz stranica",
        "importinterwiki": "Međuviki uvoz",
        "import-interwiki-text": "Izaberite viki i naslov stranice za uvoz.\nDatumi i imena urednika će biti sačuvani.\nSve radnje pri uvozu s drugih vikija su zabeležene u [[Special:Log/import|dnevniku uvoza]].",
+       "import-interwiki-sourcewiki": "Izvorna viki:",
+       "import-interwiki-sourcepage": "Izvorna stranica:",
        "import-interwiki-history": "Kopiraj sve verzije istorije za ovu stranicu",
        "import-interwiki-templates": "Uključi sve šablone",
        "import-interwiki-submit": "Uvezi",
+       "import-mapping-namespace": "Uvezi u imenski prostor:",
        "import-upload-filename": "Naziv datoteke:",
        "import-comment": "Komentar:",
        "importtext": "Izvezite datoteku s izvornog vikija koristeći [[Special:Export|izvoz]].\nSačuvajte je na računar i pošaljite ovde.",
        "tooltip-pt-logout": "Odjavite se",
        "tooltip-pt-createaccount": "Ohrabrujemo vas da otvorite nalog i prijavite se ali to nije obavezno",
        "tooltip-ca-talk": "Razgovor o stranici sa sadržajem",
-       "tooltip-ca-edit": "Možete da uređujete ovu stranicu. Koristite pretpregled pre snimanja",
+       "tooltip-ca-edit": "Uredi ovu stranicu",
        "tooltip-ca-addsection": "Započnite novi odeljak",
        "tooltip-ca-viewsource": "Ova stranica je zaključana. Možete da vidite izvorni kod.",
        "tooltip-ca-history": "Prethodne verzije ove stranice",
index c4fb1be..dca2888 100644 (file)
        "changecontentmodel-success-title": "Innehållsmodellen ändrades",
        "changecontentmodel-success-text": "Innehållstypen för [[:$1]] har ändrats.",
        "changecontentmodel-cannot-convert": "Innehållet på [[:$1]] kan inte konverteras till typen $2.",
-       "changecontentmodel-title-cantexist": "Det går inte att ha en sida på $1.",
        "changecontentmodel-nodirectediting": "Innehållsmodellen $1 stöder inte direkt redigering",
        "log-name-contentmodel": "Ändringslogg för innehållsmodellen",
        "log-description-contentmodel": "Händelser som är relaterade till en sidas innehållsmodeller",
index 24e81c6..47f6931 100644 (file)
        "category-empty": "''Бу төркем әлегә буш.''",
        "hidden-categories": "{{PLURAL:$1|1=Яшерен төркем|Яшерен төркемнәр}}",
        "hidden-category-category": "Яшерен төркемнәр",
-       "category-subcat-count": "{{PLURAL:$2|Бу төркемдә түбәндәге төркемчә генә бар.|$2 төркемчәдән {{PLURAL:$1|$1 төркемчә күрсәтелгән}}.}}",
+       "category-subcat-count": "{{PLURAL:$2|1=Әлеге төркем бары тик бу астөркемне генә үз өченә ала.|Әлеге төркемдә $2 астөркемдән бары тик $1 {{PLURAL:$1|астөркем}} генә күрсәтелгән.}}",
        "category-subcat-count-limited": "Бу төркемдә {{PLURAL:$1|$1 төркемчә}} бар.",
-       "category-article-count": "{{PLURAL:$2|Бу төркемдә бер генә бит бар.|Төркемдәге $2 биттән {{PLURAL:$1|$1 күрсәтелде}}.}}",
+       "category-article-count": "{{PLURAL:$2|1=Әлеге төркемдә бер генә бит бар.|Әлеге төркемнең $2 {{PLURAL:$2|битеннән}} {{PLURAL:$1|$1 бит}} кенә курсәтелгән.}}",
        "category-article-count-limited": "Бу төркемдә {{PLURAL:$1|$1 бит}} бар.",
-       "category-file-count": "{{PLURAL:$2|Бу төркемдә бер генә файл бар.|Төркемдәге $2 файлдан {{PLURAL:$1|$1 күрсәтелде}}.}}",
+       "category-file-count": "{{PLURAL:$2|1=Әлеге төркемдә бер генә файл бар.|Әлеге төркемдә $2 {{PLURAL:$2|файлдан}} {{PLURAL:$1|$1 файл}} гына курсәтелгән.}}",
        "category-file-count-limited": "Бу төркемдә {{PLURAL:$1|$1 файл}} бар.",
        "listingcontinuesabbrev": "дәвамы",
        "index-category": "Индексланган битләр",
        "createacct-email-ph": "Электрон почта юлламагызны языгыз",
        "createaccountmail": "электрон почта аша",
        "createaccountreason": "Сәбәп:",
+       "createacct-captcha": "Саклыкны тикшерү",
+       "createacct-imgcaptcha-ph": "Өстә күрсәтелгән текстны кертегез",
        "createacct-submit": "Хисап язмасы төзү",
        "createacct-benefit-heading": "{{SITENAME}} — сезнең шикелле кешеләрнең хезмәте.",
        "createacct-benefit-body1": "{{PLURAL:$1|төзәтмә}}",
        "preview": "Алдан карау",
        "showpreview": "Алдан карау",
        "showdiff": "Кертелгән үзгәртүләр",
-       "anoneditwarning": "'''Игътибар''': Сез системага кермәгәнсез. IP адресыгыз бу битнең тарихына язылачак.",
+       "anoneditwarning": "<strong>Игътибар!</strong> Сез сайтта теркәлмәдегез. Әгәрдә сез нинди дә булсә төзәтмәләр  яисә үзгәртүләр кертсәгез, сезне IP-адрес башкаларга да курсәтеләчәк. Сайтка <strong>[$1 керсәгез]</strong> яки <strong>[$2 кулланучы язмасын төзесәгез]</strong>, сез керткән үзгәртүләр яезнен кулланучы язмагызга бәйләнгән була, шулай ук башка мөмкинлекләр дә туачак.",
        "anonpreviewwarning": "''Сез системада теркәлмәдегез.Сезнең тарафтан эшләнгән барлык үзгәртүләр дә сезнең IP-юлламагызны саклауга китерә.''",
        "missingsummary": "'''Искәртү.''' Сез үзгәртүгә кыскача тасвирлау язмадыгыз. Сез «Битне саклау» төймәсенә тагын бер тапкыр бассагыз, үзгәртүләр тасвирламасыз сакланачак.",
        "missingcommenttext": "Аска тасвирлама язуыгыз сорала.",
        "prevn": "алдагы {{PLURAL:$1|$1}}",
        "nextn": "чираттагы {{PLURAL:$1|$1}}",
        "prevn-title": "Алдагы $1  {{PLURAL:$1|язма}}",
-       "nextn-title": "Киләсе $1 {{PLURAL:$1|язма|язма}}",
+       "nextn-title": "{{PLURAL:$1|Киләсе $1 язма}}",
        "shown-title": "Сәхифәдә $1 {{PLURAL:$1|1=язма|язма}} күрсәтелсен",
        "viewprevnext": "Күрсәтелүе: ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "<strong>Бу вики-проектта «[[:$1]]» исемле бит бар инде</strong>{{PLURAL:$2|0=|Башка эзләү нәтиҗәләрен дә карап ал.}}",
-       "searchmenu-new": "'''«[[:$1]]»  исемле яңа бит ясау'''",
+       "searchmenu-new": "<strong>«Әлеге [[:$1]]» вики-проектта бит ясарга!</strong>\n{{PLURAL:$2|0=|Шулай ук, эзләү ярдәмендә табылган битне карагыз.|Шулай ук, эзләү ярдәмендә табылган битләрне карагыз.}}",
        "searchprofile-articles": "Төп битләр (мәкаләләр)",
        "searchprofile-images": "Мультимедиа",
        "searchprofile-everything": "Һәркайда",
        "searchrelated": "бәйле",
        "searchall": "барлык",
        "showingresults": "Аста № '''$2''' {{PLURAL:$1|башлап}} '''$1''' {{PLURAL:$1|результат}} күрсәтелгән.",
+       "search-showingresults": "{{PLURAL:$4|<strong>$3</strong> нәтиҗәдән <strong>$1</strong>| <strong>$3</strong> нәтиҗәләрдән <strong>$1 — $2</strong>}}",
        "search-nonefound": "Сорауга туры килгән нәтиҗәләр табылмады.",
        "powersearch-legend": "Өстәмә эзләү",
        "powersearch-ns": "исемнәрендә эзләү",
        "right-suppressredirect": "Элекке исемнән юнәлтү ясамыйча исемне алмаштыру",
        "right-upload": "файлларны йөкләү",
        "right-reupload": "Булган файллар өстеннән язарга",
+       "right-writeapi": "язма өчен API куллану",
        "right-delete": "битләрне бетерү",
        "right-editinterface": "Кулланучы интерфейсын үзгәртү",
        "newuserlogpage": "Кулланучыларны теркәү көндәлеге",
        "action-createtalk": "бәхәс битен ясарга",
        "action-move": "бу битне күчерерге",
        "nchanges": "$1 {{PLURAL:$1|1=үзгәртү|үзгәртү}}",
+       "enhancedrc-history": "тарих",
        "recentchanges": "Соңгы үзгәртүләр",
        "recentchanges-legend": "Соңгы үзгәртүләр көйләүләре",
        "recentchanges-summary": "Бу биттә {{grammar:genitive|{{SITENAME}}}} проектының соңгы үзгәртүләре күрсәтелә.",
        "recentchanges-label-bot": "Бу үзгәртү бот белән эшләнгән",
        "recentchanges-label-unpatrolled": "Үзгәртүне әлегә тикшермәгәннәр",
        "recentchanges-label-plusminus": "Битнең зурлыгы шуның кадәрле байтка үзгәрде",
+       "recentchanges-legend-heading": "'''Легенда:&nbsp;'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|яңа бит]])",
        "rcnotefrom": "Астарак '''$2''' башлап ('''$1''' кадәр) үзгәртүләр күрсәтелгән.",
        "rclistfrom": "$3 $2 башлап яңа үзгәртүләрне күрсәт",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|күзәтеп тора кулланучы}}]",
        "rc_categories": "Төркемнәрдә генә тора («|» бүлүче)",
        "rc_categories_any": "Һәрбер",
-       "rc-change-size-new": "ТөзÓ\99Ñ\82мÓ\99дÓ\99н Ñ\81оң ÐºÒ¯Ð»Ó\99ме: $1 {{PLURAL:$1|байÑ\82|байт}}",
+       "rc-change-size-new": "Ð\9aеÑ\80Ñ\82елгÓ\99н Ò¯Ð·Ð³Ó\99Ñ\80еÑ\88лÓ\99Ñ\80 Ð±ÐµÐ»Ó\99н Ð±ÐµÑ\80гÓ\99 Ð·Ñ\83Ñ\80лÑ\8bк: $1 {{PLURAL:$1|байт}}",
        "newsectionsummary": "/* $1 */ яңа бүлек",
        "rc-enhanced-expand": "Ваклыкларны күрсәтү",
        "rc-enhanced-hide": "Ваклыкларны яшерү",
        "filehist-filesize": "Файлның зурлыгы",
        "filehist-comment": "Искәрмә",
        "imagelinks": "Файлны куллану",
-       "linkstoimage": "Бу файлга әлеге {{PLURAL:$1|1=бит|$1 бит}} сылтый:",
+       "linkstoimage": "{{PLURAL:$1|Киләсе $1 бит|Киләсе $1 битләр|}} әлеге файлга сылтама ясый:",
        "nolinkstoimage": "Бу файлга сылтаган битләр юк.",
        "duplicatesoffile": "{{PLURAL:$1|Әлеге $1 файл }} астагы файлның күчерелмәсе булып тора ([[Special:FileDuplicateSearch/$2|тулырак]]):",
        "sharedupload": "Бу файл $1'дан һәм башка проектларда кулланырга мөмкин.",
        "uploadnewversion-linktext": "Бу файлның яңа юрамасын йөкләү",
        "shared-repo-from": "$1 дән",
        "shared-repo": "гомуми саклагыч",
+       "upload-disallowed-here": "Сез бу файлны яңарта алмыйсыз.",
        "filerevert": "$1 юрамасына кире кайту",
        "filerevert-legend": "Файлның иске юрамасын кире кайтару",
        "filerevert-comment": "Сәбәп:",
        "nopagetitle": "Мондый бит юк",
        "nopagetext": "Күрсәтелгән бит юк.",
        "pager-newer-n": "{{PLURAL:$1|1=1 яңарак|$1 яңарак}}",
-       "pager-older-n": "{{PLURAL:$1|1=1 искерәк|$1 искерәк}}",
+       "pager-older-n": "$1 {{PLURAL:$1|искерәк}}",
        "suppress": "Яшерү",
        "booksources": "Китап чыганаклары",
        "booksources-search-legend": "Китап чыганакларыны эзләү",
        "undelete-show-file-submit": "Әйе",
        "namespace": "Исемнәр мәйданы:",
        "invert": "Киресен сайлау",
+       "tooltip-invert": "Сайланган исемлектәге үзгәргәртүләр күрсәтелмәсен өчен монда тамга куегыз",
        "namespace_association": "Бәйле тирәлек",
        "tooltip-namespace_association": "Сайланган бәйле исемнәр тирәлегенә караган мәкаләләр исемлеген кабызу өчен элеге урынга тамганы куегыз",
        "blanknamespace": "(Төп)",
        "isredirect": "юнәлтү бите",
        "istemplate": "кертүләр",
        "isimage": "файл сылтамасы",
-       "whatlinkshere-prev": "{{PLURAL:$1|1=алдагы|алдагы $1}}",
-       "whatlinkshere-next": "{{PLURAL:$1|1=чираттагы|чираттагы $1}}",
+       "whatlinkshere-prev": "{{PLURAL:$1|1=алдагы}} $1",
+       "whatlinkshere-next": "{{PLURAL:$1|1=киләсе}} $1",
        "whatlinkshere-links": "← сылтамалар",
        "whatlinkshere-hideredirs": "юнәлтүләрне $1",
        "whatlinkshere-hidetrans": "кертүләрне $1",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|1=кулланучысы|кулланучылары}} $1",
        "creditspage": "Рәхмәтләр",
        "spamprotectiontitle": "Спам фильтры",
+       "simpleantispam-label": "Анти-спам тикшерә.\nМоны '''ТУТЫРМАГЫЗ!'''",
        "pageinfo-toolboxlink": "Бит турында мәгълүмат",
        "markaspatrolledtext": "Бу мәкаләне тикшерелгән дип тамгалау",
        "markedaspatrolled": "Тикшерелгән дип тамгаланды",
        "file-nohires": "Югары ачыклык белән юрама юк.",
        "svg-long-desc": "SVG файлы, шартлы $1 × $2 нокта, файлның зурлыгы: $3",
        "show-big-image": "Оригинал файл",
+       "show-big-image-preview": "Алдан карауның зурлыгы: $1.",
+       "show-big-image-other": "{{PLURAL:$2|1=Башка зурлык|Башка зурлыклар}}: $1.",
        "show-big-image-size": "$1 × $2 пиксель",
        "newimages": "Яңа сүрәтләр җыелмасы",
        "newimages-legend": "Фильтр",
        "metadata-fields": "Бу исемлеккә кергән метабирелмәләр кырлары рәсем битендә күрсәтелер, калганнары исә килешү буенча яшерелер.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "Киңлек",
        "exif-imagelength": "Биеклек",
+       "exif-orientation": "Кадр куелышы",
+       "exif-xresolution": "Горизонталь зурлык",
+       "exif-yresolution": "Вертикаль зурлык",
+       "exif-datetime": "Файл үзгәртүләр датасы һәм вакыты",
        "exif-imagedescription": "Рәсемнең исеме",
        "exif-make": "Камераның җитештерүчесе",
        "exif-model": "Камераның төре",
        "tags": "Гамәлдә булучы үзгәртүләр билгеләре",
        "tag-filter": "[[Special:Tags|Tag]] фильтры:",
        "tag-filter-submit": "Фильтрлау",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|1=Билге|Билгеләр}}]]: $2)",
        "tags-title": "Теглар",
        "tags-intro": "Әлеге сәхифәдә төзәтүләрне билгеләгән, программа тәэмин итә торган теглар исемлеге һәм шул тегларның аңламнары китерелгән.",
        "tags-tag": "Тег исеме",
        "htmlform-submit": "Җибәрү",
        "htmlform-reset": "Үзгәртүләрне кире кайтару",
        "htmlform-selectorother-other": "Башка",
+       "logentry-delete-delete": "$1 $3 битен {{GENDER:$2|бетерә}}",
        "revdelete-content-hid": "эчтәлек яшерелгән",
        "revdelete-summary-hid": "төзәтмәнең тасвирламасы яшерелгән",
        "revdelete-uname-hid": "кулланучының исеме яшерелгән",
        "logentry-patrol-patrol": "$1 $3 мәкаләсенең  $4 санлы версиясен тикшерде",
        "logentry-patrol-patrol-auto": "$1 $3 мәкаләсенең $4 санлы версиясен автоматик рәвештә тикшерде",
        "logentry-newusers-newusers": "$1 кулланучының хисап язмасын төзеде",
-       "logentry-newusers-create": "$1 хисап язмасы төзеде",
+       "logentry-newusers-create": "{{GENDER:$2|Кулланучы}} $1 куллану язмасын төзеде",
        "logentry-newusers-create2": "$1 $3 кулланучы хисап язмасын төзеде",
        "logentry-newusers-autocreate": "Автоматик рәвештә $1 хисап язмасы төзелде.",
        "logentry-upload-upload": "$1 {{GENDER:$2|йөкләде}} $3",
index 9ae575c..9cbb07c 100644 (file)
        "changecontentmodel-success-title": "Модель вмісту було змінено",
        "changecontentmodel-success-text": "Тип вмісту сторінки [[:$1]] було змінено.",
        "changecontentmodel-cannot-convert": "Вміст сторінки [[:$1]] не можна перетворити на вміст типу $2.",
-       "changecontentmodel-title-cantexist": "Сторінка з назвою $1 не можлива.",
        "changecontentmodel-nodirectediting": "Модель вмісту $1 не підтримує пряме редагування",
        "log-name-contentmodel": "Журнал змін моделі вмісту",
        "log-description-contentmodel": "Події, пов'язані з моделями вмісту сторінки",
index e385f4e..db207b6 100644 (file)
        "view": "Xem",
        "view-foreign": "Xem trên $1",
        "edit": "Sửa đổi",
-       "edit-local": "Sửa đổi miêu tả địa phương",
+       "edit-local": "Sửa miêu tả địa phương",
        "create": "Tạo",
-       "create-local": "Thêm miêu tả trên wiki địa phương",
+       "create-local": "Thêm miêu tả địa phương",
        "editthispage": "Sửa đổi trang này",
        "create-this-page": "Tạo trang này",
        "delete": "Xóa",
        "prefsnologintext2": "Xin vui lòng đăng nhập để thay đổi tùy chọn.",
        "prefs-skin": "Giao diện",
        "skin-preview": "Xem trước",
-       "datedefault": "Không quan tâm",
+       "datedefault": "Không tùy biến",
        "prefs-labs": "Tính năng phòng thí nghiệm",
        "prefs-user-pages": "Trang cá nhân",
        "prefs-personal": "Thông tin cá nhân",
        "prefs-files": "Tập tin",
        "prefs-custom-css": "sửa CSS",
        "prefs-custom-js": "sửa JS",
-       "prefs-common-css-js": "CSS/JS chung cho mọi giao diện:",
+       "prefs-common-css-js": "CSS/JavaScript chung cho mọi giao diện:",
        "prefs-reset-intro": "Có thể mặc định lại toàn bộ tùy chọn dùng trang này. Điều này không thể hoàn tác.",
        "prefs-emailconfirm-label": "Xác nhận thư điện tử:",
        "youremail": "Thư điện tử:",
        "prefs-info": "Thông tin cơ bản",
        "prefs-i18n": "Quốc tế hóa",
        "prefs-signature": "Chữ ký",
-       "prefs-dateformat": "Kiểu ngày tháng",
-       "prefs-timeoffset": "Chênh giờ",
+       "prefs-dateformat": "Kiểu hiển thị ngày tháng",
+       "prefs-timeoffset": "Chênh lệch giờ",
        "prefs-advancedediting": "Tùy chọn chung",
        "prefs-editor": "Trình soạn",
        "prefs-preview": "Xem trước",
        "php-uploaddisabledtext": "Việc tải tập tin trong PHP đã bị tắt. Xin hãy kiểm tra lại thiết lập file_uploads.",
        "uploadscripted": "Tập tin này có chứa mã HTML hoặc kịch bản có thể khiến trình duyệt web thông dịch sai.",
        "upload-scripted-pi-callback": "Không thể tải lên một file có chứa lệnh xử lý XML-stylesheet",
+       "uploaded-script-svg": "Tìm thấy phần tử “$1” có khả năng chạy kịch bản trong tập tin SVG được tải lên.",
+       "uploaded-hostile-svg": "Tìm thấy CSS nguy hiểm trong phần tử style của tập tin SVG được tải lên.",
+       "uploaded-event-handler-on-svg": "Không cho phép đặt thuộc tính xử lý sự kiện <code>$1=\"$2\"</code> trong tập tin SVG.",
+       "uploaded-href-attribute-svg": "Không cho phép thuộc tính href <code>&lt;$1 $2=\"$3\"&gt;</code> có đích ngoài máy (ví dụ http://, javascript:, v.v.) trong tập tin SVG.",
+       "uploaded-href-unsafe-target-svg": "Tìm thấy href đến đích nguy hiểm <code>&lt;$1 $2=\"$3\"&gt;</code> trong tập tin SVG được tải lên.",
+       "uploaded-animate-svg": "Tìm thấy thẻ “animate” có thể thay đổi href qua thuộc tính “from” <code>&lt;$1 $2=\"$3\"&gt;</code> trong tập tin SVG được tải lên.",
+       "uploaded-setting-event-handler-svg": "Đã ngăn cản việc đặt thuộc tính xử lý sự kiện khi tìm thấy <code>&lt;$1 $2=\"$3\"&gt;</code> trong tập tin SVG được tải lên.",
        "uploaded-setting-href-svg": "Sử dụng tag \"set\" để thêm thuộc tính \"href\" tới thành phần mẹ bị khóa.",
-       "uploaded-image-filter-svg": "Tìm công cụ lọc ảnh với UPL: <Mã>&lt;$1 $2=\"$3\"&gt;</Mã> trong tập tin SVG được tải lên.",
+       "uploaded-wrong-setting-svg": "Đã ngăn cản việc sử dụng thẻ “set” để thêm đích bên ngoài/dữ liệu/kịch bản vào thuộc tính nào đó. Tìm thấy <code>&lt;set to=\"$1\"&gt;</code> trong tập tin SVG được tải lên.",
+       "uploaded-setting-handler-svg": "Đã ngăn cản mã SVG đặt thuộc tính “handler” là từ xa/dữ liệu/kịch bản. Tìm thấy <code>$1=\"$2\"</code> trong tập tin SVG được tải lên.",
+       "uploaded-remote-url-svg": "Đã ngăn cản mã SVG đặt thuộc tính style nào đó là URL ngoài máy. Tìm thấy <code>$1=\"$2\"</code> trong tập tin SVG được tải lên.",
+       "uploaded-image-filter-svg": "Đã phát hiện bộ lọc hình ảnh có URL: <code>&lt;$1 $2=\"$3\"&gt;</code> trong tập tin SVG được tải lên.",
        "uploadscriptednamespace": "Tập tin SVG này chứa không gian tên “$1” không được cho phép",
        "uploadinvalidxml": "Không thể phân tích mã XML trong tập tin tải lên.",
        "uploadvirus": "Tập tin có virút! Chi tiết: $1",
        "changecontentmodel-reason-label": "Lý do:",
        "changecontentmodel-success-title": "Kiểu nội dung đã thay đổi",
        "changecontentmodel-success-text": "Loại nội dung của [[:$1]] đã được thay đổi.",
+       "changecontentmodel-cannot-convert": "Không thể chuyển đổi nội dung [[:$1]] thành nội dung dưới dạng $2.",
+       "changecontentmodel-nodirectediting": "Mô hình nội dung $1 không hỗ trợ sửa đổi trực tiếp",
+       "log-name-contentmodel": "Nhật trình thay đổi mô hình nội dung",
+       "log-description-contentmodel": "Sự kiện có liên quan đến mô hình nội dung của trang.",
+       "logentry-contentmodel-change": "$1 {{GENDER:$2}}đã thay đổi mô hình nội dung của trang $3 từ “$4” thành “$5”",
+       "logentry-contentmodel-change-revertlink": "lùi lại",
+       "logentry-contentmodel-change-revert": "lùi lại",
        "protectlogpage": "Nhật trình khóa",
        "protectlogtext": "Đây là danh sách các thay đổi mức khóa trang. Xem [[Special:ProtectedPages|danh sách các trang hiện thời đang bị khóa]].",
        "protectedarticle": "đã khóa “[[$1]]”",
        "pageinfo-robot-index": "Cho phép",
        "pageinfo-robot-noindex": "Không cho phép",
        "pageinfo-watchers": "Số người theo dõi trang",
+       "pageinfo-visiting-watchers": "Số người theo dõi trang đã xem sửa đổi gần đây",
        "pageinfo-few-watchers": "Không tới $1 người theo dõi",
+       "pageinfo-few-visiting-watchers": "Có thể có hoặc không có người dùng theo dõi các sửa đổi gần đây",
        "pageinfo-redirects-name": "Số trang đổi hướng đến trang này",
        "pageinfo-redirects-value": "$1",
        "pageinfo-subpages-name": "Số trang con của trang này",
        "htmlform-cloner-create": "Tiếp tục thêm",
        "htmlform-cloner-delete": "Loại bỏ",
        "htmlform-cloner-required": "Cần ít nhất một giá trị.",
+       "htmlform-title-badnamespace": "[[:$1]] không phải trong không gian tên “{{ns:$2}}”.",
+       "htmlform-title-not-creatable": "Không cho phép tạo ra trang với tên “$1”",
+       "htmlform-title-not-exists": "[[:$1]] không tồn tại.",
+       "htmlform-user-not-exists": "<strong>$1</strong> không tồn tại.",
+       "htmlform-user-not-valid": "<strong>$1</strong> không phải là tên người dùng.",
        "sqlite-has-fts": "$1 với sự hỗ trợ tìm kiếm toàn văn",
        "sqlite-no-fts": "$1 không có hỗ trợ tìm kiếm toàn văn",
        "logentry-delete-delete": "$1 {{GENDER:$2}}đã xóa trang “$3”",
        "log-description-pagelang": "Nhật trình này ghi các thay đổi ngôn ngữ của các trang.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2}}đã đổi ngôn ngữ của trang $3 từ $4 thành $5.",
        "default-skin-not-found": "Đã xảy ra lỗi! Giao diện mặc định của wiki này được định nghĩa trong <code dir=\"ltr\">$wgDefaultSkin</code> là <code>$1</code> nhưng không tồn tại.\n\nViệc cài đặt của bạn dường như bao gồm {{PLURAL:$4|giao diện|các giao diện}} sau. Xem [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_configuration Hướng dẫn: Cấu hình giao diện] để biết thông tin về cách kích hoạt {{PLURAL:$4|nó|chúng và chọn giao diện mặc định}}.\n\n$2\n\n; Nếu bạn vừa mới cài đặt MediaWiki:\n: Có lẽ bạn đã cài đặt nó từ git, hoặc trực tiếp từ mã nguồn bằng cách sử dụng một số phương thức khác. Điều này đã nằm trong tính toán của chúng tôi. Hãy thử cài đặt một số giao diện từ [https://www.mediawiki.org/wiki/Category:All_skins thư mục giao diện của mediawiki.org] bằng cách:\n:* Tải về [https://www.mediawiki.org/wiki/Special:MyLanguage/Download trình cài đặt dưới dạng gói tar], trong đó có kèm theo một số giao diện và phần mở rộng. Bạn có thể chép nó và dán vào thư mục <code>skins/</code>.\n:* Tải về các gói giao diện nén riêng từ [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_từ_Git#Using_Git_to_download_MediaWiki_skins Sử dụng Git để tải về giao diện].\n: Cách này sẽ không có ảnh hưởng đến kho git của bạn dù bạn là một nhà phát triển MediaWiki.\n\n; Nếu bạn vừa mới nâng cấp MediaWiki:\n: Phiên bản MediaWiki 1.24 trở lên không còn tự động kích hoạt giao diện đã cài đặt (xem [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Hướng dẫn: Tự động dò giao diện]). Bạn có thể dán {{PLURAL:$5|dòng|các dòng}} sau vào <code>LocalSettings.php</code> để kích hoạt {{PLURAL:$5|giao diện|tất cả các giao diện}} đã được cài dặt:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Nếu bạn vừa mới chỉnh sửa <code>LocalSettings.php</code>:\n: Kiểm tra lại tên các giao diện xem có lỗi đánh máy nào không.",
-       "default-skin-not-found-no-skins": "Đã xảy ra lỗi! Giao diện mặc định của wiki này được định nghĩa trong <code dir=\"ltr\">$wgDefaultSkin</code> là <code>$1</code> nhưng không tồn tại.\n\nKhông có giao diện nào của bạn được kích hoạt.\n\n; Nếu bạn vừa mới cài đặt MediaWiki:\n: Bạn có thể cài đặt nó từ git, hoặc trực tiếp từ mã nguồn bằng cách sử dụng một số phương thức khác. Điều này nằm trong dự kiến. Hãy thử cài đặt một số giao diện từ [https://www.mediawiki.org/wiki/Category:All_skins thư mục giao diện của mediawiki.org], bằng cách:\n:* Tải về [https://www.mediawiki.org/wiki/Special:MyLanguage/Download trình cài đặt dưới dạng gói tar], trong đó có kèm theo một số giao diện và phần mở rộng. Bạn có thể chép nó và dán vào thư mục <code>skins/</code>.\n:* Tải về các gói giao diện nén riêng từ [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:*Sao chép một trong những kho <code>mediawiki/skins/*</code> thông qua git vào trong thư mục <code dir=\"ltr\">skins/</code> của cài đặt MediaWiki của bạn.\n: Cách này sẽ không có ảnh hưởng đến kho git của bạn dù bạn là một nhà phát triển MediaWiki. Xin xem [https://www.mediawiki.org/wiki/Manual:Skin_configuration Hướng dẫn: Cấu hình giao diện] để biết thông tin về cách kích hoạt hoặc chọn một trong số chúng làm giao diện mặc định.",
+       "default-skin-not-found-no-skins": "Đã xảy ra lỗi! Giao diện mặc định của wiki này được định nghĩa trong <code dir=\"ltr\">$wgDefaultSkin</code> là <code>$1</code> nhưng không tồn tại.\n\nKhông có giao diện nào của bạn được kích hoạt.\n\n; Nếu bạn vừa mới cài đặt MediaWiki:\n: Bạn có thể cài đặt nó từ git, hoặc trực tiếp từ mã nguồn bằng cách sử dụng một số phương thức khác. Điều này nằm trong dự kiến. Hãy thử cài đặt một số giao diện từ [https://www.mediawiki.org/wiki/Category:All_skins thư mục giao diện của mediawiki.org], bằng cách:\n:* Tải về [https://www.mediawiki.org/wiki/Special:MyLanguage/Download trình cài đặt dưới dạng gói tar], trong đó có kèm theo một số giao diện và phần mở rộng. Bạn có thể chép nó và dán vào thư mục <code>skins/</code>.\n:* Tải về các gói giao diện nén riêng từ [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git/vi#Using_Git_to_download_MediaWiki_skins Tải về giao diện qua Git].\n: Cách này sẽ không có ảnh hưởng đến kho git của bạn dù bạn là một nhà phát triển MediaWiki. Xin xem [https://www.mediawiki.org/wiki/Manual:Skin_configuration Hướng dẫn: Cấu hình giao diện] để biết thông tin về cách kích hoạt hoặc chọn một trong số chúng làm giao diện mặc định.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (kích hoạt)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''vô hiệu hóa''')",
        "mediastatistics": "Thống kê phương tiện",
index 500a168..ca13562 100644 (file)
        "protectedinterface": "דער בלאַט שטעלט צו באניצער־אויבערפלאך טעקסט פֿאַרן װײכװאַרג אויף דער דאזיקער וויקי, און איז פֿאַרשפּאַרט כּדי צו פֿאַרמײַדן װאַנדאַליזם.\nכדי צולייגן אדער ענדערן איבערזעצונגען פאר אלע וויקיס, זייט אזוי גוט ניצן [//translatewiki.net/ translatewiki.net], דער מעדיעוויקי לאקאליזאציע פראיעקט.",
        "editinginterface": "<strong>ווארענונג:</strong> איר באַאַרבעט א בלאט וואס ווערט געניצט צוצושטעלן אינטערפֿייס טעקסט פאר דער ווייכווארג.\nענדערונגען אין דעם בלאַט וועלן טוישן דאס אויסזען פון די סיסטעם מודעות פאר אנדערע באניצער אויף דער וויקי.",
        "translateinterface": "כדי צו צולייגן איבערזעצונגען פאר אלע וויקיס, זײַט אזוי גוט און ניצט [//translatewiki.net/ translatewiki.net], דער מעדיעוויקי לאקאליזירונג פראיעקט.",
-       "cascadeprotected": "×\93ער ×\91×\9c×\90×\98 ×\90×\99×\96 ×¤×\90רשפ×\90ר×\98 ×¦×\95×\9d ×¢× ×\93ער×\9f ×\95×\95×\99×\91×\90×\9c×\93 ×¢×¨ ×\90×\99×\96 ×\90×\99×\99× ×\92עש×\9c×\90ס×\9f ×\90×\99×\9f ×\90×\99×\99× ×¢ ×¤×\95×\9f ×\93×\99 ×¤×\90×\9c×\92× ×\93×¢ {{PLURAL:$1|×\91×\9c×\90×\98, ×\95×\95×\90ס ×\90×\99×\96\91×\9c×¢×\98ער, ×\95×\95×\90ס ×\96×¢× ×¢×\9f}} ×\91×\90ש×\99צ×\98 ×\9e×\99×\98 ×\93ער ×§×\90סק×\99×\99ד אפציע:\n\n$2",
+       "cascadeprotected": "×\93ער ×\91×\9c×\90×\98 ×\90×\99×\96 ×\92×¢×\95×\95×\90ר×\9f ×\91×\90ש×\99צ×\98 ×¤×\95×\9f ×¨×¢×\93×\90ק×\98×\99ר×\9f ×\95×\95×\99×\91×\90×\9c×\93 ×¢×¨ ×\90×\99×\96 ×\90×\99×\99× ×\92עש×\9c×\90ס×\9f ×\90×\99×\9f {{PLURAL:$1|×\93×¢×\9d ×¤×\90×\9c×\92× ×\93×\9f ×\91×\9c×\90×\98, ×\95×\95×\90ס ×\90×\99×\96\93×\99 ×¤×\90×\9c×\92× ×\93×¢ ×\91×\9c×¢×\98ער, ×\95×\95×\90ס ×\96×¢× ×¢×\9f}} ×\91×\90ש×\99צ×\98 ×\9e×\99×\98 ×\93ער ×§×\90סק×\90ד אפציע:\n\n$2",
        "namespaceprotected": "איר זענט נישט ערלויבט צו רעדאקטירן בלעטער אינעם '''$1''' נאמענטייל.",
        "customcssprotected": "איר האט נישט רשות צו רעדאַקטירן דעם CSS בלאַט, ווײַל ער אַנטהאַלט די פערזענלעכע באַשטימונגען פון אַן אַנדער באַניצער.",
        "customjsprotected": "איר האט נישט רשות צו רעדאַקטירן דעם JavaScript בלאַט, ווײַל ער אַנטהאַלט די פערזענלעכע באַשטימונגען פון אַן אַנדער באַניצער.",
        "readonlywarning": "'''ווארענונג: די דאטנבאזע איז געווארן פארשלאסן פאר אויפהאלטונג, ממילא וועט איר נישט קענען אפהיטן אייערע ענדערונגען אצינד. '''\nאיר קענט קאפירן און ארײַנלייגן דעם טעקסט אריין צו א טעקסט טעקע און דאס דארטן אפהיטן אויף שפעטער.\n\nדער אדמיניסטראטאר וואס האט זי פארשלאסן האט מסביר געווען אזוי: $1",
        "protectedpagewarning": "'''ווארענונג:  דער בלאט איז געווארן פארשפארט אז בלויז באניצערס מיט סיסאפ פריווילעגיעס קענען אים ענדערן.'''\nדי פארגאנגענע לאגבוך באשרײַבונג ווערט געוויזן דא:",
        "semiprotectedpagewarning": "'''באמערקונג:''' דער דאָזיקער בלאַט איז פאַרשפּאַרט, אַזוי אַז בלויז איינגעשריבענע באַניצער קענען אים ענדערן.\nדאָס פאַרגאַנגענע לאָגבוך באַשרייבונג ווערט געוויזן דאָ:",
-       "cascadeprotectedwarning": "'''ווארענונג:''' דער בלאט איז פארשפארט אז בלויז סיסאפן קענען אים ענדערן, וויבאלד ער איז איינגעשלאסן אין {{PLURAL:$1| דעם פאלגנדן בלאט, וואס איז|די פאלגנדע בלעטער, וואס זענען}} קאסקאד באשיצט:",
+       "cascadeprotectedwarning": "<strong>ווארענונג:</strong> דער בלאט איז פארשפארט אז בלויז סיסאפן קענען אים ענדערן, וויבאלד ער איז איינגעשלאסן אין {{PLURAL:$1| דעם פאלגנדן בלאט, וואס איז|די פאלגנדע בלעטער, וואס זענען}} קאסקאד באשיצט:",
        "titleprotectedwarning": "'''אזהרה: דער בלאט איז פֿארשפאַרט טא דארף מען [[Special:ListGroupRights|ספעציפֿישע רעכטן]] צו שאפֿן אים.'''\nדי פֿאַרגאַנגענע לאגבוך באשרײַבונג ווערט געוויזן דאָ:",
        "templatesused": "{{PLURAL:$1|מוסטער|מוסטערן}} באנוצט אויף דעם בלאט:",
        "templatesusedpreview": "{{PLURAL:$1|מוסטער| מוסטערן}}  באַניצט  אין דעם פֿאָראױסקוק:",
        "content-model-css": "CSS",
        "content-json-empty-object": "ליידיגער אביעקט",
        "content-json-empty-array": "ליידיגער אריי",
+       "duplicate-args-warning": "<strong>ווארענונג:</strong> [[:$1]] רופט [[:$2]] מיט מער ווי איין ווערט פארן פאראמעטער \"$3\". נאר דעם לעצטן ווערט וועט מען ניצן.",
        "duplicate-args-category": "בלעטער וואס ניצן געטאפלטע ארגומענטן אין מוסטער רופן",
        "duplicate-args-category-desc": "דער בלאט אנטהאלט מוסטער־אויפרופן וואס ניצן דופליקאטן פון ארגומענטן, ווי למשל <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> or <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "'''אזהרה:''' דער בלאט אנטהאלט צופיל טייערע פארזירער רופן.\n\nער דארף האבן ווינציגער פון  $2 {{PLURAL:$2|רוף|רופן}}, אבער אצינד {{PLURAL:$1|איז דא $1 רוף|זענען דא $1 רופן}}.",
        "protect-text": "איר מעגט זען און ענדערן דעם שוץ ניווא דא פֿארן בלאט '''$1'''.",
        "protect-locked-blocked": "איר קען נישט ענדערן דעם שוץ ניווא בעת ווען איר זענט בלאקירט.\nפֿאלגנד זענען די לויפֿיגע שטעלונגען פֿארן בלאט '''$1''':",
        "protect-locked-access": "אייער קאנטע האט נישט קיין ערלויבניש צו ענדערן בלאט שיצונג ניוואען.\nדא זענען די לויפֿיקע שטעלונגען פֿאַר דעם בלאַט '''$1''':",
-       "protect-cascadeon": "×\93ער ×\91×\9c×\90Ö·×\98 ×\90×\99×\96 ×\92עש×\99צ×\98 ×\90ַצ×\99× ×\93 ×\95×\95ײַ×\9c ×¢×¨ ×\90×\99×\96 ×\90ײַנ×\92עש×\9c×\90ס×\9f ×\90×\99×\9f  {{PLURAL:$1|×\93×¢×\9d ×¤Ö¿×\90×\9c×\92× ×\93×\9f ×\91×\9c×\90Ö·×\98, ×\95×\95×\90ס ×\94×\90×\98\93×\99 ×¤Ö¿×\90×\9c×\92× ×\93×¢ ×\91×\9c×¢×\98ער, ×\95×\95×\90ס ×\94×\90×\91×\9f}} ×§×\90ַסק×\90Ö·×\93×\99ר×\98×¢ ×©×\99צ×\95× ×\92.\n\nענדערונגען צום שיצונג ניווא פונעם בלאַט וועלן נישט ווירקן אויף דער קאַסקאַדירטער שיצונג .",
+       "protect-cascadeon": "×\93ער ×\91×\9c×\90Ö·×\98 ×\90×\99×\96 ×\92עש×\99צ×\98 ×\90ַצ×\99× ×\93 ×\95×\95ײַ×\9c ×¢×¨ ×\90×\99×\96 ×\90ר×\99×\91ער×\92עש×\9c×\90ס×\9f ×\90×\99×\9f  {{PLURAL:$1|×\93×¢×\9d ×¤Ö¿×\90×\9c×\92× ×\93×\9f ×\91×\9c×\90Ö·×\98, ×\95×\95×\90ס ×\94×\90×\98\93×\99 ×¤Ö¿×\90×\9c×\92× ×\93×¢ ×\91×\9c×¢×\98ער, ×\95×\95×\90ס ×\94×\90×\91×\9f}} ×§×\90ַסק×\90Ö·×\93×\99ר×\98×¢ ×©×\99צ×\95× ×\92.\nענדערונגען צום שיצונג ניווא פונעם בלאַט וועלן נישט ווירקן אויף דער קאַסקאַדירטער שיצונג .",
        "protect-default": "אלע באניצער ערלויבט",
        "protect-fallback": "דערלויבן נאר באניצער מיט \"$1\" ערלויבניש",
        "protect-level-autoconfirmed": "לאזן נאר אויטאמאטיש באשטעטיקטע באַניצער",
index 00b4612..ee97e58 100644 (file)
@@ -29,7 +29,7 @@
                ]
        },
        "tog-underline": "連結加底線:",
-       "tog-hideminor": "最新更改唔顯示修改",
+       "tog-hideminor": "最新更改唔顯示修改",
        "tog-hidepatrolled": "響最近修改度隱藏巡查過嘅編輯",
        "tog-newpageshidepatrolled": "響新頁清單度隱藏巡查過嘅版",
        "tog-extendwatchlist": "展開監視清單去顯示全部更改,唔係淨係最新嘅",
        "tog-watchdeletion": "將我刪除嘅頁同檔案加入監視清單",
        "tog-watchrollback": "將我反轉過嘅頁加落監視清單",
        "tog-minordefault": "預設全部編輯做小修改",
-       "tog-previewontop": "喺修改欄上顯示預覽",
+       "tog-previewontop": "喺修改欄上顯示預覽",
        "tog-previewonfirst": "第一次修改時顯示預覽",
-       "tog-enotifwatchlistpages": "當響我張監視清單度嘅頁面同檔案有修改時電郵通知我",
-       "tog-enotifusertalkpages": "å\80\8b人ç\95\99è¨\80ç\89\88æ\9c\89ä¿®æ\94¹æ\99\82é\9b»é\83µé\80\9aç\9f¥æ\88\91",
-       "tog-enotifminoredits": "頁面同檔案小修改都要電郵通知我",
+       "tog-enotifwatchlistpages": "喺我張監視清單度嘅頁同檔有修改時,用電郵通知我。",
+       "tog-enotifusertalkpages": "å\96ºå\80\8b人ç\95\99è¨\80ç\89\88æ\9c\89ä¿®æ\94¹æ\99\82ï¼\8cç\94¨é\9b»é\83µé\80\9aç\9f¥æ\88\91ã\80\82",
+       "tog-enotifminoredits": "喺頁面同檔案有細修改時,用電郵通知我。",
        "tog-enotifrevealaddr": "喺電郵通知信上面話畀人聽我嘅電郵地址",
        "tog-shownumberswatching": "顯示有幾多人監視",
        "tog-oldsig": "現有簽名:",
        "tog-forceeditsummary": "我冇入修改註解時通知我",
        "tog-watchlisthideown": "響監視清單度隱藏我嘅編輯",
        "tog-watchlisthidebots": "響監視清單度隱藏機械人嘅編輯",
-       "tog-watchlisthideminor": "響監視清單度隱藏修改",
+       "tog-watchlisthideminor": "響監視清單度隱藏修改",
        "tog-watchlisthideliu": "響監視清單度隱藏登入用戶",
        "tog-watchlisthideanons": "響監視清單度隱藏匿名用戶",
        "tog-watchlisthidepatrolled": "響監視清單度隱藏巡查過嘅編輯",
-       "tog-ccmeonemails": "當我寄電郵畀其他人嗰陣寄返封副本畀我",
+       "tog-ccmeonemails": "喺我寄電郵畀其他人嗰陣,寄返封副本畀我。",
        "tog-diffonly": "響差異下面唔顯示頁面內容",
        "tog-showhiddencats": "顯示隱藏類",
        "tog-norollbackdiff": "進行反轉之後略過差異",
        "creating": "開版$1",
        "editingsection": "而家喺度編輯$1 (小節)",
        "editingcomment": "而家喺度編輯$1 (新小節)",
-       "editconflict": "由於編輯衝突,{{GENDER:|你|妳|你}}嘅修改記唔低。{{GENDER:|你|妳|你}}想唔想人手解決呢個衝突?",
+       "editconflict": "ç\94±æ\96¼ç·¨è¼¯è¡\9dçª\81ï¼\8c{{GENDER:|ä½ |妳|ä½ }}å\96º$1å\98\85ä¿®æ\94¹è¨\98å\94\94ä½\8eã\80\82{{GENDER:|ä½ |妳|ä½ }}æ\83³å\94\94æ\83³äººæ\89\8b解決å\91¢å\80\8bè¡\9dçª\81ï¼\9f",
        "explainconflict": "有其他人喺你開始編輯之後已經更改呢一頁。\n喺上面嗰個空間而家現存嘅頁面文字。\n你嘅更改會喺下面嘅文字空間顯示。\n你需要合併你嘅更改到原有嘅文字。\n喺你撳「{{int:savearticle}}」之後,'''只有'''喺上面嘅文字區會被儲存。",
        "yourtext": "你嘅文字",
        "storedversion": "已經儲存咗嘅修訂",
        "yourdiff": "差異",
        "copyrightwarning": "請留意喺{{SITENAME}}度,所有喺呢度嘅貢獻會被考慮到喺$2之下發出(睇$1有更詳細嘅資訊)。如果你係唔想你編輯嘅文字無喇喇咁被分發,咁就唔好喺呢度遞交。\n\n你亦都要同我哋保證啲文字係你自己寫嘅,或者係由公有領域或相似嘅自由資源複製落嚟。\n'''喺未有任何許可嘅情況之下千祈唔好遞交有版權嘅作品!'''",
        "copyrightwarning2": "請留意喺{{SITENAME}}度,所有嘅貢獻可能會被其他嘅貢獻者編輯、修改,或者刪除。如果你係唔想你編輯嘅文字無喇喇咁被編輯,咁就唔好喺呢度遞交。\n\n你亦都要同我哋保證啲文字係你自己寫嘅,或者係由公有領域或相似嘅自由資源複製落嚟(睇$1有更詳細嘅資訊)。\n'''喺未有任何許可嘅情況之下千祈唔好遞交有版權嘅作品!'''",
+       "editpage-cannot-use-custom-model": "呢頁嘅目錄模型唔改得",
        "longpageerror": "<strong>出錯:你所遞交嘅文字係有 {{PLURAL:$1|1 KB|$1 KB}} 咁長,長過最大嘅 {{PLURAL:$2|1 KB|$2 KB}}。</strong>\n儲唔到你遞交嘅文字。",
        "readonlywarning": "<strong>警告:資料庫已經鎖住咗去做定期保養。而家你唔可以儲起你嘅編輯。</strong>\n\n你可以儲啲文字落一份文字檔先。\n\n管理員嘅解釋: $1",
        "protectedpagewarning": "'''警告:呢版已經受到保護,只有管理員權限嘅用戶先至可以改。'''\n最近嘅日誌響下面提供以便參考:",
        "semiprotectedpagewarning": "'''注意:'''呢一頁已經保護咗,只有已經註冊嘅用戶先至可以改。\n最近嘅日誌響下面提供以便參考:",
-       "cascadeprotectedwarning": "'''è­¦å\91\8aï¼\9a'''å\91¢ä¸\80é \81å·²ç¶\93ä¿\9dè­·å\92\97ï¼\8cå\8fªæ\9c\89管理員權限嘅用戶先至可以改,因為佢係響以下連串保護嘅{{PLURAL:$1|一|幾}}頁度包含咗:",
+       "cascadeprotectedwarning": "'''è­¦å\91\8aï¼\9a'''å\91¢ä¸\80é \81å·²ç¶\93ä¿\9dè­·å\92\97ï¼\8cå\87\88å¾\97管理員權限嘅用戶先至可以改,因為佢係響以下連串保護嘅{{PLURAL:$1|一|幾}}頁度包含咗:",
        "titleprotectedwarning": "'''警告:呢一版已經保護咗,需要一啲[[Special:ListGroupRights|指定權限]]先至可以開到。'''\n最近嘅日誌響下面提供以便參考:",
        "templatesused": "呢版用嘅{{PLURAL:$1|模}}:",
        "templatesusedpreview": "呢一次預覽裏面,用咗下面呢啲{{PLURAL:$1|模|模}}:",
        "postedit-confirmation-saved": "呢版經已儲存咗。",
        "edit-already-exists": "唔可以開一新版。\n佢已經存在。",
        "defaultmessagetext": "預設訊息文字",
+       "content-failed-to-parse": "從$1模型解析到$2目錄時肥佬咗。原因:$3。",
        "invalid-content-data": "無效嘅內容資料",
        "content-not-allowed-here": "「$1」唔可以輸入[[$2]]。",
        "editwarning-warning": "離開爾一版會令到閣下嘅修改唔見咗。\n閣下可以喺喜好設定嘅\"{{int:prefs-editing}}\"小節度停用爾個警告。",
        "editpage-notsupportedcontentformat-title": "唔支持爾種內容格式。",
+       "editpage-notsupportedcontentformat-text": "指定嘅目錄類$1同$2唔兼容",
        "content-model-wikitext": "維基文字",
        "content-model-text": "純文字",
        "content-model-javascript": "JavaScript程式語言",
        "parser-template-loop-warning": "已偵測迴模: [[$1]]",
        "parser-template-recursion-depth-warning": "迴模深度限制超過咗 ($1)",
        "language-converter-depth-warning": "字體變換器深度限制超過咗 ($1)",
+       "node-count-exceeded-category": "有頁面超出咗指定數",
+       "node-count-exceeded-category-desc": "頁數超過最大限制,快啲返去改過。",
+       "node-count-exceeded-warning": "頁面超出指定數",
        "undo-success": "呢個編輯可以取消。請檢查一下個差異去確認呢個係你要去做嘅,跟住儲存下面嘅更改去完成編輯。",
        "undo-failure": "呢個編輯唔能夠取消,由於同途中嘅編輯有衝突。",
        "undo-norev": "呢個編輯唔能夠取消,由於佢唔存在或者刪除咗。",
        "history-feed-description": "響哩個wiki嘅哩一頁嘅修訂歷史",
        "history-feed-item-nocomment": "$1 響 $2",
        "history-feed-empty": "要求嘅頁面並唔存在。\n佢可能響哩個 wiki 度刪除咗或者改咗名。\n試吓[[Special:Search|響哩個wiki度搵]]有關新頁面嘅資料。",
+       "history-edit-tags": "編輯已經揀咗嘅分頁",
        "rev-deleted-comment": "(編輯摘要已經移除咗)",
        "rev-deleted-user": "(用戶名已經移除咗)",
        "rev-deleted-event": "(日誌詳情已經移除咗)",
        "rev-deleted-user-contribs": "[用戶名或IP地址拎走咗 - 響貢獻度隱藏咗編輯]",
        "rev-deleted-text-permission": "呢頁嘅修訂已經被'''洗咗'''。\n喺[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 刪除日誌]裏面可以搵到更詳細嘅資料。",
+       "rev-suppressed-text-permission": "呢頁嘅修訂已經'''廢止咗'''。\n你可以去睇吓佢;\n喺[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 廢止日誌]裏面可以搵到更詳細嘅資料。",
        "rev-deleted-text-unhide": "呢頁嘅修訂已經被'''洗咗'''。\n喺[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 刪除日誌]裏面可以搵到更詳細嘅資料。\n如果你想繼續嘅話,可以仍然[$1 睇番呢次修訂]。",
        "rev-suppressed-text-unhide": "呢頁嘅修訂已經被'''廢止咗'''。\n喺[{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} 廢止日誌]裏面可以搵到更詳細嘅資料。\n如果你想繼續嘅話,可以仍然[$1 睇番呢次修訂]。",
        "rev-deleted-text-view": "呢頁嘅修訂已經'''洗咗'''。\n你可以去睇吓佢;\n喺[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]裏面可以搵到更詳細嘅資料。",
        "rev-showdeleted": "顯示",
        "revisiondelete": "刪除/反刪除修訂",
        "revdelete-nooldid-title": "無效嘅目標修訂",
-       "revdelete-nooldid-text": "講清用邊個修訂去做呢樣嘢、\n所指定嘅修訂唔存在,或者你試緊去隱藏現時嘅修訂。",
+       "revdelete-nooldid-text": "講清用邊個修訂去做呢樣嘢、所指定嘅修訂唔存在或你試緊去隱藏現時嘅修訂。",
        "revdelete-no-file": "指定嘅檔案未存在。",
        "revdelete-show-file-confirm": "你係咪真係想去睇響$2 $3刪咗 \"$1\" 嘅檔案修訂?",
        "revdelete-show-file-submit": "係",
        "prefs-diffs": "差異",
        "prefs-help-prefershttps": "呢項喜好設定會喺你下次簽到先至開始生效。",
        "prefswarning-warning": "你改嘅喜好設定改動重未記低。\n如果你未撳「$1」就走咗,你嘅喜好設定唔會有更新。",
+       "prefs-tabs-navigation-hint": "貼士:可以用鍵盤嘅←或→掣睇一覽內嘅分頁",
        "email-address-validity-valid": "電郵地址睇嚟有效",
        "email-address-validity-invalid": "請打一個有效嘅電郵地址",
        "userrights": "用戶權限管理",
        "userrights-notallowed": "你無權限去加減用戶權限。",
        "userrights-changeable-col": "你可以改嘅組",
        "userrights-unchangeable-col": "你唔可以改嘅組",
+       "userrights-removed-self": "移走自身權限成功,但你冇乜可能入到呢頁。",
        "group": "組:",
        "group-user": "用戶",
        "group-autoconfirmed": "自動確認用戶",
        "right-editusercssjs": "編輯其他用戶嘅CSS同埋JavaScript檔",
        "right-editusercss": "編輯其他用戶嘅CSS檔",
        "right-edituserjs": "編輯其他用戶嘅JavaScript檔",
+       "right-editmyusercss": "編輯戶口嘅CSS文件",
+       "right-editmyuserjs": "編輯戶口嘅JavaScript文件",
+       "right-viewmywatchlist": "睇你自己嘅監視一覽",
+       "right-viewmyprivateinfo": "睇下個人信息(例如電郵或真名)",
+       "right-editmyprivateinfo": "修改個人信息(例如電郵或真名)",
+       "right-editmyoptions": "設定個人參數",
        "right-rollback": "快速反轉上位用戶對某一版嘅編輯",
        "right-markbotedits": "標示反轉編輯做機械人編輯",
        "right-noratelimit": "唔受利用率限制影響",
        "right-siteadmin": "鎖同解鎖資料庫",
        "right-override-export-depth": "倒出包含有五層深連版嘅頁面",
        "right-sendemail": "寄電郵畀其他用戶",
+       "right-passwordreset": "檢查密碼/重設電郵",
+       "right-managechangetags": "從數據庫度開或刪走[[Special:Tags|tags]]",
        "newuserlogpage": "使用者開戶記錄",
        "newuserlogpagetext": "呢個係一個使用者開戶嘅日誌",
        "rightslog": "用戶權限日誌",
        "action-createpage": "開版",
        "action-createtalk": "開討論版",
        "action-createaccount": "開呢個用戶戶口",
+       "action-history": "睇呢頁嘅歷史",
        "action-minoredit": "標示呢個編輯做細嘅",
        "action-move": "搬呢版",
        "action-move-subpages": "搬呢版同埋佢嘅細頁",
        "action-move-rootuserpages": "搬根用戶版",
+       "action-move-categorypages": "搬類頁",
        "action-movefile": "搬呢個檔案",
        "action-upload": "上載呢個檔案",
        "action-reupload": "覆蓋呢個現有嘅檔案",
        "action-viewmywatchlist": "睇監視清單",
        "action-viewmyprivateinfo": "睇你嘅私人資料",
        "action-editmyprivateinfo": "改你嘅私人資料",
+       "action-managechangetags": "從數據庫開或刪走啲符",
        "nchanges": "$1次更改",
        "enhancedrc-since-last-visit": "{{PLURAL:$1|你上次嚟之後}}有 $1 個",
        "enhancedrc-history": "歷史",
        "uploaddisabledtext": "檔案上載已經停用。",
        "php-uploaddisabledtext": "PHP 檔案上載已經停用。請檢查 file_uploads 設定。",
        "uploadscripted": "呢個檔案包含可能會誤被瀏覽器解釋執行嘅 HTML 或 script 代碼。",
+       "uploadscriptednamespace": "呢個SVG文件可能有“$1”嘅非法字詞響度",
+       "uploadinvalidxml": "分析唔到已經上傳咗嘅XML文件",
        "uploadvirus": "呢個檔案有病毒!\n詳情:$1",
        "uploadjava": "呢個係個ZIP檔案包括Java .class檔案。\n因為保安問題,上傳Java檔案係禁止左嘅。",
        "upload-source": "來源檔案",
        "upload-misc-error-text": "響上載時發生咗未知嘅錯誤。請確認輸入咗嘅URL係可以訪問嘅,之後再試多一次。如果重有問題嘅話,請聯絡一位[[Special:ListUsers/sysop|管理員]]。",
        "upload-too-many-redirects": "個URL有太多跳轉",
        "upload-http-error": "一個HTTP錯誤發生咗: $1",
+       "upload-copy-upload-invalid-domain": "從嗰個域名度冇複製上傳功能",
+       "backend-fail-backup": "檔案 \"$1\" 唔備份得。",
        "backend-fail-notexists": "檔案$1唔存在。",
+       "backend-fail-invalidpath": "\"$1\"係冇效嘅儲存命令",
        "backend-fail-delete": "刪唔到檔案「$1」。",
+       "backend-fail-describe": "改唔到$1文件嘅數據",
        "backend-fail-alreadyexists": "檔案「$1」已經喺度。",
        "backend-fail-store": "檔案「$1」存唔到去「$2」。",
        "backend-fail-copy": "檔案「$1」抄唔到去「$2」。",
        "uploadstash-badtoken": "進行呢個動作唔成功,或者你嘅編輯資訊已經過咗期。再試吓喇。",
        "uploadstash-errclear": "清除檔案唔成功。",
        "uploadstash-refresh": "更新檔案清單",
+       "invalid-chunk-offset": "非法偏移塊",
        "img-auth-accessdenied": "拒絕通行",
        "img-auth-nopathinfo": "PATH_INFO唔見咗。\n你嘅伺服器重未設定呢個資料。\n佢可能係CGI為本,唔支援img_auth。\n睇吓 https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization 。",
        "img-auth-notindir": "所請求嘅路徑唔響個已經設定咗嘅上載目錄。",
        "randomincategory-nopages": "[[:Category:$1|$1]]類入面無嘢。",
        "randomincategory-category": "類:",
        "randomincategory-legend": "類入面是但一版",
+       "randomincategory-submit": "搵",
        "randomredirect": "隨便彈",
        "randomredirect-nopages": "響 \"$1\" 空間名度冇一個彈去版。",
        "statistics": "統計",
        "trackingcategories": "追蹤類",
        "trackingcategories-msg": "追蹤類",
        "trackingcategories-name": "訊息名",
+       "post-expand-template-inclusion-category-desc": "由於呢篇頁面嘥士喺擴展之前,已經超出咗<code>$wgMaxArticleSize</code>限制,所以好多模都擴展唔到。",
        "trackingcategories-nodesc": "冇解說資料",
        "trackingcategories-disabled": "類停用咗",
        "mailnologin": "冇傳送地址",
        "delete-toobig": "呢一版有一個好大量嘅編輯歷史,過咗$1次修訂。刪除呢類版嘅動作已經限制咗,以防止響{{SITENAME}}嘅意外擾亂。",
        "delete-warning-toobig": "呢一版有一個好大量嘅編輯歷史,過咗$1次修訂。刪除佢可能會擾亂{{SITENAME}}嘅資料庫操作;響繼續嗰陣請小心。",
        "deleteprotected": "你唔可以刪呢版,因為佢畀人保護咗。",
+       "deleting-backlinks-warning": "'''警告:'''你所鏈到或轉到嘅[[Special:WhatLinksHere/{{FULLPAGENAME}}|其它頁面]]已經俾人話刪。",
        "rollback": "反轉修改",
        "rollbacklink": "反轉",
        "rollbacklinkcount": "反轉 $1 次修改",
+       "rollbacklinkcount-morethan": "反轉超過$1次嘅{{PLURAL:$1|edit|修改}}",
        "rollbackfailed": "反轉唔到",
        "cantrollback": "反轉唔到;上一位貢獻者係唯一修改過呢版嘅人。",
        "alreadyrolled": "無法反轉[[User:$2|$2]]([[User talk:$2|留言]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])對[[:$1]]嘅最後編輯;有人已經修改過或者反轉咗呢個頁面。\n\n上次對呢版嘅編輯係由[[User:$3|$3]]([[User talk:$3|留言]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])做嘅。",
        "rollback-success": "已經反轉由$1所寫嘅編輯;恢復到$2嘅最後修訂。",
        "sessionfailure-title": "會話失敗",
        "sessionfailure": "你嘅登入會話 (session) 好似有啲問題;\n為咗防止會話劫持,呢個操作已經取消。\n請返去之前嗰版,重新載入嗰版然後再試。",
+       "changecontentmodel": "喺頁面內改目錄類",
+       "changecontentmodel-legend": "改目錄類",
+       "changecontentmodel-title-label": "版題",
+       "changecontentmodel-model-label": "開新嘅目錄類",
+       "changecontentmodel-reason-label": "原因:",
+       "changecontentmodel-success-title": "目錄類已經改咗",
+       "changecontentmodel-success-text": "[[:$1]]目錄類已經改變咗",
+       "changecontentmodel-cannot-convert": "唔可以喺[[:$1]]嘅目錄轉成$2嘅類。",
+       "logentry-contentmodel-change-revertlink": "反轉",
+       "logentry-contentmodel-change-revert": "反轉",
        "protectlogpage": "保護日誌",
        "protectlogtext": "下面係一個保護同埋解除保護頁面改動嘅一覽表。\n睇吓[[Special:ProtectedPages|保護頁面一覽]]去搵而家鎖咗嘅頁。",
        "protectedarticle": "已經保護 \"[[$1]]\"",
        "prot_1movedto2": "[[$1]]搬到去[[$2]]",
        "protect-badnamespace-title": "保護唔到嘅空間名",
        "protect-badnamespace-text": "呢個空間名嘅版面保護唔到。",
+       "protect-norestrictiontypes-text": "呢頁因冇乜限制類響度而唔可以保護。",
        "protect-norestrictiontypes-title": "保護唔到嘅頁",
        "protect-legend": "確認保護",
        "protectcomment": "原因:",
        "databasenotlocked": "資料庫而家冇鎖到。",
        "move-page": "搬$1",
        "move-page-legend": "搬頁",
-       "movepagetext": "用下面個表改版名,搬埋佢嘅歷史。\n舊標題會變做跳轉。\n你可以自動噉更新指到原先標題嘅跳轉。\n如果你揀咗唔去做嘅話,請務必要檢查吓有冇[[Special:DoubleRedirects|雙重跳轉]]或者[[Special:BrokenRedirects|死跳轉]](嘅情況發生)。\n你有責任確保啲連結依然指去佢哋應該指去嘅地方。\n\n注意如果已經有一個同個新名同名嘅頁,噉呢個頁係搬'''唔到'''嘅,除非嗰個同名嘅頁係空嘅或者佢係一個跳轉頁,兼且要之前冇編輯過(冇編輯歷史)先得。噉即係講萬一你搞錯咗,你可以將呢個頁改返去佢改之前噉,你唔可以覆蓋一個現有嘅頁。\n\n'''警告!'''\n噉樣對於一個好多人經過嘅頁面嚟講可能係一個好大嘅同埋出人意表嘅修改;請你喺行動之前確認你清楚噉做嘅後果。",
+       "movepagetext": "用下面個表改版名,搬埋佢嘅歷史。\n舊標題會變做跳轉。\n你可以自動噉更新指到原先標題嘅跳轉。\n如果你揀咗唔去做嘅話,請務必要檢查吓有冇[[Special:DoubleRedirects|雙重跳轉]]或者[[Special:BrokenRedirects|死跳轉]](嘅情況發生)。\n你有責任確保啲連結依然指去佢哋應該指去嘅地方。\n\n注意如果已經有一個同個新名同名嘅頁,噉呢個頁係搬'''唔到'''嘅,除非嗰個同名嘅頁係空嘅或者佢係一個跳轉頁,兼且要之前冇編輯過(冇編輯歷史)先得。噉即係講萬一你搞錯咗,你可以將呢個頁改返去佢改之前噉,你唔可以覆蓋一個現有嘅頁。\n\n<strong>警告!</strong>\n噉樣對於一個好多人經過嘅頁面嚟講可能係一個好大嘅同埋出人意表嘅修改;請你喺行動之前確認你清楚噉做嘅後果。",
        "movepagetext-noredirectfixer": "用下面個表改版名,搬埋佢嘅歷史。\n舊標題會變做跳轉。\n請肯定檢查清楚[[Special:DoubleRedirects|雙重]]或者[[Special:BrokenRedirects|死跳轉]]。\n你有責任確保啲連結依然指去佢哋應該指去嘅地方。\n\n注意如果已經有一個同個新名同名嘅頁,噉呢個頁係搬'''唔到'''嘅,除非嗰個同名嘅頁係空嘅或者佢係一個跳轉頁,兼且要之前冇編輯過(冇編輯歷史)先得。噉即係講萬一你搞錯咗,你可以將呢個頁改返去佢改之前噉,你唔可以覆蓋一個現有嘅頁。\n\n'''警告!'''\n噉樣對於一個好多人經過嘅頁面嚟講可能係一個好大嘅同埋出人意表嘅修改;請你喺行動之前確認你清楚噉做嘅後果。",
        "movepagetalktext": "相應嘅討論頁會連同佢一齊自動搬過去,'''除非''':\n*新嘅頁面名下面已經有咗一個非空嘅討論頁,又或者\n*你唔剔下面個框。\n\n喺呢啲情況下,需要嘅話你唯有手動搬同合併個頁。",
        "movearticle": "搬頁:",
        "import-interwiki-history": "複製呢一頁所有嘅歷史修訂",
        "import-interwiki-templates": "包含全部嘅模",
        "import-interwiki-submit": "倒入",
+       "import-mapping-default": "輸入默認位置",
        "import-upload-filename": "檔名:",
        "import-comment": "註解:",
        "importtext": "請由原 wiki 嘅[[Special:Export|匯出工具]]匯出成檔案。\n儲存喺你部電腦度,然後再上載到呢度。",
        "pageinfo-protect-cascading-yes": "係",
        "pageinfo-protect-cascading-from": "保護引申來源",
        "pageinfo-category-info": "類資料",
+       "pageinfo-category-total": "成員總數",
        "pageinfo-category-pages": "頁數",
        "pageinfo-category-subcats": "子類數",
        "pageinfo-category-files": "檔案數",
        "friday-at": "$1 禮拜五",
        "saturday-at": "$1 禮拜六",
        "sunday-at": "$1 禮拜日",
+       "yesterday-at": "尋日喺$1",
        "bad_image_list": "請根據下面嘅格式去寫:\n\n只有列示項目(以 * 開頭嘅項目)會考慮。第一個連結一定要連去幅壞檔度。\n之後響同一行嘅連結會考慮做例外,即係個檔可以響邊版度同時顯示。",
        "variantname-zh-hans": "簡體",
        "variantname-zh-hant": "繁體",
        "exif-gpsareainformation": "GPS 地區名",
        "exif-gpsdatestamp": "GPS 日期",
        "exif-gpsdifferential": "GPS 差動修正",
+       "exif-jpegfilecomment": "JPEG文件註",
+       "exif-keywords": "關鍵字",
+       "exif-countrydest": "顯示國家",
+       "exif-countrycodedest": "顯示國家地區碼",
+       "exif-provinceorstatedest": "顯示省份或州份或領域地區",
+       "exif-citydest": "顯示城市",
        "exif-objectname": "短標題",
+       "exif-specialinstructions": "特殊介紹",
        "exif-headline": "標題",
        "exif-source": "來源",
+       "exif-contact": "聯繫信息",
        "exif-languagecode": "語言",
        "exif-iimcategory": "類",
        "exif-label": "標籤",
        "exif-copyrighted": "版權狀態",
        "exif-copyrightowner": "版權人",
+       "exif-pngfilecomment": "PNG文件註",
        "exif-disclaimer": "免責聲明",
+       "exif-giffilecomment": "GIF文件註",
+       "exif-intellectualgenre": "項類",
+       "exif-subjectnewscode": "項碼",
        "exif-compression-1": "未壓過",
        "exif-unknowndate": "未知日期",
        "exif-orientation-1": "正常",
        "exif-dc-date": "日子",
        "exif-dc-publisher": "發佈者",
        "exif-dc-rights": "權",
+       "exif-rating-rejected": "拒絕咗",
+       "exif-isospeedratings-overflow": "超出咗65535嘅限制",
        "namespacesall": "全部",
        "monthsall": "全部",
        "confirmemail": "確認電郵地址",
index fa1931a..b6417ac 100644 (file)
        "changecontentmodel-success-title": "内容模型已更改",
        "changecontentmodel-success-text": "[[:$1]]的内容类型被更改。",
        "changecontentmodel-cannot-convert": "[[:$1]]上的内容不能转换为$2的一个类型。",
-       "changecontentmodel-title-cantexist": "在$1尚不能有一个页面。",
        "changecontentmodel-nodirectediting": "$1内容模型不支持直接编辑",
        "log-name-contentmodel": "内容模型更改日志",
        "log-description-contentmodel": "与一个页面的内容模型相关的活动",
index bc9b314..311eb3c 100644 (file)
        "readonlywarning": "<strong>警告:資料庫已被鎖定以進行維護,因此無法儲存您目前所做的編輯動作。</strong>\n您可先複製您的文字並貼上到文字檔案中儲存,稍後再儲存您編輯。\n\n鎖定資料庫的管理員有以下說明:$1",
        "protectedpagewarning": "<strong>警告:本頁已經被保護,只有擁有管理員權限的使用者才可編輯。</strong>\n以下提供最近的日誌以便參考:",
        "semiprotectedpagewarning": "<strong>注意:</strong>本頁已經被保護,只有已註冊的使用者才可編輯。\n以下提供最近的日誌以便參考:",
-       "cascadeprotectedwarning": "<strong>警告:</strong>本頁已經被保護,只有擁有管理員權限的使用者才可編輯,此頁面被下列頁面引用因此連鎖保護:",
+       "cascadeprotectedwarning": "<strong>警告:</strong>本頁已經被保護,只有擁有管理員權限的使用者才可編輯,此頁面被下列{{PLURAL:$1|頁面|頁面}}引用因此連鎖保護:",
        "titleprotectedwarning": "<strong>警告:本頁面已被保護,需要 [[Special:ListGroupRights|特殊權限]] 方可建立。</strong>\n以下提供最近的日誌以便參考:",
        "templatesused": "此頁面使用了以下{{PLURAL:$1|模板}}:",
        "templatesusedpreview": "此預覽使用了以下{{PLURAL:$1|模板}}:",
        "undo-summary-username-hidden": "還原隱藏使用者的修訂 $1",
        "cantcreateaccounttitle": "無法建立帳號",
        "cantcreateaccount-text": "來自這個 IP 位址 (<strong>$1</strong>) 建立的帳號已經被 [[User:$3|$3]] 封鎖。\n\n $3 封鎖的原因是 <em>$2</em>",
-       "cantcreateaccount-range-text": "來自 IP 位址範圍 '''$1''',包含您的 IP 位 ('''$4''') 所建立的帳號已經被 [[User:$3|$3]] 封鎖。\n\n $3 封鎖的原因是 ''$2''",
+       "cantcreateaccount-range-text": "來自 IP 位址範圍 '''$1''',包含您的 IP 位 ('''$4''') 所建立的帳號已經被 [[User:$3|$3]] 封鎖。\n\n $3 封鎖的原因是 ''$2''",
        "viewpagelogs": "檢視此頁面的日誌",
        "nohistory": "此頁沒有任何的修訂記錄。",
        "currentrev": "最新修訂",
        "changecontentmodel-success-title": "已變更內容模型",
        "changecontentmodel-success-text": "已變更 [[:$1]] 的內容類型。",
        "changecontentmodel-cannot-convert": "[[:$1]] 的內容無法轉換為 $2 類型。",
-       "changecontentmodel-title-cantexist": "無法於 $1 建立頁面。",
        "changecontentmodel-nodirectediting": "$1 的內容模型不支援直接編輯",
        "log-name-contentmodel": "內容模型變更日誌",
        "log-description-contentmodel": "與頁面內容模型相關的事件",
        "htmlform-cloner-create": "新增更多",
        "htmlform-cloner-delete": "移除",
        "htmlform-cloner-required": "至少必須填寫一筆資料。",
+       "htmlform-title-badnamespace": "[[:$1]] 不在 \"{{ns:$2}}\" 命名空間中。",
+       "htmlform-title-not-creatable": "\"$1\" 並非可用來建立頁面的標題",
+       "htmlform-title-not-exists": "[[:$1]] 並不存在。",
+       "htmlform-user-not-exists": "<strong>$1</strong> 並不存在。",
+       "htmlform-user-not-valid": "<strong>$1</strong> 不是有效的使用者名稱。",
        "sqlite-has-fts": "$1 且支援全文搜索",
        "sqlite-no-fts": "$1 且不支援全文搜索",
        "logentry-delete-delete": "$1 刪除頁面 $3",
index f5ade22..f9ee1be 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Southern Balochi (بÙ\84Ù\88Ú\86Û\8c Ù\85کراÙ\86Û\8c)
+/** Southern Balochi (جÙ\87Ù\84سرÛ\8c Ø¨Ù\84Ù\88Ú\86Û\8c)
  *
  * To improve a translation please visit https://translatewiki.net
  *
index cb52c1a..0c9fa26 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Western Balochi (بÙ\84Ù\88Ú\86Û\8c Ø±Ø®Ø´Ø§Ù\86Û\8c)
+/** Western Balochi (رÙ\88Ú\86 Ú©Ù¾ØªÛ\8cÙ\86 Ø¨Ù\84Ù\88Ú\86Û\8c)
  *
  * To improve a translation please visit https://translatewiki.net
  *
diff --git a/languages/messages/MessagesLuz.php b/languages/messages/MessagesLuz.php
new file mode 100644 (file)
index 0000000..b50b83c
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+/** Southern Luri (لئری جئنوٙڤی)
+ *
+ * To improve a translation please visit https://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ */
+
+$fallback = 'lrc, fa';
+$rtl = true;
+
index 7205e6c..865ebb3 100644 (file)
@@ -32,6 +32,8 @@
  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
  */
 
+$linkTrail = '/^([a-zA-ZĀāČčĒēĢģĪīĶķĻļŅņŠšŪūŽž]+)(.*)$/sDu';
+
 $namespaceNames = array(
        NS_MEDIA            => 'Media',
        NS_SPECIAL          => 'Special',
index 4bb8369..c901240 100644 (file)
@@ -37,7 +37,6 @@
  * @alternateClassName jqXHR
  */
 
-
 /**
  * @class QUnit
  * @source <http://api.qunitjs.com/>
index 7b05cb7..d655965 100644 (file)
@@ -89,11 +89,10 @@ class CLIParser extends Maintenance {
         * @return string Wikitext
         */
        protected function Wikitext() {
-
                $php_stdin = 'php://stdin';
                $input_file = $this->getArg( 0, $php_stdin );
 
-               if ( $input_file === $php_stdin ) {
+               if ( $input_file === $php_stdin && !$this->mQuiet ) {
                        $ctrl = wfIsWindows() ? 'CTRL+Z' : 'CTRL+D';
                        $this->error( basename( __FILE__ )
                                . ": warning: reading wikitext from STDIN. Press $ctrl to parse.\n" );
index 0fc8ade..46b44a6 100644 (file)
@@ -256,6 +256,35 @@ return array(
        'jquery.hoverIntent' => array(
                'scripts' => 'resources/lib/jquery/jquery.hoverIntent.js',
        ),
+       'jquery.i18n' => array(
+               'scripts' => array(
+                       'resources/lib/jquery.i18n/src/jquery.i18n.js',
+                       'resources/lib/jquery.i18n/src/jquery.i18n.messagestore.js',
+                       'resources/lib/jquery.i18n/src/jquery.i18n.parser.js',
+                       'resources/lib/jquery.i18n/src/jquery.i18n.emitter.js',
+                       'resources/lib/jquery.i18n/src/jquery.i18n.emitter.bidi.js',
+                       'resources/lib/jquery.i18n/src/jquery.i18n.language.js',
+                       'resources/lib/jquery.i18n/src/jquery.i18n.fallbacks.js',
+               ),
+               'dependencies' => 'mediawiki.libs.pluralruleparser',
+               'languageScripts' => array(
+                       'bs' => 'resources/lib/jquery.i18n/src/languages/bs.js',
+                       'dsb' => 'resources/lib/jquery.i18n/src/languages/dsb.js',
+                       'fi' => 'resources/lib/jquery.i18n/src/languages/fi.js',
+                       'ga' => 'resources/lib/jquery.i18n/src/languages/ga.js',
+                       'he' => 'resources/lib/jquery.i18n/src/languages/he.js',
+                       'hsb' => 'resources/lib/jquery.i18n/src/languages/hsb.js',
+                       'hu' => 'resources/lib/jquery.i18n/src/languages/hu.js',
+                       'hy' => 'resources/lib/jquery.i18n/src/languages/hy.js',
+                       'la' => 'resources/lib/jquery.i18n/src/languages/la.js',
+                       'ml' => 'resources/lib/jquery.i18n/src/languages/ml.js',
+                       'os' => 'resources/lib/jquery.i18n/src/languages/os.js',
+                       'ru' => 'resources/lib/jquery.i18n/src/languages/ru.js',
+                       'sl' => 'resources/lib/jquery.i18n/src/languages/sl.js',
+                       'uk' => 'resources/lib/jquery.i18n/src/languages/uk.js',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
        'jquery.localize' => array(
                'scripts' => 'resources/src/jquery/jquery.localize.js',
        ),
@@ -704,7 +733,10 @@ return array(
        /* Moment.js */
 
        'moment' => array(
-               'scripts' => 'resources/lib/moment/moment.js',
+               'scripts' => array(
+                       'resources/lib/moment/moment.js',
+                       'resources/src/moment-local-dmy.js',
+               ),
                'languageScripts' => array(
                        'af' => 'resources/lib/moment/locale/af.js',
                        'ar' => 'resources/lib/moment/locale/ar.js',
@@ -1513,7 +1545,6 @@ return array(
                'position' => 'top',
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.search.js',
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.search.css',
-               'dependencies' => 'mediawiki.widgets',
                'messages' => array(
                        'powersearch-togglelabel',
                        'powersearch-toggleall',
@@ -1624,6 +1655,10 @@ return array(
        'mediawiki.special.version' => array(
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.version.css',
        ),
+       'mediawiki.special.watchlist' => array(
+               'position' => 'top',
+               'styles' => 'resources/src/mediawiki.special/mediawiki.special.watchlist.css',
+       ),
 
        /* MediaWiki Installer */
 
@@ -1755,6 +1790,8 @@ return array(
        'mediawiki.widgets' => array(
                'scripts' => array(
                        'resources/src/mediawiki.widgets/mw.widgets.js',
+                       'resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js',
+                       'resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.NamespaceInputWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.TitleOptionWidget.js',
@@ -1762,6 +1799,8 @@ return array(
                ),
                'skinStyles' => array(
                        'default' => array(
+                               'resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.less',
+                               'resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.less',
                                'resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.css',
                        ),
                ),
@@ -1770,6 +1809,7 @@ return array(
                        'jquery.autoEllipsis',
                        'mediawiki.Title',
                        'mediawiki.api',
+                       'moment',
                        'oojs-ui',
                ),
                'messages' => array(
index 8320b37..974db87 100644 (file)
@@ -27,11 +27,12 @@ if ( !defined( 'MEDIAWIKI' ) ) {
 // WARNING: OOjs-UI is NOT TESTED with older browsers and is likely to break
 // if loaded in browsers that don't support ES5
 return call_user_func( function () {
-       // Core default themes
-       $themes = array( 'default' => 'mediawiki' );
-       $themes += ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
-       $modules = array();
+       $themes = ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
+       // We only use the theme names for file names, and they are lowercase
+       $themes = array_map( 'strtolower', $themes );
+       $themes['default'] = 'mediawiki';
 
+       $modules = array();
        $modules['oojs-ui'] = array(
                'scripts' => array(
                        'resources/lib/oojs-ui/oojs-ui.js',
diff --git a/resources/lib/jquery.i18n/CREDITS b/resources/lib/jquery.i18n/CREDITS
new file mode 100644 (file)
index 0000000..3a4eb5e
--- /dev/null
@@ -0,0 +1,9 @@
+Credits
+=======
+
+Santhosh Thottingal
+Amir E. Aharoni
+Siebrand Mazeland
+Niklas Laxström
+Neil Kandalgaonkar
+David Chan
diff --git a/resources/lib/jquery.i18n/GPL-LICENSE b/resources/lib/jquery.i18n/GPL-LICENSE
new file mode 100644 (file)
index 0000000..019694a
--- /dev/null
@@ -0,0 +1,342 @@
+== GNU GENERAL PUBLIC LICENSE ==
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+=== Preamble ===
+
+The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and
+modification follow.
+
+== TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ==
+
+'''0.''' This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+'''1.''' You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+'''2.''' You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+       '''a)''' You must cause the modified files to carry prominent notices
+       stating that you changed the files and the date of any change.
+
+       '''b)''' You must cause any work that you distribute or publish, that in
+       whole or in part contains or is derived from the Program or any
+       part thereof, to be licensed as a whole at no charge to all third
+       parties under the terms of this License.
+
+       '''c)''' If the modified program normally reads commands interactively
+       when run, you must cause it, when started running for such
+       interactive use in the most ordinary way, to print or display an
+       announcement including an appropriate copyright notice and a
+       notice that there is no warranty (or else, saying that you provide
+       a warranty) and that users may redistribute the program under
+       these conditions, and telling the user how to view a copy of this
+       License.  (Exception: if the Program itself is interactive but
+       does not normally print such an announcement, your work based on
+       the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+'''3.''' You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+       '''a)''' Accompany it with the complete corresponding machine-readable
+       source code, which must be distributed under the terms of Sections
+       1 and 2 above on a medium customarily used for software interchange; or,
+
+       '''b)''' Accompany it with a written offer, valid for at least three
+       years, to give any third party, for a charge no more than your
+       cost of physically performing source distribution, a complete
+       machine-readable copy of the corresponding source code, to be
+       distributed under the terms of Sections 1 and 2 above on a medium
+       customarily used for software interchange; or,
+
+       '''c)''' Accompany it with the information you received as to the offer
+       to distribute corresponding source code.  (This alternative is
+       allowed only for noncommercial distribution and only if you
+       received the program in object code or executable form with such
+       an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+'''4.''' You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+'''5.''' You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+'''6.''' Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+'''7.''' If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+'''8.''' If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+'''9.''' The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+'''10.''' If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+=== NO WARRANTY ===
+
+'''11.''' BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+'''12.''' IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+       '''END OF TERMS AND CONDITIONS'''
+
+== How to Apply These Terms to Your New Programs ==
+
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+       <one line to give the program's name and a brief idea of what it does.>
+
+       Copyright (C) <year>  <name of author>
+
+       This program is free software; you can redistribute it and/or modify
+       it under the terms of the GNU General Public License as published by
+       the Free Software Foundation; either version 2 of the License, or
+       (at your option) any later version.
+
+       This program is distributed in the hope that it will be useful,
+       but WITHOUT ANY WARRANTY; without even the implied warranty of
+       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+       GNU General Public License for more details.
+
+       You should have received a copy of the GNU General Public License
+       along with this program; if not, write to the Free Software
+       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+       Gnomovision version 69, Copyright (C) year name of author
+       Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+       This is free software, and you are welcome to redistribute it
+       under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+       Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+       `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+       <signature of Ty Coon>, 1 April 1989
+
+       Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/resources/lib/jquery.i18n/MIT-LICENSE b/resources/lib/jquery.i18n/MIT-LICENSE
new file mode 100644 (file)
index 0000000..f3a03b7
--- /dev/null
@@ -0,0 +1,21 @@
+Copyright (c) 2012-2013 Santhosh Thottingal and other
+contributors. See CREDITS for a list.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/resources/lib/jquery.i18n/README.md b/resources/lib/jquery.i18n/README.md
new file mode 100644 (file)
index 0000000..da82c2b
--- /dev/null
@@ -0,0 +1,432 @@
+jQuery.i18n
+===========
+
+jQuery.i18n is a jQuery based Javascript internationalization library. It helps you to internationalize your web applications easily.
+
+This is a project by Wikimedia foundation's [Language Engineering team](http://wikimediafoundation.org/wiki/Language_Engineering_team) and used in some of the Wikimedia Foundation projects like Universal Language Selector.
+
+The jquery.i18n library uses a json based localization file format, "banana", which is used as the localization file format for  MediaWiki and other projects.
+
+Features
+========
+* Simple file format - JSON. Easily readable for humans and machines.
+* Author and metadata information is not lost anywhere. There are other file formats using comments to store this.
+* Uses MediaWiki convention for placeholders. Easily readable and proven convention. Example: ```There are $1 cars```
+* Supports plural conversion without using extra messages for all plural forms. Plural rule handling is done using CLDR. Covers a wide range of languages
+* Supports gender. By passing the gender value, you get correct sentences according to gender.
+* Supports grammar forms. jquery.i18n has a basic but extensible grammar conversion support
+* Fallback chains for all languages.
+* Data api- the message key. Example: ```<li data-i18n="message-key"></li>```.
+* Dynamic change of interface language without refreshing a webpage.
+* Nestable grammar, plural, gender support. These constructs can be nested to any arbitrary level for supporting sophisticated message localization
+* Message documentation through special language code ```qqq```
+* Extensible message parser to add or customize magic words in the messages. Example: ```{sitename}``` or ```[[link]]``
+
+
+Quick start
+-----------
+
+```bash
+git clone https://github.com/wikimedia/jquery.i18n.git
+cd jquery.i18n
+git submodule update --init
+```
+
+Testing
+-------
+
+```shell
+npm install
+```
+
+To run tests locally, run `npm test`, and this will run the tests.
+
+Message File Format
+===================
+
+The message files are json formatted. As a convention you can have a folder named i18n inside your source code. For each language or locale, have a file named like languagecode.json.
+
+Example:
+```
+App
+       |--src
+       |--doc
+       |--i18n
+               |--ar.json
+               |--de.json
+               |--en.json
+               |--he.json
+               |--hi.json
+               |--fr.json
+               |--qqq.json
+```
+
+A simple en.json file example is given below
+
+```json
+{
+       "@metadata": {
+               "authors": [
+                       "Alice",
+                       "David",
+                       "Santhosh"
+               ],
+               "last-updated": "2012-09-21",
+               "locale": "en",
+               "message-documentation": "qqq",
+               "AnotherMetadata": "AnotherMedatadataValue"
+       },
+       "appname-title": "Example Application",
+       "appname-sub-title": "An example application with jquery.i18n",
+       "appname-header-introduction": "Introduction",
+       "appname-about": "About this application",
+       "appname-footer": "Footer text"
+}
+```
+
+The json file should be a valid json. The ```@metadata``` holds all kind of data that are not messages. You can store author information, copyright, updated date or anything there.
+
+Messages are key value pairs. It is a good convention to prefix your appname to message keys to make the messages unique. It acts as the namespace for the message keys. It is also a good convention to have the message keys with ```-``` separated words, all in lower case.
+
+If you are curious to see some real jquery.i18n message file from other projects:
+
+- message files of MediaWiki https://github.com/wikimedia/mediawiki-core/tree/master/languages/i18n
+- message files from jquery.uls project https://github.com/wikimedia/jquery.uls/blob/master/i18n
+
+Single message file for all languages
+-------------------------------------
+There are some alternate message file format supported for different use cases. If your application is not big, and want all the translation in a single file, you can have it as shown in the below example:
+
+```json
+{
+       "@metadata": {
+               "authors": [
+                       "Alice",
+                       "David",
+                       "Santhosh"
+               ],
+               "last-updated": "2012-09-21",
+               "locale": "en",
+               "message-documentation": "qqq",
+               "AnotherMetadata": "AnotherMedatadataValue"
+       },
+       "en": {
+               "appname-title": "Example Application",
+               "appname-sub-title": "An example application with jquery.i18n",
+               "appname-header-introduction": "Introduction",
+               "appname-about": "About this application",
+               "appname-footer": "Footer text"
+               },
+       "ml": {
+               "appname-title": "അപ്ലിക്കേഷന്‍ ഉദാഹരണം",
+               "appname-sub-title": "jquery.i18n ഉപയോഗിച്ചുള്ള അപ്ലിക്കേഷന്‍ ഉദാഹരണം",
+               "appname-header-introduction": "ആമുഖം",
+               "appname-about": "ഈ അപ്ലിക്കേഷനെപ്പറ്റി",
+               "appname-footer": "അടിക്കുറിപ്പു്"
+       }
+}
+```
+
+Here the json file contains language code as key value and messagekey-message pairs as the value for all language pairs. You can choose this format or per-language file formats depending on your use case. Per-language files are more convenient for collaboration, version controlling, scalability, etc.
+
+In this approach, it is also possible to give a file name as the value of language code.
+
+```json
+{
+       "@metadata": {
+               "authors": [
+                       "Alice",
+                       "David",
+                       "Santhosh"
+               ],
+               "last-updated": "2012-09-21",
+               "locale": "en",
+               "message-documentation": "qqq",
+               "AnotherMetadata": "AnotherMedatadataValue"
+       },
+       "en": {
+               "appname-title": "Example Application",
+               "appname-sub-title": "An example application with jquery.i18n",
+               "appname-header-introduction": "Introduction",
+               "appname-about": "About this application",
+               "appname-footer": "Footer text"
+               },
+       "ml": "path/to/ml.json"
+}
+```
+
+Translation
+===========
+To translate the jquery.i18n application, depending on the expertise of the translator, there are multiple ways.
+
+* Editing the json files directly - Suitable for translators with technical background. Also suitable if your application is small and you want to work with only a small number of languages
+* Providing a translation interface along with your application: Suitable for proprietary or private applications with significant amount of translators
+* Using open source translation platforms like translatewiki.net. The MediaWiki and jquery.uls from previous examples use translatewiki.net for crowdsourced message translation. Translatewiki.net can update your code repo in regular intervals with updated translations. Highly recommended if your application is opensource and want localized to as many as languages possible with maximum number of translators.
+
+Usage
+=====
+
+## Switching locale
+
+While initializing the `jquery.i18n`, the locale for the page can be given using the `locale` option. For example
+
+```javascript
+$.i18n( {
+    locale: 'he' // Locale is Hebrew
+} );
+```
+
+In case locale option is not given, `jquery.i18n` plugin will use the language attribute given for the html tag. For example
+
+```html
+<html lang="he" dir="rtl">
+```
+
+In this case the locale will be he(Hebrew). If that `lang` attribute is also missing, it will try to use the locale specified by the browser.
+
+It is possible to switch to another locale after plugin is initialized. See below example:
+
+```javascript
+$.i18n({
+    locale: 'he' // Locale is Hebrew
+});
+$.i18n( 'message_hello' ); // This will give the Hebrew translation of message key `message_hello`.
+$.i18n().locale = 'ml'; // Now onwards locale is 'Malayalam'
+$.i18n( 'message_hello' ); // This will give the Malayalam translation of message key `message_hello`.
+```
+
+## Message Loading
+
+JSON formatted messages can be loaded to the plugin using multiple ways.
+
+### Dynamic loading using `load` method.
+
+Following example shows loading messages for two locales- localex, and localey. Here localex and localey are just examples. They should be valid IS0 639 language codes(eg: en, ml, hi, fr, ta etc)
+
+```javascript
+$.i18n().load( {
+       'localex' : {
+               'message-key1' : 'message1' // Message for localex.
+       },
+       'localey' : {
+               'message-key1' : 'message1'
+       }
+} );
+```
+
+If we want to load the messages for a specific locale, it can be done like this:
+
+```javascript
+$.i18n().load({
+    'message-hello': 'Hello World',
+    'message-welcome': 'Welcome'
+}, 'en');
+```
+
+Note the second argument for the `load` method. It should be a valid language code.
+
+It is also possible to refer messages from an external URL. See below example
+
+```javascript
+$.i18n().load( {
+       en: {
+               message_hello: 'Hello World',
+       message_welcome: 'Welcome'
+       },
+       hi: 'i18n/messages-hi.json', // Messages for Hindi
+       de: 'i18n/messages-de.json'
+} );
+```
+
+Messages for a locale can be also loaded in parts. Example
+
+```javascript
+$.i18n().load( {
+       en: {
+               message_hello: 'Hello World',
+       message_welcome: 'Welcome'
+       }
+} );
+
+$.i18n().load( {
+       // This does not remove the previous messages.
+       en: {
+               'message_header' : 'Header',
+               'message_footer' : 'Footer',
+               // This will overwrite message_welcome message
+               'message_welcome' : 'Welcome back'
+       }
+} );
+```
+
+Since it is desirable to render interface messages instantly and not after a delay of loading the message files from a server, make sure that the messages are present at client side before using jQuery.i18n.
+
+The library should expose an API to load an object containing key-value pair of messages. Example: ```$.i18n.load(data)```. This will return a ```jQuery.Promise```.
+
+jquery.i18n plugin
+=========================
+
+The jQuery plugin defines ```$.i18n()``` and ```$.fn.i18n()```
+
+```javascript
+$.i18n( 'message-key-sample1' );
+$.i18n( 'message-key-sample1' );
+$.i18n( 'Found $1 {{plural:$1|result|results}}', 10 ); // Message key itself is message text
+$.i18n( 'Showing $1 out of $2 {{plural:$2|result|results}}', 5,100 );
+$.i18n(' User X updated {{gender|his|her}} profile', 'male' );
+
+$( '#foo' ).i18n(); // to translate the element matching jquery selector based on data-i18n key
+```
+
+Data API
+--------
+
+It is possible to display localized messages without any custom JavaScript. For the HTML tags, add an attribute data-i18n with value as the message key. Example:
+```html
+<li data-i18n="message-key"></li>.
+```
+
+It is also possible to have the above li node with fallback text already in place.
+```html
+<li data-i18n="message-key">Fallback text</li>
+```
+
+The framework will place the localized message corresponding to message-key as the text value of the node. Similar to $('selector').i18n( ... ).
+This will not work for dynamically created elements.
+
+Note that if data-i18n contains html markup, that html will not be used as the element content, instead, the text version will be used. $.fn.i18n is always about replacing text of the element. If you want to change the html of the element, you may want to use: ```$(selector).html($.i18n(messagekey))```
+
+Examples
+========
+
+See http://thottingal.in/projects/js/jquery.i18n/demo/
+
+Message format
+==============
+
+## Placeholders
+
+Messages take parameters. They are represented by $1, $2, $3, … in the message texts, and replaced at run time. Typical parameter values are numbers (Example: "Delete 3 versions?"), or user names (Example: "Page last edited by $1"), page names, links, and so on, or sometimes other messages.
+
+```javascript
+var message = "Welcome, $1";
+$.i18n(message, 'Alice'); // This gives "Welcome, Alice"
+```
+
+
+## Plurals
+
+To make the syntax of sentence correct, plural forms are required. jquery.i18n support plural forms in the message using the syntax `{{PLURAL:$1|pluralform1|pluralform2|...}}`
+
+For example:
+
+```javascript
+var message = "Found $1 {{PLURAL:$1|result|results}}";
+$.i18n(message, 1); // This gives "Found 1 result"
+$.i18n(message, 4); // This gives "Found 4 results"
+```
+Note that {{PLURAL:...}} is not case sensitive. It can be {{plural:...}} too.
+
+In case of English, there are only 2 plural forms, but many languages use more than 2 plural forms. All the plural forms can be given in the above syntax, separated by pipe(|)
+
+## Gender
+Similar to plural, depending on gender of placeholders, mostly user names, the syntax changes dynamically. An example in English is "Alice changed her profile picture" and "Bob changed his profile picture". To support this {{GENDER...}} syntax can be used as show in example
+
+```javascript
+var message = "$1 changed {{GENDER:$2|his|her}} profile picture";
+$.i18n(message, 'Alice', 'female' ); // This gives "Alice changed her profile picture"
+$.i18n(message, 'Bob', 'male' ); // This gives "Bob changed his profile picture"
+```
+
+Note that {{GENDER:...}} is not case sensitive. It can be {{gender:...}} too.
+
+## Grammar
+
+
+```javascript
+$.i18n( { locale: 'fi' } );
+
+var message = "{{grammar:genitive|$1}}";
+
+$.i18n(message, 'talo' ); // This gives "talon"
+
+$.i18n().locale = 'hy'; // Switch to locale Armenian
+$.i18n(message, 'Մաունա'); // This gives "Մաունայի"
+```
+
+## Directionality-safe isolation
+
+To avoid BIDI corruption that looks like "(Foo_(Bar", which happens when a string is inserted into a context with the reverse directionality, you can use `{{bidi:…}}`. Directionality-neutral characters at the edge of the string can get wrongly interpreted by the BIDI algorithm. This would let you embed your substituted string into a new BIDI context, //e.g.//:
+
+   "`Shalom, {{bidi:$1}}, hi!`"
+
+The embedded context's directionality is determined by looking at the argument for `$1`, and then explicitly inserted into the Unicode text, ensuring correct rendering (because then the bidi algorithm "knows" the argument text is a separate context).
+
+
+Fallback
+========
+
+The plugin takes an option 'fallback' with the default value 'en'. The library reuses the fallback data available in MediaWiki for calculating the language fallbacks. Fallbacks are used when a message key is not found in a locale. Example fallbacks: sa->hi->en or tt->tt-cyrl->ru.
+
+See jquery.i18n.fallbacks.js in the source.
+
+Magic word support
+===================
+* For plural, gender and grammar support, MediaWiki template-like syntax - {{...}} will be used.
+* There will be a default implementation for all these in $.i18n.language['default']
+* The plural, gender and grammar methods in ```$.i18n.language[ 'default' ]``` can be overridden or extended in ```$.i18n.language['languageCode']```.
+* Language-specific rules about Gender and Grammar can be written in languages/langXYZ.js files
+* Plural forms will be dynamically calculated using the CLDR plural parser.
+
+Extending the parser
+--------------------
+Following example illustrates extending the parser to support more magic words
+
+```javascript
+$.extend( $.i18n.parser.emitter, {
+       // Handle SITENAME keywords
+       sitename: function () {
+               return 'Wikipedia';
+       },
+       // Handle LINK keywords
+       link: function ( nodes ) {
+               return '<a href="' + nodes[1] + '">' + nodes[0] + '</a>';
+       }
+} );
+```
+
+This will parse the message
+```javascript
+$.i18n( '{{link:{{SITENAME}}|http://en.wikipedia.org}}' );
+```
+
+to
+
+```html
+<a href="http://en.wikipedia.org">Wikipedia</a>
+```
+
+Message documentation
+=====================
+
+The message keys and messages won't give a enough context about the message being translated to the translator. Whenever a developer adds a new message, it is a usual practice to document the message to a file named qqq.json
+with same message key.
+
+Example qqq.json:
+```json
+{
+       "@metadata": {
+               "authors": [
+                       "Developer Name"
+               ]
+       },
+       "appname-title": "Application name. Transliteration is recommended",
+       "appname-sub-title": "Brief explanation of the application",
+       "appname-header-introduction": "Text for the introduction header",
+       "appname-about": "About this application text",
+       "appname-footer": "Footer text"
+}
+
+```
+
+In MediaWiki and its hundreds of extensions, message documentation is a strictly followed practice. There is a grunt task to check whether all messages are documented or not. See https://www.npmjs.org/package/grunt-banana-checker
diff --git a/resources/lib/jquery.i18n/package.json b/resources/lib/jquery.i18n/package.json
new file mode 100644 (file)
index 0000000..0dded29
--- /dev/null
@@ -0,0 +1,47 @@
+{
+  "name": "jquery.i18n",
+  "version": "1.0.3",
+  "description": "jQuery based internationalization library",
+  "homepage": "https://github.com/wikimedia/jquery.i18n",
+  "keywords": [
+    "internationalization",
+    "localization",
+    "i18n",
+    "jquery",
+    "l10n"
+  ],
+  "author": {
+    "name": "Santhosh Thottingal",
+    "email": "santhosh.thottingal@gmail.com"
+  },
+  "contributors": [
+    "Amir Aharoni <amir.aharoni@mail.huji.ac.il>",
+    "Niklas Laxström <nlaxstrom@wikimedia.org>",
+    "Neil Kandalgaonkar <neilk@brevity.org>",
+    "David Chan <david@troi.org>"
+  ],
+  "devDependencies": {
+    "qunit": "0.7.6",
+    "grunt": "0.4.5",
+    "grunt-cli": "0.1.13",
+    "grunt-contrib-jshint": "0.11.2",
+    "grunt-contrib-connect": "0.10.1",
+    "grunt-contrib-qunit": "0.7.0",
+    "grunt-contrib-watch": "0.6.1",
+    "grunt-jscs": "1.8.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/wikimedia/jquery.i18n.git"
+  },
+  "bugs": {
+      "url" : "http://github.com/wikimedia/jquery.i18n/issues"
+  },
+  "engine": {
+    "node": ">=0.8.x"
+  },
+  "license": "(MIT OR GPL-2.0)",
+  "scripts": {
+    "test": "grunt test --verbose"
+  }
+}
diff --git a/resources/lib/jquery.i18n/src/jquery.i18n.emitter.bidi.js b/resources/lib/jquery.i18n/src/jquery.i18n.emitter.bidi.js
new file mode 100644 (file)
index 0000000..3a5b625
--- /dev/null
@@ -0,0 +1,88 @@
+/**
+ * BIDI embedding support for jQuery.i18n
+ *
+ * Copyright (C) 2015, David Chan
+ *
+ * This code is dual licensed GPLv2 or later and MIT. You don't have to do
+ * anything special to choose one license or the other and you don't have to
+ * notify anyone which license you are using. You are free to use this code
+ * in commercial projects as long as the copyright header is left intact.
+ * See files GPL-LICENSE and MIT-LICENSE for details.
+ *
+ * @licence GNU General Public Licence 2.0 or later
+ * @licence MIT License
+ */
+
+( function ( $ ) {
+       'use strict';
+       var strongDirRegExp;
+
+       /**
+        * Matches the first strong directionality codepoint:
+        * - in group 1 if it is LTR
+        * - in group 2 if it is RTL
+        * Does not match if there is no strong directionality codepoint.
+        *
+        * Generated by UnicodeJS (see tools/strongDir) from the UCD; see
+        * https://git.wikimedia.org/summary/unicodejs.git .
+        */
+       strongDirRegExp = new RegExp(
+               '(?:' +
+                       '(' +
+                               '[\u0041-\u005a\u0061-\u007a\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02b8\u02bb-\u02c1\u02d0\u02d1\u02e0-\u02e4\u02ee\u0370-\u0373\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0482\u048a-\u052f\u0531-\u0556\u0559-\u055f\u0561-\u0587\u0589\u0903-\u0939\u093b\u093d-\u0940\u0949-\u094c\u094e-\u0950\u0958-\u0961\u0964-\u0980\u0982\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd-\u09c0\u09c7\u09c8\u09cb\u09cc\u09ce\u09d7\u09dc\u09dd\u09df-\u09e1\u09e6-\u09f1\u09f4-\u09fa\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3e-\u0a40\u0a59-\u0a5c\u0a5e\u0a66-\u0a6f\u0a72-\u0a74\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd-\u0ac0\u0ac9\u0acb\u0acc\u0ad0\u0ae0\u0ae1\u0ae6-\u0af0\u0af9\u0b02\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b3e\u0b40\u0b47\u0b48\u0b4b\u0b4c\u0b57\u0b5c\u0b5d\u0b5f-\u0b61\u0b66-\u0b77\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe\u0bbf\u0bc1\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcc\u0bd0\u0bd7\u0be6-\u0bf2\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c41-\u0c44\u0c58-\u0c5a\u0c60\u0c61\u0c66-\u0c6f\u0c7f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd-\u0cc4\u0cc6-\u0cc8\u0cca\u0ccb\u0cd5\u0cd6\u0cde\u0ce0\u0ce1\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d40\u0d46-\u0d48\u0d4a-\u0d4c\u0d4e\u0d57\u0d5f-\u0d61\u0d66-\u0d75\u0d79-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dcf-\u0dd1\u0dd8-\u0ddf\u0de6-\u0def\u0df2-\u0df4\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e4f-\u0e5b\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0ed0-\u0ed9\u0edc-\u0edf\u0f00-\u0f17\u0f1a-\u0f34\u0f36\u0f38\u0f3e-\u0f47\u0f49-\u0f6c\u0f7f\u0f85\u0f88-\u0f8c\u0fbe-\u0fc5\u0fc7-\u0fcc\u0fce-\u0fda\u1000-\u102c\u1031\u1038\u103b\u103c\u103f-\u1057\u105a-\u105d\u1061-\u1070\u1075-\u1081\u1083\u1084\u1087-\u108c\u108e-\u109c\u109e-\u10c5\u10c7\u10cd\u10d0-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1360-\u137c\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u167f\u1681-\u169a\u16a0-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1735\u1736\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17b6\u17be-\u17c5\u17c7\u17c8\u17d4-\u17da\u17dc\u17e0-\u17e9\u1810-\u1819\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1923-\u1926\u1929-\u192b\u1930\u1931\u1933-\u1938\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19da\u1a00-\u1a16\u1a19\u1a1a\u1a1e-\u1a55\u1a57\u1a61\u1a63\u1a64\u1a6d-\u1a72\u1a80-\u1a89\u1a90-\u1a99\u1aa0-\u1aad\u1b04-\u1b33\u1b35\u1b3b\u1b3d-\u1b41\u1b43-\u1b4b\u1b50-\u1b6a\u1b74-\u1b7c\u1b82-\u1ba1\u1ba6\u1ba7\u1baa\u1bae-\u1be5\u1be7\u1bea-\u1bec\u1bee\u1bf2\u1bf3\u1bfc-\u1c2b\u1c34\u1c35\u1c3b-\u1c49\u1c4d-\u1c7f\u1cc0-\u1cc7\u1cd3\u1ce1\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200e\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u214f\u2160-\u2188\u2336-\u237a\u2395\u249c-\u24e9\u26ac\u2800-\u28ff\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d70\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u302e\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u3190-\u31ba\u31f0-\u321c\u3220-\u324f\u3260-\u327b\u327f-\u32b0\u32c0-\u32cb\u32d0-\u32fe\u3300-\u3376\u337b-\u33dd\u33e0-\u33fe\u3400-\u4db5\u4e00-\u9fd5\ua000-\ua48c\ua4d0-\ua60c\ua610-\ua62b\ua640-\ua66e\ua680-\ua69d\ua6a0-\ua6ef\ua6f2-\ua6f7\ua722-\ua787\ua789-\ua7ad\ua7b0-\ua7b7\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua824\ua827\ua830-\ua837\ua840-\ua873\ua880-\ua8c3\ua8ce-\ua8d9\ua8f2-\ua8fd\ua900-\ua925\ua92e-\ua946\ua952\ua953\ua95f-\ua97c\ua983-\ua9b2\ua9b4\ua9b5\ua9ba\ua9bb\ua9bd-\ua9cd\ua9cf-\ua9d9\ua9de-\ua9e4\ua9e6-\ua9fe\uaa00-\uaa28\uaa2f\uaa30\uaa33\uaa34\uaa40-\uaa42\uaa44-\uaa4b\uaa4d\uaa50-\uaa59\uaa5c-\uaa7b\uaa7d-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaaeb\uaaee-\uaaf5\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab65\uab70-\uabe4\uabe6\uabe7\uabe9-\uabec\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\ue000-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]|\ud800[\udc00-\udc0b]|\ud800[\udc0d-\udc26]|\ud800[\udc28-\udc3a]|\ud800\udc3c|\ud800\udc3d|\ud800[\udc3f-\udc4d]|\ud800[\udc50-\udc5d]|\ud800[\udc80-\udcfa]|\ud800\udd00|\ud800\udd02|\ud800[\udd07-\udd33]|\ud800[\udd37-\udd3f]|\ud800[\uddd0-\uddfc]|\ud800[\ude80-\ude9c]|\ud800[\udea0-\uded0]|\ud800[\udf00-\udf23]|\ud800[\udf30-\udf4a]|\ud800[\udf50-\udf75]|\ud800[\udf80-\udf9d]|\ud800[\udf9f-\udfc3]|\ud800[\udfc8-\udfd5]|\ud801[\udc00-\udc9d]|\ud801[\udca0-\udca9]|\ud801[\udd00-\udd27]|\ud801[\udd30-\udd63]|\ud801\udd6f|\ud801[\ude00-\udf36]|\ud801[\udf40-\udf55]|\ud801[\udf60-\udf67]|\ud804\udc00|\ud804[\udc02-\udc37]|\ud804[\udc47-\udc4d]|\ud804[\udc66-\udc6f]|\ud804[\udc82-\udcb2]|\ud804\udcb7|\ud804\udcb8|\ud804[\udcbb-\udcc1]|\ud804[\udcd0-\udce8]|\ud804[\udcf0-\udcf9]|\ud804[\udd03-\udd26]|\ud804\udd2c|\ud804[\udd36-\udd43]|\ud804[\udd50-\udd72]|\ud804[\udd74-\udd76]|\ud804[\udd82-\uddb5]|\ud804[\uddbf-\uddc9]|\ud804\uddcd|\ud804[\uddd0-\udddf]|\ud804[\udde1-\uddf4]|\ud804[\ude00-\ude11]|\ud804[\ude13-\ude2e]|\ud804\ude32|\ud804\ude33|\ud804\ude35|\ud804[\ude38-\ude3d]|\ud804[\ude80-\ude86]|\ud804\ude88|\ud804[\ude8a-\ude8d]|\ud804[\ude8f-\ude9d]|\ud804[\ude9f-\udea9]|\ud804[\udeb0-\udede]|\ud804[\udee0-\udee2]|\ud804[\udef0-\udef9]|\ud804\udf02|\ud804\udf03|\ud804[\udf05-\udf0c]|\ud804\udf0f|\ud804\udf10|\ud804[\udf13-\udf28]|\ud804[\udf2a-\udf30]|\ud804\udf32|\ud804\udf33|\ud804[\udf35-\udf39]|\ud804[\udf3d-\udf3f]|\ud804[\udf41-\udf44]|\ud804\udf47|\ud804\udf48|\ud804[\udf4b-\udf4d]|\ud804\udf50|\ud804\udf57|\ud804[\udf5d-\udf63]|\ud805[\udc80-\udcb2]|\ud805\udcb9|\ud805[\udcbb-\udcbe]|\ud805\udcc1|\ud805[\udcc4-\udcc7]|\ud805[\udcd0-\udcd9]|\ud805[\udd80-\uddb1]|\ud805[\uddb8-\uddbb]|\ud805\uddbe|\ud805[\uddc1-\udddb]|\ud805[\ude00-\ude32]|\ud805\ude3b|\ud805\ude3c|\ud805\ude3e|\ud805[\ude41-\ude44]|\ud805[\ude50-\ude59]|\ud805[\ude80-\udeaa]|\ud805\udeac|\ud805\udeae|\ud805\udeaf|\ud805\udeb6|\ud805[\udec0-\udec9]|\ud805[\udf00-\udf19]|\ud805\udf20|\ud805\udf21|\ud805\udf26|\ud805[\udf30-\udf3f]|\ud806[\udca0-\udcf2]|\ud806\udcff|\ud806[\udec0-\udef8]|\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e]|\ud809[\udc70-\udc74]|\ud809[\udc80-\udd43]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38]|\ud81a[\ude40-\ude5e]|\ud81a[\ude60-\ude69]|\ud81a\ude6e|\ud81a\ude6f|\ud81a[\uded0-\udeed]|\ud81a\udef5|\ud81a[\udf00-\udf2f]|\ud81a[\udf37-\udf45]|\ud81a[\udf50-\udf59]|\ud81a[\udf5b-\udf61]|\ud81a[\udf63-\udf77]|\ud81a[\udf7d-\udf8f]|\ud81b[\udf00-\udf44]|\ud81b[\udf50-\udf7e]|\ud81b[\udf93-\udf9f]|\ud82c\udc00|\ud82c\udc01|\ud82f[\udc00-\udc6a]|\ud82f[\udc70-\udc7c]|\ud82f[\udc80-\udc88]|\ud82f[\udc90-\udc99]|\ud82f\udc9c|\ud82f\udc9f|\ud834[\udc00-\udcf5]|\ud834[\udd00-\udd26]|\ud834[\udd29-\udd66]|\ud834[\udd6a-\udd72]|\ud834\udd83|\ud834\udd84|\ud834[\udd8c-\udda9]|\ud834[\uddae-\udde8]|\ud834[\udf60-\udf71]|\ud835[\udc00-\udc54]|\ud835[\udc56-\udc9c]|\ud835\udc9e|\ud835\udc9f|\ud835\udca2|\ud835\udca5|\ud835\udca6|\ud835[\udca9-\udcac]|\ud835[\udcae-\udcb9]|\ud835\udcbb|\ud835[\udcbd-\udcc3]|\ud835[\udcc5-\udd05]|\ud835[\udd07-\udd0a]|\ud835[\udd0d-\udd14]|\ud835[\udd16-\udd1c]|\ud835[\udd1e-\udd39]|\ud835[\udd3b-\udd3e]|\ud835[\udd40-\udd44]|\ud835\udd46|\ud835[\udd4a-\udd50]|\ud835[\udd52-\udea5]|\ud835[\udea8-\udeda]|\ud835[\udedc-\udf14]|\ud835[\udf16-\udf4e]|\ud835[\udf50-\udf88]|\ud835[\udf8a-\udfc2]|\ud835[\udfc4-\udfcb]|\ud836[\udc00-\uddff]|\ud836[\ude37-\ude3a]|\ud836[\ude6d-\ude74]|\ud836[\ude76-\ude83]|\ud836[\ude85-\ude8b]|\ud83c[\udd10-\udd2e]|\ud83c[\udd30-\udd69]|\ud83c[\udd70-\udd9a]|\ud83c[\udde6-\ude02]|\ud83c[\ude10-\ude3a]|\ud83c[\ude40-\ude48]|\ud83c\ude50|\ud83c\ude51|[\ud840-\ud868][\udc00-\udfff]|\ud869[\udc00-\uded6]|\ud869[\udf00-\udfff]|[\ud86a-\ud86c][\udc00-\udfff]|\ud86d[\udc00-\udf34]|\ud86d[\udf40-\udfff]|\ud86e[\udc00-\udc1d]|\ud86e[\udc20-\udfff]|[\ud86f-\ud872][\udc00-\udfff]|\ud873[\udc00-\udea1]|\ud87e[\udc00-\ude1d]|[\udb80-\udbbe][\udc00-\udfff]|\udbbf[\udc00-\udffd]|[\udbc0-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udffd]' +
+                       ')|(' +
+                               '[\u0590\u05be\u05c0\u05c3\u05c6\u05c8-\u05ff\u07c0-\u07ea\u07f4\u07f5\u07fa-\u0815\u081a\u0824\u0828\u082e-\u0858\u085c-\u089f\u200f\ufb1d\ufb1f-\ufb28\ufb2a-\ufb4f\u0608\u060b\u060d\u061b-\u064a\u066d-\u066f\u0671-\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u0710\u0712-\u072f\u074b-\u07a5\u07b1-\u07bf\u08a0-\u08e2\ufb50-\ufd3d\ufd40-\ufdcf\ufdf0-\ufdfc\ufdfe\ufdff\ufe70-\ufefe]|\ud802[\udc00-\udd1e]|\ud802[\udd20-\ude00]|\ud802\ude04|\ud802[\ude07-\ude0b]|\ud802[\ude10-\ude37]|\ud802[\ude3b-\ude3e]|\ud802[\ude40-\udee4]|\ud802[\udee7-\udf38]|\ud802[\udf40-\udfff]|\ud803[\udc00-\ude5f]|\ud803[\ude7f-\udfff]|\ud83a[\udc00-\udccf]|\ud83a[\udcd7-\udfff]|\ud83b[\udc00-\uddff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\ude00-\udeef]|\ud83b[\udef2-\udeff]' +
+                       ')' +
+               ')'
+       );
+
+       /**
+        * Gets directionality of the first strongly directional codepoint
+        *
+        * This is the rule the BIDI algorithm uses to determine the directionality of
+        * paragraphs ( http://unicode.org/reports/tr9/#The_Paragraph_Level ) and
+        * FSI isolates ( http://unicode.org/reports/tr9/#Explicit_Directional_Isolates ).
+        *
+        * TODO: Does not handle BIDI control characters inside the text.
+        * TODO: Does not handle unallocated characters.
+        */
+       function strongDirFromContent( text ) {
+               var m = text.match( strongDirRegExp );
+               if ( !m ) {
+                       return null;
+               }
+               if ( m[2] === undefined ) {
+                       return 'ltr';
+               }
+               return 'rtl';
+       }
+
+       $.extend( $.i18n.parser.emitter, {
+               /**
+                * Wraps argument with unicode control characters for directionality safety
+                *
+                * This solves the problem where directionality-neutral characters at the edge of
+                * the argument string get interpreted with the wrong directionality from the
+                * enclosing context, giving renderings that look corrupted like "(Ben_(WMF".
+                *
+                * The wrapping is LRE...PDF or RLE...PDF, depending on the detected
+                * directionality of the argument string, using the BIDI algorithm's own "First
+                * strong directional codepoint" rule. Essentially, this works round the fact that
+                * there is no embedding equivalent of U+2068 FSI (isolation with heuristic
+                * direction inference). The latter is cleaner but still not widely supported.
+                */
+               bidi: function ( nodes ) {
+                       var dir = strongDirFromContent( nodes[0] );
+                       if ( dir === 'ltr' ) {
+                               // Wrap in LEFT-TO-RIGHT EMBEDDING ... POP DIRECTIONAL FORMATTING
+                               return '\u202A' + nodes[0] + '\u202C';
+                       }
+                       if ( dir === 'rtl' ) {
+                               // Wrap in RIGHT-TO-LEFT EMBEDDING ... POP DIRECTIONAL FORMATTING
+                               return '\u202B' + nodes[0] + '\u202C';
+                       }
+                       // No strong directionality: do not wrap
+                       return nodes[0];
+               }
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/jquery.i18n.emitter.js b/resources/lib/jquery.i18n/src/jquery.i18n.emitter.js
new file mode 100644 (file)
index 0000000..b26f147
--- /dev/null
@@ -0,0 +1,168 @@
+/**
+ * jQuery Internationalization library
+ *
+ * Copyright (C) 2011-2013 Santhosh Thottingal, Neil Kandalgaonkar
+ *
+ * jquery.i18n is dual licensed GPLv2 or later and MIT. You don't have to do
+ * anything special to choose one license or the other and you don't have to
+ * notify anyone which license you are using. You are free to use
+ * UniversalLanguageSelector in commercial projects as long as the copyright
+ * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.
+ *
+ * @licence GNU General Public Licence 2.0 or later
+ * @licence MIT License
+ */
+
+( function ( $ ) {
+       'use strict';
+
+       var MessageParserEmitter = function () {
+               this.language = $.i18n.languages[String.locale] || $.i18n.languages['default'];
+       };
+
+       MessageParserEmitter.prototype = {
+               constructor: MessageParserEmitter,
+
+               /**
+                * (We put this method definition here, and not in prototype, to make
+                * sure it's not overwritten by any magic.) Walk entire node structure,
+                * applying replacements and template functions when appropriate
+                *
+                * @param {Mixed} node abstract syntax tree (top node or subnode)
+                * @param {Array} replacements for $1, $2, ... $n
+                * @return {Mixed} single-string node or array of nodes suitable for
+                *  jQuery appending.
+                */
+               emit: function ( node, replacements ) {
+                       var ret, subnodes, operation,
+                               messageParserEmitter = this;
+
+                       switch ( typeof node ) {
+                       case 'string':
+                       case 'number':
+                               ret = node;
+                               break;
+                       case 'object':
+                               // node is an array of nodes
+                               subnodes = $.map( node.slice( 1 ), function ( n ) {
+                                       return messageParserEmitter.emit( n, replacements );
+                               } );
+
+                               operation = node[0].toLowerCase();
+
+                               if ( typeof messageParserEmitter[operation] === 'function' ) {
+                                       ret = messageParserEmitter[operation]( subnodes, replacements );
+                               } else {
+                                       throw new Error( 'unknown operation "' + operation + '"' );
+                               }
+
+                               break;
+                       case 'undefined':
+                               // Parsing the empty string (as an entire expression, or as a
+                               // paramExpression in a template) results in undefined
+                               // Perhaps a more clever parser can detect this, and return the
+                               // empty string? Or is that useful information?
+                               // The logical thing is probably to return the empty string here
+                               // when we encounter undefined.
+                               ret = '';
+                               break;
+                       default:
+                               throw new Error( 'unexpected type in AST: ' + typeof node );
+                       }
+
+                       return ret;
+               },
+
+               /**
+                * Parsing has been applied depth-first we can assume that all nodes
+                * here are single nodes Must return a single node to parents -- a
+                * jQuery with synthetic span However, unwrap any other synthetic spans
+                * in our children and pass them upwards
+                *
+                * @param {Array} nodes Mixed, some single nodes, some arrays of nodes.
+                * @return String
+                */
+               concat: function ( nodes ) {
+                       var result = '';
+
+                       $.each( nodes, function ( i, node ) {
+                               // strings, integers, anything else
+                               result += node;
+                       } );
+
+                       return result;
+               },
+
+               /**
+                * Return escaped replacement of correct index, or string if
+                * unavailable. Note that we expect the parsed parameter to be
+                * zero-based. i.e. $1 should have become [ 0 ]. if the specified
+                * parameter is not found return the same string (e.g. "$99" ->
+                * parameter 98 -> not found -> return "$99" ) TODO throw error if
+                * nodes.length > 1 ?
+                *
+                * @param {Array} nodes One element, integer, n >= 0
+                * @param {Array} replacements for $1, $2, ... $n
+                * @return {string} replacement
+                */
+               replace: function ( nodes, replacements ) {
+                       var index = parseInt( nodes[0], 10 );
+
+                       if ( index < replacements.length ) {
+                               // replacement is not a string, don't touch!
+                               return replacements[index];
+                       } else {
+                               // index not found, fallback to displaying variable
+                               return '$' + ( index + 1 );
+                       }
+               },
+
+               /**
+                * Transform parsed structure into pluralization n.b. The first node may
+                * be a non-integer (for instance, a string representing an Arabic
+                * number). So convert it back with the current language's
+                * convertNumber.
+                *
+                * @param {Array} nodes List [ {String|Number}, {String}, {String} ... ]
+                * @return {String} selected pluralized form according to current
+                *  language.
+                */
+               plural: function ( nodes ) {
+                       var count = parseFloat( this.language.convertNumber( nodes[0], 10 ) ),
+                               forms = nodes.slice( 1 );
+
+                       return forms.length ? this.language.convertPlural( count, forms ) : '';
+               },
+
+               /**
+                * Transform parsed structure into gender Usage
+                * {{gender:gender|masculine|feminine|neutral}}.
+                *
+                * @param {Array} nodes List [ {String}, {String}, {String} , {String} ]
+                * @return {String} selected gender form according to current language
+                */
+               gender: function ( nodes ) {
+                       var gender = nodes[0],
+                               forms = nodes.slice( 1 );
+
+                       return this.language.gender( gender, forms );
+               },
+
+               /**
+                * Transform parsed structure into grammar conversion. Invoked by
+                * putting {{grammar:form|word}} in a message
+                *
+                * @param {Array} nodes List [{Grammar case eg: genitive}, {String word}]
+                * @return {String} selected grammatical form according to current
+                *  language.
+                */
+               grammar: function ( nodes ) {
+                       var form = nodes[0],
+                               word = nodes[1];
+
+                       return word && form && this.language.convertGrammar( word, form );
+               }
+       };
+
+       $.extend( $.i18n.parser.emitter, new MessageParserEmitter() );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/jquery.i18n.fallbacks.js b/resources/lib/jquery.i18n/src/jquery.i18n.fallbacks.js
new file mode 100644 (file)
index 0000000..4584c5f
--- /dev/null
@@ -0,0 +1,186 @@
+/**
+ * jQuery Internationalization library
+ *
+ * Copyright (C) 2012 Santhosh Thottingal
+ *
+ * jquery.i18n is dual licensed GPLv2 or later and MIT. You don't have to do anything special to
+ * choose one license or the other and you don't have to notify anyone which license you are using.
+ * You are free to use UniversalLanguageSelector in commercial projects as long as the copyright
+ * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.
+ *
+ * @licence GNU General Public Licence 2.0 or later
+ * @licence MIT License
+ */
+( function ( $, undefined ) {
+       'use strict';
+
+       $.i18n = $.i18n || {};
+       $.extend( $.i18n.fallbacks, {
+               ab: [ 'ru' ],
+               ace: [ 'id' ],
+               aln: [ 'sq' ],
+               // Not so standard - als is supposed to be Tosk Albanian,
+               // but in Wikipedia it's used for a Germanic language.
+               als: [ 'gsw', 'de' ],
+               an: [ 'es' ],
+               anp: [ 'hi' ],
+               arn: [ 'es' ],
+               arz: [ 'ar' ],
+               av: [ 'ru' ],
+               ay: [ 'es' ],
+               ba: [ 'ru' ],
+               bar: [ 'de' ],
+               'bat-smg': [ 'sgs', 'lt' ],
+               bcc: [ 'fa' ],
+               'be-x-old': [ 'be-tarask' ],
+               bh: [ 'bho' ],
+               bjn: [ 'id' ],
+               bm: [ 'fr' ],
+               bpy: [ 'bn' ],
+               bqi: [ 'fa' ],
+               bug: [ 'id' ],
+               'cbk-zam': [ 'es' ],
+               ce: [ 'ru' ],
+               crh: [ 'crh-latn' ],
+               'crh-cyrl': [ 'ru' ],
+               csb: [ 'pl' ],
+               cv: [ 'ru' ],
+               'de-at': [ 'de' ],
+               'de-ch': [ 'de' ],
+               'de-formal': [ 'de' ],
+               dsb: [ 'de' ],
+               dtp: [ 'ms' ],
+               egl: [ 'it' ],
+               eml: [ 'it' ],
+               ff: [ 'fr' ],
+               fit: [ 'fi' ],
+               'fiu-vro': [ 'vro', 'et' ],
+               frc: [ 'fr' ],
+               frp: [ 'fr' ],
+               frr: [ 'de' ],
+               fur: [ 'it' ],
+               gag: [ 'tr' ],
+               gan: [ 'gan-hant', 'zh-hant', 'zh-hans' ],
+               'gan-hans': [ 'zh-hans' ],
+               'gan-hant': [ 'zh-hant', 'zh-hans' ],
+               gl: [ 'pt' ],
+               glk: [ 'fa' ],
+               gn: [ 'es' ],
+               gsw: [ 'de' ],
+               hif: [ 'hif-latn' ],
+               hsb: [ 'de' ],
+               ht: [ 'fr' ],
+               ii: [ 'zh-cn', 'zh-hans' ],
+               inh: [ 'ru' ],
+               iu: [ 'ike-cans' ],
+               jut: [ 'da' ],
+               jv: [ 'id' ],
+               kaa: [ 'kk-latn', 'kk-cyrl' ],
+               kbd: [ 'kbd-cyrl' ],
+               khw: [ 'ur' ],
+               kiu: [ 'tr' ],
+               kk: [ 'kk-cyrl' ],
+               'kk-arab': [ 'kk-cyrl' ],
+               'kk-latn': [ 'kk-cyrl' ],
+               'kk-cn': [ 'kk-arab', 'kk-cyrl' ],
+               'kk-kz': [ 'kk-cyrl' ],
+               'kk-tr': [ 'kk-latn', 'kk-cyrl' ],
+               kl: [ 'da' ],
+               'ko-kp': [ 'ko' ],
+               koi: [ 'ru' ],
+               krc: [ 'ru' ],
+               ks: [ 'ks-arab' ],
+               ksh: [ 'de' ],
+               ku: [ 'ku-latn' ],
+               'ku-arab': [ 'ckb' ],
+               kv: [ 'ru' ],
+               lad: [ 'es' ],
+               lb: [ 'de' ],
+               lbe: [ 'ru' ],
+               lez: [ 'ru' ],
+               li: [ 'nl' ],
+               lij: [ 'it' ],
+               liv: [ 'et' ],
+               lmo: [ 'it' ],
+               ln: [ 'fr' ],
+               ltg: [ 'lv' ],
+               lzz: [ 'tr' ],
+               mai: [ 'hi' ],
+               'map-bms': [ 'jv', 'id' ],
+               mg: [ 'fr' ],
+               mhr: [ 'ru' ],
+               min: [ 'id' ],
+               mo: [ 'ro' ],
+               mrj: [ 'ru' ],
+               mwl: [ 'pt' ],
+               myv: [ 'ru' ],
+               mzn: [ 'fa' ],
+               nah: [ 'es' ],
+               nap: [ 'it' ],
+               nds: [ 'de' ],
+               'nds-nl': [ 'nl' ],
+               'nl-informal': [ 'nl' ],
+               no: [ 'nb' ],
+               os: [ 'ru' ],
+               pcd: [ 'fr' ],
+               pdc: [ 'de' ],
+               pdt: [ 'de' ],
+               pfl: [ 'de' ],
+               pms: [ 'it' ],
+               pt: [ 'pt-br' ],
+               'pt-br': [ 'pt' ],
+               qu: [ 'es' ],
+               qug: [ 'qu', 'es' ],
+               rgn: [ 'it' ],
+               rmy: [ 'ro' ],
+               'roa-rup': [ 'rup' ],
+               rue: [ 'uk', 'ru' ],
+               ruq: [ 'ruq-latn', 'ro' ],
+               'ruq-cyrl': [ 'mk' ],
+               'ruq-latn': [ 'ro' ],
+               sa: [ 'hi' ],
+               sah: [ 'ru' ],
+               scn: [ 'it' ],
+               sg: [ 'fr' ],
+               sgs: [ 'lt' ],
+               sli: [ 'de' ],
+               sr: [ 'sr-ec' ],
+               srn: [ 'nl' ],
+               stq: [ 'de' ],
+               su: [ 'id' ],
+               szl: [ 'pl' ],
+               tcy: [ 'kn' ],
+               tg: [ 'tg-cyrl' ],
+               tt: [ 'tt-cyrl', 'ru' ],
+               'tt-cyrl': [ 'ru' ],
+               ty: [ 'fr' ],
+               udm: [ 'ru' ],
+               ug: [ 'ug-arab' ],
+               uk: [ 'ru' ],
+               vec: [ 'it' ],
+               vep: [ 'et' ],
+               vls: [ 'nl' ],
+               vmf: [ 'de' ],
+               vot: [ 'fi' ],
+               vro: [ 'et' ],
+               wa: [ 'fr' ],
+               wo: [ 'fr' ],
+               wuu: [ 'zh-hans' ],
+               xal: [ 'ru' ],
+               xmf: [ 'ka' ],
+               yi: [ 'he' ],
+               za: [ 'zh-hans' ],
+               zea: [ 'nl' ],
+               zh: [ 'zh-hans' ],
+               'zh-classical': [ 'lzh' ],
+               'zh-cn': [ 'zh-hans' ],
+               'zh-hant': [ 'zh-hans' ],
+               'zh-hk': [ 'zh-hant', 'zh-hans' ],
+               'zh-min-nan': [ 'nan' ],
+               'zh-mo': [ 'zh-hk', 'zh-hant', 'zh-hans' ],
+               'zh-my': [ 'zh-sg', 'zh-hans' ],
+               'zh-sg': [ 'zh-hans' ],
+               'zh-tw': [ 'zh-hant', 'zh-hans' ],
+               'zh-yue': [ 'yue' ]
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/jquery.i18n.js b/resources/lib/jquery.i18n/src/jquery.i18n.js
new file mode 100644 (file)
index 0000000..9236e4e
--- /dev/null
@@ -0,0 +1,287 @@
+/**
+ * jQuery Internationalization library
+ *
+ * Copyright (C) 2012 Santhosh Thottingal
+ *
+ * jquery.i18n is dual licensed GPLv2 or later and MIT. You don't have to do
+ * anything special to choose one license or the other and you don't have to
+ * notify anyone which license you are using. You are free to use
+ * UniversalLanguageSelector in commercial projects as long as the copyright
+ * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.
+ *
+ * @licence GNU General Public Licence 2.0 or later
+ * @licence MIT License
+ */
+
+( function ( $ ) {
+       'use strict';
+
+       var nav, I18N,
+               slice = Array.prototype.slice;
+       /**
+        * @constructor
+        * @param {Object} options
+        */
+       I18N = function ( options ) {
+               // Load defaults
+               this.options = $.extend( {}, I18N.defaults, options );
+
+               this.parser = this.options.parser;
+               this.locale = this.options.locale;
+               this.messageStore = this.options.messageStore;
+               this.languages = {};
+
+               this.init();
+       };
+
+       I18N.prototype = {
+               /**
+                * Initialize by loading locales and setting up
+                * String.prototype.toLocaleString and String.locale.
+                */
+               init: function () {
+                       var i18n = this;
+
+                       // Set locale of String environment
+                       String.locale = i18n.locale;
+
+                       // Override String.localeString method
+                       String.prototype.toLocaleString = function () {
+                               var localeParts, localePartIndex, value, locale, fallbackIndex,
+                                       tryingLocale, message;
+
+                               value = this.valueOf();
+                               locale = i18n.locale;
+                               fallbackIndex = 0;
+
+                               while ( locale ) {
+                                       // Iterate through locales starting at most-specific until
+                                       // localization is found. As in fi-Latn-FI, fi-Latn and fi.
+                                       localeParts = locale.split( '-' );
+                                       localePartIndex = localeParts.length;
+
+                                       do {
+                                               tryingLocale = localeParts.slice( 0, localePartIndex ).join( '-' );
+                                               message = i18n.messageStore.get( tryingLocale, value );
+
+                                               if ( message ) {
+                                                       return message;
+                                               }
+
+                                               localePartIndex--;
+                                       } while ( localePartIndex );
+
+                                       if ( locale === 'en' ) {
+                                               break;
+                                       }
+
+                                       locale = ( $.i18n.fallbacks[i18n.locale] && $.i18n.fallbacks[i18n.locale][fallbackIndex] ) ||
+                                               i18n.options.fallbackLocale;
+                                       $.i18n.log( 'Trying fallback locale for ' + i18n.locale + ': ' + locale );
+
+                                       fallbackIndex++;
+                               }
+
+                               // key not found
+                               return '';
+                       };
+               },
+
+               /*
+                * Destroy the i18n instance.
+                */
+               destroy: function () {
+                       $.removeData( document, 'i18n' );
+               },
+
+               /**
+                * General message loading API This can take a URL string for
+                * the json formatted messages. Example:
+                * <code>load('path/to/all_localizations.json');</code>
+                *
+                * To load a localization file for a locale:
+                * <code>
+                * load('path/to/de-messages.json', 'de' );
+                * </code>
+                *
+                * To load a localization file from a directory:
+                * <code>
+                * load('path/to/i18n/directory', 'de' );
+                * </code>
+                * The above method has the advantage of fallback resolution.
+                * ie, it will automatically load the fallback locales for de.
+                * For most usecases, this is the recommended method.
+                * It is optional to have trailing slash at end.
+                *
+                * A data object containing message key- message translation mappings
+                * can also be passed. Example:
+                * <code>
+                * load( { 'hello' : 'Hello' }, optionalLocale );
+                * </code>
+                *
+                * A source map containing key-value pair of languagename and locations
+                * can also be passed. Example:
+                * <code>
+                * load( {
+                * bn: 'i18n/bn.json',
+                * he: 'i18n/he.json',
+                * en: 'i18n/en.json'
+                * } )
+                * </code>
+                *
+                * If the data argument is null/undefined/false,
+                * all cached messages for the i18n instance will get reset.
+                *
+                * @param {String|Object} source
+                * @param {String} locale Language tag
+                * @returns {jQuery.Promise}
+                */
+               load: function ( source, locale ) {
+                       var fallbackLocales, locIndex, fallbackLocale, sourceMap = {};
+                       if ( !source && !locale ) {
+                               source = 'i18n/' + $.i18n().locale + '.json';
+                               locale = $.i18n().locale;
+                       }
+                       if ( typeof source === 'string' &&
+                               source.split( '.' ).pop() !== 'json'
+                       ) {
+                               // Load specified locale then check for fallbacks when directory is specified in load()
+                               sourceMap[locale] = source + '/' + locale + '.json';
+                               fallbackLocales = ( $.i18n.fallbacks[locale] || [] )
+                                       .concat( this.options.fallbackLocale );
+                               for ( locIndex in fallbackLocales ) {
+                                       fallbackLocale = fallbackLocales[locIndex];
+                                       sourceMap[fallbackLocale] = source + '/' + fallbackLocale + '.json';
+                               }
+                               return this.load( sourceMap );
+                       } else {
+                               return this.messageStore.load( source, locale );
+                       }
+
+               },
+
+               /**
+                * Does parameter and magic word substitution.
+                *
+                * @param {string} key Message key
+                * @param {Array} parameters Message parameters
+                * @return {string}
+                */
+               parse: function ( key, parameters ) {
+                       var message = key.toLocaleString();
+                       // FIXME: This changes the state of the I18N object,
+                       // should probably not change the 'this.parser' but just
+                       // pass it to the parser.
+                       this.parser.language = $.i18n.languages[$.i18n().locale] || $.i18n.languages['default'];
+                       if ( message === '' ) {
+                               message = key;
+                       }
+                       return this.parser.parse( message, parameters );
+               }
+       };
+
+       /**
+        * Process a message from the $.I18N instance
+        * for the current document, stored in jQuery.data(document).
+        *
+        * @param {string} key Key of the message.
+        * @param {string} param1 [param...] Variadic list of parameters for {key}.
+        * @return {string|$.I18N} Parsed message, or if no key was given
+        * the instance of $.I18N is returned.
+        */
+       $.i18n = function ( key, param1 ) {
+               var parameters,
+                       i18n = $.data( document, 'i18n' ),
+                       options = typeof key === 'object' && key;
+
+               // If the locale option for this call is different then the setup so far,
+               // update it automatically. This doesn't just change the context for this
+               // call but for all future call as well.
+               // If there is no i18n setup yet, don't do this. It will be taken care of
+               // by the `new I18N` construction below.
+               // NOTE: It should only change language for this one call.
+               // Then cache instances of I18N somewhere.
+               if ( options && options.locale && i18n && i18n.locale !== options.locale ) {
+                       String.locale = i18n.locale = options.locale;
+               }
+
+               if ( !i18n ) {
+                       i18n = new I18N( options );
+                       $.data( document, 'i18n', i18n );
+               }
+
+               if ( typeof key === 'string' ) {
+                       if ( param1 !== undefined ) {
+                               parameters = slice.call( arguments, 1 );
+                       } else {
+                               parameters = [];
+                       }
+
+                       return i18n.parse( key, parameters );
+               } else {
+                       // FIXME: remove this feature/bug.
+                       return i18n;
+               }
+       };
+
+       $.fn.i18n = function () {
+               var i18n = $.data( document, 'i18n' );
+
+               if ( !i18n ) {
+                       i18n = new I18N();
+                       $.data( document, 'i18n', i18n );
+               }
+               String.locale = i18n.locale;
+               return this.each( function () {
+                       var $this = $( this ),
+                               messageKey = $this.data( 'i18n' );
+
+                       if ( messageKey ) {
+                               $this.text( i18n.parse( messageKey ) );
+                       } else {
+                               $this.find( '[data-i18n]' ).i18n();
+                       }
+               } );
+       };
+
+       String.locale = String.locale || $( 'html' ).attr( 'lang' );
+
+       if ( !String.locale ) {
+               if ( typeof window.navigator !== undefined ) {
+                       nav = window.navigator;
+                       String.locale = nav.language || nav.userLanguage || '';
+               } else {
+                       String.locale = '';
+               }
+       }
+
+       $.i18n.languages = {};
+       $.i18n.messageStore = $.i18n.messageStore || {};
+       $.i18n.parser = {
+               // The default parser only handles variable substitution
+               parse: function ( message, parameters ) {
+                       return message.replace( /\$(\d+)/g, function ( str, match ) {
+                               var index = parseInt( match, 10 ) - 1;
+                               return parameters[index] !== undefined ? parameters[index] : '$' + match;
+                       } );
+               },
+               emitter: {}
+       };
+       $.i18n.fallbacks = {};
+       $.i18n.debug = false;
+       $.i18n.log = function ( /* arguments */ ) {
+               if ( window.console && $.i18n.debug ) {
+                       window.console.log.apply( window.console, arguments );
+               }
+       };
+       /* Static members */
+       I18N.defaults = {
+               locale: String.locale,
+               fallbackLocale: 'en',
+               parser: $.i18n.parser,
+               messageStore: $.i18n.messageStore
+       };
+
+       // Expose constructor
+       $.i18n.constructor = I18N;
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/jquery.i18n.language.js b/resources/lib/jquery.i18n/src/jquery.i18n.language.js
new file mode 100644 (file)
index 0000000..3ce0a99
--- /dev/null
@@ -0,0 +1,472 @@
+/*global pluralRuleParser */
+( function ( $ ) {
+       'use strict';
+
+       var language = {
+               // CLDR plural rules generated using
+               // libs/CLDRPluralRuleParser/tools/PluralXML2JSON.html
+               pluralRules: {
+                       ak: {
+                               one: 'n = 0..1'
+                       },
+                       am: {
+                               one: 'i = 0 or n = 1'
+                       },
+                       ar: {
+                               zero: 'n = 0',
+                               one: 'n = 1',
+                               two: 'n = 2',
+                               few: 'n % 100 = 3..10',
+                               many: 'n % 100 = 11..99'
+                       },
+                       be: {
+                               one: 'n % 10 = 1 and n % 100 != 11',
+                               few: 'n % 10 = 2..4 and n % 100 != 12..14',
+                               many: 'n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14'
+                       },
+                       bh: {
+                               one: 'n = 0..1'
+                       },
+                       bn: {
+                               one: 'i = 0 or n = 1'
+                       },
+                       br: {
+                               one: 'n % 10 = 1 and n % 100 != 11,71,91',
+                               two: 'n % 10 = 2 and n % 100 != 12,72,92',
+                               few: 'n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99',
+                               many: 'n != 0 and n % 1000000 = 0'
+                       },
+                       bs: {
+                               one: 'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11',
+                               few: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'
+                       },
+                       cs: {
+                               one: 'i = 1 and v = 0',
+                               few: 'i = 2..4 and v = 0',
+                               many: 'v != 0'
+                       },
+                       cy: {
+                               zero: 'n = 0',
+                               one: 'n = 1',
+                               two: 'n = 2',
+                               few: 'n = 3',
+                               many: 'n = 6'
+                       },
+                       da: {
+                               one: 'n = 1 or t != 0 and i = 0,1'
+                       },
+                       fa: {
+                               one: 'i = 0 or n = 1'
+                       },
+                       ff: {
+                               one: 'i = 0,1'
+                       },
+                       fil: {
+                               one: 'i = 0..1 and v = 0'
+                       },
+                       fr: {
+                               one: 'i = 0,1'
+                       },
+                       ga: {
+                               one: 'n = 1',
+                               two: 'n = 2',
+                               few: 'n = 3..6',
+                               many: 'n = 7..10'
+                       },
+                       gd: {
+                               one: 'n = 1,11',
+                               two: 'n = 2,12',
+                               few: 'n = 3..10,13..19'
+                       },
+                       gu: {
+                               one: 'i = 0 or n = 1'
+                       },
+                       guw: {
+                               one: 'n = 0..1'
+                       },
+                       gv: {
+                               one: 'n % 10 = 1',
+                               two: 'n % 10 = 2',
+                               few: 'n % 100 = 0,20,40,60'
+                       },
+                       he: {
+                               one: 'i = 1 and v = 0',
+                               two: 'i = 2 and v = 0',
+                               many: 'v = 0 and n != 0..10 and n % 10 = 0'
+                       },
+                       hi: {
+                               one: 'i = 0 or n = 1'
+                       },
+                       hr: {
+                               one: 'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11',
+                               few: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'
+                       },
+                       hy: {
+                               one: 'i = 0,1'
+                       },
+                       is: {
+                               one: 't = 0 and i % 10 = 1 and i % 100 != 11 or t != 0'
+                       },
+                       iu: {
+                               one: 'n = 1',
+                               two: 'n = 2'
+                       },
+                       iw: {
+                               one: 'i = 1 and v = 0',
+                               two: 'i = 2 and v = 0',
+                               many: 'v = 0 and n != 0..10 and n % 10 = 0'
+                       },
+                       kab: {
+                               one: 'i = 0,1'
+                       },
+                       kn: {
+                               one: 'i = 0 or n = 1'
+                       },
+                       kw: {
+                               one: 'n = 1',
+                               two: 'n = 2'
+                       },
+                       lag: {
+                               zero: 'n = 0',
+                               one: 'i = 0,1 and n != 0'
+                       },
+                       ln: {
+                               one: 'n = 0..1'
+                       },
+                       lt: {
+                               one: 'n % 10 = 1 and n % 100 != 11..19',
+                               few: 'n % 10 = 2..9 and n % 100 != 11..19',
+                               many: 'f != 0'
+                       },
+                       lv: {
+                               zero: 'n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19',
+                               one: 'n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1'
+                       },
+                       mg: {
+                               one: 'n = 0..1'
+                       },
+                       mk: {
+                               one: 'v = 0 and i % 10 = 1 or f % 10 = 1'
+                       },
+                       mo: {
+                               one: 'i = 1 and v = 0',
+                               few: 'v != 0 or n = 0 or n != 1 and n % 100 = 1..19'
+                       },
+                       mr: {
+                               one: 'i = 0 or n = 1'
+                       },
+                       mt: {
+                               one: 'n = 1',
+                               few: 'n = 0 or n % 100 = 2..10',
+                               many: 'n % 100 = 11..19'
+                       },
+                       naq: {
+                               one: 'n = 1',
+                               two: 'n = 2'
+                       },
+                       nso: {
+                               one: 'n = 0..1'
+                       },
+                       pa: {
+                               one: 'n = 0..1'
+                       },
+                       pl: {
+                               one: 'i = 1 and v = 0',
+                               few: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14',
+                               many: 'v = 0 and i != 1 and i % 10 = 0..1 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14'
+                       },
+                       pt: {
+                               one: 'i = 1 and v = 0 or i = 0 and t = 1'
+                       },
+                       // jscs:disable requireCamelCaseOrUpperCaseIdentifiers
+                       pt_PT: {
+                               one: 'n = 1 and v = 0'
+                       },
+                       // jscs:enable requireCamelCaseOrUpperCaseIdentifiers
+                       ro: {
+                               one: 'i = 1 and v = 0',
+                               few: 'v != 0 or n = 0 or n != 1 and n % 100 = 1..19'
+                       },
+                       ru: {
+                               one: 'v = 0 and i % 10 = 1 and i % 100 != 11',
+                               many: 'v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14'
+                       },
+                       se: {
+                               one: 'n = 1',
+                               two: 'n = 2'
+                       },
+                       sh: {
+                               one: 'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11',
+                               few: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'
+                       },
+                       shi: {
+                               one: 'i = 0 or n = 1',
+                               few: 'n = 2..10'
+                       },
+                       si: {
+                               one: 'n = 0,1 or i = 0 and f = 1'
+                       },
+                       sk: {
+                               one: 'i = 1 and v = 0',
+                               few: 'i = 2..4 and v = 0',
+                               many: 'v != 0'
+                       },
+                       sl: {
+                               one: 'v = 0 and i % 100 = 1',
+                               two: 'v = 0 and i % 100 = 2',
+                               few: 'v = 0 and i % 100 = 3..4 or v != 0'
+                       },
+                       sma: {
+                               one: 'n = 1',
+                               two: 'n = 2'
+                       },
+                       smi: {
+                               one: 'n = 1',
+                               two: 'n = 2'
+                       },
+                       smj: {
+                               one: 'n = 1',
+                               two: 'n = 2'
+                       },
+                       smn: {
+                               one: 'n = 1',
+                               two: 'n = 2'
+                       },
+                       sms: {
+                               one: 'n = 1',
+                               two: 'n = 2'
+                       },
+                       sr: {
+                               one: 'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11',
+                               few: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'
+                       },
+                       ti: {
+                               one: 'n = 0..1'
+                       },
+                       tl: {
+                               one: 'i = 0..1 and v = 0'
+                       },
+                       tzm: {
+                               one: 'n = 0..1 or n = 11..99'
+                       },
+                       uk: {
+                               one: 'v = 0 and i % 10 = 1 and i % 100 != 11',
+                               few: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14',
+                               many: 'v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14'
+                       },
+                       wa: {
+                               one: 'n = 0..1'
+                       },
+                       zu: {
+                               one: 'i = 0 or n = 1'
+                       }
+               },
+
+               /**
+                * Plural form transformations, needed for some languages.
+                *
+                * @param count
+                *            integer Non-localized quantifier
+                * @param forms
+                *            array List of plural forms
+                * @return string Correct form for quantifier in this language
+                */
+               convertPlural: function ( count, forms ) {
+                       var pluralRules,
+                               pluralFormIndex,
+                               index,
+                               explicitPluralPattern = new RegExp( '\\d+=', 'i' ),
+                               formCount,
+                               form;
+
+                       if ( !forms || forms.length === 0 ) {
+                               return '';
+                       }
+
+                       // Handle for Explicit 0= & 1= values
+                       for ( index = 0; index < forms.length; index++ ) {
+                               form = forms[index];
+                               if ( explicitPluralPattern.test( form ) ) {
+                                       formCount = parseInt( form.substring( 0, form.indexOf( '=' ) ), 10 );
+                                       if ( formCount === count ) {
+                                               return ( form.substr( form.indexOf( '=' ) + 1 ) );
+                                       }
+                                       forms[index] = undefined;
+                               }
+                       }
+
+                       forms = $.map( forms, function ( form ) {
+                               if ( form !== undefined ) {
+                                       return form;
+                               }
+                       } );
+
+                       pluralRules = this.pluralRules[$.i18n().locale];
+
+                       if ( !pluralRules ) {
+                               // default fallback.
+                               return ( count === 1 ) ? forms[0] : forms[1];
+                       }
+
+                       pluralFormIndex = this.getPluralForm( count, pluralRules );
+                       pluralFormIndex = Math.min( pluralFormIndex, forms.length - 1 );
+
+                       return forms[pluralFormIndex];
+               },
+
+               /**
+                * For the number, get the plural for index
+                *
+                * @param number
+                * @param pluralRules
+                * @return plural form index
+                */
+               getPluralForm: function ( number, pluralRules ) {
+                       var i,
+                               pluralForms = [ 'zero', 'one', 'two', 'few', 'many', 'other' ],
+                               pluralFormIndex = 0;
+
+                       for ( i = 0; i < pluralForms.length; i++ ) {
+                               if ( pluralRules[pluralForms[i]] ) {
+                                       if ( pluralRuleParser( pluralRules[pluralForms[i]], number ) ) {
+                                               return pluralFormIndex;
+                                       }
+
+                                       pluralFormIndex++;
+                               }
+                       }
+
+                       return pluralFormIndex;
+               },
+
+               /**
+                * Converts a number using digitTransformTable.
+                *
+                * @param {number} num Value to be converted
+                * @param {boolean} integer Convert the return value to an integer
+                */
+               convertNumber: function ( num, integer ) {
+                       var tmp, item, i,
+                               transformTable, numberString, convertedNumber;
+
+                       // Set the target Transform table:
+                       transformTable = this.digitTransformTable( $.i18n().locale );
+                       numberString = String( num );
+                       convertedNumber = '';
+
+                       if ( !transformTable ) {
+                               return num;
+                       }
+
+                       // Check if the restore to Latin number flag is set:
+                       if ( integer ) {
+                               if ( parseFloat( num, 10 ) === num ) {
+                                       return num;
+                               }
+
+                               tmp = [];
+
+                               for ( item in transformTable ) {
+                                       tmp[transformTable[item]] = item;
+                               }
+
+                               transformTable = tmp;
+                       }
+
+                       for ( i = 0; i < numberString.length; i++ ) {
+                               if ( transformTable[numberString[i]] ) {
+                                       convertedNumber += transformTable[numberString[i]];
+                               } else {
+                                       convertedNumber += numberString[i];
+                               }
+                       }
+
+                       return integer ? parseFloat( convertedNumber, 10 ) : convertedNumber;
+               },
+
+               /**
+                * Grammatical transformations, needed for inflected languages.
+                * Invoked by putting {{grammar:form|word}} in a message.
+                * Override this method for languages that need special grammar rules
+                * applied dynamically.
+                *
+                * @param word {String}
+                * @param form {String}
+                * @return {String}
+                */
+               convertGrammar: function ( word, form ) { /*jshint unused: false */
+                       return word;
+               },
+
+               /**
+                * Provides an alternative text depending on specified gender. Usage
+                * {{gender:[gender|user object]|masculine|feminine|neutral}}. If second
+                * or third parameter are not specified, masculine is used.
+                *
+                * These details may be overriden per language.
+                *
+                * @param gender
+                *      string male, female, or anything else for neutral.
+                * @param forms
+                *      array List of gender forms
+                *
+                * @return string
+                */
+               gender: function ( gender, forms ) {
+                       if ( !forms || forms.length === 0 ) {
+                               return '';
+                       }
+
+                       while ( forms.length < 2 ) {
+                               forms.push( forms[forms.length - 1] );
+                       }
+
+                       if ( gender === 'male' ) {
+                               return forms[0];
+                       }
+
+                       if ( gender === 'female' ) {
+                               return forms[1];
+                       }
+
+                       return ( forms.length === 3 ) ? forms[2] : forms[0];
+               },
+
+               /**
+                * Get the digit transform table for the given language
+                * See http://cldr.unicode.org/translation/numbering-systems
+                * @param language
+                * @returns {Array|boolean} List of digits in the passed language or false
+                * representation, or boolean false if there is no information.
+                */
+               digitTransformTable: function ( language ) {
+                       var tables = {
+                               ar: '٠١٢٣٤٥٦٧٨٩',
+                               fa: '۰۱۲۳۴۵۶۷۸۹',
+                               ml: '൦൧൨൩൪൫൬൭൮൯',
+                               kn: '೦೧೨೩೪೫೬೭೮೯',
+                               lo: '໐໑໒໓໔໕໖໗໘໙',
+                               or: '୦୧୨୩୪୫୬୭୮୯',
+                               kh: '០១២៣៤៥៦៧៨៩',
+                               pa: '੦੧੨੩੪੫੬੭੮੯',
+                               gu: '૦૧૨૩૪૫૬૭૮૯',
+                               hi: '०१२३४५६७८९',
+                               my: '၀၁၂၃၄၅၆၇၈၉',
+                               ta: '௦௧௨௩௪௫௬௭௮௯',
+                               te: '౦౧౨౩౪౫౬౭౮౯',
+                               th: '๐๑๒๓๔๕๖๗๘๙', // FIXME use iso 639 codes
+                               bo: '༠༡༢༣༤༥༦༧༨༩' // FIXME use iso 639 codes
+                       };
+
+                       if ( !tables[language] ) {
+                               return false;
+                       }
+
+                       return tables[language].split( '' );
+               }
+       };
+
+       $.extend( $.i18n.languages, {
+               default: language
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/jquery.i18n.messagestore.js b/resources/lib/jquery.i18n/src/jquery.i18n.messagestore.js
new file mode 100644 (file)
index 0000000..759295c
--- /dev/null
@@ -0,0 +1,125 @@
+/**
+ * jQuery Internationalization library - Message Store
+ *
+ * Copyright (C) 2012 Santhosh Thottingal
+ *
+ * jquery.i18n is dual licensed GPLv2 or later and MIT. You don't have to do anything special to
+ * choose one license or the other and you don't have to notify anyone which license you are using.
+ * You are free to use UniversalLanguageSelector in commercial projects as long as the copyright
+ * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.
+ *
+ * @licence GNU General Public Licence 2.0 or later
+ * @licence MIT License
+ */
+
+( function ( $, window, undefined ) {
+       'use strict';
+
+       var MessageStore = function () {
+               this.messages = {};
+               this.sources = {};
+       };
+
+       /**
+        * See https://github.com/wikimedia/jquery.i18n/wiki/Specification#wiki-Message_File_Loading
+        */
+       MessageStore.prototype = {
+
+               /**
+                * General message loading API This can take a URL string for
+                * the json formatted messages.
+                * <code>load('path/to/all_localizations.json');</code>
+                *
+                * This can also load a localization file for a locale <code>
+                * load( 'path/to/de-messages.json', 'de' );
+                * </code>
+                * A data object containing message key- message translation mappings
+                * can also be passed Eg:
+                * <code>
+                * load( { 'hello' : 'Hello' }, optionalLocale );
+                * </code> If the data argument is
+                * null/undefined/false,
+                * all cached messages for the i18n instance will get reset.
+                *
+                * @param {String|Object} source
+                * @param {String} locale Language tag
+                * @return {jQuery.Promise}
+                */
+               load: function ( source, locale ) {
+                       var key = null,
+                               deferred = null,
+                               deferreds = [],
+                               messageStore = this;
+
+                       if ( typeof source === 'string' ) {
+                               // This is a URL to the messages file.
+                               $.i18n.log( 'Loading messages from: ' + source );
+                               deferred = jsonMessageLoader( source )
+                                       .done( function ( localization ) {
+                                               messageStore.set( locale, localization );
+                                       } );
+
+                               return deferred.promise();
+                       }
+
+                       if ( locale ) {
+                               // source is an key-value pair of messages for given locale
+                               messageStore.set( locale, source );
+
+                               return $.Deferred().resolve();
+                       } else {
+                               // source is a key-value pair of locales and their source
+                               for ( key in source ) {
+                                       if ( Object.prototype.hasOwnProperty.call( source, key ) ) {
+                                               locale = key;
+                                               // No {locale} given, assume data is a group of languages,
+                                               // call this function again for each language.
+                                               deferreds.push( messageStore.load( source[key], locale ) );
+                                       }
+                               }
+                               return $.when.apply( $, deferreds );
+                       }
+
+               },
+
+               /**
+                * Set messages to the given locale.
+                * If locale exists, add messages to the locale.
+                * @param locale
+                * @param messages
+                */
+               set: function ( locale, messages ) {
+                       if ( !this.messages[locale] ) {
+                               this.messages[locale] = messages;
+                       } else {
+                               this.messages[locale] = $.extend( this.messages[locale], messages );
+                       }
+               },
+
+               /**
+                *
+                * @param locale
+                * @param messageKey
+                * @returns {Boolean}
+                */
+               get: function ( locale, messageKey ) {
+                       return this.messages[locale] && this.messages[locale][messageKey];
+               }
+       };
+
+       function jsonMessageLoader( url ) {
+               var deferred = $.Deferred();
+
+               $.getJSON( url )
+                       .done( deferred.resolve )
+                       .fail( function ( jqxhr, settings, exception ) {
+                               $.i18n.log( 'Error in loading messages from ' + url + ' Exception: ' + exception );
+                               // Ignore 404 exception, because we are handling fallabacks explicitly
+                               deferred.resolve();
+                       } );
+
+               return deferred.promise();
+       }
+
+       $.extend( $.i18n.messageStore, new MessageStore() );
+}( jQuery, window ) );
diff --git a/resources/lib/jquery.i18n/src/jquery.i18n.parser.js b/resources/lib/jquery.i18n/src/jquery.i18n.parser.js
new file mode 100644 (file)
index 0000000..3dea284
--- /dev/null
@@ -0,0 +1,309 @@
+/**
+ * jQuery Internationalization library
+ *
+ * Copyright (C) 2011-2013 Santhosh Thottingal, Neil Kandalgaonkar
+ *
+ * jquery.i18n is dual licensed GPLv2 or later and MIT. You don't have to do
+ * anything special to choose one license or the other and you don't have to
+ * notify anyone which license you are using. You are free to use
+ * UniversalLanguageSelector in commercial projects as long as the copyright
+ * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.
+ *
+ * @licence GNU General Public Licence 2.0 or later
+ * @licence MIT License
+ */
+
+( function ( $ ) {
+       'use strict';
+
+       var MessageParser = function ( options ) {
+               this.options = $.extend( {}, $.i18n.parser.defaults, options );
+               this.language = $.i18n.languages[String.locale] || $.i18n.languages['default'];
+               this.emitter = $.i18n.parser.emitter;
+       };
+
+       MessageParser.prototype = {
+
+               constructor: MessageParser,
+
+               simpleParse: function ( message, parameters ) {
+                       return message.replace( /\$(\d+)/g, function ( str, match ) {
+                               var index = parseInt( match, 10 ) - 1;
+
+                               return parameters[index] !== undefined ? parameters[index] : '$' + match;
+                       } );
+               },
+
+               parse: function ( message, replacements ) {
+                       if ( message.indexOf( '{{' ) < 0 ) {
+                               return this.simpleParse( message, replacements );
+                       }
+
+                       this.emitter.language = $.i18n.languages[$.i18n().locale] ||
+                               $.i18n.languages['default'];
+
+                       return this.emitter.emit( this.ast( message ), replacements );
+               },
+
+               ast: function ( message ) {
+                       var pipe, colon, backslash, anyCharacter, dollar, digits, regularLiteral,
+                               regularLiteralWithoutBar, regularLiteralWithoutSpace, escapedOrLiteralWithoutBar,
+                               escapedOrRegularLiteral, templateContents, templateName, openTemplate,
+                               closeTemplate, expression, paramExpression, result,
+                               pos = 0;
+
+                       // Try parsers until one works, if none work return null
+                       function choice( parserSyntax ) {
+                               return function () {
+                                       var i, result;
+
+                                       for ( i = 0; i < parserSyntax.length; i++ ) {
+                                               result = parserSyntax[i]();
+
+                                               if ( result !== null ) {
+                                                       return result;
+                                               }
+                                       }
+
+                                       return null;
+                               };
+                       }
+
+                       // Try several parserSyntax-es in a row.
+                       // All must succeed; otherwise, return null.
+                       // This is the only eager one.
+                       function sequence( parserSyntax ) {
+                               var i, res,
+                                       originalPos = pos,
+                                       result = [];
+
+                               for ( i = 0; i < parserSyntax.length; i++ ) {
+                                       res = parserSyntax[i]();
+
+                                       if ( res === null ) {
+                                               pos = originalPos;
+
+                                               return null;
+                                       }
+
+                                       result.push( res );
+                               }
+
+                               return result;
+                       }
+
+                       // Run the same parser over and over until it fails.
+                       // Must succeed a minimum of n times; otherwise, return null.
+                       function nOrMore( n, p ) {
+                               return function () {
+                                       var originalPos = pos,
+                                               result = [],
+                                               parsed = p();
+
+                                       while ( parsed !== null ) {
+                                               result.push( parsed );
+                                               parsed = p();
+                                       }
+
+                                       if ( result.length < n ) {
+                                               pos = originalPos;
+
+                                               return null;
+                                       }
+
+                                       return result;
+                               };
+                       }
+
+                       // Helpers -- just make parserSyntax out of simpler JS builtin types
+
+                       function makeStringParser( s ) {
+                               var len = s.length;
+
+                               return function () {
+                                       var result = null;
+
+                                       if ( message.substr( pos, len ) === s ) {
+                                               result = s;
+                                               pos += len;
+                                       }
+
+                                       return result;
+                               };
+                       }
+
+                       function makeRegexParser( regex ) {
+                               return function () {
+                                       var matches = message.substr( pos ).match( regex );
+
+                                       if ( matches === null ) {
+                                               return null;
+                                       }
+
+                                       pos += matches[0].length;
+
+                                       return matches[0];
+                               };
+                       }
+
+                       pipe = makeStringParser( '|' );
+                       colon = makeStringParser( ':' );
+                       backslash = makeStringParser( '\\' );
+                       anyCharacter = makeRegexParser( /^./ );
+                       dollar = makeStringParser( '$' );
+                       digits = makeRegexParser( /^\d+/ );
+                       regularLiteral = makeRegexParser( /^[^{}\[\]$\\]/ );
+                       regularLiteralWithoutBar = makeRegexParser( /^[^{}\[\]$\\|]/ );
+                       regularLiteralWithoutSpace = makeRegexParser( /^[^{}\[\]$\s]/ );
+
+                       // There is a general pattern:
+                       // parse a thing;
+                       // if it worked, apply transform,
+                       // otherwise return null.
+                       // But using this as a combinator seems to cause problems
+                       // when combined with nOrMore().
+                       // May be some scoping issue.
+                       function transform( p, fn ) {
+                               return function () {
+                                       var result = p();
+
+                                       return result === null ? null : fn( result );
+                               };
+                       }
+
+                       // Used to define "literals" within template parameters. The pipe
+                       // character is the parameter delimeter, so by default
+                       // it is not a literal in the parameter
+                       function literalWithoutBar() {
+                               var result = nOrMore( 1, escapedOrLiteralWithoutBar )();
+
+                               return result === null ? null : result.join( '' );
+                       }
+
+                       function literal() {
+                               var result = nOrMore( 1, escapedOrRegularLiteral )();
+
+                               return result === null ? null : result.join( '' );
+                       }
+
+                       function escapedLiteral() {
+                               var result = sequence( [ backslash, anyCharacter ] );
+
+                               return result === null ? null : result[1];
+                       }
+
+                       choice( [ escapedLiteral, regularLiteralWithoutSpace ] );
+                       escapedOrLiteralWithoutBar = choice( [ escapedLiteral, regularLiteralWithoutBar ] );
+                       escapedOrRegularLiteral = choice( [ escapedLiteral, regularLiteral ] );
+
+                       function replacement() {
+                               var result = sequence( [ dollar, digits ] );
+
+                               if ( result === null ) {
+                                       return null;
+                               }
+
+                               return [ 'REPLACE', parseInt( result[1], 10 ) - 1 ];
+                       }
+
+                       templateName = transform(
+                               // see $wgLegalTitleChars
+                               // not allowing : due to the need to catch "PLURAL:$1"
+                               makeRegexParser( /^[ !"$&'()*,.\/0-9;=?@A-Z\^_`a-z~\x80-\xFF+\-]+/ ),
+
+                               function ( result ) {
+                                       return result.toString();
+                               }
+                       );
+
+                       function templateParam() {
+                               var expr,
+                                       result = sequence( [ pipe, nOrMore( 0, paramExpression ) ] );
+
+                               if ( result === null ) {
+                                       return null;
+                               }
+
+                               expr = result[1];
+
+                               // use a "CONCAT" operator if there are multiple nodes,
+                               // otherwise return the first node, raw.
+                               return expr.length > 1 ? [ 'CONCAT' ].concat( expr ) : expr[0];
+                       }
+
+                       function templateWithReplacement() {
+                               var result = sequence( [ templateName, colon, replacement ] );
+
+                               return result === null ? null : [ result[0], result[2] ];
+                       }
+
+                       function templateWithOutReplacement() {
+                               var result = sequence( [ templateName, colon, paramExpression ] );
+
+                               return result === null ? null : [ result[0], result[2] ];
+                       }
+
+                       templateContents = choice( [
+                               function () {
+                                       var res = sequence( [
+                                               // templates can have placeholders for dynamic
+                                               // replacement eg: {{PLURAL:$1|one car|$1 cars}}
+                                               // or no placeholders eg:
+                                               // {{GRAMMAR:genitive|{{SITENAME}}}
+                                               choice( [ templateWithReplacement, templateWithOutReplacement ] ),
+                                               nOrMore( 0, templateParam )
+                                       ] );
+
+                                       return res === null ? null : res[0].concat( res[1] );
+                               },
+                               function () {
+                                       var res = sequence( [ templateName, nOrMore( 0, templateParam ) ] );
+
+                                       if ( res === null ) {
+                                               return null;
+                                       }
+
+                                       return [ res[0] ].concat( res[1] );
+                               }
+                       ] );
+
+                       openTemplate = makeStringParser( '{{' );
+                       closeTemplate = makeStringParser( '}}' );
+
+                       function template() {
+                               var result = sequence( [ openTemplate, templateContents, closeTemplate ] );
+
+                               return result === null ? null : result[1];
+                       }
+
+                       expression = choice( [ template, replacement, literal ] );
+                       paramExpression = choice( [ template, replacement, literalWithoutBar ] );
+
+                       function start() {
+                               var result = nOrMore( 0, expression )();
+
+                               if ( result === null ) {
+                                       return null;
+                               }
+
+                               return [ 'CONCAT' ].concat( result );
+                       }
+
+                       result = start();
+
+                       /*
+                        * For success, the pos must have gotten to the end of the input
+                        * and returned a non-null.
+                        * n.b. This is part of language infrastructure, so we do not throw an internationalizable message.
+                        */
+                       if ( result === null || pos !== message.length ) {
+                               throw new Error( 'Parse error at position ' + pos.toString() + ' in input: ' + message );
+                       }
+
+                       return result;
+               }
+
+       };
+
+       $.extend( $.i18n.parser, new MessageParser() );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/bs.js b/resources/lib/jquery.i18n/src/languages/bs.js
new file mode 100644 (file)
index 0000000..5370069
--- /dev/null
@@ -0,0 +1,22 @@
+/**
+ * Bosnian (bosanski) language functions
+ */
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.bs = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       switch ( form ) {
+                       case 'instrumental': // instrumental
+                               word = 's ' + word;
+                               break;
+                       case 'lokativ': // locative
+                               word = 'o ' + word;
+                               break;
+                       }
+
+                       return word;
+               }
+       } );
+
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/dsb.js b/resources/lib/jquery.i18n/src/languages/dsb.js
new file mode 100644 (file)
index 0000000..cc069eb
--- /dev/null
@@ -0,0 +1,22 @@
+/**
+ * Lower Sorbian (Dolnoserbski) language functions
+ */
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.dsb = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       switch ( form ) {
+                               case 'instrumental': // instrumental
+                                       word = 'z ' + word;
+                                       break;
+                               case 'lokatiw': // lokatiw
+                                       word = 'wo ' + word;
+                                       break;
+                       }
+
+                       return word;
+               }
+       } );
+
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/fi.js b/resources/lib/jquery.i18n/src/languages/fi.js
new file mode 100644 (file)
index 0000000..d8e9578
--- /dev/null
@@ -0,0 +1,49 @@
+/**
+ * Finnish (Suomi) language functions
+ *
+ * @author Santhosh Thottingal
+ */
+
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.fi = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       // vowel harmony flag
+                       var aou = word.match( /[aou][^äöy]*$/i ),
+                               origWord = word;
+                       if ( word.match( /wiki$/i ) ) {
+                               aou = false;
+                       }
+
+                       // append i after final consonant
+                       if ( word.match( /[bcdfghjklmnpqrstvwxz]$/i ) ) {
+                               word += 'i';
+                       }
+
+                       switch ( form ) {
+                       case 'genitive':
+                               word += 'n';
+                               break;
+                       case 'elative':
+                               word += ( aou ? 'sta' : 'stä' );
+                               break;
+                       case 'partitive':
+                               word += ( aou ? 'a' : 'ä' );
+                               break;
+                       case 'illative':
+                               // Double the last letter and add 'n'
+                               word += word.substr( word.length - 1 ) + 'n';
+                               break;
+                       case 'inessive':
+                               word += ( aou ? 'ssa' : 'ssä' );
+                               break;
+                       default:
+                               word = origWord;
+                               break;
+                       }
+
+                       return word;
+               }
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/ga.js b/resources/lib/jquery.i18n/src/languages/ga.js
new file mode 100644 (file)
index 0000000..1aceab7
--- /dev/null
@@ -0,0 +1,38 @@
+/**
+ * Irish (Gaeilge) language functions
+ */
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.ga = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       if ( form === 'ainmlae' ) {
+                               switch ( word ) {
+                               case 'an Domhnach':
+                                       word = 'Dé Domhnaigh';
+                                       break;
+                               case 'an Luan':
+                                       word = 'Dé Luain';
+                                       break;
+                               case 'an Mháirt':
+                                       word = 'Dé Mháirt';
+                                       break;
+                               case 'an Chéadaoin':
+                                       word = 'Dé Chéadaoin';
+                                       break;
+                               case 'an Déardaoin':
+                                       word = 'Déardaoin';
+                                       break;
+                               case 'an Aoine':
+                                       word = 'Dé hAoine';
+                                       break;
+                               case 'an Satharn':
+                                       word = 'Dé Sathairn';
+                                       break;
+                               }
+                       }
+
+                       return word;
+               }
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/he.js b/resources/lib/jquery.i18n/src/languages/he.js
new file mode 100644 (file)
index 0000000..cbbe90b
--- /dev/null
@@ -0,0 +1,31 @@
+/**
+ * Hebrew (עברית) language functions
+ */
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.he = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       switch ( form ) {
+                       case 'prefixed':
+                       case 'תחילית': // the same word in Hebrew
+                               // Duplicate prefixed "Waw", but only if it's not already double
+                               if ( word.substr( 0, 1 ) === 'ו' && word.substr( 0, 2 ) !== 'וו' ) {
+                                       word = 'ו' + word;
+                               }
+
+                               // Remove the "He" if prefixed
+                               if ( word.substr( 0, 1 ) === 'ה' ) {
+                                       word = word.substr( 1, word.length );
+                               }
+
+                               // Add a hyphen (maqaf) before numbers and non-Hebrew letters
+                               if ( word.substr( 0, 1 ) < 'א' || word.substr( 0, 1 ) > 'ת' ) {
+                                       word = '־' + word;
+                               }
+                       }
+
+                       return word;
+               }
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/hsb.js b/resources/lib/jquery.i18n/src/languages/hsb.js
new file mode 100644 (file)
index 0000000..957616f
--- /dev/null
@@ -0,0 +1,21 @@
+/**
+ * Upper Sorbian (Hornjoserbsce) language functions
+ */
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.hsb = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       switch ( form ) {
+                       case 'instrumental': // instrumental
+                               word = 'z ' + word;
+                               break;
+                       case 'lokatiw': // lokatiw
+                               word = 'wo ' + word;
+                               break;
+                       }
+
+                       return word;
+               }
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/hu.js b/resources/lib/jquery.i18n/src/languages/hu.js
new file mode 100644 (file)
index 0000000..1177b85
--- /dev/null
@@ -0,0 +1,26 @@
+/**
+ * Hungarian language functions
+ *
+ * @author Santhosh Thottingal
+ */
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.hu = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       switch ( form ) {
+                       case 'rol':
+                               word += 'ról';
+                               break;
+                       case 'ba':
+                               word += 'ba';
+                               break;
+                       case 'k':
+                               word += 'k';
+                               break;
+                       }
+
+                       return word;
+               }
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/hy.js b/resources/lib/jquery.i18n/src/languages/hy.js
new file mode 100644 (file)
index 0000000..9c56899
--- /dev/null
@@ -0,0 +1,25 @@
+/**
+ * Armenian (Հայերեն) language functions
+ */
+
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.hy = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       if ( form === 'genitive' ) { // սեռական հոլով
+                               if ( word.substr( -1 ) === 'ա' ) {
+                                       word = word.substr( 0, word.length - 1 ) + 'այի';
+                               } else if ( word.substr( -1 ) === 'ո' ) {
+                                       word = word.substr( 0, word.length - 1 ) + 'ոյի';
+                               } else if ( word.substr( -4 ) === 'գիրք' ) {
+                                       word = word.substr( 0, word.length - 4 ) + 'գրքի';
+                               } else {
+                                       word = word + 'ի';
+                               }
+                       }
+
+                       return word;
+               }
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/la.js b/resources/lib/jquery.i18n/src/languages/la.js
new file mode 100644 (file)
index 0000000..11c1122
--- /dev/null
@@ -0,0 +1,54 @@
+/**
+ * Latin (lingua Latina) language functions
+ *
+ * @author Santhosh Thottingal
+ */
+
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.la = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       switch ( form ) {
+                       case 'genitive':
+                               // only a few declensions, and even for those mostly the singular only
+                               word = word.replace( /u[ms]$/i, 'i' ); // 2nd declension singular
+                               word = word.replace( /ommunia$/i, 'ommunium' ); // 3rd declension neuter plural (partly)
+                               word = word.replace( /a$/i, 'ae' ); // 1st declension singular
+                               word = word.replace( /libri$/i, 'librorum' ); // 2nd declension plural (partly)
+                               word = word.replace( /nuntii$/i, 'nuntiorum' ); // 2nd declension plural (partly)
+                               word = word.replace( /tio$/i, 'tionis' ); // 3rd declension singular (partly)
+                               word = word.replace( /ns$/i, 'ntis' );
+                               word = word.replace( /as$/i, 'atis' );
+                               word = word.replace( /es$/i, 'ei' ); // 5th declension singular
+                               break;
+                       case 'accusative':
+                               // only a few declensions, and even for those mostly the singular only
+                               word = word.replace( /u[ms]$/i, 'um' ); // 2nd declension singular
+                               word = word.replace( /ommunia$/i, 'am' ); // 3rd declension neuter plural (partly)
+                               word = word.replace( /a$/i, 'ommunia' ); // 1st declension singular
+                               word = word.replace( /libri$/i, 'libros' ); // 2nd declension plural (partly)
+                               word = word.replace( /nuntii$/i, 'nuntios' );// 2nd declension plural (partly)
+                               word = word.replace( /tio$/i, 'tionem' ); // 3rd declension singular (partly)
+                               word = word.replace( /ns$/i, 'ntem' );
+                               word = word.replace( /as$/i, 'atem' );
+                               word = word.replace( /es$/i, 'em' ); // 5th declension singular
+                               break;
+                       case 'ablative':
+                               // only a few declensions, and even for those mostly the singular only
+                               word = word.replace( /u[ms]$/i, 'o' ); // 2nd declension singular
+                               word = word.replace( /ommunia$/i, 'ommunibus' ); // 3rd declension neuter plural (partly)
+                               word = word.replace( /a$/i, 'a' ); // 1st declension singular
+                               word = word.replace( /libri$/i, 'libris' ); // 2nd declension plural (partly)
+                               word = word.replace( /nuntii$/i, 'nuntiis' ); // 2nd declension plural (partly)
+                               word = word.replace( /tio$/i, 'tione' ); // 3rd declension singular (partly)
+                               word = word.replace( /ns$/i, 'nte' );
+                               word = word.replace( /as$/i, 'ate' );
+                               word = word.replace( /es$/i, 'e' ); // 5th declension singular
+                               break;
+                       }
+
+                       return word;
+               }
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/ml.js b/resources/lib/jquery.i18n/src/languages/ml.js
new file mode 100644 (file)
index 0000000..f724b7b
--- /dev/null
@@ -0,0 +1,98 @@
+/**
+ * Malayalam language functions
+ *
+ * @author Santhosh Thottingal
+ */
+
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.ml = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       form = form.toLowerCase();
+                       switch ( form ) {
+                               case 'ഉദ്ദേശിക':
+                               case 'dative':
+                                       if ( word.substr( -1 ) === 'ു' ||
+                                               word.substr( -1 ) === 'ൂ' ||
+                                               word.substr( -1 ) === 'ൗ' ||
+                                               word.substr( -1 ) === 'ൌ'
+                                       ) {
+                                               word += 'വിന്';
+                                       } else if ( word.substr( -1 ) === 'ം' ) {
+                                               word = word.substr( 0, word.length - 1 ) + 'ത്തിന്';
+                                       } else if ( word.substr( -1 ) === 'ൻ' ) {
+                                               // Atomic chillu n. അവൻ -> അവന്
+                                               word = word.substr( 0, word.length - 1 ) + 'ന്';
+                                       } else if ( word.substr( -3 ) === 'ന്\u200d' ) {
+                                               // chillu n. അവൻ -> അവന്
+                                               word = word.substr( 0, word.length - 1 );
+                                       } else if ( word.substr( -1 ) === 'ൾ' || word.substr( -3 ) === 'ള്\u200d' ) {
+                                               word += 'ക്ക്';
+                                       } else if ( word.substr( -1 ) === 'ർ' || word.substr( -3 ) === 'ര്\u200d' ) {
+                                               word += 'ക്ക്';
+                                       } else if ( word.substr( -1 ) === 'ൽ' ) {
+                                               // Atomic chillu ൽ , ഫയൽ -> ഫയലിന്
+                                               word = word.substr( 0, word.length - 1 ) + 'ലിന്';
+                                       } else if ( word.substr( -3 ) === 'ല്\u200d' ) {
+                                               // chillu ല്\u200d , ഫയല്\u200d -> ഫയലിന്
+                                               word = word.substr( 0, word.length - 2 ) + 'ിന്';
+                                       } else if ( word.substr( -2 ) === 'ു്' ) {
+                                               word = word.substr( 0, word.length - 2 ) + 'ിന്';
+                                       } else if ( word.substr( -1 ) === '്' ) {
+                                               word = word.substr( 0, word.length - 1 ) + 'ിന്';
+                                       } else {
+                                               // കാവ്യ -> കാവ്യയ്ക്ക്, ഹരി -> ഹരിയ്ക്ക്, മല -> മലയ്ക്ക്
+                                               word += 'യ്ക്ക്';
+                                       }
+
+                                       break;
+                               case 'സംബന്ധിക':
+                               case 'genitive':
+                                       if ( word.substr( -1 ) === 'ം' ) {
+                                               word = word.substr( 0, word.length - 1 ) + 'ത്തിന്റെ';
+                                       } else if ( word.substr( -2 ) === 'ു്' ) {
+                                               word = word.substr( 0, word.length - 2 ) + 'ിന്റെ';
+                                       } else if ( word.substr( -1 ) === '്' ) {
+                                               word = word.substr( 0, word.length - 1 ) + 'ിന്റെ';
+                                       } else if (  word.substr( -1 ) === 'ു' ||
+                                               word.substr( -1 ) === 'ൂ' ||
+                                               word.substr( -1 ) === 'ൗ' ||
+                                               word.substr( -1 ) === 'ൌ'
+                                       ) {
+                                               word += 'വിന്റെ';
+                                       } else if ( word.substr( -1 ) === 'ൻ' ) {
+                                               // Atomic chillu n. അവൻ -> അവന്റെ
+                                               word = word.substr( 0, word.length - 1 ) + 'ന്റെ';
+                                       } else if ( word.substr( -3 ) === 'ന്\u200d' ) {
+                                               // chillu n. അവൻ -> അവന്റെ
+                                               word = word.substr( 0, word.length - 1 ) + 'റെ';
+                                       } else if ( word.substr( -3 ) === 'ള്\u200d' ) {
+                                               // chillu n. അവൾ -> അവളുടെ
+                                               word = word.substr( 0, word.length - 2 ) + 'ുടെ';
+                                       } else if ( word.substr( -1 ) === 'ൾ' ) {
+                                               // Atomic chillu n. അവള്\u200d -> അവളുടെ
+                                               word = word.substr( 0, word.length - 1 ) + 'ളുടെ';
+                                       } else if ( word.substr( -1 ) === 'ൽ' ) {
+                                               // Atomic l. മുയല്\u200d -> മുയലിന്റെ
+                                               word = word.substr( 0, word.length - 1 ) + 'ലിന്റെ';
+                                       } else if ( word.substr( -3 ) === 'ല്\u200d' ) {
+                                               // chillu l. മുയല്\u200d -> അവളുടെ
+                                               word = word.substr( 0, word.length - 2 ) + 'ിന്റെ';
+                                       } else if ( word.substr( -3 ) === 'ര്\u200d' ) {
+                                               // chillu r. അവര്\u200d -> അവരുടെ
+                                               word = word.substr( 0, word.length - 2 ) + 'ുടെ';
+                                       } else if ( word.substr( -1 ) === 'ർ' ) {
+                                               // Atomic chillu r. അവർ -> അവരുടെ
+                                               word = word.substr( 0, word.length - 1 ) + 'രുടെ';
+                                       } else {
+                                               word += 'യുടെ';
+                                       }
+
+                                       break;
+                       }
+
+                       return word;
+               }
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/os.js b/resources/lib/jquery.i18n/src/languages/os.js
new file mode 100644 (file)
index 0000000..4744367
--- /dev/null
@@ -0,0 +1,76 @@
+/**
+ * Ossetian (Ирон) language functions
+ *
+ * @author Santhosh Thottingal
+ */
+
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.os = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       var endAllative, jot, hyphen, ending;
+
+                       // Ending for allative case
+                       endAllative = 'мæ';
+                       // Variable for 'j' beetwen vowels
+                       jot = '';
+                       // Variable for "-" for not Ossetic words
+                       hyphen = '';
+                       // Variable for ending
+                       ending = '';
+
+                       if ( word.match( /тæ$/i ) ) {
+                               // Checking if the $word is in plural form
+                               word = word.substring( 0, word.length - 1 );
+                               endAllative = 'æм';
+                       } else if ( word.match( /[аæеёиоыэюя]$/i ) ) {
+                               // Works if word is in singular form.
+                               // Checking if word ends on one of the vowels: е, ё, и, о, ы, э, ю,
+                               // я.
+                               jot = 'й';
+                       } else if ( word.match( /у$/i ) ) {
+                               // Checking if word ends on 'у'. 'У' can be either consonant 'W' or
+                               // vowel 'U' in cyrillic Ossetic.
+                               // Examples: {{grammar:genitive|аунеу}} = аунеуы,
+                               // {{grammar:genitive|лæппу}} = лæппуйы.
+                               if ( !word.substring( word.length - 2, word.length - 1 )
+                                               .match( /[аæеёиоыэюя]$/i ) ) {
+                                       jot = 'й';
+                               }
+                       } else if ( !word.match( /[бвгджзйклмнопрстфхцчшщьъ]$/i ) ) {
+                               hyphen = '-';
+                       }
+
+                       switch ( form ) {
+                       case 'genitive':
+                               ending = hyphen + jot + 'ы';
+                               break;
+                       case 'dative':
+                               ending = hyphen + jot + 'æн';
+                               break;
+                       case 'allative':
+                               ending = hyphen + endAllative;
+                               break;
+                       case 'ablative':
+                               if ( jot === 'й' ) {
+                                       ending = hyphen + jot + 'æ';
+                               } else {
+                                       ending = hyphen + jot + 'æй';
+                               }
+                               break;
+                       case 'superessive':
+                               ending = hyphen + jot + 'ыл';
+                               break;
+                       case 'equative':
+                               ending = hyphen + jot + 'ау';
+                               break;
+                       case 'comitative':
+                               ending = hyphen + 'имæ';
+                               break;
+                       }
+
+                       return word + ending;
+               }
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/ru.js b/resources/lib/jquery.i18n/src/languages/ru.js
new file mode 100644 (file)
index 0000000..893b238
--- /dev/null
@@ -0,0 +1,29 @@
+/**
+ * Russian (Русский) language functions
+ */
+
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.ru = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       if ( form === 'genitive' ) { // родительный падеж
+                               if ( word.substr( -1 ) === 'ь' ) {
+                                       word = word.substr( 0, word.length - 1 ) + 'я';
+                               } else if ( word.substr( -2 ) === 'ия' ) {
+                                       word = word.substr( 0, word.length - 2 ) + 'ии';
+                               } else if ( word.substr( -2 ) === 'ка' ) {
+                                       word = word.substr( 0, word.length - 2 ) + 'ки';
+                               } else if ( word.substr( -2 ) === 'ти' ) {
+                                       word = word.substr( 0, word.length - 2 ) + 'тей';
+                               } else if ( word.substr( -2 ) === 'ды' ) {
+                                       word = word.substr( 0, word.length - 2 ) + 'дов';
+                               } else if ( word.substr( -3 ) === 'ник' ) {
+                                       word = word.substr( 0, word.length - 3 ) + 'ника';
+                               }
+                       }
+
+                       return word;
+               }
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/sl.js b/resources/lib/jquery.i18n/src/languages/sl.js
new file mode 100644 (file)
index 0000000..a3aafc3
--- /dev/null
@@ -0,0 +1,26 @@
+/**
+ * Slovenian (Slovenščina) language functions
+ */
+
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.sl = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       switch ( form ) {
+                               // locative
+                               case 'mestnik':
+                                       word = 'o ' + word;
+
+                                       break;
+                               // instrumental
+                               case 'orodnik':
+                                       word = 'z ' + word;
+
+                                       break;
+                       }
+
+                       return word;
+               }
+       } );
+}( jQuery ) );
diff --git a/resources/lib/jquery.i18n/src/languages/uk.js b/resources/lib/jquery.i18n/src/languages/uk.js
new file mode 100644 (file)
index 0000000..8e69efc
--- /dev/null
@@ -0,0 +1,39 @@
+/**
+ * Ukrainian (Українська) language functions
+ */
+
+( function ( $ ) {
+       'use strict';
+
+       $.i18n.languages.uk = $.extend( {}, $.i18n.languages['default'], {
+               convertGrammar: function ( word, form ) {
+                       switch ( form ) {
+                       case 'genitive': // родовий відмінок
+                               if ( word.substr( -1 ) === 'ь' ) {
+                                       word = word.substr( 0, word.length - 1 ) + 'я';
+                               } else if ( word.substr( -2 ) === 'ія' ) {
+                                       word = word.substr( 0, word.length - 2 ) + 'ії';
+                               } else if ( word.substr( -2 ) === 'ка' ) {
+                                       word = word.substr( 0, word.length - 2 ) + 'ки';
+                               } else if ( word.substr( -2 ) === 'ти' ) {
+                                       word = word.substr( 0, word.length - 2 ) + 'тей';
+                               } else if ( word.substr( -2 ) === 'ды' ) {
+                                       word = word.substr( 0, word.length - 2 ) + 'дов';
+                               } else if ( word.substr( -3 ) === 'ник' ) {
+                                       word = word.substr( 0, word.length - 3 ) + 'ника';
+                               }
+
+                               break;
+                       case 'accusative': // знахідний відмінок
+                               if ( word.substr( -2 ) === 'ія' ) {
+                                       word = word.substr( 0, word.length - 2 ) + 'ію';
+                               }
+
+                               break;
+                       }
+
+                       return word;
+               }
+       } );
+
+}( jQuery ) );
diff --git a/resources/lib/mustache/LICENSE b/resources/lib/mustache/LICENSE
new file mode 100644 (file)
index 0000000..aa1b831
--- /dev/null
@@ -0,0 +1,10 @@
+The MIT License
+
+Copyright (c) 2009 Chris Wanstrath (Ruby)
+Copyright (c) 2010-2014 Jan Lehnardt (JavaScript)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
index 8098781..61eb384 100644 (file)
@@ -8,9 +8,14 @@
        "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-process-error": "حاجه ما خدمتش مليح",
        "ooui-dialog-process-dismiss": "أرفضها",
-       "ooui-dialog-process-retry": "عاود جرب"
+       "ooui-dialog-process-retry": "عاود جرب",
+       "ooui-dialog-process-continue": "واصل",
+       "ooui-selectfile-not-supported": "تحديد الفيشيات ما هوش محدد",
+       "ooui-selectfile-placeholder": "ما اختاريتش حتا ملف"
 }
index ae853dd..c373601 100644 (file)
@@ -1,9 +1,13 @@
 {
        "@metadata": {
                "authors": [
-                       "Gitartha.bordoloi"
+                       "Gitartha.bordoloi",
+                       "Dibya Dutta"
                ]
        },
+       "ooui-outline-control-move-down": "সমল তললৈ স্থানান্তৰ কৰক",
+       "ooui-outline-control-move-up": "সমল ওপৰলৈ স্থানান্তৰ কৰক",
+       "ooui-outline-control-remove": "সমল আঁতৰাওক",
        "ooui-toolbar-more": "অধিক",
        "ooui-toolgroup-expand": "অধিক",
        "ooui-toolgroup-collapse": "কম দেখাওক",
@@ -12,5 +16,7 @@
        "ooui-dialog-process-error": "কিবা ত্ৰুটি হৈছে",
        "ooui-dialog-process-dismiss": "বাতিল",
        "ooui-dialog-process-retry": "পুনৰ চেষ্টা কৰক",
-       "ooui-dialog-process-continue": "অব্যাহত ৰাখক"
+       "ooui-dialog-process-continue": "অব্যাহত ৰাখক",
+       "ooui-selectfile-not-supported": "নথি নিৰ্বাচন সমৰ্থন কৰা নাই",
+       "ooui-selectfile-placeholder": "কোনো নথি নিৰ্বাচিত কৰা হোৱা নাই"
 }
index 87d7688..216df70 100644 (file)
        "ooui-outline-control-move-up": "Mover arriba l'elementu",
        "ooui-outline-control-remove": "Desaniciar elementu",
        "ooui-toolbar-more": "Más",
+       "ooui-toolgroup-expand": "Más",
+       "ooui-toolgroup-collapse": "Menos",
        "ooui-dialog-message-accept": "Aceutar",
        "ooui-dialog-message-reject": "Encaboxar",
        "ooui-dialog-process-error": "Daqué funcionó mal",
        "ooui-dialog-process-dismiss": "Descartar",
-       "ooui-dialog-process-retry": "Vuelvi a intentalo"
+       "ooui-dialog-process-retry": "Vuelvi a intentalo",
+       "ooui-dialog-process-continue": "Siguir",
+       "ooui-selectfile-not-supported": "Nun hai encontu pa la seleición de ficheros",
+       "ooui-selectfile-placeholder": "Nun se seleicionó nengún ficheru"
 }
index 4aeb490..3548239 100644 (file)
@@ -5,12 +5,22 @@
                        "Wizardist",
                        "Чаховіч Уладзіслаў",
                        "Zedlik",
-                       "Red Winged Duck"
+                       "Red Winged Duck",
+                       "Renessaince"
                ]
        },
        "ooui-outline-control-move-down": "Перасунуць элемэнт ніжэй",
        "ooui-outline-control-move-up": "Перасунуць элемэнт вышэй",
+       "ooui-outline-control-remove": "Выдаліць пункт",
        "ooui-toolbar-more": "Болей",
        "ooui-toolgroup-expand": "Болей",
-       "ooui-toolgroup-collapse": "Меней"
+       "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": "Працягваць",
+       "ooui-selectfile-not-supported": "Выбар файлу не падтрымліваецца",
+       "ooui-selectfile-placeholder": "Ніводзін файл не абраны"
 }
index 1cfa6c4..9481a2c 100644 (file)
@@ -8,7 +8,8 @@
                        "Runab",
                        "Sayak Sarkar",
                        "Aftabuzzaman",
-                       "RYasmeen (WMF)"
+                       "RYasmeen (WMF)",
+                       "NahidSultan"
                ]
        },
        "ooui-outline-control-move-down": "আইটেম নিচে স্থানান্তর",
@@ -22,5 +23,7 @@
        "ooui-dialog-process-error": "কিছু একটায় ত্রুটি হয়েছে",
        "ooui-dialog-process-dismiss": "বাতিল করুন",
        "ooui-dialog-process-retry": "আবার চেষ্টা করুন",
-       "ooui-dialog-process-continue": "অগ্রসর হোন"
+       "ooui-dialog-process-continue": "অগ্রসর হোন",
+       "ooui-selectfile-not-supported": "চিত্র নির্বাচন সমর্থন করছে না।",
+       "ooui-selectfile-placeholder": " কোন চিত্র নির্বাচিত হয়নি।"
 }
index 0c66619..d2a998c 100644 (file)
@@ -3,9 +3,18 @@
                "authors": [
                        "Calak",
                        "Muhammed taha",
-                       "Serwan"
+                       "Serwan",
+                       "Pirehelokan"
                ]
        },
+       "ooui-toolbar-more": "زیاتر",
+       "ooui-toolgroup-expand": "زیاتر",
+       "ooui-toolgroup-collapse": "کەمتر",
        "ooui-dialog-message-accept": "باشە",
-       "ooui-dialog-message-reject": "پاشگەزبوونەوە"
+       "ooui-dialog-message-reject": "پاشگەزبوونەوە",
+       "ooui-dialog-process-error": "ھەڵەیەک ڕووی داوە",
+       "ooui-dialog-process-dismiss": "لێگەڕان",
+       "ooui-dialog-process-retry": "دیسان ھەوڵ بدە",
+       "ooui-dialog-process-continue": "درێژە بدە",
+       "ooui-selectfile-placeholder": "ھیچ فایلێک ھەڵنەبژێراوە"
 }
index 0b847be..30e3efa 100644 (file)
@@ -7,10 +7,13 @@
                        "Laketown",
                        "Palnatoke",
                        "Simeondahl",
-                       "Tehnix"
+                       "Tehnix",
+                       "Macofe"
                ]
        },
        "ooui-outline-control-move-down": "Flyt ned",
        "ooui-outline-control-move-up": "Flyt op",
-       "ooui-toolbar-more": "Mere"
+       "ooui-toolbar-more": "Mere",
+       "ooui-toolgroup-expand": "Mere",
+       "ooui-dialog-process-continue": "Fortsæt"
 }
diff --git a/resources/lib/oojs-ui/i18n/dty.json b/resources/lib/oojs-ui/i18n/dty.json
new file mode 100644 (file)
index 0000000..21742b6
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "जनक राज भट्ट"
+               ]
+       },
+       "ooui-outline-control-move-down": "वस्तुलाई तल साददे",
+       "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-process-dismiss": "खारेज गद्दे",
+       "ooui-dialog-process-retry": "दोसरया प्रयास गर",
+       "ooui-dialog-process-continue": "जारी राख्या"
+}
index 0f705ad..2ead5c5 100644 (file)
@@ -4,7 +4,8 @@
                        "Happy5214",
                        "KuboF",
                        "Shirayuki",
-                       "Yekrats"
+                       "Yekrats",
+                       "Kvardek du"
                ]
        },
        "ooui-outline-control-move-down": "Movi eron suben",
@@ -16,6 +17,9 @@
        "ooui-dialog-message-accept": "Bone",
        "ooui-dialog-message-reject": "Nuligi",
        "ooui-dialog-process-error": "Io rompiĝis",
+       "ooui-dialog-process-dismiss": "Elimini",
        "ooui-dialog-process-retry": "Reprovi",
-       "ooui-dialog-process-continue": "Daŭrigi"
+       "ooui-dialog-process-continue": "Daŭrigi",
+       "ooui-selectfile-not-supported": "Dosieroselekto ne estas subtenata.",
+       "ooui-selectfile-placeholder": "Vi ne selektis dosieron"
 }
index 415ff60..e86f11e 100644 (file)
@@ -18,6 +18,6 @@
        "ooui-dialog-process-dismiss": "Hülga",
        "ooui-dialog-process-retry": "Proovi uuesti",
        "ooui-dialog-process-continue": "Jätka",
-       "ooui-selectfile-not-supported": "Faili valik ei ole toetatud",
+       "ooui-selectfile-not-supported": "Faili valiku tugi puudub",
        "ooui-selectfile-placeholder": "Faili ei ole valitud"
 }
index fe6e997..93c66c5 100644 (file)
@@ -20,5 +20,6 @@
        "ooui-dialog-process-dismiss": "Utzi",
        "ooui-dialog-process-retry": "Saiatu berriro",
        "ooui-dialog-process-continue": "Jarraitu",
+       "ooui-selectfile-not-supported": "Fitxategi aukeraketa ez da onartzen",
        "ooui-selectfile-placeholder": "Ez da fitxategirik hautatu"
 }
index 62198f4..e20997a 100644 (file)
@@ -12,7 +12,8 @@
                        "درفش کاویانی",
                        "Armin1392",
                        "Alirezaaa",
-                       "Leyth"
+                       "Leyth",
+                       "الناز"
                ]
        },
        "ooui-outline-control-move-down": "انتقال مورد به پایین",
@@ -24,9 +25,9 @@
        "ooui-dialog-message-accept": "تأیید",
        "ooui-dialog-message-reject": "لغو",
        "ooui-dialog-process-error": "مشکلی وجود دارد",
-       "ooui-dialog-process-dismiss": "نپذیرفتن",
-       "ooui-dialog-process-retry": "دوباره امتحان کن",
+       "ooui-dialog-process-dismiss": "رد",
+       "ooui-dialog-process-retry": "دوباره امتحان کنید",
        "ooui-dialog-process-continue": "ادامه",
        "ooui-selectfile-not-supported": "انتخاب پرونده پشتیبانی نمی‌شود",
-       "ooui-selectfile-placeholder": "هیچ پرونده‌ای انتخاب نشدهاست"
+       "ooui-selectfile-placeholder": "هیچ پرونده‌ای انتخاب نشده است"
 }
index 8c76e07..c96a74e 100644 (file)
@@ -24,7 +24,7 @@
        "ooui-toolgroup-expand": "Näytä lisää",
        "ooui-toolgroup-collapse": "Näytä vähemmän",
        "ooui-dialog-message-accept": "OK",
-       "ooui-dialog-message-reject": "Peruuta",
+       "ooui-dialog-message-reject": "Peru",
        "ooui-dialog-process-error": "Jokin meni pieleen",
        "ooui-dialog-process-dismiss": "Hylkää",
        "ooui-dialog-process-retry": "Yritä uudelleen",
index ae671cb..537f6b8 100644 (file)
                        "Verdy p",
                        "Wyz",
                        "SnowedEarth",
-                       "Jdforrester"
+                       "Jdforrester",
+                       "Wladek92",
+                       "Harmonia Amanda"
                ]
        },
-       "ooui-outline-control-move-down": "Faire descendre l’élément",
-       "ooui-outline-control-move-up": "Faire monter l’élément",
+       "ooui-outline-control-move-down": "Descendre l’élément",
+       "ooui-outline-control-move-up": "Monter l’élément",
        "ooui-outline-control-remove": "Supprimer l’élément",
        "ooui-toolbar-more": "Plus",
        "ooui-toolgroup-expand": "Plus",
        "ooui-toolgroup-collapse": "Moins",
        "ooui-dialog-message-accept": "OK",
        "ooui-dialog-message-reject": "Annuler",
-       "ooui-dialog-process-error": "Quelque chose a mal tourné",
+       "ooui-dialog-process-error": "Quelque chose s'est mal passé",
        "ooui-dialog-process-dismiss": "Rejeter",
-       "ooui-dialog-process-retry": "Réessayez",
+       "ooui-dialog-process-retry": "Réessayer",
        "ooui-dialog-process-continue": "Continuer",
        "ooui-selectfile-not-supported": "La sélection de fichier n’est pas prise en charge",
        "ooui-selectfile-placeholder": "Aucun fichier sélectionné"
index 3f02e19..5c48b9e 100644 (file)
@@ -4,7 +4,8 @@
                        "Ashok modhvadia",
                        "KartikMistry",
                        "The Discoverer",
-                       "NehalDaveND"
+                       "NehalDaveND",
+                       "Dsvyas"
                ]
        },
        "ooui-outline-control-move-down": "વસ્તુ નીચે ખસેડો",
        "ooui-outline-control-remove": "વસ્તુ હટાવો",
        "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": "ચાલુ રાખો"
+       "ooui-dialog-process-continue": "ચાલુ રાખો",
+       "ooui-selectfile-not-supported": "ફાઇલ પસંદગીની જોગવાઈ નથી",
+       "ooui-selectfile-placeholder": "કોઇ ફાઇલ પસંદ નથી કરાઈ"
 }
index d45b057..acd9d3b 100644 (file)
@@ -6,18 +6,19 @@
                        "Misibacsi",
                        "ViDam",
                        "Tacsipacsi",
-                       "Csega"
+                       "Csega",
+                       "Kishajnalka"
                ]
        },
        "ooui-outline-control-move-down": "Elem mozgatása lefelé",
        "ooui-outline-control-move-up": "Elem mozgatása felfelé",
        "ooui-outline-control-remove": "Elem eltávolítása",
-       "ooui-toolbar-more": "Tovább...",
+       "ooui-toolbar-more": "Több",
        "ooui-toolgroup-expand": "Több",
        "ooui-toolgroup-collapse": "Kevesebb",
        "ooui-dialog-message-accept": "OK",
        "ooui-dialog-message-reject": "Mégse",
-       "ooui-dialog-process-error": "Valami elromlott.",
+       "ooui-dialog-process-error": "Valami elromlott",
        "ooui-dialog-process-dismiss": "Elrejt",
        "ooui-dialog-process-retry": "Próbáld újra",
        "ooui-dialog-process-continue": "Folytatás",
index 2aaf4e4..c2b45a8 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Vacio",
                        "Xelgen",
-                       "Դավիթ Սարոյան"
+                       "Դավիթ Սարոյան",
+                       "Vahe Gharakhanyan"
                ]
        },
        "ooui-outline-control-move-down": "Իջեցնել կետը",
@@ -17,5 +18,7 @@
        "ooui-dialog-process-error": "Ինչ-որ սխալ է տեղի ունեցել",
        "ooui-dialog-process-dismiss": "Փակել",
        "ooui-dialog-process-retry": "Կրկին փորձել",
-       "ooui-dialog-process-continue": "Շարունակել"
+       "ooui-dialog-process-continue": "Շարունակել",
+       "ooui-selectfile-not-supported": "Ֆայլի ընտրությունը չի պաշտպանվում",
+       "ooui-selectfile-placeholder": "Ֆայլն ընտրված չէ"
 }
index bd65e71..400a432 100644 (file)
@@ -22,5 +22,7 @@
        "ooui-dialog-process-error": "Ada yang tidak beres",
        "ooui-dialog-process-dismiss": "Tutup",
        "ooui-dialog-process-retry": "Coba lagi",
-       "ooui-dialog-process-continue": "Lanjutkan"
+       "ooui-dialog-process-continue": "Lanjutkan",
+       "ooui-selectfile-not-supported": "Peilihan berkas tidak didukung",
+       "ooui-selectfile-placeholder": "Tidak ada berkas yang terpilih"
 }
index ec86124..631b3f5 100644 (file)
@@ -20,5 +20,7 @@
        "ooui-dialog-process-error": "エラーが発生しました…",
        "ooui-dialog-process-dismiss": "閉じる",
        "ooui-dialog-process-retry": "もう一度お試しください",
-       "ooui-dialog-process-continue": "続行"
+       "ooui-dialog-process-continue": "続行",
+       "ooui-selectfile-not-supported": "ファイルの選択はサポートされていません",
+       "ooui-selectfile-placeholder": "ファイルが選択されていません"
 }
index 8827af3..677b1c3 100644 (file)
@@ -3,8 +3,22 @@
                "authors": [
                        "Gleki",
                        "NoiX180",
-                       "Pras"
+                       "Pras",
+                       "Jadinegara"
                ]
        },
-       "ooui-outline-control-move-down": "Pindhahaken butir mangandhap"
+       "ooui-outline-control-move-down": "Pindhahaken butir mangandhap",
+       "ooui-outline-control-move-up": "Pindhah kara mêndhuwur",
+       "ooui-outline-control-remove": "Busak kara",
+       "ooui-toolbar-more": "Mênèh",
+       "ooui-toolgroup-expand": "Mênèh",
+       "ooui-toolgroup-collapse": "Suda",
+       "ooui-dialog-message-accept": "Oké",
+       "ooui-dialog-message-reject": "Batal",
+       "ooui-dialog-process-error": "Ana sing klèru",
+       "ooui-dialog-process-dismiss": "Tutup",
+       "ooui-dialog-process-retry": "Jajal manèh",
+       "ooui-dialog-process-continue": "Tutug",
+       "ooui-selectfile-not-supported": "Pilihan bêrkas ora disokong",
+       "ooui-selectfile-placeholder": "Ora ana bêrkas sing kapilih"
 }
index 60ef661..efacb63 100644 (file)
@@ -22,5 +22,8 @@
        "ooui-dialog-process-error": "მოხდა რაღაც შეცდომა",
        "ooui-dialog-process-dismiss": "დამალვა",
        "ooui-dialog-process-retry": "კიდევ სცადეთ",
-       "ooui-dialog-process-continue": "გაგრძელება"
+       "ooui-dialog-process-continue": "გაგრძელება",
+       "ooui-selectfile-not-supported": "ფაილის არჩევა არ არის მხარდაჭერილი",
+       "ooui-selectfile-placeholder": "ფაილი არ არის არჩეული",
+       "ooui-semicolon-separator": ";"
 }
index 196dc2c..f23f687 100644 (file)
        "ooui-outline-control-remove": "항목 지우기",
        "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-retry": "다시 시도하세요",
+       "ooui-dialog-process-continue": "계속",
+       "ooui-selectfile-not-supported": "파일 선택은 지원하지 않습니다",
+       "ooui-selectfile-placeholder": "선택한 파일 없음"
 }
diff --git a/resources/lib/oojs-ui/i18n/li.json b/resources/lib/oojs-ui/i18n/li.json
new file mode 100644 (file)
index 0000000..f05a957
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Pahles"
+               ]
+       },
+       "ooui-outline-control-move-down": "Item nao ónger verplaatse",
+       "ooui-outline-control-move-up": "Item nao bove verplaetse",
+       "ooui-outline-control-remove": "Item ewegsjaffe",
+       "ooui-toolbar-more": "Mieë",
+       "ooui-toolgroup-expand": "Mieë",
+       "ooui-toolgroup-collapse": "Minder",
+       "ooui-dialog-message-accept": "Ok",
+       "ooui-dialog-message-reject": "Aafbraeke",
+       "ooui-dialog-process-error": "Dao is get misgegange",
+       "ooui-dialog-process-dismiss": "Sjlete",
+       "ooui-dialog-process-retry": "Perbeer obbenuujts",
+       "ooui-dialog-process-continue": "Doorgaon",
+       "ooui-selectfile-not-supported": "Selektie van 'n besjtandj waert neet óngersteund",
+       "ooui-selectfile-placeholder": "Dao is gein besjtandj geselekteerd"
+}
index 0ce0c3f..326dd14 100644 (file)
@@ -9,5 +9,16 @@
        },
        "ooui-outline-control-move-down": "ഇനം താഴേയ്ക്ക് മാറ്റുക",
        "ooui-outline-control-move-up": "ഇനം മുകളിലേയ്ക്ക് മാറ്റുക",
-       "ooui-toolbar-more": "കൂടുതൽ"
+       "ooui-outline-control-remove": "ഇനം നീക്കംചെയ്യുക",
+       "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": "തുടരുക",
+       "ooui-selectfile-not-supported": "പ്രമാണം തിരഞ്ഞെടുക്കൽ പിന്തുണയ്ക്കുന്നില്ല",
+       "ooui-selectfile-placeholder": "പ്രമാണങ്ങൾ ഒന്നും തിരഞ്ഞെടുത്തിട്ടില്ല"
 }
index 136ada3..19ce1c2 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Anakmalaysia",
                        "Aurora",
-                       "Pizza1016"
+                       "Pizza1016",
+                       "Karmadunya9-"
                ]
        },
        "ooui-outline-control-move-down": "Alihkan perkara ke bawah",
@@ -18,5 +19,6 @@
        "ooui-dialog-process-dismiss": "Singkir",
        "ooui-dialog-process-retry": "Cuba lagi",
        "ooui-dialog-process-continue": "Teruskan",
+       "ooui-selectfile-not-supported": "Pilihan fail tidak disokong",
        "ooui-selectfile-placeholder": "Tiada fail yang dipilih"
 }
index 8eba859..515eada 100644 (file)
@@ -32,5 +32,6 @@
        "ooui-dialog-process-dismiss": "Sluiten",
        "ooui-dialog-process-retry": "Opnieuw proberen",
        "ooui-dialog-process-continue": "Doorgaan",
+       "ooui-selectfile-not-supported": "Selectie van een bestand wordt niet ondersteund",
        "ooui-selectfile-placeholder": "Er is geen bestand geselecteerd"
 }
index 4d35b6c..bccd615 100644 (file)
@@ -9,5 +9,12 @@
        "ooui-outline-control-move-up": "Far montar l’element",
        "ooui-outline-control-remove": "Suprimir l’element",
        "ooui-toolbar-more": "Mai",
-       "ooui-dialog-message-reject": "Anullar"
+       "ooui-toolgroup-expand": "Mai",
+       "ooui-toolgroup-collapse": "Mens",
+       "ooui-dialog-message-accept": "D'acòrdi",
+       "ooui-dialog-message-reject": "Anullar",
+       "ooui-dialog-process-dismiss": "Regetar",
+       "ooui-dialog-process-retry": "Ensajatz tornamai",
+       "ooui-dialog-process-continue": "Contunhar",
+       "ooui-selectfile-placeholder": "Cap de fichièr pas seleccionat"
 }
index dde49bf..7d96dcb 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Odisha1",
                        "Psubhashish",
-                       "ଶିତିକଣ୍ଠ ଦାଶ"
+                       "ଶିତିକଣ୍ଠ ଦାଶ",
+                       "Jnanaranjan Sahu"
                ]
        },
        "ooui-outline-control-move-down": "ବସ୍ତୁଟିକୁ ତଳକୁ ଘୁଞ୍ଚାନ୍ତୁ",
@@ -17,5 +18,7 @@
        "ooui-dialog-process-error": "ଅସୁବିଧାଟିଏ ଘଟିଲା",
        "ooui-dialog-process-dismiss": "ଖାରଜ",
        "ooui-dialog-process-retry": "ଆଉ ଥରେ ଚେଷ୍ଟା କରନ୍ତୁ",
-       "ooui-dialog-process-continue": "ଚାଲୁରଖିବେ"
+       "ooui-dialog-process-continue": "ଚାଲୁରଖିବେ",
+       "ooui-selectfile-not-supported": "ଫାଇଲ ବାଛିବା ସୁବିଧା ନାହିଁ",
+       "ooui-selectfile-placeholder": "କୌଣସି ଫାଇଲ ବଛାଯାଇନାହିଁ"
 }
index 3023479..81da6f5 100644 (file)
@@ -31,5 +31,6 @@
        "ooui-dialog-process-dismiss": "Ukryj",
        "ooui-dialog-process-retry": "Spróbuj ponownie",
        "ooui-dialog-process-continue": "Kontynuuj",
+       "ooui-selectfile-not-supported": "Wybór pliku nie jest obsługiwany",
        "ooui-selectfile-placeholder": "Nie wybrano pliku"
 }
index b8fd3a5..c8b5bc7 100644 (file)
@@ -8,5 +8,16 @@
        },
        "ooui-outline-control-move-down": "Fé calé giù l'element",
        "ooui-outline-control-move-up": "Fé monté l'element",
-       "ooui-toolbar-more": "Ëd pi"
+       "ooui-outline-control-remove": "Gavé j'element",
+       "ooui-toolbar-more": "Ëd pi",
+       "ooui-toolgroup-expand": "Pi",
+       "ooui-toolgroup-collapse": "Men",
+       "ooui-dialog-message-accept": "Va bin",
+       "ooui-dialog-message-reject": "Scancelé",
+       "ooui-dialog-process-error": "Quaicòs a l'é andà mal",
+       "ooui-dialog-process-dismiss": "Stërmé",
+       "ooui-dialog-process-retry": "Preuva torna",
+       "ooui-dialog-process-continue": "Continua",
+       "ooui-selectfile-not-supported": "La selession d'archivi a l'é nen mantnùa",
+       "ooui-selectfile-placeholder": "Gnun archivi selessionà"
 }
index 94ea089..bcc31e0 100644 (file)
@@ -9,10 +9,23 @@
                        "Jaideraf",
                        "Luckas",
                        "OTAVIO1981",
-                       555
+                       555,
+                       "TheEduGobi",
+                       "TheGabrielZaum"
                ]
        },
        "ooui-outline-control-move-down": "Mover item para baixo",
        "ooui-outline-control-move-up": "Mover item para cima",
-       "ooui-toolbar-more": "Mais"
+       "ooui-outline-control-remove": "Remover item",
+       "ooui-toolbar-more": "Mais",
+       "ooui-toolgroup-expand": "Mais",
+       "ooui-toolgroup-collapse": "Menos",
+       "ooui-dialog-message-accept": "OK",
+       "ooui-dialog-message-reject": "Cancelar",
+       "ooui-dialog-process-error": "Algo deu errado",
+       "ooui-dialog-process-dismiss": "Dispensar",
+       "ooui-dialog-process-retry": "Tentar novamente",
+       "ooui-dialog-process-continue": "Continuar",
+       "ooui-selectfile-not-supported": "O selecionamento de arquivos não é suportado",
+       "ooui-selectfile-placeholder": "Nenhum arquivo selecionado"
 }
index f5674b3..7435416 100644 (file)
@@ -16,7 +16,8 @@
                        "Sunpriat",
                        "Yury Katkov",
                        "Умар",
-                       "Камалист"
+                       "Камалист",
+                       "Meshkov.a"
                ]
        },
        "ooui-outline-control-move-down": "Переместить элемент вниз",
@@ -31,5 +32,6 @@
        "ooui-dialog-process-dismiss": "Закрыть",
        "ooui-dialog-process-retry": "Попробовать ещё раз",
        "ooui-dialog-process-continue": "Продолжить",
-       "ooui-selectfile-not-supported": "Выбор файла не поддерживается"
+       "ooui-selectfile-not-supported": "Выбор файла не поддерживается",
+       "ooui-selectfile-placeholder": "Не выбран файл"
 }
index 85a94cd..1e1b05d 100644 (file)
@@ -4,5 +4,19 @@
                        "Gazeb",
                        "HalanTul"
                ]
-       }
+       },
+       "ooui-outline-control-move-down": "Аллара түһэрэн биэр",
+       "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-process-error": "Туга эрэ сатаммата",
+       "ooui-dialog-process-dismiss": "Сап",
+       "ooui-dialog-process-retry": "Хатылаан көр",
+       "ooui-dialog-process-continue": "Салгыы",
+       "ooui-selectfile-not-supported": "Билэни талыы өйөммөт",
+       "ooui-selectfile-placeholder": "Биир да билэ талыллыбатах"
 }
index c8246da..fa65888 100644 (file)
@@ -2,11 +2,21 @@
        "@metadata": {
                "authors": [
                        "Mimarik",
-                       "Teslaton"
+                       "Teslaton",
+                       "Kusavica"
                ]
        },
        "ooui-outline-control-move-down": "Posunúť položku nadol",
        "ooui-outline-control-move-up": "Posunúť položku nahor",
        "ooui-outline-control-remove": "Odstrániť položku",
-       "ooui-toolbar-more": "Viac"
+       "ooui-toolbar-more": "Viac",
+       "ooui-toolgroup-expand": "Viac",
+       "ooui-toolgroup-collapse": "Menej",
+       "ooui-dialog-message-accept": "OK",
+       "ooui-dialog-message-reject": "Zrušiť",
+       "ooui-dialog-process-error": "Niečo sa pokazilo",
+       "ooui-dialog-process-dismiss": "Zrušiť",
+       "ooui-dialog-process-retry": "Skúsiť znova",
+       "ooui-dialog-process-continue": "Pokračovať",
+       "ooui-selectfile-placeholder": "Nie je vybraný žiadny súbor"
 }
index a40728a..e113671 100644 (file)
@@ -18,5 +18,7 @@
        "ooui-dialog-process-error": "Nekaj je šlo narobe",
        "ooui-dialog-process-dismiss": "Skrij",
        "ooui-dialog-process-retry": "Poskusi znova",
-       "ooui-dialog-process-continue": "Nadaljuj"
+       "ooui-dialog-process-continue": "Nadaljuj",
+       "ooui-selectfile-not-supported": "Izbira datoteke ni podprta",
+       "ooui-selectfile-placeholder": "Nobena datoteka ni izbrana"
 }
index c2422ba..9cd8ea3 100644 (file)
@@ -11,7 +11,8 @@
                        "Sendelbach",
                        "Skalman",
                        "WikiPhoenix",
-                       "Lokal Profil"
+                       "Lokal Profil",
+                       "Warrakkk"
                ]
        },
        "ooui-outline-control-move-down": "Flytta ned objekt",
@@ -26,5 +27,6 @@
        "ooui-dialog-process-dismiss": "Stäng",
        "ooui-dialog-process-retry": "Försök igen",
        "ooui-dialog-process-continue": "Fortsätt",
+       "ooui-selectfile-not-supported": "Filval stöds inte",
        "ooui-selectfile-placeholder": "Ingen fil är vald"
 }
index 122d4a2..6e7b249 100644 (file)
@@ -5,9 +5,22 @@
                        "Sank",
                        "Shanmugamp7",
                        "மதனாஹரன்",
-                       "ElangoRamanujam"
+                       "ElangoRamanujam",
+                       "Info-farmer"
                ]
        },
+       "ooui-outline-control-move-down": "உருப்படியை கீழிடு",
+       "ooui-outline-control-move-up": "உருப்படியை மேலிடு",
+       "ooui-outline-control-remove": "உருப்படியை நீக்கு",
+       "ooui-toolbar-more": "மேலும்",
        "ooui-toolgroup-expand": "மேலும்",
-       "ooui-dialog-process-continue": "தொடரவும்"
+       "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": "தொடரவும்",
+       "ooui-selectfile-not-supported": "கோப்புத்தேர்வு ஆதரவாக இல்லை",
+       "ooui-selectfile-placeholder": "எக்கோப்பும் தெரிவாகவில்லை"
 }
index a35d4eb..9e0b977 100644 (file)
@@ -31,5 +31,6 @@
        "ooui-dialog-process-dismiss": "Приховати",
        "ooui-dialog-process-retry": "Спробуйте ще раз",
        "ooui-dialog-process-continue": "Продовжити",
+       "ooui-selectfile-not-supported": "Вибір файлу не підтримується",
        "ooui-selectfile-placeholder": "Жодного файлу не вибрано"
 }
index d5c1e36..d62e3cb 100644 (file)
@@ -4,19 +4,22 @@
                        "Cheers!",
                        "Jdforrester",
                        "Minh Nguyen",
-                       "Max20091"
+                       "Max20091",
+                       "Anh88"
                ]
        },
        "ooui-outline-control-move-down": "Chuyển mục xuống",
        "ooui-outline-control-move-up": "Chuyển mục lên",
-       "ooui-outline-control-remove": "Xóa khoản",
+       "ooui-outline-control-remove": "Xóa mục",
        "ooui-toolbar-more": "Thêm",
        "ooui-toolgroup-expand": "Mở rộng",
        "ooui-toolgroup-collapse": "Rút gọn",
        "ooui-dialog-message-accept": "OK",
        "ooui-dialog-message-reject": "Hủy bỏ",
-       "ooui-dialog-process-error": "Đã bị trục trặc",
+       "ooui-dialog-process-error": "Có thứ gì đó bị lỗi",
        "ooui-dialog-process-dismiss": "Bỏ qua",
        "ooui-dialog-process-retry": "Thử lại",
-       "ooui-dialog-process-continue": "Tiếp tục"
+       "ooui-dialog-process-continue": "Tiếp tục",
+       "ooui-selectfile-not-supported": "Tệp tin được chọn không được hỗ trợ",
+       "ooui-selectfile-placeholder": "Không có Tệp tin nào được chọn"
 }
index 6c7ae5c..d9a8314 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.0
+ * OOjs UI v0.12.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
- * Copyright 2011–2015 OOjs Team and other contributors.
+ * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-07-13T23:47:11Z
+ * Date: 2015-07-22T19:37:14Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
        z-index: 1;
        width: 100%;
 }
+.oo-ui-pendingElement-pending {
+       background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
+}
 .oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous > .oo-ui-panelLayout-scrollable {
        overflow-y: hidden;
 }
        border-radius: 0.5em;
        box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25);
 }
+.oo-ui-panelLayout-padded.oo-ui-panelLayout-framed {
+       margin: 1em 0;
+}
 .oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
        display: block;
        position: relative;
           -moz-box-sizing: border-box;
                box-sizing: border-box;
 }
+.oo-ui-textInputWidget input[type="search"] {
+       -webkit-appearance: none;
+}
+.oo-ui-textInputWidget input[type="search"]::-ms-clear {
+       display: none;
+}
+.oo-ui-textInputWidget input[type="search"]::-ms-reveal {
+       display: none;
+}
+.oo-ui-textInputWidget input[type="search"]::-webkit-search-decoration,
+.oo-ui-textInputWidget input[type="search"]::-webkit-search-cancel-button,
+.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-button,
+.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-decoration {
+       display: none;
+}
 .oo-ui-textInputWidget > .oo-ui-iconElement-icon,
 .oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator,
 .oo-ui-textInputWidget > .oo-ui-labelElement-label {
 .oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator {
        cursor: text;
 }
+.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-textInputWidget-type-search > .oo-ui-indicatorElement-indicator {
+       cursor: pointer;
+}
 .oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label {
        display: block;
 }
             -o-transition: border-color 200ms, box-shadow 200ms;
                transition: border-color 200ms, box-shadow 200ms;
 }
+.oo-ui-textInputWidget input.oo-ui-pendingElement-pending,
+.oo-ui-textInputWidget textarea.oo-ui-pendingElement-pending {
+       background-color: transparent;
+}
 .oo-ui-textInputWidget-decorated input,
 .oo-ui-textInputWidget-decorated textarea {
        padding-left: 2em;
        color: #dddddd;
        text-shadow: 0 1px 1px #ffffff;
 }
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending input,
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending textarea {
-       background-color: transparent;
-       background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
-}
 .oo-ui-textInputWidget.oo-ui-iconElement input,
 .oo-ui-textInputWidget.oo-ui-iconElement textarea {
        padding-left: 2em;
 .oo-ui-processDialog-content .oo-ui-window-head {
        height: 3.4em;
 }
-.oo-ui-processDialog-content .oo-ui-window-head.oo-ui-pendingElement-pending {
-       background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
-}
 .oo-ui-processDialog-content .oo-ui-window-body {
        top: 3.4em;
        box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
index 91c43a6..f5d2ea7 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.0
+ * OOjs UI v0.12.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
- * Copyright 2011–2015 OOjs Team and other contributors.
+ * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-07-13T23:47:04Z
+ * Date: 2015-07-22T19:37:07Z
  */
 /**
  * @class
index 08f7f68..d539219 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.0
+ * OOjs UI v0.12.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
- * Copyright 2011–2015 OOjs Team and other contributors.
+ * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-07-13T23:47:11Z
+ * Date: 2015-07-22T19:37:14Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
        z-index: 1;
        width: 100%;
 }
+.oo-ui-pendingElement-pending {
+       background-image: /* @embed */ url(themes/mediawiki/images/textures/pending.gif);
+}
 .oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous > .oo-ui-panelLayout-scrollable {
        overflow-y: hidden;
 }
        border-radius: 0.2em;
        box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2);
 }
+.oo-ui-panelLayout-padded.oo-ui-panelLayout-framed {
+       margin: 1em 0;
+}
 .oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
        display: block;
        position: relative;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
        padding-left: 0.5em;
-       color: #000000;
+       color: #555555;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel,
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
 .oo-ui-progressBarWidget.oo-ui-widget-disabled {
        opacity: 0.6;
 }
-.oo-ui-actionWidget.oo-ui-pendingElement-pending {
-       background-image: /* @embed */ url(themes/mediawiki/images/textures/pending.gif);
-}
 .oo-ui-popupWidget {
        position: absolute;
        /* @noflip */
           -moz-box-sizing: border-box;
                box-sizing: border-box;
 }
+.oo-ui-textInputWidget input[type="search"] {
+       -webkit-appearance: none;
+}
+.oo-ui-textInputWidget input[type="search"]::-ms-clear {
+       display: none;
+}
+.oo-ui-textInputWidget input[type="search"]::-ms-reveal {
+       display: none;
+}
+.oo-ui-textInputWidget input[type="search"]::-webkit-search-decoration,
+.oo-ui-textInputWidget input[type="search"]::-webkit-search-cancel-button,
+.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-button,
+.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-decoration {
+       display: none;
+}
 .oo-ui-textInputWidget > .oo-ui-iconElement-icon,
 .oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator,
 .oo-ui-textInputWidget > .oo-ui-labelElement-label {
 .oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator {
        cursor: text;
 }
+.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-textInputWidget-type-search > .oo-ui-indicatorElement-indicator {
+       cursor: pointer;
+}
 .oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label {
        display: block;
 }
           -moz-box-sizing: border-box;
                box-sizing: border-box;
 }
+.oo-ui-textInputWidget input.oo-ui-pendingElement-pending,
+.oo-ui-textInputWidget textarea.oo-ui-pendingElement-pending {
+       background-color: transparent;
+}
 .oo-ui-textInputWidget-decorated input,
 .oo-ui-textInputWidget-decorated textarea {
        padding-left: 2em;
        color: #dddddd;
        text-shadow: 0 1px 1px #ffffff;
 }
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending input,
-.oo-ui-textInputWidget.oo-ui-pendingElement-pending textarea {
-       background-color: transparent;
-       background-image: /* @embed */ url(themes/mediawiki/images/textures/pending.gif);
-}
 .oo-ui-textInputWidget.oo-ui-iconElement input,
 .oo-ui-textInputWidget.oo-ui-iconElement textarea {
        padding-left: 2.75em;
 .oo-ui-processDialog-content .oo-ui-window-head {
        height: 3.4em;
 }
-.oo-ui-processDialog-content .oo-ui-window-head.oo-ui-pendingElement-pending {
-       background-image: /* @embed */ url(themes/mediawiki/images/textures/pending.gif);
-}
 .oo-ui-processDialog-content .oo-ui-window-body {
        top: 3.4em;
        outline: 1px solid rgba(0, 0, 0, 0.2);
index a09b898..b73f751 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.0
+ * OOjs UI v0.12.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
- * Copyright 2011–2015 OOjs Team and other contributors.
+ * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-07-13T23:47:04Z
+ * Date: 2015-07-22T19:37:07Z
  */
 /**
  * @class
index 98ec673..96c3204 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.0
+ * OOjs UI v0.12.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
- * Copyright 2011–2015 OOjs Team and other contributors.
+ * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-07-13T23:47:04Z
+ * Date: 2015-07-22T19:37:07Z
  */
 ( function ( OO ) {
 
@@ -2176,7 +2176,7 @@ OO.ui.Window.prototype.getBodyHeight = function () {
  * @return {string} Directionality: `'ltr'` or `'rtl'`
  */
 OO.ui.Window.prototype.getDir = function () {
-       return this.dir;
+       return OO.ui.Element.static.getDir( this.$content ) || 'ltr';
 };
 
 /**
@@ -2371,7 +2371,6 @@ OO.ui.Window.prototype.initialize = function () {
        this.$head = $( '<div>' );
        this.$body = $( '<div>' );
        this.$foot = $( '<div>' );
-       this.dir = OO.ui.Element.static.getDir( this.$content ) || 'ltr';
        this.$document = $( this.getElementDocument() );
 
        // Events
@@ -7832,7 +7831,7 @@ OO.ui.MessageDialog = function OoUiMessageDialog( config ) {
        this.$element.addClass( 'oo-ui-messageDialog' );
 };
 
-/* Inheritance */
+/* Setup */
 
 OO.inheritClass( OO.ui.MessageDialog, OO.ui.Dialog );
 
@@ -12603,8 +12602,8 @@ OO.ui.SelectFileWidget = function OoUiSelectFileWidget( config ) {
        // Mixin constructors
        OO.ui.mixin.IconElement.call( this, config );
        OO.ui.mixin.IndicatorElement.call( this, config );
-       OO.ui.mixin.PendingElement.call( this, config );
-       OO.ui.mixin.LabelElement.call( this, $.extend( config, { autoFitLabel: true } ) );
+       OO.ui.mixin.PendingElement.call( this, $.extend( {}, config, { $pending: this.$handle } ) );
+       OO.ui.mixin.LabelElement.call( this, $.extend( {}, config, { autoFitLabel: true } ) );
        OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$handle } ) );
 
        // Properties
@@ -12667,7 +12666,7 @@ OO.mixinClass( OO.ui.SelectFileWidget, OO.ui.mixin.PendingElement );
 OO.mixinClass( OO.ui.SelectFileWidget, OO.ui.mixin.LabelElement );
 OO.mixinClass( OO.ui.SelectFileWidget, OO.ui.mixin.TabIndexedElement );
 
-/* Static properties */
+/* Static Properties */
 
 /**
  * Check if this widget is supported
@@ -13913,6 +13912,11 @@ OO.ui.RadioSelectInputWidget.prototype.setOptions = function ( options ) {
  * @param {Object} [config] Configuration options
  * @cfg {string} [type='text'] The value of the HTML `type` attribute: 'text', 'password', 'search',
  *  'email' or 'url'. Ignored if `multiline` is true.
+ *
+ *  Some values of `type` result in additional behaviors:
+ *
+ *  - `search`: implies `icon: 'search'` and `indicator: 'clear'`; when clicked, the indicator
+ *    empties the text field
  * @cfg {string} [placeholder] Placeholder text
  * @cfg {boolean} [autofocus=false] Use an HTML `autofocus` attribute to
  *  instruct the browser to focus this widget.
@@ -13927,7 +13931,7 @@ OO.ui.RadioSelectInputWidget.prototype.setOptions = function ( options ) {
  *  Defaults to the maximum of `10` and `2 * rows`, or `10` if `rows` isn't provided.
  * @cfg {string} [labelPosition='after'] The position of the inline label relative to that of
  *  the value or placeholder text: `'before'` or `'after'`
- * @cfg {boolean} [required=false] Mark the field as required
+ * @cfg {boolean} [required=false] Mark the field as required. Implies `indicator: 'required'`.
  * @cfg {boolean} [autocomplete=true] Should the browser support autocomplete for this field
  * @cfg {RegExp|Function|string} [validate] Validation pattern: when string, a symbolic name of a
  *  pattern defined by the class: 'non-empty' (the value cannot be an empty string) or 'integer'
@@ -13941,6 +13945,17 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
                type: 'text',
                labelPosition: 'after'
        }, config );
+       if ( config.type === 'search' ) {
+               if ( config.icon === undefined ) {
+                       config.icon = 'search';
+               }
+               // indicator: 'clear' is set dynamically later, depending on value
+       }
+       if ( config.required ) {
+               if ( config.indicator === undefined ) {
+                       config.indicator = 'required';
+               }
+       }
 
        // Parent constructor
        OO.ui.TextInputWidget.parent.call( this, config );
@@ -13948,10 +13963,11 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
        // Mixin constructors
        OO.ui.mixin.IconElement.call( this, config );
        OO.ui.mixin.IndicatorElement.call( this, config );
-       OO.ui.mixin.PendingElement.call( this, config );
+       OO.ui.mixin.PendingElement.call( this, $.extend( {}, config, { $pending: this.$input } ) );
        OO.ui.mixin.LabelElement.call( this, config );
 
        // Properties
+       this.type = this.getSaneType( config );
        this.readOnly = false;
        this.multiline = !!config.multiline;
        this.autosize = !!config.autosize;
@@ -13982,13 +13998,17 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
        this.$icon.on( 'mousedown', this.onIconMouseDown.bind( this ) );
        this.$indicator.on( 'mousedown', this.onIndicatorMouseDown.bind( this ) );
        this.on( 'labelChange', this.updatePosition.bind( this ) );
-       this.connect( this, { change: 'onChange' } );
+       this.connect( this, {
+               change: 'onChange',
+               disable: 'onDisable'
+       } );
 
        // Initialization
        this.$element
-               .addClass( 'oo-ui-textInputWidget' )
+               .addClass( 'oo-ui-textInputWidget oo-ui-textInputWidget-type-' + this.type )
                .append( this.$icon, this.$indicator );
        this.setReadOnly( !!config.readOnly );
+       this.updateSearchIndicator();
        if ( config.placeholder ) {
                this.$input.attr( 'placeholder', config.placeholder );
        }
@@ -14021,7 +14041,7 @@ OO.mixinClass( OO.ui.TextInputWidget, OO.ui.mixin.IndicatorElement );
 OO.mixinClass( OO.ui.TextInputWidget, OO.ui.mixin.PendingElement );
 OO.mixinClass( OO.ui.TextInputWidget, OO.ui.mixin.LabelElement );
 
-/* Static properties */
+/* Static Properties */
 
 OO.ui.TextInputWidget.static.validationPatterns = {
        'non-empty': /.+/,
@@ -14063,6 +14083,10 @@ OO.ui.TextInputWidget.prototype.onIconMouseDown = function ( e ) {
  */
 OO.ui.TextInputWidget.prototype.onIndicatorMouseDown = function ( e ) {
        if ( e.which === 1 ) {
+               if ( this.type === 'search' ) {
+                       // Clear the text field
+                       this.setValue( '' );
+               }
                this.$input[ 0 ].focus();
                return false;
        }
@@ -14111,10 +14135,21 @@ OO.ui.TextInputWidget.prototype.onElementAttach = function () {
  * @private
  */
 OO.ui.TextInputWidget.prototype.onChange = function () {
+       this.updateSearchIndicator();
        this.setValidityFlag();
        this.adjustSize();
 };
 
+/**
+ * Handle disable events.
+ *
+ * @param {boolean} disabled Element is disabled
+ * @private
+ */
+OO.ui.TextInputWidget.prototype.onDisable = function () {
+       this.updateSearchIndicator();
+};
+
 /**
  * Check if the input is {@link #readOnly read-only}.
  *
@@ -14133,6 +14168,7 @@ OO.ui.TextInputWidget.prototype.isReadOnly = function () {
 OO.ui.TextInputWidget.prototype.setReadOnly = function ( state ) {
        this.readOnly = !!state;
        this.$input.prop( 'readOnly', this.readOnly );
+       this.updateSearchIndicator();
        return this;
 };
 
@@ -14263,10 +14299,23 @@ OO.ui.TextInputWidget.prototype.adjustSize = function () {
  * @protected
  */
 OO.ui.TextInputWidget.prototype.getInputElement = function ( config ) {
+       return config.multiline ?
+               $( '<textarea>' ) :
+               $( '<input type="' + this.getSaneType( config ) + '" />' );
+};
+
+/**
+ * Get sanitized value for 'type' for given config.
+ *
+ * @param {Object} config Configuration options
+ * @return {string|null}
+ * @private
+ */
+OO.ui.TextInputWidget.prototype.getSaneType = function ( config ) {
        var type = [ 'text', 'password', 'search', 'email', 'url' ].indexOf( config.type ) !== -1 ?
                config.type :
                'text';
-       return config.multiline ? $( '<textarea>' ) : $( '<input type="' + type + '" />' );
+       return config.multiline ? 'multiline' : type;
 };
 
 /**
@@ -14385,7 +14434,6 @@ OO.ui.TextInputWidget.prototype.setPosition =
  * This method is called by #setLabelPosition, and can also be called on its own if
  * something causes the label to be mispositioned.
  *
- *
  * @chainable
  */
 OO.ui.TextInputWidget.prototype.updatePosition = function () {
@@ -14402,6 +14450,20 @@ OO.ui.TextInputWidget.prototype.updatePosition = function () {
        return this;
 };
 
+/**
+ * Update the 'clear' indicator displayed on type: 'search' text fields, hiding it when the field is
+ * already empty or when it's not editable.
+ */
+OO.ui.TextInputWidget.prototype.updateSearchIndicator = function () {
+       if ( this.type === 'search' ) {
+               if ( this.getValue() === '' || this.isDisabled() || this.isReadOnly() ) {
+                       this.setIndicator( null );
+               } else {
+                       this.setIndicator( 'clear' );
+               }
+       }
+};
+
 /**
  * Position the label by setting the correct padding on the input.
  *
diff --git a/resources/lib/oojs-ui/themes/apex/images/indicators/clear.png b/resources/lib/oojs-ui/themes/apex/images/indicators/clear.png
new file mode 100644 (file)
index 0000000..5db444c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/indicators/clear.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/indicators/clear.svg b/resources/lib/oojs-ui/themes/apex/images/indicators/clear.svg
new file mode 100644 (file)
index 0000000..b18405d
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="clear">
+        <path id="circle-with-cross" d="M6 0C2.7 0 0 2.7 0 6s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zM3.5 2.5L6 5l2.5-2.5 1 1L7 6l2.5 2.5-1 1L6 7 3.5 9.5l-1-1L5 6 2.5 3.5z"/>
+    </g>
+</svg>
index 0a9d1d2..9a9afa8 100644 (file)
@@ -3,6 +3,7 @@
        "intro": "@import '../../../../src/styles/common';",
        "images": {
                "alert": { "file": "images/indicators/alert.svg" },
+               "clear": { "file": "images/indicators/clear.svg" },
                "up": { "file": "images/indicators/arrow-up.svg" },
                "down": { "file": "images/indicators/arrow-down.svg" },
                "next": { "file": {
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.png
new file mode 100644 (file)
index 0000000..d68353b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.svg
new file mode 100644 (file)
index 0000000..ba5fd1d
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
+    <g id="clear">
+        <path id="circle-with-cross" d="M6 0C2.7 0 0 2.7 0 6s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zM3.5 2.5L6 5l2.5-2.5 1 1L7 6l2.5 2.5-1 1L6 7 3.5 9.5l-1-1L5 6 2.5 3.5z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.png
new file mode 100644 (file)
index 0000000..5db444c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.svg
new file mode 100644 (file)
index 0000000..b18405d
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="clear">
+        <path id="circle-with-cross" d="M6 0C2.7 0 0 2.7 0 6s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zM3.5 2.5L6 5l2.5-2.5 1 1L7 6l2.5 2.5-1 1L6 7 3.5 9.5l-1-1L5 6 2.5 3.5z"/>
+    </g>
+</svg>
index d83e57e..3d66337 100644 (file)
@@ -10,6 +10,7 @@
        },
        "images": {
                "alert": { "file": "images/indicators/alert.svg" },
+               "clear": { "file": "images/indicators/clear.svg" },
                "up": { "file": "images/indicators/arrow-up.svg" },
                "down": { "file": "images/indicators/arrow-down.svg" },
                "next": { "file": {
index d87183e..6e7851a 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs v1.1.7 optimised for jQuery
+ * OOjs v1.1.8 optimised for jQuery
  * https://www.mediawiki.org/wiki/OOjs
  *
  * Copyright 2011-2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-29T01:13:49Z
+ * Date: 2015-07-23T19:16:00Z
  */
 ( function ( global ) {
 
@@ -698,12 +698,9 @@ oo.isPlainObject = $.isPlainObject;
        /**
         * Emit an event.
         *
-        * TODO: Should this be chainable? What is the usefulness of the boolean
-        * return value here?
-        *
         * @param {string} event Type of event
         * @param {Mixed} args First in a list of variadic arguments passed to event handler (optional)
-        * @return {boolean} If event was handled by at least one listener
+        * @return {boolean} Whether the event was handled by at least one listener
         */
        oo.EventEmitter.prototype.emit = function ( event ) {
                var args = [],
index a0861df..f995229 100644 (file)
@@ -237,7 +237,7 @@ td.mw-submit {
 }
 
 td.mw-label {
-       vertical-align: top;
+       vertical-align: middle;
 }
 
 .prefsection td.mw-label {
@@ -951,6 +951,7 @@ ol:lang(fa) li,
 ol:lang(glk) li,
 ol:lang(kk-arab) li,
 ol:lang(lrc) li,
+ol:lang(luz) li,
 ol:lang(mzn) li {
        list-style-type: -moz-persian;
        list-style-type: persian;
index 16fd7ec..1b31956 100644 (file)
 
        &:hover,
        &:focus {
+               background: transparent;
                color: @textColor;
        }
 
index 8d648a6..8f845df 100644 (file)
@@ -172,7 +172,3 @@ table#mw-search-powertable {
 form#powersearch {
        clear: both;
 }
-
-#searchText {
-       display: inline-block;
-}
index 23602b3..b27fe34 100644 (file)
@@ -33,7 +33,8 @@
 
                // Change the header search links to what user entered
                $headerLinks = $( '.search-types a' );
-               OO.ui.infuse( 'searchText' ).on( 'change', function ( searchterm ) {
+               $( '#searchText, #powerSearchText' ).change( function () {
+                       var searchterm = $( this ).val();
                        $headerLinks.each( function () {
                                var parts = $( this ).attr( 'href' ).split( 'search=' ),
                                        lastpart = '',
@@ -45,7 +46,7 @@
                                }
                                this.href = parts[0] + prefix + encodeURIComponent( searchterm ) + lastpart;
                        } );
-               } );
+               } ).trigger( 'change' );
 
                // When saving settings, use the proper request method (POST instead of GET).
                $( '#mw-search-powersearch-remember' ).change( function () {
diff --git a/resources/src/mediawiki.special/mediawiki.special.watchlist.css b/resources/src/mediawiki.special/mediawiki.special.watchlist.css
new file mode 100644 (file)
index 0000000..c802f8c
--- /dev/null
@@ -0,0 +1,4 @@
+.mw-htmlform-ooui-wrapper {
+       /* We're gonna need a bigger form! */
+       width: 60em;
+}
diff --git a/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js b/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js
new file mode 100644 (file)
index 0000000..0d743e4
--- /dev/null
@@ -0,0 +1,519 @@
+/*!
+ * MediaWiki Widgets – CalendarWidget class.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+/*global moment */
+/*jshint es3: false */
+( function ( $, mw ) {
+
+       /**
+        * Creates an mw.widgets.CalendarWidget object.
+        *
+        * @class
+        * @extends OO.ui.Widget
+        * @mixins OO.ui.mixin.TabIndexedElement
+        *
+        * @constructor
+        * @param {Object} [config] Configuration options
+        * @cfg {string} [precision='day'] Date precision to use, 'day' or 'month'
+        * @cfg {string|null} [date=null] Day or month date (depending on `precision`), in the
+        *     format 'YYYY-MM-DD' or 'YYYY-MM'. When null, defaults to current date.
+        */
+       mw.widgets.CalendarWidget = function MWWCalendarWidget( config ) {
+               // Config initialization
+               config = config || {};
+
+               // Parent constructor
+               mw.widgets.CalendarWidget.parent.call( this, config );
+
+               // Mixin constructors
+               OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$element } ) );
+
+               // Properties
+               this.precision = config.precision || 'day';
+               // Currently selected date (day or month)
+               this.date = null;
+               // Current UI state (date and precision we're displaying right now)
+               this.moment = null;
+               this.displayLayer = this.getDisplayLayers()[ 0 ]; // 'month', 'year', 'duodecade'
+
+               this.$header = $( '<div>' ).addClass( 'mw-widget-calendarWidget-header' );
+               this.$bodyOuterWrapper = $( '<div>' ).addClass( 'mw-widget-calendarWidget-body-outer-wrapper' );
+               this.$bodyWrapper = $( '<div>' ).addClass( 'mw-widget-calendarWidget-body-wrapper' );
+               this.$body = $( '<div>' ).addClass( 'mw-widget-calendarWidget-body' );
+               this.labelButton = new OO.ui.ButtonWidget( {
+                       tabIndex: -1,
+                       label: '',
+                       framed: false,
+                       classes: [ 'mw-widget-calendarWidget-labelButton' ]
+               } );
+               this.upButton = new OO.ui.ButtonWidget( {
+                       tabIndex: -1,
+                       framed: false,
+                       icon: 'collapse',
+                       classes: [ 'mw-widget-calendarWidget-upButton' ]
+               } );
+               this.prevButton = new OO.ui.ButtonWidget( {
+                       tabIndex: -1,
+                       framed: false,
+                       icon: 'previous',
+                       classes: [ 'mw-widget-calendarWidget-prevButton' ]
+               } );
+               this.nextButton = new OO.ui.ButtonWidget( {
+                       tabIndex: -1,
+                       framed: false,
+                       icon: 'next',
+                       classes: [ 'mw-widget-calendarWidget-nextButton' ]
+               } );
+
+               // Events
+               this.labelButton.connect( this, { click: 'onUpButtonClick' } );
+               this.upButton.connect( this, { click: 'onUpButtonClick' } );
+               this.prevButton.connect( this, { click: 'onPrevButtonClick' } );
+               this.nextButton.connect( this, { click: 'onNextButtonClick' } );
+               this.$element.on( {
+                       focus: this.onFocus.bind( this ),
+                       mousedown: this.onClick.bind( this ),
+                       keydown: this.onKeyDown.bind( this )
+               } );
+
+               // Initialization
+               this.$element
+                       .addClass( 'mw-widget-calendarWidget' )
+                       .append( this.$header, this.$bodyOuterWrapper.append( this.$bodyWrapper.append( this.$body ) ) );
+               this.$header.append(
+                       this.prevButton.$element,
+                       this.nextButton.$element,
+                       this.upButton.$element,
+                       this.labelButton.$element
+               );
+               this.setDate( config.date !== undefined ? config.date : null );
+       };
+
+       /* Inheritance */
+
+       OO.inheritClass( mw.widgets.CalendarWidget, OO.ui.Widget );
+       OO.mixinClass( mw.widgets.CalendarWidget, OO.ui.mixin.TabIndexedElement );
+
+       /* Events */
+
+       /**
+        * @event change
+        *
+        * A change event is emitted when the chosen date changes.
+        *
+        * @param {string} date Day or month date, in the format 'YYYY-MM-DD' or 'YYYY-MM'
+        */
+
+       /* Methods */
+
+       /**
+        * Get the date format ('YYYY-MM-DD' or 'YYYY-MM', depending on precision), which is used
+        * internally and for dates accepted by #setDate and returned by #getDate.
+        *
+        * @private
+        * @returns {string} Format
+        */
+       mw.widgets.CalendarWidget.prototype.getDateFormat = function () {
+               return {
+                       day: 'YYYY-MM-DD',
+                       month: 'YYYY-MM'
+               }[ this.precision ];
+       };
+
+       /**
+        * Get the date precision this calendar uses, 'day' or 'month'.
+        *
+        * @private
+        * @returns {string} Precision, 'day' or 'month'
+        */
+       mw.widgets.CalendarWidget.prototype.getPrecision = function () {
+               return this.precision;
+       };
+
+       /**
+        * Get list of possible display layers.
+        *
+        * @private
+        * @returns {string[]} Layers
+        */
+       mw.widgets.CalendarWidget.prototype.getDisplayLayers = function () {
+               return [ 'month', 'year', 'duodecade' ].slice( this.precision === 'month' ? 1 : 0 );
+       };
+
+       /**
+        * Update the calendar.
+        *
+        * @private
+        * @param {string|null} [fade=null] Direction in which to fade out current calendar contents, 'previous',
+        *     'next' or 'up'
+        * @returns {string} Format
+        */
+       mw.widgets.CalendarWidget.prototype.updateUI = function ( fade ) {
+               var items, today, selected, currentMonth, currentYear, currentDay, i, needsFade,
+                       $bodyWrapper = this.$bodyWrapper;
+
+               if (
+                       this.displayLayer === this.previousDisplayLayer &&
+                       this.previousMoment &&
+                       this.previousMoment.isSame( this.moment, this.precision === 'month' ? 'month' : 'day' )
+               ) {
+                       // Already displayed
+                       return;
+               }
+
+               items = [];
+               if ( this.$oldBody ) {
+                       this.$oldBody.remove();
+               }
+               this.$oldBody = this.$body.addClass( 'mw-widget-calendarWidget-old-body' );
+               // Clone without children
+               this.$body = $( this.$body[0].cloneNode( false ) )
+                       .removeClass( 'mw-widget-calendarWidget-old-body' )
+                       .toggleClass( 'mw-widget-calendarWidget-body-month', this.displayLayer === 'month' )
+                       .toggleClass( 'mw-widget-calendarWidget-body-year', this.displayLayer === 'year' )
+                       .toggleClass( 'mw-widget-calendarWidget-body-duodecade', this.displayLayer === 'duodecade' );
+
+               today = moment();
+               selected = moment( this.getDate(), this.getDateFormat() );
+
+               switch ( this.displayLayer ) {
+               case 'month':
+                       this.labelButton.setLabel( this.moment.format( 'MMMM YYYY' ) );
+                       this.upButton.toggle( true );
+
+                       // First week displayed is the first week spanned by the month, unless it begins on Monday, in
+                       // which case first week displayed is the previous week. This makes the calendar "balanced"
+                       // and also neatly handles 28-day February sometimes spanning only 4 weeks.
+                       currentDay = moment( this.moment ).startOf( 'month' ).subtract( 1, 'day' ).startOf( 'week' );
+
+                       // Day-of-week labels. Localisation-independent: works with weeks starting on Saturday, Sunday
+                       // or Monday.
+                       for ( i = 0; i < 7; i++ ) {
+                               items.push(
+                                       $( '<div>' )
+                                               .addClass( 'mw-widget-calendarWidget-day-heading' )
+                                               .text( currentDay.format( 'dd' ) )
+                               );
+                               currentDay.add( 1, 'day' );
+                       }
+                       currentDay.subtract( 7, 'days' );
+
+                       // Actual calendar month. Always displays 6 weeks, for consistency (months can span 4 to 6
+                       // weeks).
+                       for ( i = 0; i < 42; i++ ) {
+                               items.push(
+                                       $( '<div>' )
+                                               .addClass( 'mw-widget-calendarWidget-item mw-widget-calendarWidget-day' )
+                                               .toggleClass( 'mw-widget-calendarWidget-day-additional', !currentDay.isSame( this.moment, 'month' ) )
+                                               .toggleClass( 'mw-widget-calendarWidget-day-today', currentDay.isSame( today, 'day' ) )
+                                               .toggleClass( 'mw-widget-calendarWidget-item-selected', currentDay.isSame( selected, 'day' ) )
+                                               .text( currentDay.format( 'D' ) )
+                                               .data( 'date', currentDay.date() )
+                                               .data( 'month', currentDay.month() )
+                                               .data( 'year', currentDay.year() )
+                               );
+                               currentDay.add( 1, 'day' );
+                       }
+                       break;
+
+               case 'year':
+                       this.labelButton.setLabel( this.moment.format( 'YYYY' ) );
+                       this.upButton.toggle( true );
+
+                       currentMonth = moment( this.moment ).startOf( 'year' );
+                       for ( i = 0; i < 12; i++ ) {
+                               items.push(
+                                       $( '<div>' )
+                                               .addClass( 'mw-widget-calendarWidget-item mw-widget-calendarWidget-month' )
+                                               .toggleClass( 'mw-widget-calendarWidget-item-selected', currentMonth.isSame( selected, 'month' ) )
+                                               .text( currentMonth.format( 'MMMM' ) )
+                                               .data( 'month', currentMonth.month() )
+                               );
+                               currentMonth.add( 1, 'month' );
+                       }
+                       // Shuffle the array to display months in columns rather than rows.
+                       items = [
+                               items[ 0 ], items[ 6 ],      //  | January  | July      |
+                               items[ 1 ], items[ 7 ],      //  | February | August    |
+                               items[ 2 ], items[ 8 ],      //  | March    | September |
+                               items[ 3 ], items[ 9 ],      //  | April    | October   |
+                               items[ 4 ], items[ 10 ],     //  | May      | November  |
+                               items[ 5 ], items[ 11 ]      //  | June     | December  |
+                       ];
+                       break;
+
+               case 'duodecade':
+                       this.labelButton.setLabel( null );
+                       this.upButton.toggle( false );
+
+                       currentYear = moment( { year: Math.floor( this.moment.year() / 20 ) * 20 } );
+                       for ( i = 0; i < 20; i++ ) {
+                               items.push(
+                                       $( '<div>' )
+                                               .addClass( 'mw-widget-calendarWidget-item mw-widget-calendarWidget-year' )
+                                               .toggleClass( 'mw-widget-calendarWidget-item-selected', currentYear.isSame( selected, 'year' ) )
+                                               .text( currentYear.format( 'YYYY' ) )
+                                               .data( 'year', currentYear.year() )
+                               );
+                               currentYear.add( 1, 'year' );
+                       }
+                       break;
+               }
+
+               this.$body.append.apply( this.$body, items );
+
+               $bodyWrapper
+                       .removeClass( 'mw-widget-calendarWidget-body-wrapper-fade-up' )
+                       .removeClass( 'mw-widget-calendarWidget-body-wrapper-fade-down' )
+                       .removeClass( 'mw-widget-calendarWidget-body-wrapper-fade-previous' )
+                       .removeClass( 'mw-widget-calendarWidget-body-wrapper-fade-next' );
+
+               needsFade = this.previousDisplayLayer !== this.displayLayer;
+               if ( this.displayLayer === 'month' ) {
+                       needsFade = needsFade || !this.moment.isSame( this.previousMoment, 'month' );
+               } else if ( this.displayLayer === 'year' ) {
+                       needsFade = needsFade || !this.moment.isSame( this.previousMoment, 'year' );
+               } else if ( this.displayLayer === 'duodecade' ) {
+                       needsFade = needsFade || (
+                               Math.floor( this.moment.year() / 20 ) * 20 !==
+                                       Math.floor( this.previousMoment.year() / 20 ) * 20
+                       );
+               }
+
+               if ( fade && needsFade ) {
+                       this.$oldBody.find( '.mw-widget-calendarWidget-item-selected' )
+                               .removeClass( 'mw-widget-calendarWidget-item-selected' );
+                       if ( fade === 'previous' || fade === 'up' ) {
+                               this.$body.insertBefore( this.$oldBody );
+                       } else if ( fade === 'next' || fade === 'down' ) {
+                               this.$body.insertAfter( this.$oldBody );
+                       }
+                       setTimeout( function () {
+                               $bodyWrapper.addClass( 'mw-widget-calendarWidget-body-wrapper-fade-' + fade );
+                       }.bind( this ), 0 );
+               } else {
+                       this.$oldBody.replaceWith( this.$body );
+               }
+
+               this.previousMoment = moment( this.moment );
+               this.previousDisplayLayer = this.displayLayer;
+
+               this.$body.on( 'click', this.onBodyClick.bind( this ) );
+       };
+
+       /**
+        * Handle click events on the "up" button, switching to less precise view.
+        * @private
+        */
+       mw.widgets.CalendarWidget.prototype.onUpButtonClick = function () {
+               var
+                       layers = this.getDisplayLayers(),
+                       currentLayer = layers.indexOf( this.displayLayer );
+               if ( currentLayer !== layers.length - 1 ) {
+                       // One layer up
+                       this.displayLayer = layers[ currentLayer + 1 ];
+                       this.updateUI( 'up' );
+               } else {
+                       this.updateUI();
+               }
+       };
+
+       /**
+        * Handle click events on the "previous" button, switching to previous pane.
+        * @private
+        */
+       mw.widgets.CalendarWidget.prototype.onPrevButtonClick = function () {
+               switch ( this.displayLayer ) {
+               case 'month':
+                       this.moment.subtract( 1, 'month' );
+                       break;
+               case 'year':
+                       this.moment.subtract( 1, 'year' );
+                       break;
+               case 'duodecade':
+                       this.moment.subtract( 20, 'years' );
+                       break;
+               }
+               this.updateUI( 'previous' );
+       };
+
+       /**
+        * Handle click events on the "next" button, switching to next pane.
+        * @private
+        */
+       mw.widgets.CalendarWidget.prototype.onNextButtonClick = function () {
+               switch ( this.displayLayer ) {
+               case 'month':
+                       this.moment.add( 1, 'month' );
+                       break;
+               case 'year':
+                       this.moment.add( 1, 'year' );
+                       break;
+               case 'duodecade':
+                       this.moment.add( 20, 'years' );
+                       break;
+               }
+               this.updateUI( 'next' );
+       };
+
+       /**
+        * Handle click events anywhere in the body of the widget, which contains the matrix of days,
+        * months or years to choose. Maybe change the pane or switch to more precise view, depending on
+        * what gets clicked.
+        * @private
+        */
+       mw.widgets.CalendarWidget.prototype.onBodyClick = function ( e ) {
+               var
+                       previousMoment = moment( this.moment ),
+                       $target = $( e.target ),
+                       layers = this.getDisplayLayers(),
+                       currentLayer = layers.indexOf( this.displayLayer );
+               if ( $target.data( 'year' ) !== undefined ) {
+                       this.moment.year( $target.data( 'year' ) );
+               }
+               if ( $target.data( 'month' ) !== undefined ) {
+                       this.moment.month( $target.data( 'month' ) );
+               }
+               if ( $target.data( 'date' ) !== undefined ) {
+                       this.moment.date( $target.data( 'date' ) );
+               }
+               if ( currentLayer === 0 ) {
+                       this.setDateFromMoment();
+                       this.updateUI(
+                               this.precision === 'day' && this.moment.isBefore( previousMoment, 'month' ) ? 'previous' :
+                                       this.precision === 'day' && this.moment.isAfter( previousMoment, 'month' ) ? 'next' : null
+                       );
+               } else {
+                       // One layer down
+                       this.displayLayer = layers[ currentLayer - 1 ];
+                       this.updateUI( 'down' );
+               }
+       };
+
+       /**
+        * Set the date.
+        *
+        * @param {string|null} [date=null] Day or month date, in the format 'YYYY-MM-DD' or 'YYYY-MM'.
+        *     When null, defaults to current date. When invalid, the date is not changed.
+        */
+       mw.widgets.CalendarWidget.prototype.setDate = function ( date ) {
+               var mom = date !== null ? moment( date, this.getDateFormat() ) : moment();
+               if ( mom.isValid() ) {
+                       this.moment = mom;
+                       this.setDateFromMoment();
+                       this.displayLayer = this.getDisplayLayers()[ 0 ];
+                       this.updateUI();
+               }
+       };
+
+       /**
+        * Reset the user interface of this widget to reflect selected date.
+        */
+       mw.widgets.CalendarWidget.prototype.resetUI = function () {
+               this.moment = moment( this.getDate(), this.getDateFormat() );
+               this.displayLayer = this.getDisplayLayers()[ 0 ];
+               this.updateUI();
+       };
+
+       /**
+        * Set the date from moment object.
+        *
+        * @private
+        */
+       mw.widgets.CalendarWidget.prototype.setDateFromMoment = function () {
+               // Switch to English locale to avoid number formatting. We want the internal value to be
+               // '2015-07-24' and not '٢٠١٥-٠٧-٢٤' even if the UI language is Arabic.
+               var newDate = moment( this.moment ).locale( 'en' ).format( this.getDateFormat() );
+               if ( this.date !== newDate ) {
+                       this.date = newDate;
+                       this.emit( 'change', this.date );
+               }
+       };
+
+       /**
+        * Get current date, in the format 'YYYY-MM-DD' or 'YYYY-MM', depending on precision. Digits will
+        * not be localised.
+        *
+        * @returns {string} Date string
+        */
+       mw.widgets.CalendarWidget.prototype.getDate = function () {
+               return this.date;
+       };
+
+       /**
+        * Handle focus events.
+        *
+        * @private
+        */
+       mw.widgets.CalendarWidget.prototype.onFocus = function () {
+               this.displayLayer = this.getDisplayLayers()[ 0 ];
+               this.updateUI( 'down' );
+       };
+
+       /**
+        * Handle mouse click events.
+        *
+        * @private
+        * @param {jQuery.Event} e Mouse click event
+        */
+       mw.widgets.CalendarWidget.prototype.onClick = function ( e ) {
+               if ( !this.isDisabled() && e.which === 1 ) {
+                       // Prevent unintended focussing
+                       return false;
+               }
+       };
+
+       /**
+        * Handle key down events.
+        *
+        * @private
+        * @param {jQuery.Event} e Key down event
+        */
+       mw.widgets.CalendarWidget.prototype.onKeyDown = function ( e ) {
+               var
+                       dir = OO.ui.Element.static.getDir( this.$element ),
+                       nextDirectionKey = dir === 'ltr' ? OO.ui.Keys.RIGHT : OO.ui.Keys.LEFT,
+                       prevDirectionKey = dir === 'ltr' ? OO.ui.Keys.LEFT : OO.ui.Keys.RIGHT,
+                       updateInDirection = null;
+
+               if ( !this.isDisabled() ) {
+                       switch ( e.which ) {
+                       case prevDirectionKey:
+                               this.moment.subtract( 1, this.precision === 'month' ? 'month' : 'day' );
+                               updateInDirection = 'previous';
+                               break;
+                       case nextDirectionKey:
+                               this.moment.add( 1, this.precision === 'month' ? 'month' : 'day' );
+                               updateInDirection = 'next';
+                               break;
+                       case OO.ui.Keys.UP:
+                               this.moment.subtract( 1, this.precision === 'month' ? 'month' : 'week' );
+                               updateInDirection = 'previous';
+                               break;
+                       case OO.ui.Keys.DOWN:
+                               this.moment.add( 1, this.precision === 'month' ? 'month' : 'week' );
+                               updateInDirection = 'next';
+                               break;
+                       case OO.ui.Keys.PAGEUP:
+                               this.moment.subtract( 1, this.precision === 'month' ? 'year' : 'month' );
+                               updateInDirection = 'previous';
+                               break;
+                       case OO.ui.Keys.PAGEDOWN:
+                               this.moment.add( 1, this.precision === 'month' ? 'year' : 'month' );
+                               updateInDirection = 'next';
+                               break;
+                       }
+
+                       if ( updateInDirection ) {
+                               this.displayLayer = this.getDisplayLayers()[ 0 ];
+                               this.setDateFromMoment();
+                               this.updateUI( updateInDirection );
+                               return false;
+                       }
+               }
+       };
+
+}( jQuery, mediaWiki ) );
diff --git a/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.less b/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.less
new file mode 100644 (file)
index 0000000..276bc65
--- /dev/null
@@ -0,0 +1,259 @@
+/*!
+ * MediaWiki Widgets – CalendarWidget styles.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+@calendarWidth: 21em;
+@calendarHeight: 14em;
+
+.mw-widget-calendarWidget {
+       width: @calendarWidth;
+}
+
+.mw-widget-calendarWidget-header {
+       position: relative;
+       line-height: 2.5em;
+}
+
+.mw-widget-calendarWidget-header .oo-ui-buttonWidget {
+       margin-right: 0;
+}
+
+.mw-widget-calendarWidget-header .mw-widget-calendarWidget-labelButton {
+       margin: 0 auto;
+       display: block;
+       width: @calendarWidth - 2*3em;
+
+       .oo-ui-buttonElement-button {
+               width: @calendarWidth - 2*3em;
+               text-align: center;
+       }
+}
+
+.mw-widget-calendarWidget-upButton {
+       position: absolute;
+       right: 3em;
+}
+
+.mw-widget-calendarWidget-prevButton {
+       float: left;
+}
+
+.mw-widget-calendarWidget-nextButton {
+       float: right;
+}
+
+.mw-widget-calendarWidget-body-outer-wrapper {
+       clear: both;
+       position: relative;
+       overflow: hidden;
+       // Fit 7 days, 3em each
+       width: @calendarWidth;
+       // Fit 6 weeks + heading line, 2em each
+       height: @calendarHeight;
+}
+
+.mw-widget-calendarWidget-body-wrapper {
+       .mw-widget-calendarWidget-body {
+               display: inline-block;
+               // Fit 7 days, 3em each
+               width: @calendarWidth;
+               // Fit 6 weeks + heading line, 2em each
+               height: @calendarHeight;
+       }
+
+       .mw-widget-calendarWidget-old-body {
+               // background: #fdd;
+       }
+
+       .mw-widget-calendarWidget-body:not(.mw-widget-calendarWidget-old-body):first-child {
+               margin-top: -@calendarHeight;
+               margin-left: -@calendarWidth;
+       }
+
+       .mw-widget-calendarWidget-body:not(.mw-widget-calendarWidget-old-body):last-child {
+               margin-top: 0;
+               margin-left: 0;
+       }
+}
+
+.mw-widget-calendarWidget-body-wrapper-fade-previous {
+       width: @calendarWidth * 2;
+       height: @calendarHeight;
+
+       .mw-widget-calendarWidget-body:first-child {
+               margin-top: 0 !important;
+               margin-left: 0 !important;
+               transition: 0.5s margin-left;
+       }
+}
+
+.mw-widget-calendarWidget-body-wrapper-fade-next {
+       width: @calendarWidth * 2;
+       height: @calendarHeight;
+
+       .mw-widget-calendarWidget-body:first-child {
+               margin-left: -@calendarWidth !important;
+               margin-top: 0 !important;
+               transition: 0.5s margin-left;
+       }
+}
+
+.mw-widget-calendarWidget-body-wrapper-fade-up {
+       width: @calendarWidth;
+       height: @calendarHeight * 2;
+
+       .mw-widget-calendarWidget-body {
+               display: block;
+       }
+
+       .mw-widget-calendarWidget-body:first-child {
+               margin-left: 0 !important;
+               margin-top: 0 !important;
+               transition: 0.5s margin-top;
+       }
+}
+
+.mw-widget-calendarWidget-body-wrapper-fade-down {
+       width: @calendarWidth;
+       height: @calendarHeight * 2;
+
+       .mw-widget-calendarWidget-body {
+               display: block;
+       }
+
+       .mw-widget-calendarWidget-body:first-child {
+               margin-left: 0 !important;
+               margin-top: -@calendarHeight !important;
+               transition: 0.5s margin-top;
+       }
+}
+
+.mw-widget-calendarWidget-day,
+.mw-widget-calendarWidget-day-heading,
+.mw-widget-calendarWidget-month,
+.mw-widget-calendarWidget-year {
+       display: inline-block;
+       vertical-align: middle;
+       white-space: nowrap;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       text-align: center;
+}
+
+.mw-widget-calendarWidget-day,
+.mw-widget-calendarWidget-day-heading {
+       // 7x7 grid
+       width: @calendarWidth / 7;
+       line-height: @calendarHeight / 7;
+       // Don't overlap the hacked-up fake box-shadow border we get inside DateInputWidget when focussed
+       &:nth-child(7n) {
+               width: @calendarWidth / 7 - 0.2em;
+               margin-right: 0.2em;
+       }
+       &:nth-child(7n+1) {
+               width: @calendarWidth / 7 - 0.2em;
+               margin-left: 0.2em;
+       }
+       &:nth-child(42) ~ & {
+               line-height: @calendarHeight / 7 - 0.2em;
+               margin-bottom: 0.2em;
+       }
+}
+
+.mw-widget-calendarWidget-month {
+       // 2x6 grid
+       width: @calendarWidth / 2;
+       line-height: @calendarHeight / 6;
+       // Don't overlap the hacked-up fake box-shadow border we get inside DateInputWidget when focussed
+       &:nth-child(2n) {
+               width: @calendarWidth / 2 - 0.2em;
+               margin-right: 0.2em;
+       }
+       &:nth-child(2n+1) {
+               width: @calendarWidth / 2 - 0.2em;
+               margin-left: 0.2em;
+       }
+       &:nth-child(10) ~ & {
+               line-height: @calendarHeight / 6 - 0.2em;
+               margin-bottom: 0.2em;
+       }
+}
+
+.mw-widget-calendarWidget-year {
+       // 5x4 grid
+       width: @calendarWidth / 5;
+       line-height: @calendarHeight / 4;
+       // Don't overlap the hacked-up fake box-shadow border we get inside DateInputWidget when focussed
+       &:nth-child(5n) {
+               width: @calendarWidth / 5 - 0.2em;
+               margin-right: 0.2em;
+       }
+       &:nth-child(5n+1) {
+               width: @calendarWidth / 5 - 0.2em;
+               margin-left: 0.2em;
+       }
+       &:nth-child(15) ~ & {
+               line-height: @calendarHeight / 4 - 0.2em;
+               margin-bottom: 0.2em;
+       }
+}
+
+.mw-widget-calendarWidget-item {
+       cursor: pointer;
+}
+
+/* Theme-specific */
+.mw-widget-calendarWidget-day {
+       color: #444;
+}
+
+.mw-widget-calendarWidget-day-heading {
+       font-weight: bold;
+       color: #555;
+}
+
+.mw-widget-calendarWidget-day-additional {
+       color: #aaa;
+}
+
+.mw-widget-calendarWidget-day-today {
+       // Intentionally left blank.
+}
+
+.mw-widget-calendarWidget-item-selected {
+       background-color: #d8e6fe;
+       color: #3787fb;
+
+       &.mw-widget-calendarWidget-day,
+       &.mw-widget-calendarWidget-day-heading {
+               border-radius: ((@calendarHeight / 7) / 2);
+       }
+
+       &.mw-widget-calendarWidget-month {
+               border-radius: ((@calendarHeight / 6) / 2);
+       }
+
+       &.mw-widget-calendarWidget-year {
+               border-radius: ((@calendarHeight / 4) / 2);
+       }
+}
+
+.mw-widget-calendarWidget-item:hover {
+       background-color: #eee;
+
+       &.mw-widget-calendarWidget-day,
+       &.mw-widget-calendarWidget-day-heading {
+               border-radius: ((@calendarHeight / 7) / 4);
+       }
+
+       &.mw-widget-calendarWidget-month {
+               border-radius: ((@calendarHeight / 6) / 4);
+       }
+
+       &.mw-widget-calendarWidget-year {
+               border-radius: ((@calendarHeight / 4) / 4);
+       }
+}
diff --git a/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js b/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js
new file mode 100644 (file)
index 0000000..1820dda
--- /dev/null
@@ -0,0 +1,355 @@
+/*!
+ * MediaWiki Widgets – DateInputWidget class.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+/*global moment */
+( function ( $, mw ) {
+
+       /**
+        * Creates an mw.widgets.DateInputWidget object.
+        *
+        * @class
+        * @extends OO.ui.InputWidget
+        *
+        * @constructor
+        * @param {Object} [config] Configuration options
+        * @cfg {string} [precision='day'] Date precision to use, 'day' or 'month'
+        * @cfg {string|null} [date=null] Day or month date (depending on `precision`), in the
+        *     format 'YYYY-MM-DD' or 'YYYY-MM'. When null, defaults to current date.
+        * @cfg {string} [inputFormat] Date format string to use for the textual input field. Displayed
+        *     while the widget is active, and the user can type in a date in this format. Should be short
+        *     and easy to type. When not given, defaults to 'YYYY-MM-DD' or 'YYYY-MM', depending on
+        *     `precision`.
+        * @cfg {string} [displayFormat] Date format string to use for the clickable label. Displayed
+        *     while the widget is inactive. Should be as unambiguous as possible (for example, prefer to
+        *     spell out the month, rather than rely on the order), even if that makes it longer. When not
+        *     given, the default is language-specific.
+        */
+       mw.widgets.DateInputWidget = function MWWDateInputWidget( config ) {
+               // Config initialization
+               config = config || {};
+
+               // Properties (must be set before parent constructor, which calls #setValue)
+               this.handle = new OO.ui.LabelWidget();
+               this.textInput = new OO.ui.TextInputWidget( {
+                       validate: this.validateDate.bind( this )
+               } );
+               this.calendar = new mw.widgets.CalendarWidget( {
+                       precision: config.precision
+               } );
+               this.inCalendar = 0;
+               this.inTextInput = 0;
+               this.inputFormat = config.inputFormat;
+               this.displayFormat = config.displayFormat;
+
+               // Parent constructor
+               mw.widgets.DateInputWidget.parent.call( this, config );
+
+               // Events
+               this.calendar.connect( this, {
+                       change: 'onCalendarChange'
+               } );
+               this.textInput.connect( this, {
+                       enter: 'onEnter',
+                       change: 'onTextInputChange'
+               } );
+               this.$element.on( {
+                       focusout: this.onBlur.bind( this )
+               } );
+               this.calendar.$element.on( {
+                       keypress: this.onCalendarKeyPress.bind( this )
+               } );
+               this.handle.$element.on( {
+                       click: this.onClick.bind( this ),
+                       keypress: this.onKeyPress.bind( this )
+               } );
+
+               // Initialization
+               // Move 'tabindex' from this.$input (which is invisible) to the visible handle
+               this.setTabIndexedElement( this.handle.$element );
+               this.handle.$element
+                       .addClass( 'mw-widget-dateInputWidget-handle' );
+               this.$element
+                       .addClass( 'mw-widget-dateInputWidget' )
+                       .append( this.handle.$element, this.textInput.$element, this.calendar.$element );
+               // Set handle label and hide stuff
+               this.deactivate();
+       };
+
+       /* Inheritance */
+
+       OO.inheritClass( mw.widgets.DateInputWidget, OO.ui.InputWidget );
+
+       /* Methods */
+
+       /**
+        * @inheritdoc
+        * @protected
+        */
+       mw.widgets.DateInputWidget.prototype.getInputElement = function () {
+               return $( '<input type="hidden">' );
+       };
+
+       /**
+        * Respond to calendar date change events.
+        *
+        * @private
+        */
+       mw.widgets.DateInputWidget.prototype.onCalendarChange = function () {
+               this.inCalendar++;
+               if ( !this.inTextInput ) {
+                       // If this is caused by user typing in the input field, do not set anything.
+                       // The value may be invalid (see #onTextInputChange), but displayable on the calendar.
+                       this.setValue( this.calendar.getDate() );
+               }
+               this.inCalendar--;
+       };
+
+       /**
+        * Respond to text input value change events.
+        *
+        * @private
+        */
+       mw.widgets.DateInputWidget.prototype.onTextInputChange = function () {
+               var
+                       widget = this,
+                       value = this.textInput.getValue();
+               this.inTextInput++;
+               this.textInput.isValid().done( function ( valid ) {
+                       if ( valid ) {
+                               // Well-formed date value, parse and set it
+                               var mom = moment( value, widget.getInputFormat() );
+                               // Use English locale to avoid number formatting
+                               widget.setValue( mom.locale( 'en' ).format( widget.getInternalFormat() ) );
+                       } else {
+                               // Not well-formed, but possibly partial? Try updating the calendar, but do not set the
+                               // internal value. Generally this only makes sense when 'inputFormat' is little-endian (e.g.
+                               // 'YYYY-MM-DD'), but that's hard to check for, and might be difficult to handle the parsing
+                               // right for weird formats. So limit this trick to only when we're using the default
+                               // 'inputFormat', which is the same as the internal format, 'YYYY-MM-DD'.
+                               if ( widget.getInputFormat() === widget.getInternalFormat() ) {
+                                       widget.calendar.setDate( widget.textInput.getValue() );
+                               }
+                       }
+                       widget.inTextInput--;
+               } );
+       };
+
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.DateInputWidget.prototype.setValue = function ( value ) {
+               if ( value === undefined || value === null ) {
+                       // Default to today
+                       value = this.calendar.getDate();
+               }
+
+               var oldValue = this.value;
+
+               mw.widgets.DateInputWidget.parent.prototype.setValue.call( this, value );
+
+               if ( this.value !== oldValue ) {
+                       if ( !this.inCalendar ) {
+                               this.calendar.setDate( this.getValue() );
+                       }
+                       if ( !this.inTextInput ) {
+                               this.textInput.setValue( this.getMoment().format( this.getInputFormat() ) );
+                       }
+               }
+
+               return this;
+       };
+
+       /**
+        * Handle text input and calendar blur events.
+        *
+        * @private
+        */
+       mw.widgets.DateInputWidget.prototype.onBlur = function () {
+               var widget = this;
+               setTimeout( function () {
+                       var $focussed = $( ':focus' );
+                       // Deactivate unless the focus moved to something else inside this widget
+                       if ( !OO.ui.contains( widget.$element[ 0 ], $focussed[0], true ) ) {
+                               widget.deactivate();
+                       }
+               }, 0 );
+       };
+
+       /**
+        * Deactivate this input field for data entry. Opens the calendar and shows the text field.
+        *
+        * @private
+        */
+       mw.widgets.DateInputWidget.prototype.deactivate = function () {
+               this.textInput.setValue( this.getMoment().format( this.getInputFormat() ) );
+               this.calendar.setDate( this.getValue() );
+               this.handle.setLabel( this.getMoment().format( this.getDisplayFormat() ) );
+
+               this.$element.removeClass( 'mw-widget-dateInputWidget-active' );
+               this.handle.toggle( true );
+               this.textInput.toggle( false );
+               this.calendar.toggle( false );
+       };
+
+       /**
+        * Activate this input field for data entry. Closes the calendar and hides the text field.
+        *
+        * @private
+        */
+       mw.widgets.DateInputWidget.prototype.activate = function () {
+               this.setValue( this.getValue() );
+
+               this.$element.addClass( 'mw-widget-dateInputWidget-active' );
+               this.handle.toggle( false );
+               this.textInput.toggle( true );
+               this.calendar.toggle( true );
+
+               this.textInput.$input.focus();
+       };
+
+       /**
+        * Get the date format to be used for handle label when the input is inactive.
+        *
+        * @private
+        * @return {string} Format string
+        */
+       mw.widgets.DateInputWidget.prototype.getDisplayFormat = function () {
+               if ( this.displayFormat !== undefined ) {
+                       return this.displayFormat;
+               }
+
+               if ( this.calendar.getPrecision() === 'month' ) {
+                       return 'MMMM YYYY';
+               } else {
+                       // The formats Moment.js provides:
+                       // * ll:   Month name, day of month, year
+                       // * lll:  Month name, day of month, year, time
+                       // * llll: Month name, day of month, day of week, year, time
+                       //
+                       // The format we want:
+                       // * ????: Month name, day of month, day of week, year
+                       //
+                       // We try to construct it as 'llll - (lll - ll)' and hope for the best.
+                       // This seems to work well for many languages (maybe even all?).
+
+                       var localeData = moment.localeData( moment.locale() ),
+                               llll = localeData.longDateFormat( 'llll' ),
+                               lll = localeData.longDateFormat( 'lll' ),
+                               ll = localeData.longDateFormat( 'll' ),
+                               format = llll.replace( lll.replace( ll, '' ), '' );
+
+                       return format;
+               }
+       };
+
+       /**
+        * Get the date format to be used for the text field when the input is active.
+        *
+        * @private
+        * @return {string} Format string
+        */
+       mw.widgets.DateInputWidget.prototype.getInputFormat = function () {
+               if ( this.inputFormat !== undefined ) {
+                       return this.inputFormat;
+               }
+
+               return {
+                       day: 'YYYY-MM-DD',
+                       month: 'YYYY-MM'
+               }[ this.calendar.getPrecision() ];
+       };
+
+       /**
+        * Get the date format to be used internally for the value. This is not configurable in any way,
+        * and always either 'YYYY-MM-DD' or 'YYYY-MM'.
+        *
+        * @private
+        * @return {string} Format string
+        */
+       mw.widgets.DateInputWidget.prototype.getInternalFormat = function () {
+               return {
+                       day: 'YYYY-MM-DD',
+                       month: 'YYYY-MM'
+               }[ this.calendar.getPrecision() ];
+       };
+
+       /**
+        * Get the Moment object for current value.
+        *
+        * @return {Object} Moment object
+        */
+       mw.widgets.DateInputWidget.prototype.getMoment = function () {
+               return moment( this.getValue(), this.getInternalFormat() );
+       };
+
+       /**
+        * Handle mouse click events.
+        *
+        * @private
+        * @param {jQuery.Event} e Mouse click event
+        */
+       mw.widgets.DateInputWidget.prototype.onClick = function ( e ) {
+               if ( !this.isDisabled() && e.which === 1 ) {
+                       this.activate();
+               }
+               return false;
+       };
+
+       /**
+        * Handle key press events.
+        *
+        * @private
+        * @param {jQuery.Event} e Key press event
+        */
+       mw.widgets.DateInputWidget.prototype.onKeyPress = function ( e ) {
+               if ( !this.isDisabled() &&
+                       ( e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )
+               ) {
+                       this.activate();
+                       return false;
+               }
+       };
+
+       /**
+        * Handle calendar key press events.
+        *
+        * @private
+        * @param {jQuery.Event} e Key press event
+        */
+       mw.widgets.DateInputWidget.prototype.onCalendarKeyPress = function ( e ) {
+               if ( !this.isDisabled() && e.which === OO.ui.Keys.ENTER ) {
+                       this.deactivate();
+                       this.handle.$element.focus();
+                       return false;
+               }
+       };
+
+       /**
+        * Handle text input enter events.
+        *
+        * @private
+        */
+       mw.widgets.DateInputWidget.prototype.onEnter = function () {
+               this.deactivate();
+               this.handle.$element.focus();
+       };
+
+       /**
+        * @private
+        * @param {string} date Date string, must be in 'YYYY-MM-DD' or 'YYYY-MM' format to be valid
+        */
+       mw.widgets.DateInputWidget.prototype.validateDate = function ( date ) {
+               // "Half-strict mode": for example, for the format 'YYYY-MM-DD', 2015-1-3 instead of 2015-01-03
+               // is okay, but 2015-01 isn't, and neither is 2015-01-foo. Use Moment's "fuzzy" mode and check
+               // parsing flags for the details (stoled from implementation of #isValid).
+               var
+                       mom = moment( date, this.getInputFormat() ),
+                       flags = mom.parsingFlags();
+
+               return mom.isValid() && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0;
+       };
+
+}( jQuery, mediaWiki ) );
diff --git a/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.less b/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.less
new file mode 100644 (file)
index 0000000..33e3406
--- /dev/null
@@ -0,0 +1,107 @@
+/*!
+ * MediaWiki Widgets – DateInputWidget styles.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+.oo-ui-box-sizing( @type: border-box ) {
+       -webkit-box-sizing: @type;
+       -moz-box-sizing: @type;
+       box-sizing: @type;
+}
+
+.oo-ui-unselectable() {
+       -webkit-touch-callout: none;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+}
+
+.oo-ui-inline-spacing( @spacing, @cancelled-spacing: 0 ) {
+       margin-right: @spacing;
+       &:last-child {
+               margin-right: @cancelled-spacing;
+       }
+}
+
+.mw-widget-dateInputWidget {
+       display: inline-block;
+       position: relative;
+
+       &-handle {
+               width: 100%;
+               display: inline-block;
+               cursor: pointer;
+
+               .oo-ui-unselectable();
+               .oo-ui-box-sizing(border-box);
+       }
+
+       &.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle {
+               cursor: default;
+       }
+
+       > .mw-widget-calendarWidget {
+               position: absolute;
+               z-index: 1;
+       }
+
+       // Theme-specific styles
+       width: 21em;
+       margin: 0.25em 0;
+
+       .oo-ui-inline-spacing(0.5em);
+
+       &-handle {
+               padding: 0.5em 1em;
+               border: 1px solid #ccc;
+               border-radius: 0.1em;
+               line-height: 1.275em;
+
+               &:hover {
+                       border-color: #347bff;
+               }
+       }
+
+       > .oo-ui-textInputWidget input {
+               padding-left: 1em;
+       }
+
+       > .mw-widget-calendarWidget {
+               background-color: white;
+       }
+
+       &-active > .mw-widget-calendarWidget {
+               margin-top: -2px;
+               // Immitate focussed input styles
+               // First shadow generates bottom and right "border", second shadow generates bottom and left,
+               // resulting in no "border" at the top. Note that this generates a 2px-wide "border", not 1px.
+               // It makes sense when you think about it long enough and look up what each value means. Enjoy.
+               // (This is symmetrical anyway, and CSSJanus can't flip it correctly. T62805)
+               /* @noflip */
+               box-shadow: inset -1px -1px 0 1px #347bff, inset 1px -1px 0 1px #347bff;
+               border-top: 1px solid #ccc;
+
+               &:focus {
+                       outline: none;
+                       // Add border at the top on focus
+                       margin-top: -3px;
+                       border-top: 2px solid #347bff;
+               }
+       }
+
+       &:hover .oo-ui-dropdownWidget-handle {
+               border-color: #aaa;
+       }
+
+       &.oo-ui-widget-disabled {
+               .oo-ui-dropdownWidget-handle {
+                       color: #ccc;
+                       text-shadow: 0 1px 1px #fff;
+                       border-color: #ddd;
+                       background-color: #f3f3f3;
+               }
+       }
+}
index 0558c32..05e6f27 100644 (file)
@@ -25,7 +25,7 @@
         */
        mw.widgets.NamespaceInputWidget = function MwWidgetsNamespaceInputWidget( config ) {
                // Parent constructor
-               OO.ui.Widget.call( this, config );
+               mw.widgets.NamespaceInputWidget.parent.call( this, config );
 
                // Properties
                this.namespace = config.namespace;
                this.allValue = config.allValue;
 
                // Events
-               config.namespace.connect( this, { change: 'updateCheckboxesState' } );
+               this.namespace.connect( this, { change: 'updateCheckboxesState' } );
 
                // Initialization
                this.$element
                        .addClass( 'mw-widget-namespaceInputWidget' )
                        .append(
-                               config.namespace.$element,
-                               config.invert ? config.invert.$element : '',
-                               config.associated ? config.associated.$element : ''
+                               this.namespace.$element,
+                               this.invert ? this.invert.$element : '',
+                               this.associated ? this.associated.$element : ''
                        );
                this.updateCheckboxesState();
        };
 
-       /* Inheritance */
+       /* Setup */
 
        OO.inheritClass( mw.widgets.NamespaceInputWidget, OO.ui.Widget );
 
index e715361..66b009f 100644 (file)
@@ -5,6 +5,7 @@
  * @license The MIT License (MIT); see LICENSE.txt
  */
 ( function ( $, mw ) {
+
        /**
         * Creates an mw.widgets.TitleInputWidget object.
         *
                config = config || {};
 
                // Parent constructor
-               OO.ui.TextInputWidget.call( this, $.extend( {}, config, { autocomplete: false } ) );
+               mw.widgets.TitleInputWidget.parent.call( this, $.extend( {}, config, { autocomplete: false } ) );
 
                // Mixin constructors
                OO.ui.mixin.LookupElement.call( this, config );
 
                // Properties
                this.limit = config.limit || 10;
-               this.namespace = config.namespace || null;
+               this.namespace = config.namespace !== undefined ? config.namespace : null;
                this.relative = config.relative !== undefined ? config.relative : true;
                this.showRedirectTargets = config.showRedirectTargets !== false;
                this.showRedlink = !!config.showRedlink;
                } );
        };
 
-       /* Inheritance */
+       /* Setup */
 
        OO.inheritClass( mw.widgets.TitleInputWidget, OO.ui.TextInputWidget );
-
        OO.mixinClass( mw.widgets.TitleInputWidget, OO.ui.mixin.LookupElement );
 
        /* Methods */
@@ -95,7 +95,7 @@
                this.setLookupsDisabled( true );
 
                // Parent method
-               retval = OO.ui.TextInputWidget.prototype.focus.apply( this, arguments );
+               retval = mw.widgets.TitleInputWidget.parent.prototype.focus.apply( this, arguments );
 
                this.setLookupsDisabled( false );
 
         * Get lookup cache item from server response data.
         *
         * @method
-        * @param {Mixed} data Response from server
+        * @param {Mixed} response Response from server
         */
-       mw.widgets.TitleInputWidget.prototype.getLookupCacheDataFromResponse = function ( data ) {
-               return data.query || {};
+       mw.widgets.TitleInputWidget.prototype.getLookupCacheDataFromResponse = function ( response ) {
+               return response.query || {};
        };
 
        /**
                                imageUrl: OO.getProp( suggestionPage, 'thumbnail', 'source' ),
                                description: OO.getProp( suggestionPage, 'terms', 'description' )
                        };
-                       titles.push( suggestionPage.title );
+
+                       // Throw away pages from wrong namespaces. This can happen when 'showRedirectTargets' is true
+                       // and we encounter a cross-namespace redirect.
+                       if ( this.namespace === null || this.namespace === suggestionPage.ns ) {
+                               titles.push( suggestionPage.title );
+                       }
 
                        redirects = redirectsTo[suggestionPage.title] || [];
                        for ( i = 0, len = redirects.length; i < len; i++ ) {
index 6623aa7..ec0c935 100644 (file)
@@ -45,9 +45,9 @@
                }, config );
 
                // Parent constructor
-               OO.ui.MenuOptionWidget.call( this, config );
+               mw.widgets.TitleOptionWidget.parent.call( this, config );
 
-               // Intialization
+               // Initialization
                this.$label.wrap( '<a>' );
                this.$link = this.$label.parent();
                this.$link.attr( 'href', config.href );
@@ -75,7 +75,7 @@
                }
        };
 
-       /* Inheritance */
+       /* Setup */
 
        OO.inheritClass( mw.widgets.TitleOptionWidget, OO.ui.MenuOptionWidget );
 
index 903660a..d540877 100644 (file)
@@ -5,6 +5,7 @@
  * @license The MIT License (MIT); see LICENSE.txt
  */
 ( function ( $, mw ) {
+
        /**
         * Creates a mw.widgets.UserInputWidget object.
         *
@@ -21,7 +22,7 @@
                config = config || {};
 
                // Parent constructor
-               OO.ui.TextInputWidget.call( this, $.extend( {}, config, { autocomplete: false } ) );
+               mw.widgets.UserInputWidget.parent.call( this, $.extend( {}, config, { autocomplete: false } ) );
 
                // Mixin constructors
                OO.ui.mixin.LookupElement.call( this, config );
                this.lookupMenu.$element.addClass( 'mw-widget-userInputWidget-menu' );
        };
 
-       /* Inheritance */
+       /* Setup */
 
        OO.inheritClass( mw.widgets.UserInputWidget, OO.ui.TextInputWidget );
-
        OO.mixinClass( mw.widgets.UserInputWidget, OO.ui.mixin.LookupElement );
 
        /* Methods */
@@ -62,7 +62,7 @@
                this.setLookupsDisabled( true );
 
                // Parent method
-               retval = OO.ui.TextInputWidget.prototype.focus.apply( this, arguments );
+               retval = mw.widgets.UserInputWidget.parent.prototype.focus.apply( this, arguments );
 
                this.setLookupsDisabled( false );
 
         * Get lookup cache item from server response data.
         *
         * @method
-        * @param {Mixed} data Response from server
+        * @param {Mixed} response Response from server
         */
-       mw.widgets.UserInputWidget.prototype.getLookupCacheDataFromResponse = function ( data ) {
-               return data.query || {};
+       mw.widgets.UserInputWidget.prototype.getLookupCacheDataFromResponse = function ( response ) {
+               return response.query.allusers || {};
        };
 
        /**
         */
        mw.widgets.UserInputWidget.prototype.getLookupMenuOptionsFromData = function ( data ) {
                var len, i, user,
-                       users = data.allusers,
                        items = [];
 
-               for ( i = 0, len = users.length; i < len; i++ ) {
-                       user = users[i] || {};
+               for ( i = 0, len = data.length; i < len; i++ ) {
+                       user = data[i] || {};
                        items.push( new OO.ui.MenuOptionWidget( {
                                label: user.name,
                                data: user.name
index b620e05..5292e80 100644 (file)
                searchboxesSelectors = [
                        // Primary searchbox on every page in standard skins
                        '#searchInput',
+                       // Special:Search
+                       '#powerSearchText',
+                       '#searchText',
                        // Generic selector for skins with multiple searchboxes (used by CologneBlue)
                        // and for MediaWiki itself (special pages with page title inputs)
                        '.mw-searchInput'
diff --git a/resources/src/moment-local-dmy.js b/resources/src/moment-local-dmy.js
new file mode 100644 (file)
index 0000000..c67b93e
--- /dev/null
@@ -0,0 +1,16 @@
+// Use DMY date format for Moment.js, in accordance with MediaWiki's date formatting routines.
+// This affects English only (and languages without localisations, that fall back to English).
+// http://momentjs.com/docs/#/customization/long-date-formats/
+/*global moment */
+moment.locale( 'en', {
+       longDateFormat: {
+               // Unchanged, but have to be repeated here:
+               LT: 'h:mm A',
+               LTS: 'h:mm:ss A',
+               // Customized:
+               L: 'DD/MM/YYYY',
+               LL: 'D MMMM YYYY',
+               LLL: 'D MMMM YYYY LT',
+               LLLL: 'dddd, D MMMM YYYY LT'
+       }
+} );
index 5ee295b..ac42854 100644 (file)
@@ -25,7 +25,8 @@ performance.mark( 'mediaWikiStartUp' );
  * - https://jquery.com/browser-support/
  */
 
-/*jshint unused: false */
+/*jshint unused: false, evil: true */
+/*globals mw, $VARS, $CODE */
 function isCompatible( ua ) {
        if ( ua === undefined ) {
                ua = navigator.userAgent;
@@ -68,5 +69,17 @@ function isCompatible( ua ) {
 }
 
 /**
- * The startUp() function will be auto-generated and added below.
+ * The $CODE and $VARS placeholders are substituted in ResourceLoaderStartUpModule.php.
  */
+function startUp() {
+       mw.config = new mw.Map( $VARS.wgLegacyJavaScriptGlobals );
+
+       $CODE.registrations();
+
+       mw.config.set( $VARS.configuration );
+}
+
+// Conditional script injection
+if ( isCompatible() ) {
+       document.write( $VARS.baseModulesScript );
+}
index 490f5c6..cb91614 100644 (file)
@@ -10,7 +10,8 @@ class ResourceLoaderStartUpModuleTest extends ResourceLoaderTestCase {
                                'out' => '
 mw.loader.addSource( {
     "local": "/w/load.php"
-} );mw.loader.register( [] );'
+} );
+mw.loader.register( [] );'
                        ) ),
                        array( array(
                                'msg' => 'Basic registry',
@@ -20,7 +21,8 @@ mw.loader.addSource( {
                                'out' => '
 mw.loader.addSource( {
     "local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.blank",
         "wvTifjse"
@@ -37,7 +39,8 @@ mw.loader.addSource( {
                                'out' => '
 mw.loader.addSource( {
     "local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.blank",
         "wvTifjse"
@@ -65,7 +68,8 @@ mw.loader.addSource( {
                                'out' => '
 mw.loader.addSource( {
     "local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.blank",
         "wvTifjse"
@@ -87,7 +91,8 @@ mw.loader.addSource( {
 mw.loader.addSource( {
     "local": "/w/load.php",
     "example": "http://example.org/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.blank",
         "wvTifjse",
@@ -123,7 +128,8 @@ mw.loader.addSource( {
                                'out' => '
 mw.loader.addSource( {
     "local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.x.core",
         "wvTifjse"
@@ -219,7 +225,8 @@ mw.loader.addSource( {
 mw.loader.addSource( {
     "local": "/w/load.php",
     "example": "http://example.org/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.blank",
         "wvTifjse"
@@ -342,7 +349,7 @@ mw.loader.addSource( {
                $rl->register( $modules );
                $module = new ResourceLoaderStartUpModule();
                $this->assertEquals(
-'mw.loader.addSource({"local":"/w/load.php"});'
+'mw.loader.addSource({"local":"/w/load.php"});' . "\n"
 . 'mw.loader.register(['
 . '["test.blank","wvTifjse"],'
 . '["test.min","wvTifjse",[0],null,null,'
@@ -364,7 +371,8 @@ mw.loader.addSource( {
                $this->assertEquals(
 'mw.loader.addSource( {
     "local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.blank",
         "wvTifjse"
index 5482b97..7e60fdd 100644 (file)
@@ -141,4 +141,107 @@ class SpecialSearchTest extends MediaWikiTestCase {
                        "Search term '{$term}' should not be expanded in Special:Search <title>"
                );
        }
+
+       public function provideRewriteQueryWithSuggestion() {
+               return array(
+                       array(
+                               'With results and a suggestion does not run suggested query',
+                               '/Did you mean: <a[^>]+>first suggestion/',
+                               array(
+                                       new SpecialSearchTestMockResultSet( 'first suggestion', array(
+                                               SearchResult::newFromTitle( Title::newMainPage() ),
+                                       ) ),
+                                       new SpecialSearchTestMockResultSet( 'was never run', array() ),
+                               ),
+                       ),
+
+                       array(
+                               'With no results and a suggestion responds with suggested query results',
+                               '/Showing results for <a[^>]+>first suggestion/',
+                               array(
+                                       new SpecialSearchTestMockResultSet( 'first suggestion', array() ),
+                                       new SpecialSearchTestMockResultSet( 'second suggestion', array(
+                                               SearchResult::newFromTitle( Title::newMainPage() ),
+                                       ) ),
+                               ),
+                       ),
+
+                       array(
+                               'When both queries have no results user gets no results',
+                               '/There were no results matching the query/',
+                               array(
+                                       new SpecialSearchTestMockResultSet( 'first suggestion', array() ),
+                                       new SpecialSearchTestMockResultSet( 'second suggestion', array() ),
+                               ),
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider provideRewriteQueryWithSuggestion
+        */
+       public function testRewriteQueryWithSuggestion( $message, $expectRegex, $fromResults ) {
+               $mockSearchEngine = $this->mockSearchEngine( $fromResults );
+               $search = $this->getMockBuilder( 'SpecialSearch' )
+                       ->setMethods( array( 'getSearchEngine' ) )
+                       ->getMock();
+               $search->expects( $this->any() )
+                       ->method( 'getSearchEngine' )
+                       ->will( $this->returnValue( $mockSearchEngine ) );
+
+               $search->getContext()->setTitle( Title::makeTitle( NS_SPECIAL, 'Search' ) );
+               $search->load();
+               $search->showResults( 'this is a fake search' );
+
+               $html = $search->getContext()->getOutput()->getHTML();
+               foreach ( (array)$expectRegex as $regex ) {
+                       $this->assertRegExp( $regex, $html, $message );
+               }
+       }
+
+       protected function mockSearchEngine( array $returnValues ) {
+               $mock = $this->getMockBuilder( 'SearchEngine' )
+                       ->setMethods( array( 'searchText' ) )
+                       ->getMock();
+
+               $mock->expects( $this->any() )
+                       ->method( 'searchText' )
+                       ->will( call_user_func_array(
+                               array( $this, 'onConsecutiveCalls' ),
+                               array_map( array( $this, 'returnValue' ), $returnValues )
+                       ) );
+
+               return $mock;
+       }
+}
+
+class SpecialSearchTestMockResultSet extends SearchResultSet {
+       protected $results;
+       protected $suggestion;
+
+       public function __construct( $suggestion = null, array $results = array(), $containedSyntax = false) {
+               $this->results = $results;
+               $this->suggestion = $suggestion;
+               $this->containedSyntax = $containedSyntax;
+       }
+
+       public function numRows() {
+               return count( $this->results );
+       }
+
+       public function getTotalHits() {
+               return $this->numRows();
+       }
+
+       public function hasSuggestion() {
+               return $this->suggestion !== null;
+       }
+
+       public function getSuggestionQuery() {
+               return $this->suggestion;
+       }
+
+       public function getSuggestionSnippet() {
+               return $this->suggestion;
+       }
 }
index 61ebbf8..0fcaa5f 100644 (file)
@@ -133,8 +133,7 @@ class GenerateJqueryMsgData extends Maintenance {
                                . "// languages, and parser modes. Intended for use by a unit test framework by looping\n"
                                . "// through the object and comparing its parser return value with the 'result' property.\n"
                                . '// Last generated with ' . basename( __FILE__ ) . ' at ' . gmdate( 'r' ) . "\n"
-                               // This file will contain unquoted JSON strings as javascript native object literals,
-                               // flip the quotemark convention for this file.
+                               . "//jscs:disable\n"
                                . "\n"
                                . 'mediaWiki.libs.phpParserData = ' . FormatJson::encode( $phpParserData, true ) . ";\n";
 
index 4ab5f14..498acc1 100644 (file)
@@ -1,7 +1,8 @@
 // This file stores the output from the PHP parser for various messages, arguments,
 // languages, and parser modes. Intended for use by a unit test framework by looping
 // through the object and comparing its parser return value with the 'result' property.
-// Last generated with generateJqueryMsgData.php at Thu, 30 Jan 2014 04:04:41 +0000
+// Last generated with generateJqueryMsgData.php at Fri, 10 Jul 2015 11:44:08 +0000
+//jscs:disable
 
 mediaWiki.libs.phpParserData = {
     "messages": {