Merge "Porting file test from browsertests"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 3 Jul 2014 15:16:16 +0000 (15:16 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 3 Jul 2014 15:16:16 +0000 (15:16 +0000)
172 files changed:
.travis.yml
RELEASE-NOTES-1.24
docs/hooks.txt
includes/ChangeTags.php
includes/DefaultSettings.php
includes/MWTimestamp.php
includes/Setup.php
includes/actions/HistoryAction.php
includes/api/ApiParse.php
includes/api/ApiQueryAllUsers.php
includes/api/ApiSetNotificationTimestamp.php
includes/cache/LocalisationCache.php
includes/db/Database.php
includes/gallery/ImageGalleryBase.php
includes/htmlform/HTMLCheckField.php [changed mode: 0755->0644]
includes/installer/DatabaseUpdater.php [changed mode: 0755->0644]
includes/installer/MssqlUpdater.php [changed mode: 0755->0644]
includes/installer/WebInstallerPage.php
includes/installer/i18n/br.json
includes/installer/i18n/haw.json
includes/installer/i18n/sv.json
includes/installer/i18n/yi.json
includes/libs/CSSMin.php
includes/media/Bitmap.php
includes/media/XCF.php
includes/page/ImagePage.php
includes/parser/LinkHolderArray.php
includes/parser/Parser.php
includes/specials/SpecialActiveusers.php
includes/specials/SpecialContributions.php
includes/specials/SpecialLinkSearch.php
includes/specials/SpecialPagesWithProp.php
includes/specials/SpecialSearch.php
languages/i18n/bar.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/br.json
languages/i18n/bs.json
languages/i18n/cs.json
languages/i18n/da.json
languages/i18n/es.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fo.json
languages/i18n/fr.json
languages/i18n/frr.json
languages/i18n/gd.json
languages/i18n/hu.json
languages/i18n/ia.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/kk-cyrl.json
languages/i18n/ksh.json
languages/i18n/ml.json
languages/i18n/nan.json
languages/i18n/nl.json
languages/i18n/pl.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/ru.json
languages/i18n/scn.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/uk.json
languages/i18n/vi.json
languages/i18n/yi.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/mssql/archives/named_constraints.sql [changed mode: 0755->0644]
maintenance/mssql/tables.sql [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-icons_222222_256x240.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-icons_2e83ff_256x240.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-icons_454545_256x240.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-icons_888888_256x240.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-icons_cd0a0a_256x240.png [changed mode: 0755->0644]
resources/lib/oojs-ui/i18n/lv.json
resources/lib/oojs-ui/images/icons/accept.svg
resources/lib/oojs-ui/images/icons/add-item.svg
resources/lib/oojs-ui/images/icons/advanced.svg
resources/lib/oojs-ui/images/icons/alert.svg
resources/lib/oojs-ui/images/icons/arched-arrow-ltr.svg
resources/lib/oojs-ui/images/icons/arched-arrow-rtl.svg
resources/lib/oojs-ui/images/icons/check.svg
resources/lib/oojs-ui/images/icons/clear.svg
resources/lib/oojs-ui/images/icons/close.svg
resources/lib/oojs-ui/images/icons/code.svg
resources/lib/oojs-ui/images/icons/collapse.svg
resources/lib/oojs-ui/images/icons/comment.svg
resources/lib/oojs-ui/images/icons/expand.svg
resources/lib/oojs-ui/images/icons/help.svg
resources/lib/oojs-ui/images/icons/history.svg
resources/lib/oojs-ui/images/icons/info.svg
resources/lib/oojs-ui/images/icons/link.svg
resources/lib/oojs-ui/images/icons/menu.svg
resources/lib/oojs-ui/images/icons/move-ltr.svg
resources/lib/oojs-ui/images/icons/move-rtl.svg
resources/lib/oojs-ui/images/icons/picture.svg
resources/lib/oojs-ui/images/icons/remove-item.svg
resources/lib/oojs-ui/images/icons/remove.svg
resources/lib/oojs-ui/images/icons/search.svg
resources/lib/oojs-ui/images/icons/settings.svg
resources/lib/oojs-ui/images/icons/tag.svg
resources/lib/oojs-ui/images/icons/window.svg
resources/lib/oojs-ui/images/indicators/alert.svg
resources/lib/oojs-ui/images/indicators/arrow-down.svg
resources/lib/oojs-ui/images/indicators/arrow-ltr.svg
resources/lib/oojs-ui/images/indicators/arrow-rtl.svg
resources/lib/oojs-ui/images/indicators/arrow-up.svg
resources/lib/oojs-ui/images/indicators/required.svg
resources/lib/oojs-ui/oojs-ui-agora.css
resources/lib/oojs-ui/oojs-ui-apex.css
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/oojs-ui.svg.css
resources/src/jquery.ui-themes/vector/jquery.ui.core.css
resources/src/jquery/jquery.qunit.completenessTest.js
resources/src/mediawiki.less/mediawiki.mixins.less
resources/src/mediawiki.skinning/content.parsoid.less
resources/src/mediawiki.special/mediawiki.special.block.css
resources/src/mediawiki.special/mediawiki.special.css
resources/src/mediawiki.special/mediawiki.special.search.css
resources/src/mediawiki/mediawiki.feedback.js
resources/src/mediawiki/mediawiki.searchSuggest.js
skins/MonoBook/i18n/es.json
skins/MonoBook/i18n/fa.json
skins/MonoBook/i18n/nl.json
skins/MonoBook/i18n/pl.json
skins/MonoBook/i18n/ru.json
skins/MonoBook/i18n/uk.json
skins/MonoBook/i18n/vi.json
skins/Vector/i18n/cs.json
skins/Vector/i18n/es.json
skins/Vector/i18n/eu.json
skins/Vector/i18n/fa.json
skins/Vector/i18n/frr.json
skins/Vector/i18n/nl.json
skins/Vector/i18n/pl.json
skins/Vector/i18n/uk.json
skins/Vector/i18n/vi.json
tests/browser/Gemfile
tests/browser/Gemfile.lock
tests/browser/features/create_and_follow_wiki_link.feature
tests/browser/features/edit_page.feature
tests/browser/features/login.feature [new file with mode: 0644]
tests/browser/features/preferences.feature
tests/browser/features/step_definitions/edit_page_steps.rb
tests/browser/features/step_definitions/login_steps.rb [new file with mode: 0644]
tests/browser/features/step_definitions/preferences_appearance_steps.rb
tests/browser/features/support/env.rb
tests/browser/features/support/pages/edit_page.rb
tests/browser/features/support/pages/login_error_page.rb [new file with mode: 0644]
tests/browser/features/support/pages/preferences_appearance_page.rb
tests/browser/features/support/pages/preferences_page.rb
tests/phpunit/includes/ImagePage404Test.php [new file with mode: 0644]
tests/phpunit/includes/ImagePageTest.php [new file with mode: 0644]
tests/phpunit/includes/UserTest.php
tests/phpunit/includes/api/ApiOptionsTest.php
tests/phpunit/includes/libs/CSSMinTest.php
tests/phpunit/includes/media/MediaWikiMediaTestCase.php
tests/phpunit/includes/media/XCFTest.php [new file with mode: 0644]
tests/qunit/data/testrunner.js
tests/qunit/suites/resources/jquery/jquery.client.test.js

index 64075f1..dedb4e1 100644 (file)
@@ -38,6 +38,7 @@ script:
   - php tests/phpunit/phpunit.php
 
 notifications:
+  email: false
   irc:
     channels:
       - "chat.freenode.net#mediawiki-core"
index 2f41347..83c2459 100644 (file)
@@ -1,5 +1,6 @@
-Security reminder: MediaWiki does not require PHP's register_globals. If you
-have it on, turn it '''off''' if you can.
+Security reminder: If you have PHP's register_globals option set, you should
+turn it off. Although MediaWiki will work with it enabled, it exposes your
+server to potential security vulnerabilities.
 
 == MediaWiki 1.24 ==
 
@@ -147,6 +148,9 @@ production.
   The old format is still used if prop isn't provided, but this is deprecated.
 * meta=userinfo can now return the count of unread pages on the watchlist.
 * list=watchlist can now filter by unread status.
+* The deprecated action=parse&prop=languageshtml has been removed.
+* (bug 48071) action=setnotificationtimestamp no longer throws PHP or database
+  errors when no pages are given.
 
 === Languages updated in 1.24 ===
 
@@ -203,6 +207,7 @@ changes to languages because of Bugzilla reports.
 * BREAKING CHANGE: The undocumented Special{$this->getName()}BeforeFormDisplay
   set of hooks has been removed and replaced by a single new hook
   SpecialPageBeforeFormDisplay.
+* (bug 65781) Removed block warning on included {{Special:Contributions}}
 
 ==== Renamed classes ====
 * CLDRPluralRuleConverter_Expression to CLDRPluralRuleConverterExpression
index 1673f06..b1ef47c 100644 (file)
@@ -326,6 +326,13 @@ $revCount: Number of revisions in the XML file
 $sRevCount: Number of successfully imported revisions
 $pageInfo: associative array of page information
 
+'AfterParserFetchFileAndTitle': After an image gallery is formed by Parser,
+just before adding its HTML to parser output.
+$parser: Parser object that called the hook
+$ig: Gallery, an object of one of the gallery classes (inheriting from
+ImageGalleryBase)
+$html: HTML generated by the gallery
+
 'AjaxAddScript': Called in output page just before the initialisation
 of the javascript ajax engine. The hook is only called when ajax
 is enabled ( $wgUseAjax = true; ).
index 28db8a1..f51a5a8 100644 (file)
@@ -77,9 +77,9 @@ class ChangeTags {
         * Add tags to a change given its rc_id, rev_id and/or log_id
         *
         * @param string|array $tags Tags to add to the change
-        * @param int $rc_id rc_id of the change to add the tags to
-        * @param int $rev_id rev_id of the change to add the tags to
-        * @param int $log_id Log_id of the change to add the tags to
+        * @param int|null $rc_id rc_id of the change to add the tags to
+        * @param int|null $rev_id rev_id of the change to add the tags to
+        * @param int|null $log_id Log_id of the change to add the tags to
         * @param string $params params to put in the ct_params field of table 'change_tag'
         *
         * @throws MWException
@@ -143,7 +143,7 @@ class ChangeTags {
                        'ts_log_id' => $log_id )
                );
 
-               ## Update the summary row.
+               // Update the summary row.
                // $prevTags can be out of date on slaves, especially when addTags is called consecutively,
                // causing loss of tags added recently in tag_summary table.
                $prevTags = $dbw->selectField( 'tag_summary', 'ts_tags', $tsConds, __METHOD__ );
index 4f170f3..11196ae 100644 (file)
@@ -1514,7 +1514,7 @@ $wgUsersNotifiedOnAllChanges = array();
 $wgDBserver = 'localhost';
 
 /**
- * Database port number (for PostgreSQL)
+ * Database port number (for PostgreSQL and Microsoft SQL Server).
  */
 $wgDBport = 5432;
 
@@ -1540,11 +1540,21 @@ $wgDBtype = 'mysql';
 
 /**
  * Whether to use SSL in DB connection.
+ *
+ * This setting is only used $wgLBFactoryConf['class'] is set to
+ * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
+ * the DBO_SSL flag must be set in the 'flags' option of the database
+ * connection to achieve the same functionality.
  */
 $wgDBssl = false;
 
 /**
  * Whether to use compression in DB connection.
+ *
+ * This setting is only used $wgLBFactoryConf['class'] is set to
+ * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
+ * the DBO_COMPRESS flag must be set in the 'flags' option of the database
+ * connection to achieve the same functionality.
  */
 $wgDBcompress = false;
 
@@ -1652,7 +1662,7 @@ $wgSharedTables = array( 'user', 'user_properties' );
  *   - dbname:      Default database name
  *   - user:        DB user
  *   - password:    DB password
- *   - type:        "mysql" or "postgres"
+ *   - type:        DB type
  *
  *   - load:        Ratio of DB_SLAVE load, must be >=0, the sum of all loads must be >0.
  *                  If this is zero for any given server, no normal query traffic will be
@@ -4971,7 +4981,12 @@ $wgDebugComments = false;
 $wgDebugDBTransactions = false;
 
 /**
- * Write SQL queries to the debug log
+ * Write SQL queries to the debug log.
+ *
+ * This setting is only used $wgLBFactoryConf['class'] is set to
+ * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
+ * the DBO_DEBUG flag must be set in the 'flags' option of the database
+ * connection to achieve the same functionality.
  */
 $wgDebugDumpSql = false;
 
@@ -5586,9 +5601,11 @@ $wgRC2UDPOmitBots = false;
  * Destinations to which notifications about recent changes
  * should be sent.
  *
- * As of MediaWiki 1.22, the only supported 'engine' parameter option in core
- * is 'UDPRCFeedEngine', which is used to send recent changes over UDP to the
- * specified server.
+ * As of MediaWiki 1.22, there are 2 supported 'engine' parameter option in core:
+ *   * 'UDPRCFeedEngine', which is used to send recent changes over UDP to the
+ *      specified server.
+ *   * 'RedisPubSubFeedEngine', which is used to send recent changes to Redis.
+ *
  * The common options are:
  *   * 'uri' -- the address to which the notices are to be sent.
  *   * 'formatter' -- the class name (implementing RCFeedFormatter) which will
@@ -5598,10 +5615,12 @@ $wgRC2UDPOmitBots = false;
  *   * 'omit_user' -- whether edits by registered users should be in the feed
  *   * 'omit_minor' -- whether minor edits should be in the feed
  *   * 'omit_patrolled' -- whether patrolled edits should be in the feed
+ *
  *  The IRC-specific options are:
  *   * 'add_interwiki_prefix' -- whether the titles should be prefixed with
  *     the first entry in the $wgLocalInterwikis array (or the value of
  *     $wgLocalInterwiki, if set)
+ *
  *  The JSON-specific options are:
  *   * 'channel' -- if set, the 'channel' parameter is also set in JSON values.
  *
index 447dde3..ad3228d 100644 (file)
@@ -268,7 +268,7 @@ class MWTimestamp {
                // first value.
                if ( $data[0] == 'System' ) {
                        // First value is System, so use the system offset.
-                       if ( isset( $wgLocalTZoffset ) ) {
+                       if ( $wgLocalTZoffset !== null ) {
                                $diff = $wgLocalTZoffset;
                        }
                } elseif ( $data[0] == 'Offset' ) {
index 783ef3f..67d8da3 100644 (file)
@@ -78,6 +78,14 @@ if ( $wgExtensionAssetsPath === false ) {
        $wgExtensionAssetsPath = "$wgScriptPath/extensions";
 }
 
+// Enable default skins. Temporary, to be removed before 1.24 release.
+// This is hacky and bad, the require_once calls should eventually be generated by the installer
+// and placed in LocalSettings.php.
+// While this is in Setup.php, it needs to be done as soon as possible, as some of the setup code
+// depends on all extensions and skins being already required (bug 67318).
+require_once "$wgStyleDirectory/MonoBook/MonoBook.php";
+require_once "$wgStyleDirectory/Vector/Vector.php";
+
 if ( $wgLogo === false ) {
        $wgLogo = "$wgStylePath/common/images/wiki.png";
 }
@@ -573,26 +581,33 @@ if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode &&
 wfProfileOut( $fname . '-session' );
 wfProfileIn( $fname . '-globals' );
 
+/**
+ * @var Language $wgContLang
+ */
 $wgContLang = Language::factory( $wgLanguageCode );
 $wgContLang->initEncoding();
 $wgContLang->initContLang();
 
 // Now that variant lists may be available...
 $wgRequest->interpolateTitle();
+
+/**
+ * @var User $wgUser
+ */
 $wgUser = RequestContext::getMain()->getUser(); // BackCompat
 
 /**
- * @var $wgLang Language
+ * @var Language $wgLang
  */
 $wgLang = new StubUserLang;
 
 /**
- * @var OutputPage
+ * @var OutputPage $wgOut
  */
 $wgOut = RequestContext::getMain()->getOutput(); // BackCompat
 
 /**
- * @var $wgParser Parser
+ * @var Parser $wgParser
  */
 $wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
 
@@ -601,17 +616,13 @@ if ( !is_object( $wgAuth ) ) {
        wfRunHooks( 'AuthPluginSetup', array( &$wgAuth ) );
 }
 
-# Placeholders in case of DB error
+/**
+ * @var Title $wgTitle
+ */
 $wgTitle = null;
 
 $wgDeferredUpdateList = array();
 
-// Enable default skins.
-// This is hacky and bad, the require_once calls should eventually be generated by the installer
-// and placed in LocalSettings.php.
-require_once "$wgStyleDirectory/MonoBook/MonoBook.php";
-require_once "$wgStyleDirectory/Vector/Vector.php";
-
 wfProfileOut( $fname . '-globals' );
 wfProfileIn( $fname . '-extensions' );
 
index f1e3c26..c946184 100644 (file)
@@ -782,7 +782,7 @@ class HistoryPager extends ReverseChronologicalPager {
         */
        function lastLink( $prevRev, $next ) {
                $last = $this->historyPage->message['last'];
-               # $next may either be a Row, null, or "unkown"
+               # $next may either be a Row, null, or "unknown"
                $nextRev = is_object( $next ) ? new Revision( $next ) : $next;
                if ( is_null( $next ) ) {
                        # Probably no next row
index 9dc4d03..b906b59 100644 (file)
@@ -270,7 +270,7 @@ class ApiParse extends ApiBase {
                        );
                }
 
-               if ( isset( $prop['langlinks'] ) || isset( $prop['languageshtml'] ) ) {
+               if ( isset( $prop['langlinks'] ) ) {
                        $langlinks = $p_result->getLanguageLinks();
 
                        if ( $params['effectivelanglinks'] ) {
@@ -286,12 +286,6 @@ class ApiParse extends ApiBase {
                if ( isset( $prop['langlinks'] ) ) {
                        $result_array['langlinks'] = $this->formatLangLinks( $langlinks );
                }
-               if ( isset( $prop['languageshtml'] ) ) {
-                       $languagesHtml = $this->languagesHtml( $langlinks );
-
-                       $result_array['languageshtml'] = array();
-                       ApiResult::setContent( $result_array['languageshtml'], $languagesHtml );
-               }
                if ( isset( $prop['categories'] ) ) {
                        $result_array['categories'] = $this->formatCategoryLinks( $p_result->getCategories() );
                }
@@ -563,46 +557,6 @@ class ApiParse extends ApiBase {
                return $context->getSkin()->getCategories();
        }
 
-       /**
-        * @deprecated since 1.18 No modern skin generates language links this way,
-        * please use language links data to generate your own HTML.
-        * @param array $languages
-        * @return string
-        */
-       private function languagesHtml( $languages ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               $this->setWarning( '"action=parse&prop=languageshtml" is deprecated ' .
-                       'and will be removed in MediaWiki 1.24. Use "prop=langlinks" ' .
-                       'to generate your own HTML.' );
-
-               global $wgContLang;
-
-               if ( $this->getConfig()->get( 'HideInterlanguageLinks' ) || count( $languages ) == 0 ) {
-                       return '';
-               }
-
-               $s = htmlspecialchars( wfMessage( 'otherlanguages' )->text() .
-                       wfMessage( 'colon-separator' )->text() );
-
-               $langs = array();
-               foreach ( $languages as $l ) {
-                       $nt = Title::newFromText( $l );
-                       $text = Language::fetchLanguageName( $nt->getInterwiki() );
-
-                       $langs[] = Html::element( 'a',
-                               array( 'href' => $nt->getFullURL(), 'title' => $nt->getText(), 'class' => 'external' ),
-                               $text == '' ? $l : $text );
-               }
-
-               $s .= implode( wfMessage( 'pipe-separator' )->escaped(), $langs );
-
-               if ( $wgContLang->isRTL() ) {
-                       $s = Html::rawElement( 'span', array( 'dir' => 'LTR' ), $s );
-               }
-
-               return $s;
-       }
-
        private function formatLinks( $links ) {
                $result = array();
                foreach ( $links as $ns => $nslinks ) {
@@ -723,7 +677,6 @@ class ApiParse extends ApiBase {
                                ApiBase::PARAM_TYPE => array(
                                        'text',
                                        'langlinks',
-                                       'languageshtml',
                                        'categories',
                                        'categorieshtml',
                                        'links',
@@ -782,8 +735,6 @@ class ApiParse extends ApiBase {
                                ' langlinks      - Gives the language links in the parsed wikitext',
                                ' categories     - Gives the categories in the parsed wikitext',
                                ' categorieshtml - Gives the HTML version of the categories',
-                               ' languageshtml  - DEPRECATED. Will be removed in MediaWiki 1.24.',
-                               '                  Gives the HTML version of the language links',
                                ' links          - Gives the internal links in the parsed wikitext',
                                ' templates      - Gives the templates in the parsed wikitext',
                                ' images         - Gives the images in the parsed wikitext',
@@ -804,7 +755,7 @@ class ApiParse extends ApiBase {
                        ),
                        'effectivelanglinks' => array(
                                'Includes language links supplied by extensions',
-                               '(for use with prop=langlinks|languageshtml)',
+                               '(for use with prop=langlinks)',
                        ),
                        'pst' => array(
                                'Do a pre-save transform on the input before parsing it',
index e32104f..d0980e6 100644 (file)
@@ -45,9 +45,15 @@ class ApiQueryAllUsers extends ApiQueryBase {
        }
 
        public function execute() {
-               $db = $this->getDB();
                $params = $this->extractRequestParams();
 
+               if ( $params['activeusers'] ) {
+                       // Update active user cache
+                       SpecialActiveUsers::mergeActiveUsers( 600 );
+               }
+
+               $db = $this->getDB();
+
                $prop = $params['prop'];
                if ( !is_null( $prop ) ) {
                        $prop = array_flip( $prop );
@@ -71,9 +77,9 @@ class ApiQueryAllUsers extends ApiQueryBase {
                $from = is_null( $params['from'] ) ? null : $this->getCanonicalUserName( $params['from'] );
                $to = is_null( $params['to'] ) ? null : $this->getCanonicalUserName( $params['to'] );
 
-               # MySQL doesn't seem to use 'equality propagation' here, so like the
-               # ActiveUsers special page, we have to use rc_user_text for some cases.
-               $userFieldToSort = $params['activeusers'] ? 'rc_user_text' : 'user_name';
+               # MySQL can't figure out that 'user_name' and 'qcc_title' are the same
+               # despite the JOIN condition, so manually sort on the correct one.
+               $userFieldToSort = $params['activeusers'] ? 'qcc_title' : 'user_name';
 
                $this->addWhereRange( $userFieldToSort, $dir, $from, $to );
 
@@ -155,19 +161,32 @@ class ApiQueryAllUsers extends ApiQueryBase {
                }
 
                if ( $params['activeusers'] ) {
-                       $this->addTables( 'recentchanges' );
-
-                       $this->addJoinConds( array( 'recentchanges' => array(
-                               'INNER JOIN', 'rc_user_text=user_name'
+                       $activeUserSeconds = $this->getConfig()->get( 'ActiveUserDays' ) * 86400;
+
+                       // Filter query to only include users in the active users cache
+                       $this->addTables( 'querycachetwo' );
+                       $this->addJoinConds( array( 'querycachetwo' => array(
+                               'INNER JOIN', array(
+                                       'qcc_type' => 'activeusers',
+                                       'qcc_namespace' => NS_USER,
+                                       'qcc_title=user_name',
+                               ),
                        ) ) );
 
-                       $this->addFields( array( 'recentedits' => 'COUNT(*)' ) );
-
-                       $this->addWhere( 'rc_log_type IS NULL OR rc_log_type != ' . $db->addQuotes( 'newusers' ) );
-                       $timestamp = $db->timestamp( wfTimestamp( TS_UNIX ) - $this->getConfig()->get( 'ActiveUserDays' ) * 24 * 3600 );
-                       $this->addWhere( 'rc_timestamp >= ' . $db->addQuotes( $timestamp ) );
-
-                       $this->addOption( 'GROUP BY', $userFieldToSort );
+                       // Actually count the actions using a subquery (bug 64505 and bug 64507)
+                       $timestamp = $db->timestamp( wfTimestamp( TS_UNIX ) - $activeUserSeconds );
+                       $this->addFields( array(
+                               'recentactions' => '(' . $db->selectSQLText(
+                                       'recentchanges',
+                                       'COUNT(*)',
+                                       array(
+                                               'rc_user_text = user_name',
+                                               'rc_type != ' . $db->addQuotes( RC_EXTERNAL ), // no wikidata
+                                               'rc_log_type IS NULL OR rc_log_type != ' . $db->addQuotes( 'newusers' ),
+                                               'rc_timestamp >= ' . $db->addQuotes( $timestamp ),
+                                       )
+                               ) . ')'
+                       ) );
                }
 
                $this->addOption( 'LIMIT', $sqlLimit );
@@ -203,8 +222,13 @@ class ApiQueryAllUsers extends ApiQueryBase {
                        if ( $lastUser !== $row->user_name ) {
                                // Save the last pass's user data
                                if ( is_array( $lastUserData ) ) {
-                                       $fit = $result->addValue( array( 'query', $this->getModuleName() ),
-                                               null, $lastUserData );
+                                       if ( $params['activeusers'] && $lastUserData['recentactions'] === 0 ) {
+                                               // activeusers cache was out of date
+                                               $fit = true;
+                                       } else {
+                                               $fit = $result->addValue( array( 'query', $this->getModuleName() ),
+                                                       null, $lastUserData );
+                                       }
 
                                        $lastUserData = null;
 
@@ -241,7 +265,9 @@ class ApiQueryAllUsers extends ApiQueryBase {
                                        $lastUserData['editcount'] = intval( $row->user_editcount );
                                }
                                if ( $params['activeusers'] ) {
-                                       $lastUserData['recenteditcount'] = intval( $row->recentedits );
+                                       $lastUserData['recentactions'] = intval( $row->recentactions );
+                                       // @todo 'recenteditcount' is set for BC, remove in 1.25
+                                       $lastUserData['recenteditcount'] = $lastUserData['recentactions'];
                                }
                                if ( $fld_registration ) {
                                        $lastUserData['registration'] = $row->user_registration ?
@@ -302,7 +328,9 @@ class ApiQueryAllUsers extends ApiQueryBase {
                        }
                }
 
-               if ( is_array( $lastUserData ) ) {
+               if ( is_array( $lastUserData ) &&
+                       !( $params['activeusers'] && $lastUserData['recentactions'] === 0 )
+               ) {
                        $fit = $result->addValue( array( 'query', $this->getModuleName() ),
                                null, $lastUserData );
                        if ( !$fit ) {
@@ -397,7 +425,7 @@ class ApiQueryAllUsers extends ApiQueryBase {
                        '' => array(
                                'userid' => 'integer',
                                'name' => 'string',
-                               'recenteditcount' => array(
+                               'recentactions' => array(
                                        ApiBase::PROP_TYPE => 'integer',
                                        ApiBase::PROP_NULLABLE => true
                                )
index dc593e5..d5741d9 100644 (file)
@@ -70,22 +70,26 @@ class ApiSetNotificationTimestamp extends ApiBase {
                                $this->dieUsage( 'torevid may only be used with a single page', 'multpages' );
                        }
                        $title = reset( $pageSet->getGoodTitles() );
-                       $timestamp = Revision::getTimestampFromId( $title, $params['torevid'] );
-                       if ( $timestamp ) {
-                               $timestamp = $dbw->timestamp( $timestamp );
-                       } else {
-                               $timestamp = null;
+                       if ( $title ) {
+                               $timestamp = Revision::getTimestampFromId( $title, $params['torevid'] );
+                               if ( $timestamp ) {
+                                       $timestamp = $dbw->timestamp( $timestamp );
+                               } else {
+                                       $timestamp = null;
+                               }
                        }
                } elseif ( isset( $params['newerthanrevid'] ) ) {
                        if ( $params['entirewatchlist'] || $pageSet->getGoodTitleCount() > 1 ) {
                                $this->dieUsage( 'newerthanrevid may only be used with a single page', 'multpages' );
                        }
                        $title = reset( $pageSet->getGoodTitles() );
-                       $revid = $title->getNextRevisionID( $params['newerthanrevid'] );
-                       if ( $revid ) {
-                               $timestamp = $dbw->timestamp( Revision::getTimestampFromId( $title, $revid ) );
-                       } else {
-                               $timestamp = null;
+                       if ( $title ) {
+                               $revid = $title->getNextRevisionID( $params['newerthanrevid'] );
+                               if ( $revid ) {
+                                       $timestamp = $dbw->timestamp( Revision::getTimestampFromId( $title, $revid ) );
+                               } else {
+                                       $timestamp = null;
+                               }
                        }
                }
 
@@ -124,46 +128,48 @@ class ApiSetNotificationTimestamp extends ApiBase {
                                $result[] = $rev;
                        }
 
-                       // Now process the valid titles
-                       $lb = new LinkBatch( $pageSet->getTitles() );
-                       $dbw->update( 'watchlist', array( 'wl_notificationtimestamp' => $timestamp ),
-                               array( 'wl_user' => $user->getID(), $lb->constructSet( 'wl', $dbw ) ),
-                               __METHOD__
-                       );
-
-                       // Query the results of our update
-                       $timestamps = array();
-                       $res = $dbw->select(
-                               'watchlist',
-                               array( 'wl_namespace', 'wl_title', 'wl_notificationtimestamp' ),
-                               array( 'wl_user' => $user->getID(), $lb->constructSet( 'wl', $dbw ) ),
-                               __METHOD__
-                       );
-                       foreach ( $res as $row ) {
-                               $timestamps[$row->wl_namespace][$row->wl_title] = $row->wl_notificationtimestamp;
-                       }
+                       if ( $pageSet->getTitles() ) {
+                               // Now process the valid titles
+                               $lb = new LinkBatch( $pageSet->getTitles() );
+                               $dbw->update( 'watchlist', array( 'wl_notificationtimestamp' => $timestamp ),
+                                       array( 'wl_user' => $user->getID(), $lb->constructSet( 'wl', $dbw ) ),
+                                       __METHOD__
+                               );
 
-                       // Now, put the valid titles into the result
-                       /** @var $title Title */
-                       foreach ( $pageSet->getTitles() as $title ) {
-                               $ns = $title->getNamespace();
-                               $dbkey = $title->getDBkey();
-                               $r = array(
-                                       'ns' => intval( $ns ),
-                                       'title' => $title->getPrefixedText(),
+                               // Query the results of our update
+                               $timestamps = array();
+                               $res = $dbw->select(
+                                       'watchlist',
+                                       array( 'wl_namespace', 'wl_title', 'wl_notificationtimestamp' ),
+                                       array( 'wl_user' => $user->getID(), $lb->constructSet( 'wl', $dbw ) ),
+                                       __METHOD__
                                );
-                               if ( !$title->exists() ) {
-                                       $r['missing'] = '';
+                               foreach ( $res as $row ) {
+                                       $timestamps[$row->wl_namespace][$row->wl_title] = $row->wl_notificationtimestamp;
                                }
-                               if ( isset( $timestamps[$ns] ) && array_key_exists( $dbkey, $timestamps[$ns] ) ) {
-                                       $r['notificationtimestamp'] = '';
-                                       if ( $timestamps[$ns][$dbkey] !== null ) {
-                                               $r['notificationtimestamp'] = wfTimestamp( TS_ISO_8601, $timestamps[$ns][$dbkey] );
+
+                               // Now, put the valid titles into the result
+                               /** @var $title Title */
+                               foreach ( $pageSet->getTitles() as $title ) {
+                                       $ns = $title->getNamespace();
+                                       $dbkey = $title->getDBkey();
+                                       $r = array(
+                                               'ns' => intval( $ns ),
+                                               'title' => $title->getPrefixedText(),
+                                       );
+                                       if ( !$title->exists() ) {
+                                               $r['missing'] = '';
                                        }
-                               } else {
-                                       $r['notwatched'] = '';
+                                       if ( isset( $timestamps[$ns] ) && array_key_exists( $dbkey, $timestamps[$ns] ) ) {
+                                               $r['notificationtimestamp'] = '';
+                                               if ( $timestamps[$ns][$dbkey] !== null ) {
+                                                       $r['notificationtimestamp'] = wfTimestamp( TS_ISO_8601, $timestamps[$ns][$dbkey] );
+                                               }
+                                       } else {
+                                               $r['notwatched'] = '';
+                                       }
+                                       $result[] = $r;
                                }
-                               $result[] = $r;
                        }
 
                        $apiResult->setIndexedTagName( $result, 'page' );
index 1153fd2..ec36cfb 100644 (file)
@@ -1155,11 +1155,11 @@ class LCStoreDB implements LCStore {
        private $currentLang;
        private $writesDone = false;
 
-       /**
-        * @var DatabaseBase
-        */
+       /** @var DatabaseBase */
        private $dbw;
-       private $batch;
+       /** @var Array */
+       private $batch = array();
+
        private $readOnly = false;
 
        public function get( $code, $key ) {
@@ -1180,26 +1180,11 @@ class LCStoreDB implements LCStore {
        public function startWrite( $code ) {
                if ( $this->readOnly ) {
                        return;
-               }
-
-               if ( !$code ) {
+               } elseif ( !$code ) {
                        throw new MWException( __METHOD__ . ": Invalid language \"$code\"" );
                }
 
                $this->dbw = wfGetDB( DB_MASTER );
-               try {
-                       $this->dbw->begin( __METHOD__ );
-                       $this->dbw->delete( 'l10n_cache', array( 'lc_lang' => $code ), __METHOD__ );
-               } catch ( DBQueryError $e ) {
-                       if ( $this->dbw->wasReadOnlyError() ) {
-                               $this->readOnly = true;
-                               $this->dbw->rollback( __METHOD__ );
-
-                               return;
-                       } else {
-                               throw $e;
-                       }
-               }
 
                $this->currentLang = $code;
                $this->batch = array();
@@ -1208,37 +1193,42 @@ class LCStoreDB implements LCStore {
        public function finishWrite() {
                if ( $this->readOnly ) {
                        return;
+               } elseif ( is_null( $this->currentLang ) ) {
+                       throw new MWException( __CLASS__ . ': must call startWrite() before finishWrite()' );
                }
 
-               if ( $this->batch ) {
-                       $this->dbw->insert( 'l10n_cache', $this->batch, __METHOD__ );
+               $this->dbw->begin( __METHOD__ );
+               try {
+                       $this->dbw->delete( 'l10n_cache',
+                               array( 'lc_lang' => $this->currentLang ), __METHOD__ );
+                       foreach ( array_chunk( $this->batch, 500 ) as $rows ) {
+                               $this->dbw->insert( 'l10n_cache', $rows, __METHOD__ );
+                       }
+                       $this->writesDone = true;
+               } catch ( DBQueryError $e ) {
+                       if ( $this->dbw->wasReadOnlyError() ) {
+                               $this->readOnly = true; // just avoid site down time
+                       } else {
+                               throw $e;
+                       }
                }
-
                $this->dbw->commit( __METHOD__ );
+
                $this->currentLang = null;
-               $this->dbw = null;
                $this->batch = array();
-               $this->writesDone = true;
        }
 
        public function set( $key, $value ) {
                if ( $this->readOnly ) {
                        return;
-               }
-
-               if ( is_null( $this->currentLang ) ) {
-                       throw new MWException( __CLASS__ . ': must call startWrite() before calling set()' );
+               } elseif ( is_null( $this->currentLang ) ) {
+                       throw new MWException( __CLASS__ . ': must call startWrite() before set()' );
                }
 
                $this->batch[] = array(
                        'lc_lang' => $this->currentLang,
                        'lc_key' => $key,
                        'lc_value' => $this->dbw->encodeBlob( serialize( $value ) ) );
-
-               if ( count( $this->batch ) >= 100 ) {
-                       $this->dbw->insert( 'l10n_cache', $this->batch, __METHOD__ );
-                       $this->batch = array();
-               }
        }
 }
 
index 699ab71..7d8fbe9 100644 (file)
@@ -1022,7 +1022,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                $this->mLastQuery = $sql;
                if ( !$this->mDoneWrites && $this->isWriteQuery( $sql ) ) {
                        # Set a flag indicating that writes have been done
-                       wfDebug( __METHOD__ . ": Writes done: $sql\n" );
+                       wfDebug( __METHOD__ . ': Writes done: ' . DatabaseBase::generalizeSQL( $sql ) . "\n" );
                        $this->mDoneWrites = true;
                }
 
index 8d2b949..837a731 100644 (file)
@@ -258,6 +258,14 @@ abstract class ImageGalleryBase extends ContextSource {
                array_unshift( $this->mImages, array( &$title, $html, $alt, $link, $handlerOpts ) );
        }
 
+       /**
+        * Returns the list of images this gallery contains
+        * @return array
+        */
+       public function getImages() {
+               return $this->mImages;
+       }
+
        /**
         * isEmpty() returns true if the gallery contains no images
         * @return bool
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 06b561b..677af4f 100644 (file)
@@ -1230,6 +1230,8 @@ class WebInstallerOptions extends WebInstallerPage {
                        'wgEmailAuthentication', 'wgMainCacheType', '_MemCachedServers',
                        'wgUseInstantCommons' ) );
 
+               $retVal = true;
+
                if ( !array_key_exists( $this->getVar( '_RightsProfile' ), $this->parent->rightsProfiles )
                ) {
                        reset( $this->parent->rightsProfiles );
@@ -1240,8 +1242,7 @@ class WebInstallerOptions extends WebInstallerPage {
                if ( $code == 'cc-choose' ) {
                        if ( !$this->getVar( '_CCDone' ) ) {
                                $this->parent->showError( 'config-cc-not-chosen' );
-
-                               return false;
+                               $retVal = false;
                        }
                } elseif ( array_key_exists( $code, $this->parent->licenses ) ) {
                        // Messages:
@@ -1265,7 +1266,8 @@ class WebInstallerOptions extends WebInstallerPage {
                $extsAvailable = $this->parent->findExtensions();
                $extsToInstall = array();
                foreach ( $extsAvailable as $ext ) {
-                       if ( $this->parent->request->getCheck( 'config_ext-' . $ext ) ) {
+                       $this->parent->setVarsFromRequest( array( "ext-$ext" ) );
+                       if ( $this->getVar( "ext-$ext" ) ) {
                                $extsToInstall[] = $ext;
                        }
                }
@@ -1275,8 +1277,7 @@ class WebInstallerOptions extends WebInstallerPage {
                        $memcServers = explode( "\n", $this->getVar( '_MemCachedServers' ) );
                        if ( !$memcServers ) {
                                $this->parent->showError( 'config-memcache-needservers' );
-
-                               return false;
+                               $retVal = false;
                        }
 
                        foreach ( $memcServers as $server ) {
@@ -1286,21 +1287,18 @@ class WebInstallerOptions extends WebInstallerPage {
                                                && ( gethostbyname( $memcParts[0] ) == $memcParts[0] ) )
                                ) {
                                        $this->parent->showError( 'config-memcache-badip', $memcParts[0] );
-
-                                       return false;
+                                       $retVal = false;
                                } elseif ( !isset( $memcParts[1] ) ) {
                                        $this->parent->showError( 'config-memcache-noport', $memcParts[0] );
-
-                                       return false;
+                                       $retVal = false;
                                } elseif ( $memcParts[1] < 1 || $memcParts[1] > 65535 ) {
                                        $this->parent->showError( 'config-memcache-badport', 1, 65535 );
-
-                                       return false;
+                                       $retVal = false;
                                }
                        }
                }
 
-               return true;
+               return $retVal;
        }
 
 }
index ca6b37d..f4b75db 100644 (file)
        "config-ns-invalid": "Direizh eo an esaouenn anv \"<nowiki>$1</nowiki>\" spisaet.\nMerkit un esaouenn anv disheñvel evit ar raktres.",
        "config-ns-conflict": "Tabut zo etre an esaouenn anv spisaet \"<nowiki>$1</nowiki>\" hag un esaouenn anv dre ziouer eus MediaWiki.\nSpisait un anv raktres esaouenn anv all.",
        "config-admin-box": "Kont merour",
-       "config-admin-name": "Hoc'h anv-implijer :",
+       "config-admin-name": "Hoc'h anv implijer :",
        "config-admin-password": "Ger-tremen :",
        "config-admin-password-confirm": "Adskrivañ ar ger-tremen :",
        "config-admin-help": "Merkit hoc'h anv implijer amañ, da skouer \"Yann Vlog\".\nHemañ eo an anv a implijot evit kevreañ d'ar wiki-mañ.",
index a4cb9eb..5a7d148 100644 (file)
@@ -7,8 +7,11 @@
        "config-desc": "Ka polokalamu hoʻonoho no MekiaWiki",
        "config-title": "Ka hoʻonoho MekiaWiki $1",
        "config-information": "ʻIke",
+       "config-localsettings-upgrade": "Ua hōʻike ʻia kekahi waihona <code>LocalSettings.php</code>.\nNo ka hoʻopuka hou ʻana o kēia hoʻonohona, e ʻoluʻolu, e kikokiko i ka helu o <code>$wgUpgradeKey</code> i loko o ka pahu i lalo.\nAia ia ma <code>LocalSettings.php</code>.",
+       "config-localsettings-cli-upgrade": "Ua hōʻike ʻia kekahi waihona <code>LocalSettings.php</code>.\nNo ka hoʻopuka hou ʻana o kēia hoʻonohona, e hana iā <code>update.php</code> ke ʻoluʻolu.",
        "config-localsettings-key": "Pihi hoʻopuka hou:",
        "config-localsettings-badkey": "Hewa ka pihi.",
+       "config-upgrade-key-missing": "Loaʻa he hoʻonohona mai mua o MīkiaWiki mai mua.\nNo ka hoʻopuka hou ʻana o kēia hoʻonohona, e ʻoluʻolu, e kau i kēia laina lalo ma lalo o kāu <code>LocalSettings.php</code>:\n\n$1",
        "config-your-language": "Kāu ʻōlelo:",
        "config-your-language-help": "E koho i kekahi ʻōlelo no ka hoʻohana ʻana ma loko o ka hana hoʻonohona.",
        "config-wiki-language": "ʻŌlelo Wiki:",
index c04765b..53010fb 100644 (file)
@@ -99,6 +99,7 @@
        "config-db-name": "Databasnamn:",
        "config-db-name-help": "Välj ett namn som identifierar din wiki.\nDet bör inte innehålla mellanslag.\n\nOm du använder ett delat webbhotell kan de antingen ge dig ett särskilt databasnamn att använda eller så kan de låta dig skapa en databas via kontrollpanelen.",
        "config-db-name-oracle": "Databasschema:",
+       "config-db-account-oracle-warn": "Det finns tre stödda scenarier för installationen av Oracle som en backend-databas:\n\nOm du vill skapa ett databaskonto som en del av installationen, ange ett konto med SYSDBA-roll som databaskonto under installationen och ange de önskade autentiseringsuppgifterna för kontot med webb-åtkomst, annars kan du antingen skapa ett konto med webb-åtkomst manuellt och ange enbart detta konto (om den har behörighet att skapa schema-objekt) eller ange två olika konton, en med create-behörighet och en begränsad för webb-åtkomst.\n\nSkript för att skapa ett konto med de korrekta behörigheterna kan hittas i \"maintenance/oracle/\"-katalogen för denna installation. Tänk på att användningen av ett begränsat konto inaktiverar all underhållsmöjlighet med standardkontot.",
        "config-db-install-account": "Användarkonto för installation",
        "config-db-username": "Databas-användarnamn:",
        "config-db-password": "Databas-lösenord:",
        "config-db-schema-help": "Det här schemat blir oftast bra.\nÄndra det endast om du vet att du behöver.",
        "config-pg-test-error": "Kan inte ansluta till databas '''$1''': $2",
        "config-sqlite-dir": "SQLite data-katalog:",
+       "config-sqlite-dir-help": "SQLite lagrar all data i en enda fil.\n\nDen katalog du anger måste vara skrivbar av webbservern under installationen.\n\nDet bör <strong>inte</strong> vara tillgänglig via webben; Det är därför vi inte lägger den där dina PHP-filer är.\n\nInstallationsprogrammet kommer att skriva en <code>.htaccess</code>-fil tillsammans med den, men om det misslyckas kan någon få tillgång till den råa databasen.\nVlken innehåller rå användardata (e-postadresser, hashade lösenord) samt borttagna revideringar och annan begränsad data på wiki.\n\nÖverväga att lägga databasen någon helt annanstans, till exempel i <code>/var/lib/mediawiki/yourwiki</code>.",
+       "config-oracle-def-ts": "Standardtabellutrymme (tablespace):",
+       "config-oracle-temp-ts": "Tillfälligt tabellutrymme (tablespace):",
        "config-type-mysql": "MySQL (eller kompatibelt)",
        "config-type-mssql": "Microsoft SQL Server",
        "config-support-info": "MediaWiki stöder följande databassystem:\n\n$1\n\nOm du inte ser det databassystem som du försöker använda nedanstående, följ då instruktionerna länkade ovan för aktivera stöd för det.",
        "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] är det primära målet för MediaWiki och det stöds bäst. MediaWiki fungerar även med [{{int:version-db-mariadb-url}} MariaDB] och [{{int:version-db-percona-url}} Percona Server], som är kompatibla med MySQL. ([http://www.php.net/manual/en/mysqli.installation.php Hur man kompilerar PHP med stöd för MySQL])",
+       "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] är ett populärt databassystem med öppen källkod som ett alternativ till MySQL. Det kan finnas några mindre kvarvarande buggar, och den rekommenderas inte för användning i en produktionsmiljö. ([http://www.php.net/manual/en/pgsql.installation.php Hur man kompilerar PHP med PostgreSQL stöd])",
+       "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] är en lättviktsdatabassystem med väldigt bra stöd. ([http://www.php.net/manual/en/pdo.installation.php Hur man kompilerar PHP med SQLite stöd], använder PDO)",
+       "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] är en kommersiellt databas för företag. ([http://www.php.net/manual/en/oci8.installation.php Hur man kompilerar PHP med OCI8 stöd])",
+       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] är en kommersiellt databas för företag för Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php Hur man kompilerar PHP med SQLSRV stöd])",
        "config-header-mysql": "MySQL-inställningar",
        "config-header-postgres": "PostgreSQL-inställningar",
        "config-header-sqlite": "SQLite-inställningar",
        "config-missing-db-name": "Du måste ange ett värde för \"{{int:config-db-name}}\".",
        "config-missing-db-host": "Du måste ange ett värde för \"{{int:config-db-host}}\".",
        "config-missing-db-server-oracle": "Du måste ange ett värde för \"{{int:config-db-host-oracle}}\".",
+       "config-invalid-db-server-oracle": "Ogiltig databas-TNS \"$1\".\nAnvända antingen \"TNS Name\" eller en \"Easy Connect\"-sträng ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Oracles namngivningsmetoder]).",
        "config-invalid-db-name": "\"$1\" är ett ogiltigt databasnamn.\nAnvänd bara ASCII-bokstäver (a-z, A-Z), siffror (0-9), understreck (_) och bindestreck (-).",
        "config-invalid-db-prefix": "\"$1\" är ett ogiltigt databasprefix.\nAnvänd bara ASCII-bokstäver (a-z, A-Z), siffror (0-9), understreck (_) och bindestreck (-).",
        "config-connection-error": "$1.\n\nKontrollera värd, användarnamn och lösenord och försök igen.",
        "config-postgres-old": "PostgreSQL $1 eller senare krävs, du har $2.",
        "config-mssql-old": "Microsoft SQL-server $1 eller senare krävs. Du har $2.",
        "config-sqlite-name-help": "Välja ett namn som identifierar din wiki.\nAnvänd inte mellanslag eller bindestreck.\nDetta kommer att användas för SQLite-data filnamnet.",
+       "config-sqlite-parent-unwritable-group": "Kan inte skapa datakatalogen <code><nowiki>$1</nowiki></code>, då den överordnade katalogen <code><nowiki>$2</nowiki></code> inte är skrivbar för webbservern.\n\nInstallationen har avgjort vilken användare din webbserver körs som.\nGör <code><nowiki>$3</nowiki></code>-katalogen skrivbar för den för att fortsätta.\nPå ett Unix/Linux system gör:\n\n<pre>cd $2\nmkdir $3\nchgrp $4 $3\nchmod g+w $3</pre>",
+       "config-sqlite-parent-unwritable-nogroup": "Kan inte skapa datakatalogen <code><nowiki>$1</nowiki></code>, då den överordnade katalogen <code><nowiki>$2</nowiki></code> inte är skrivbar för webbservern.\n\nInstallationen kunde inte avgöra vilken användare din webbserver körs som.\nGör <code><nowiki>$3</nowiki></code>-katalogen skrivbar för den (och andra!) för att fortsätta.\nPå ett Unix/Linux system gör:\n\n<pre>cd $2\nmkdir $3\nchmod g+w $3</pre>",
        "config-sqlite-mkdir-error": "Fel uppstod när datakatalogen \"$1\" skulle skapas.\nKontrollera platsen och försök igen.",
+       "config-sqlite-dir-unwritable": "Kunde inte skriva till katalogen \"$1\".\nÄndra dess behörighet så att webbservern kan skriva till den och försök igen.",
+       "config-sqlite-connection-error": "$1.\n\nKontrollera datakatalogen och databasnamnet nedan och försök igen.",
        "config-sqlite-readonly": "Filen <code>$1</code> är inte skrivbar.",
        "config-sqlite-cant-create-db": "Kunde inte skapa databasfilen <code>$1</code>.",
        "config-sqlite-fts3-downgrade": "PHP saknar stöd för FTS3, nedgraderar tabeller",
        "config-upgrade-done": "Uppgraderingen slutfördes.\n\nDu kan nu [$1 börja använda din wiki].\n\nOm du vill förnya din <code>LocalSettings.php</code>-fil, klicka på knappen nedan.\nDetta '''rekommenderas inte''' om du har problem med din wiki.",
        "config-upgrade-done-no-regenerate": "Uppgraderingen slutfördes.\n\nDu kan nu [$1 börja använda din wiki].",
        "config-regenerate": "Återskapa LocalSettings.php →",
+       "config-show-table-status": "<code>SHOW TABLE STATUS</code>-förfrågan misslyckades!",
        "config-unknown-collation": "'''Varning:''' Databasen använder en okänd sortering.",
        "config-db-web-account": "Databaskonto för webbaccess",
        "config-db-web-help": "Välj det användarnamn och lösenord som webbservern använder för att ansluta till databasservern, under ordinarie drift av wikin.",
        "config-mysql-utf8": "UTF-8",
        "config-mysql-charset-help": "I '''binärt läge''' lagrar MediaWiki UTF-8 text till databasen i binära fält.\nDetta är mer effektivt än MySQLs UTF-8-läge, och den tillåter dig att använda den fulla uppsättningen av Unicode-tecken.\n\nI '''UTF-8-läge''' vet MySQL vilket teckenuppsättning din data är i och kan presentera och konvertera den på ett lämpligt sätt, men den tillåter dig inte att lagra tecken över [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
        "config-mssql-auth": "Autentiseringstyp:",
+       "config-mssql-install-auth": "Välj autentiseringstypen som kommer att användas för att ansluta till databasen under installationsprocessen.\nOm du väljer \"{{int:config-mssql-windowsauth}}\", kommer autentiseringsuppgifterna för den användare webbservern körs som att användas.",
+       "config-mssql-web-auth": "Välj autentiseringstypen som kommer att användas för att ansluta till databasen under ordinarie drift av wikin.\nOm du väljer \"{{int:config-mssql-windowsauth}}\", kommer autentiseringsuppgifterna för den användare webbservern körs som att användas.",
        "config-mssql-sqlauth": "SQL Server-autentisering",
        "config-mssql-windowsauth": "Windows-autentisering",
        "config-site-name": "Namnet på wikin:",
        "config-ns-site-name": "Samma som wikinamnet: $1",
        "config-ns-other": "Annan (specificera)",
        "config-ns-other-default": "MinWiki",
+       "config-project-namespace-help": "Per Wikipedias exempel håller många wikis sina policy-sidor separata från innehållssidorna i en \"'''projektnamnrymd'''\".\nAlla sidtitlar i denna namnrymd startar med ett visst prefix vilket du specificerar här.\nVanligtvis kan detta namn härledas från namnet på wikin, men den får inte innehålla interpunktionstecken som exempelvis \"#\" eller \":\".",
        "config-ns-invalid": "Den angivna namnrymden \"<nowiki>$1</nowiki>\" är ogiltig.\nAnge en annan namnrymd för projektet.",
        "config-ns-conflict": "Den angivna namnrymden \"<nowiki>$1</nowiki>\" står i konflikt med en standardnamnrymd för MediaWiki.\nAnge en annan namnrymd för projektet.",
        "config-admin-box": "Administratörskonto",
        "config-admin-error-password": "Internt fel lösenordet för administratören \"<nowiki>$1</nowiki>\" ställdes in: <pre>$2</pre>",
        "config-admin-error-bademail": "Du har angivit en ogiltig e-postadress.",
        "config-subscribe": "Prenumerera på [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce e-postlistan för kungörelser av nya versioner].",
+       "config-subscribe-help": "Detta är en e-postlista med låg volym vilken används för meddelanden om nya versionssläpp, inklusive viktiga säkerhetsmeddelanden.\nDu bör prenumerera på den och uppdatera din MediaWiki-installation när nya versioner kommer ut.",
+       "config-subscribe-noemail": "Du försökte att prenumerera på e-postlistan för versionssläppsmeddelanden utan att tillhandahålla en e-postadress.\nAnge en e-postadress om du vill prenumerera på e-postlistan.",
        "config-almost-done": "Du är nästan färdig!\nDu kan nu hoppa över återstående konfigurationer och installera wikin direkt.",
        "config-optional-continue": "Ställ fler frågor till mig.",
        "config-optional-skip": "Jag är redan uttråkad, bara installera wiki.",
+       "config-profile": "Profil för användarrättigheter:",
        "config-profile-wiki": "Öppen wiki",
        "config-profile-no-anon": "Kontoskapande krävs",
        "config-profile-fishbowl": "Endast auktoriserade redigerare",
        "config-profile-private": "Privat wiki",
+       "config-profile-help": "Wikis fungerar bäst när du låter som många människor som möjligt redigera dem.\nI MediaWiki, är det lätt att granska de senaste ändringarna och återställa alla skador som utförs av naiva eller illvilliga användare.\n\nMen många har funnit MediaWiki användbart i en mängd olika roller, och ibland är det inte lätt att övertyga alla fördelarna med wiki-sättet.\nSå valet är ditt.\n\nModellen <strong>{{int:config-profil-wiki}}</strong> tillåter vem som helst att redigera, utan att ens behöva logga in.\nEn wiki med <strong>{{int:config-profil-ingen-anon}}</strong> ger extra ansvarskänsla, men kan avskräcka tillfälliga bidragsgivare.\n\nScenariot <strong>{{int:config-profil-fishbowl}}</strong> tillåter godkända användare att redigera, men allmänheten kan se sidorna, inklusive historik.\nA <strong>{{int:config-profil-privat}}</strong> tillåter endast godkända användare att se sidor, samma grupp får även redigera.\n\nMer komplexa användarrättighetskonfigurationer finns tillgängliga efter installationen, se [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights avsnittet i manualen].",
        "config-license": "Upphovsrätt och licens:",
        "config-license-none": "Ingen licenssidfot",
        "config-license-cc-by-sa": "Creative Commons Erkännande-DelaLika",
        "config-license-gfdl": "GNU Free Documentation License 1.3 eller senare",
        "config-license-pd": "Public Domain",
        "config-license-cc-choose": "Välj en anpassad Creative Commons-licens",
+       "config-license-help": "Många publika wikis släpper alla bidrag under en  [http://freedomdefined.org/Definition fri licens].\nDetta bidrar till en känsla av gemensamt ägandeskap och uppmuntrar till långsiktiga bidrag.\nDet är i allmänhet inte nödvändigt för en privat eller företagswiki.\n\nOm du vill kunna använda text från Wikipedia, och du vill att Wikipedia ska kunna acceptera text kopierad ifrån din wiki bör du välja <strong>Creative Commons Erkännande-DelaLika</strong>.\n\nWikipedia använde tidigare  GNU Free Documentation License.\nGFDL är en giltig licens, men svår att förstå.\nDet är även svårt att återanvända innehåll som licensierats under GFDL.",
        "config-email-settings": "E-postinställningar",
        "config-enable-email": "Aktivera utgående e-post",
+       "config-enable-email-help": "Om du vill att e-post ska fungera behöver,[http://www.php.net/manual/en/mail.configuration.php PHPs e-postinställningar] vara konfigurerad på rätt sätt.\nOm du inte vill ha några e-postfunktioner, kan du inaktivera dem här.",
        "config-email-user": "Aktivera e-post mellan användare",
        "config-email-user-help": "Tillåta alla användare att skicka e-post till varandra om de har aktiverat det i sina inställningar.",
        "config-email-usertalk": "Aktivera meddelanden för användardiskussionssidor",
+       "config-email-usertalk-help": "Tillåt användare att få meddelanden när användardiskussionssidor ändras, om de har aktiverat detta i sina inställningar.",
        "config-email-watchlist": "Aktivera meddelanden för bevakningslistan",
+       "config-email-watchlist-help": "Tillåt användare att få meddelanden när deras bevakade sidor ändras, om de har aktiverat detta i sina inställningar.",
        "config-email-auth": "Aktivera autentisering via e-post",
+       "config-email-auth-help": "Om detta alternativ är aktiverat, måste användare bekräfta sin e-postadress via en länk som skickas till dem när de ställer in eller ändra den.\nEndast autentiserade e-postadresser kan ta emot e-post från andra användare eller ändra aviserings-e-post.\nDet här alternativet är <strong>rekommenderat</strong> för offentliga wikis på grund av potentiellt missbruk av e-postfunktionerna.",
+       "config-email-sender": "Returadress för e-post:",
+       "config-email-sender-help": "Ange den e-postadressen som ska användas som returadress på utgående e-post.\nDetta är dit studsar skickas.\nMånga mailservrar kräver att minst domännamndelen är giltigt.",
        "config-upload-settings": "Bild- och filuppladdningar",
        "config-upload-enable": "Aktivera filuppladdningar",
+       "config-upload-help": "Filuppladdning utsätter potentiellt din server för säkerhetsrisker.\nFör mer information, Läs  [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security säkerhetsavsnittet] i manualen.\n\nFör att aktivera filuppladdning, ändra läget för <code>images</code>-underkatalogen under rotkatalogen för MediaWiki så att webbservern kan skriva till den.\nAktivera sedan detta alternativ.",
        "config-upload-deleted": "Katalog för raderade filer:",
+       "config-upload-deleted-help": "Välja en katalog i vilken raderade filer arkiveras.\nHelst bör denna inte vara tillgängliga från webben.",
        "config-logo": "Logotyp-URL:",
        "config-logo-help": "MediaWikis standardutseende innehåller ett mellanrum för en 135x160 bildpunkter stor logotyp ovanför sidofältsmenyn.\nLadda upp en bild med lämplig storlek och ange webbadressen här.\n\nDu kan använda <code>$wgStylePath</code> eller <code>$wgScriptPath</code> om din logotyp är relativ till dessa sökvägar.\n\nOm du inte vill ha en logotyp kan du lämna detta fält tomt.",
        "config-instantcommons": "Aktivera Instant Commons",
+       "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] är en funktion som gör det möjligt för wikis att använda bilder, ljud och andra media som finns på [//commons.wikimedia.org/ Wikimedia Commons]-webbplatsen.\nFör att göra detta, kräver MediaWiki tillgång till Internet.\n\nFör mer information om denna funktion, inklusive instruktioner om hur man ställer in den för andra wikis än Wikimedia Commons, se [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos manualen].",
        "config-cc-error": "Creative Commons-licens-väljaren gav inget resultat.\nAnge licensnamnet manuellt.",
        "config-cc-again": "Välj igen...",
        "config-cc-not-chosen": "Välj vilken Creative Commons-licens du vill ha och klicka på \"gå vidare\".",
        "config-advanced-settings": "Avancerad konfiguration",
+       "config-cache-options": "Inställningar för cachelagring av objekt:",
+       "config-cache-help": "Cachelagring av objekt används för att förbättra hastigheten på MediaWiki genom att cachelagra data som används ofta.\nMedelstora till stora webbplatser är starkt uppmuntrade att aktivera detta, och små webbplatser kommer även att se fördelar.",
+       "config-cache-none": "Ingen cachelagring (ingen funktionalitet tas bort, men hastighet kan påverkas på större wiki-webbplatser)",
+       "config-cache-accel": "Cachelagring av PHP-objekt (APC, XCache eller WinCache)",
+       "config-cache-memcached": "Använda Memcached (kräver ytterligare inställningar och konfiguration)",
+       "config-memcached-servers": "Memcached-servrar:",
+       "config-memcached-help": "Lista över IP-adresser som ska användas för Memcached.\nBör ange en per rad och specificera den port som ska användas. Till exempel:\n 127.0.0.1:11211\n 192.168.1.25:1234",
+       "config-memcache-needservers": "Du valde Memcached som din cachelagringstyp men angav inte några servrar.",
+       "config-memcache-badip": "Du har angett en ogiltig IP-adress för Memcached: $1.",
+       "config-memcache-noport": "Du angav inte en port som ska användas för Memcached-server: $1.\nOm du inte vet porten, är standard 11211.",
+       "config-memcache-badport": "Memcached-portnummer bör vara mellan $1 och $2.",
        "config-extensions": "Tillägg",
+       "config-extensions-help": "Tilläggen ovan upptäcktes i din <code>./extensions</code>-katalog.\n\nDe kan kräva ytterligare konfiguration, men du kan aktivera dem nu.",
        "config-install-alreadydone": "''' Varning:''' Du verkar redan ha installerat MediaWiki och försöker installera det igen.\nVänligen fortsätt till nästa sida.",
        "config-install-begin": "Genom att trycka på \"{{int:config-continue}}\", påbörjar du installationen av MediaWiki.\nOm du fortfarande vill göra ändringar tryck på \"{{int:config-back}}\".",
        "config-install-step-done": "klar",
        "config-install-pg-plpgsql": "Kontroll för språket PL/pgSQL",
        "config-pg-no-plpgsql": "Du måste installera språket PL/pgSQL i databasen $1",
        "config-pg-no-create-privs": "Det konto som du har angett för installationen har inte tillräcklig behörighet för att skapa ett konto.",
+       "config-pg-not-in-role": "Det konto du angav för webbanvändaren finns redan.\nKontot du angav för installationen är inte en superanvändare (superuser) och är inte en medlem av webbanvändarens roll, därför kan den inte skapa objekt som ägs av webbanvändaren.\n\nMediaWiki kräver för närvarande att tabellerna ägs av webbanvändaren. Vänligen ange ett annat webbkontonamn, eller klicka \"tillbaka\" och ange en installationsanvändare med passande behörigheter.",
        "config-install-user": "Skapar databasanvändare",
        "config-install-user-alreadyexists": "Användaren \"$1\" finns redan",
        "config-install-user-create-failed": "Misslyckades att skapa användare \"$1\": $2",
        "config-install-tables-failed": "'''Fel:''' Skapandet av tabell misslyckades med följande fel: $1",
        "config-install-interwiki": "Lägger till standardtabell för interwiki",
        "config-install-interwiki-list": "Kunde inte läsa filen <code>interwiki.list</code>.",
+       "config-install-interwiki-exists": "<strong>Varning:</strong> Interwiki-tabellen verkar redan innehålla poster.\nHoppar över standardlistan.",
        "config-install-stats": "Initierar statistik",
        "config-install-keys": "Genererar hemliga nycklar",
        "config-insecure-keys": "'''Varning:''' {{PLURAL:$2|En säkerhetsnyckel|Säkerhetsnycklar}} ($1) som generades under installationen är inte helt {{PLURAL:$2|säker|säkra}} . Överväg att ändra {{PLURAL:$2|den|dem}} manuellt.",
index f04fd5d..47749b7 100644 (file)
@@ -8,6 +8,7 @@
        "config-desc": "דער אינסטאלירער פאר מעדיעוויקי",
        "config-title": "מעדיעוויקי $1 אינסטאלירונג",
        "config-information": "אינפֿארמאציע",
+       "config-localsettings-badkey": "דעם שליסל וואס איר האט אײַנגעגעבן איז פאלש.",
        "config-session-error": "פֿעלער ביים אנהייבן סעסיע:$1",
        "config-your-language": "אײַער שפראך:",
        "config-your-language-help": "קלויבט א שפראך צו ניצן ביים אינסטאלירונג פראצעס.",
@@ -29,6 +30,9 @@
        "config-page-releasenotes": "ווערסיע־הערות",
        "config-page-copying": "קאפיע",
        "config-page-upgradedoc": "ראנג־העכערן",
+       "config-page-existingwiki": "עקזיסטירנדע וויקי",
+       "config-help-restart": "צי ווילט איר אפראמען די גארע געשפייכלערטע דאטן וואס איר האט אײַנגעגעבן און ווידער אנהייבן דעם אינסטאלאציע־פראצעס?",
+       "config-restart": "יא, ווידעראמאל אנהייבן",
        "config-env-php": "PHP $1 איז אינצטאלירט.",
        "config-apc": "[http://www.php.net/apc APC] איז אינסטאלירט",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] איז אינסטאלירט",
index 10277e6..6b10ae4 100644 (file)
@@ -40,6 +40,7 @@ class CSSMin {
        const EMBED_SIZE_LIMIT = 24576;
        const URL_REGEX = 'url\(\s*[\'"]?(?P<file>[^\?\)\'"]*?)(?P<query>\?[^\)\'"]*?|)[\'"]?\s*\)';
        const EMBED_REGEX = '\/\*\s*\@embed\s*\*\/';
+       const COMMENT_REGEX = '\/\*.*?\*\/';
 
        /* Protected Static Members */
 
@@ -203,13 +204,31 @@ class CSSMin {
                        $remote = substr( $remote, 0, -1 );
                }
 
+               // Replace all comments by a placeholder so they will not interfere
+               // with the remapping
+               // Warning: This will also catch on anything looking like the start of
+               // a comment between quotation marks (e.g. "foo /* bar").
+               $comments = array();
+               $placeholder = uniqid( '', true );
+
+               $pattern = '/(?!' . CSSMin::EMBED_REGEX . ')(' . CSSMin::COMMENT_REGEX . ')/s';
+
+               $source = preg_replace_callback(
+                       $pattern,
+                       function ( $match ) use ( &$comments, $placeholder ) {
+                               $comments[] = $match[ 0 ];
+                               return $placeholder . ( count( $comments ) - 1 ) . 'x';
+                       },
+                       $source
+               );
+
                // Note: This will not correctly handle cases where ';', '{' or '}'
                // appears in the rule itself, e.g. in a quoted string. You are advised
                // not to use such characters in file names. We also match start/end of
                // the string to be consistent in edge-cases ('@import url(…)').
                $pattern = '/(?:^|[;{])\K[^;{}]*' . CSSMin::URL_REGEX . '[^;}]*(?=[;}]|$)/';
 
-               return preg_replace_callback(
+               $source = preg_replace_callback(
                        $pattern,
                        function ( $matchOuter ) use ( $local, $remote, $embedData ) {
                                $rule = $matchOuter[0];
@@ -262,6 +281,15 @@ class CSSMin {
                                        return $ruleWithRemapped;
                                }
                        }, $source );
+
+               // Re-insert comments
+               $pattern = '/' . $placeholder . '(\d+)x/';
+               $source = preg_replace_callback( $pattern, function( $match ) use ( &$comments ) {
+                       return $comments[ $match[1] ];
+               }, $source );
+
+               return $source;
+
        }
 
        /**
index 44be178..76dab03 100644 (file)
@@ -355,6 +355,19 @@ class BitmapHandler extends ImageHandler {
                        }
                } elseif ( $params['mimeType'] == 'image/x-xcf' ) {
                        $animation_post = array( '-layers', 'merge' );
+                       wfSuppressWarnings();
+                       $xcfMeta = unserialize( $image->getMetadata() );
+                       wfRestoreWarnings();
+                       if ( $xcfMeta
+                               && isset( $xcfMeta['colorType'] )
+                               && $xcfMeta['colorType'] === 'greyscale-alpha'
+                               && version_compare( $this->getMagickVersion(), "6.8.9-3" ) < 0
+                       ) {
+                               // bug 66323 - Greyscale images not rendered properly.
+                               // So only take the "red" channel.
+                               $channelOnly = array( '-channel', 'R', '-separate' );
+                               $animation_post = array_merge( $animation_post, $channelOnly );
+                       }
                }
 
                // Use one thread only, to avoid deadlock bugs on OOM
index 41e6f03..658112f 100644 (file)
@@ -61,7 +61,28 @@ class XCFHandler extends BitmapHandler {
         * @return array
         */
        function getImageSize( $image, $filename ) {
-               return self::getXCFMetaData( $filename );
+               $header = self::getXCFMetaData( $filename );
+               if ( !$header ) {
+                       return false;
+               }
+
+               # Forge a return array containing metadata information just like getimagesize()
+               # See PHP documentation at: http://www.php.net/getimagesize
+               $metadata = array();
+               $metadata[0] = $header['width'];
+               $metadata[1] = $header['height'];
+               $metadata[2] = null; # IMAGETYPE constant, none exist for XCF.
+               $metadata[3] = sprintf(
+                       'height="%s" width="%s"', $header['height'], $header['width']
+               );
+               $metadata['mime'] = 'image/x-xcf';
+               $metadata['channels'] = null;
+               $metadata['bits'] = 8; # Always 8-bits per color
+
+               assert( '7 == count($metadata); ' .
+                       '# return array must contains 7 elements just like getimagesize() return' );
+
+               return $metadata;
        }
 
        /**
@@ -124,23 +145,61 @@ class XCFHandler extends BitmapHandler {
                wfDebug( __METHOD__ .
                        ": canvas size of '$filename' is {$header['width']} x {$header['height']} px\n" );
 
-               # Forge a return array containing metadata information just like getimagesize()
-               # See PHP documentation at: http://www.php.net/getimagesize
+               return $header;
+       }
+
+       /**
+        * Store the channel type
+        *
+        * Greyscale files need different command line options.
+        *
+        * @param File $file The image object, or false if there isn't one.
+        *   Warning, FSFile::getPropsFromPath might pass an (object)array() instead (!)
+        * @param string $path The filename
+        * @return string
+        */
+       public function getMetadata( $file, $filename ) {
+               $header = self::getXCFMetadata( $filename );
                $metadata = array();
-               $metadata[0] = $header['width'];
-               $metadata[1] = $header['height'];
-               $metadata[2] = null; # IMAGETYPE constant, none exist for XCF.
-               $metadata[3] = sprintf(
-                       'height="%s" width="%s"', $header['height'], $header['width']
-               );
-               $metadata['mime'] = 'image/x-xcf';
-               $metadata['channels'] = null;
-               $metadata['bits'] = 8; # Always 8-bits per color
+               if ( $header ) {
+                       // Try to be consistent with the names used by PNG files.
+                       // Unclear from base media type if it has an alpha layer,
+                       // so just assume that it does since it "potentially" could.
+                       switch( $header['base_type'] ) {
+                       case 0:
+                               $metadata['colorType'] = 'truecolour-alpha';
+                               break;
+                       case 1:
+                               $metadata['colorType'] = 'greyscale-alpha';
+                               break;
+                       case 2:
+                               $metadata['colorType'] = 'index-coloured';
+                               break;
+                       default:
+                               $metadata['colorType'] = 'unknown';
 
-               assert( '7 == count($metadata); ' .
-                       '# return array must contains 7 elements just like getimagesize() return' );
+                       }
+               } else {
+                       // Marker to prevent repeated attempted extraction
+                       $metadata['error'] = true;
+               }
+               return serialize( $metadata );
+       }
 
-               return $metadata;
+       /**
+        * Should we refresh the metadata
+        *
+        * @param File $file The file object for the file in question
+        * @param string $metadata Serialized metadata
+        * @return bool One of the self::METADATA_(BAD|GOOD|COMPATIBLE) constants
+        */
+       public function isMetadataValid( $file, $metadata ) {
+               if ( !$metadata ) {
+                       // Old metadata when we just put an empty string in there
+                       return self::METADATA_BAD;
+               } else {
+                       return self::METADATA_GOOD;
+               }
        }
 
        /**
index 60db202..89ca241 100644 (file)
@@ -296,7 +296,7 @@ class ImagePage extends Article {
        }
 
        protected function openShowImage() {
-               global $wgImageLimits, $wgEnableUploads, $wgSend404Code;
+               global $wgEnableUploads, $wgSend404Code;
 
                $this->loadFile();
                $out = $this->getContext()->getOutput();
@@ -341,49 +341,17 @@ class ImagePage extends Article {
 
                        if ( $this->displayImg->allowInlineDisplay() ) {
                                # image
-
                                # "Download high res version" link below the image
                                # $msgsize = wfMessage( 'file-info-size', $width_orig, $height_orig,
                                #   Linker::formatSize( $this->displayImg->getSize() ), $mime )->escaped();
                                # We'll show a thumbnail of this image
-                               if ( $width > $maxWidth || $height > $maxHeight ) {
-                                       # Calculate the thumbnail size.
-                                       # First case, the limiting factor is the width, not the height.
-                                       /** @todo // FIXME: Possible division by 0. bug 36911 */
-                                       if ( $width / $height >= $maxWidth / $maxHeight ) {
-                                               /** @todo // FIXME: Possible division by 0. bug 36911 */
-                                               $height = round( $height * $maxWidth / $width );
-                                               $width = $maxWidth;
-                                               # Note that $height <= $maxHeight now.
-                                       } else {
-                                               /** @todo // FIXME: Possible division by 0. bug 36911 */
-                                               $newwidth = floor( $width * $maxHeight / $height );
-                                               /** @todo // FIXME: Possible division by 0. bug 36911 */
-                                               $height = round( $height * $newwidth / $width );
-                                               $width = $newwidth;
-                                               # Note that $height <= $maxHeight now, but might not be identical
-                                               # because of rounding.
-                                       }
+                               if ( $width > $maxWidth || $height > $maxHeight || $this->displayImg->isVectorized() ) {
+                                       list( $width, $height ) = $this->getDisplayWidthHeight(
+                                               $maxWidth, $maxHeight, $width, $height
+                                       );
                                        $linktext = wfMessage( 'show-big-image' )->escaped();
-                                       if ( $this->displayImg->getRepo()->canTransformVia404() ) {
-                                               $thumbSizes = $wgImageLimits;
-                                               // Also include the full sized resolution in the list, so
-                                               // that users know they can get it. This will link to the
-                                               // original file asset if mustRender() === false. In the case
-                                               // that we mustRender, some users have indicated that they would
-                                               // find it useful to have the full size image in the rendered
-                                               // image format.
-                                               $thumbSizes[] = array( $width_orig, $height_orig );
-                                       } else {
-                                               # Creating thumb links triggers thumbnail generation.
-                                               # Just generate the thumb for the current users prefs.
-                                               $thumbSizes = array( $this->getImageLimitsFromOption( $user, 'thumbsize' ) );
-                                               if ( !$this->displayImg->mustRender() ) {
-                                                       // We can safely include a link to the "full-size" preview,
-                                                       // without actually rendering.
-                                                       $thumbSizes[] = array( $width_orig, $height_orig );
-                                               }
-                                       }
+
+                                       $thumbSizes = $this->getThumbSizes( $width, $height, $width_orig, $height_orig );
                                        # Generate thumbnails or thumbnail links as needed...
                                        $otherSizes = array();
                                        foreach ( $thumbSizes as $size ) {
@@ -393,7 +361,10 @@ class ImagePage extends Article {
                                                // the current thumbnail's size ($width/$height)
                                                // since that is added to the message separately, so
                                                // it can be denoted as the current size being shown.
-                                               if ( $size[0] <= $width_orig && $size[1] <= $height_orig
+                                               // Vectorized images are "infinitely" big, so all thumb
+                                               // sizes are shown.
+                                               if ( ( ($size[0] <= $width_orig && $size[1] <= $height_orig)
+                                                               || $this->displayImg->isVectorized() )
                                                        && $size[0] != $width && $size[1] != $height
                                                ) {
                                                        $sizeLink = $this->makeSizeLink( $params, $size[0], $size[1] );
@@ -403,6 +374,7 @@ class ImagePage extends Article {
                                                }
                                        }
                                        $otherSizes = array_unique( $otherSizes );
+
                                        $msgsmall = '';
                                        $sizeLinkBigImagePreview = $this->makeSizeLink( $params, $width, $height );
                                        if ( $sizeLinkBigImagePreview ) {
@@ -421,9 +393,6 @@ class ImagePage extends Article {
                                        # Some sort of audio file that doesn't have dimensions
                                        # Don't output a no hi res message for such a file
                                        $msgsmall = '';
-                               } elseif ( $this->displayImg->isVectorized() ) {
-                                       # For vectorized images, full size is just the frame size
-                                       $msgsmall = '';
                                } else {
                                        # Image is small enough to show full size on image page
                                        $msgsmall = wfMessage( 'file-nohires' )->parse();
@@ -1084,6 +1053,81 @@ EOT
                );
                return $langSelectLine;
        }
+
+       /**
+        * Get the width and height to display image at.
+        *
+        * @note This method assumes that it is only called if one
+        *  of the dimensions are bigger than the max, or if the
+        *  image is vectorized.
+        *
+        * @param $maxWidth integer Max width to display at
+        * @param $maxHeight integer Max height to display at
+        * @param $width integer Actual width of the image
+        * @param $height integer Actual height of the image
+        * @throws MWException
+        * @return Array (width, height)
+        */
+       protected function getDisplayWidthHeight( $maxWidth, $maxHeight, $width, $height ) {
+               if ( !$maxWidth || !$maxHeight ) {
+                       // should never happen
+                       throw new MWException( 'Using a choice from $wgImageLimits that is 0x0' );
+               }
+
+               if ( !$width || !$height ) {
+                       return array( 0, 0 );
+               }
+
+               # Calculate the thumbnail size.
+               if ( $width <= $maxWidth && $height <= $maxHeight ) {
+                       // Vectorized image, do nothing.
+               } elseif ( $width / $height >= $maxWidth / $maxHeight ) {
+                       # The limiting factor is the width, not the height.
+                       $height = round( $height * $maxWidth / $width );
+                       $width = $maxWidth;
+                       # Note that $height <= $maxHeight now.
+               } else {
+                       $newwidth = floor( $width * $maxHeight / $height );
+                       $height = round( $height * $newwidth / $width );
+                       $width = $newwidth;
+                       # Note that $height <= $maxHeight now, but might not be identical
+                       # because of rounding.
+               }
+               return array( $width, $height );
+       }
+
+       /**
+        * Get alternative thumbnail sizes.
+        *
+        * @note This will only list several alternatives if thumbnails are rendered on 404
+        * @param $origWidth Actual width of image
+        * @param $origHeight Actual height of image
+        * @return Array An array of [width, height] pairs.
+        */
+       protected function getThumbSizes( $origWidth, $origHeight ) {
+               global $wgImageLimits;
+               if ( $this->displayImg->getRepo()->canTransformVia404() ) {
+                       $thumbSizes = $wgImageLimits;
+                       // Also include the full sized resolution in the list, so
+                       // that users know they can get it. This will link to the
+                       // original file asset if mustRender() === false. In the case
+                       // that we mustRender, some users have indicated that they would
+                       // find it useful to have the full size image in the rendered
+                       // image format.
+                       $thumbSizes[] = array( $origWidth, $origHeight );
+               } else {
+                       # Creating thumb links triggers thumbnail generation.
+                       # Just generate the thumb for the current users prefs.
+                       $thumbSizes = array( $this->getImageLimitsFromOption( $this->getContext()->getUser(), 'thumbsize' ) );
+                       if ( !$this->displayImg->mustRender() ) {
+                               // We can safely include a link to the "full-size" preview,
+                               // without actually rendering.
+                               $thumbSizes[] = array( $origWidth, $origHeight );
+                       }
+               }
+               return $thumbSizes;
+       }
+
 }
 
 /**
index 8546348..648667b 100644 (file)
 class LinkHolderArray {
        var $internals = array(), $interwikis = array();
        var $size = 0;
+
+       /**
+        * @var Parser
+        */
        var $parent;
        protected $tempIdOffset;
 
+       /**
+        * @param Parser $parent
+        */
        function __construct( $parent ) {
                $this->parent = $parent;
        }
@@ -144,6 +151,10 @@ class LinkHolderArray {
                return $texts;
        }
 
+       /**
+        * @param array $m
+        * @return string
+        */
        protected function mergeForeignCallback( $m ) {
                return $m[1] . ( $m[2] + $this->tempIdOffset ) . $m[3];
        }
@@ -297,6 +308,7 @@ class LinkHolderArray {
                $queries = array();
                foreach ( $this->internals as $ns => $entries ) {
                        foreach ( $entries as $entry ) {
+                               /** @var Title $title */
                                $title = $entry['title'];
                                $pdbk = $entry['pdbk'];
 
@@ -329,7 +341,7 @@ class LinkHolderArray {
                                $where[] = $dbr->makeList(
                                        array(
                                                'page_namespace' => $ns,
-                                               'page_title' => $pages,
+                                               'page_title' => array_unique( $pages ),
                                        ),
                                        LIST_AND
                                );
@@ -490,6 +502,7 @@ class LinkHolderArray {
                // Then add variants of links to link batch
                $parentTitle = $this->parent->getTitle();
                foreach ( $titlesAttrs as $i => $attrs ) {
+                       /** @var Title $title */
                        list( $index, $title ) = $attrs;
                        $ns = $title->getNamespace();
                        $text = $title->getText();
index eb7bd1b..89ed60d 100644 (file)
@@ -5369,6 +5369,7 @@ class Parser {
                        $ig->add( $title, $label, $alt, $link, $handlerOptions );
                }
                $html = $ig->toHTML();
+               wfRunHooks( 'AfterParserFetchFileAndTitle', array( $this, $ig, &$html ) );
                wfProfileOut( __METHOD__ );
                return $html;
        }
index c42c089..8dc4b3c 100644 (file)
@@ -92,12 +92,16 @@ class ActiveUsersPager extends UsersPager {
        function getQueryInfo() {
                $dbr = $this->getDatabase();
 
+               $activeUserSeconds = $this->getConfig()->get( 'ActiveUserDays' ) * 86400;
+               $timestamp = $dbr->timestamp( wfTimestamp( TS_UNIX ) - $activeUserSeconds );
                $conds = array(
                        'qcc_type' => 'activeusers',
                        'qcc_namespace' => NS_USER,
                        'user_name = qcc_title',
                        'rc_user_text = qcc_title',
-                       'rc_type != ' . $dbr->addQuotes( RC_EXTERNAL ) // Don't count wikidata.
+                       'rc_type != ' . $dbr->addQuotes( RC_EXTERNAL ), // Don't count wikidata.
+                       'rc_log_type IS NULL OR rc_log_type != ' . $dbr->addQuotes( 'newusers' ),
+                       'rc_timestamp >= ' . $dbr->addQuotes( $timestamp ),
                );
                if ( $this->requestedUser != '' ) {
                        $conds[] = 'qcc_title >= ' . $dbr->addQuotes( $this->requestedUser );
index a1e8d2b..05bbb5a 100644 (file)
@@ -270,30 +270,32 @@ class SpecialContributions extends IncludableSpecialPage {
                        // Show a note if the user is blocked and display the last block log entry.
                        // Do not expose the autoblocks, since that may lead to a leak of accounts' IPs,
                        // and also this will display a totally irrelevant log entry as a current block.
-                       $block = Block::newFromTarget( $userObj, $userObj );
-                       if ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) {
-                               if ( $block->getType() == Block::TYPE_RANGE ) {
-                                       $nt = MWNamespace::getCanonicalName( NS_USER ) . ':' . $block->getTarget();
-                               }
+                       if ( !$this->including() ) {
+                               $block = Block::newFromTarget( $userObj, $userObj );
+                               if ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) {
+                                       if ( $block->getType() == Block::TYPE_RANGE ) {
+                                               $nt = MWNamespace::getCanonicalName( NS_USER ) . ':' . $block->getTarget();
+                                       }
 
-                               $out = $this->getOutput(); // showLogExtract() wants first parameter by reference
-                               LogEventsList::showLogExtract(
-                                       $out,
-                                       'block',
-                                       $nt,
-                                       '',
-                                       array(
-                                               'lim' => 1,
-                                               'showIfEmpty' => false,
-                                               'msgKey' => array(
-                                                       $userObj->isAnon() ?
-                                                               'sp-contributions-blocked-notice-anon' :
-                                                               'sp-contributions-blocked-notice',
-                                                       $userObj->getName() # Support GENDER in 'sp-contributions-blocked-notice'
-                                               ),
-                                               'offset' => '' # don't use WebRequest parameter offset
-                                       )
-                               );
+                                       $out = $this->getOutput(); // showLogExtract() wants first parameter by reference
+                                       LogEventsList::showLogExtract(
+                                               $out,
+                                               'block',
+                                               $nt,
+                                               '',
+                                               array(
+                                                       'lim' => 1,
+                                                       'showIfEmpty' => false,
+                                                       'msgKey' => array(
+                                                               $userObj->isAnon() ?
+                                                                       'sp-contributions-blocked-notice-anon' :
+                                                                       'sp-contributions-blocked-notice',
+                                                               $userObj->getName() # Support GENDER in 'sp-contributions-blocked-notice'
+                                                       ),
+                                                       'offset' => '' # don't use WebRequest parameter offset
+                                               )
+                                       );
+                               }
                        }
                }
 
index b88e196..aec1257 100644 (file)
@@ -132,7 +132,11 @@ class LinkSearchPage extends QueryPage {
                                'target',
                                'target',
                                50,
-                               $target
+                               $target,
+                               array(
+                                       // URLs are always ltr
+                                       'dir' => 'ltr',
+                               )
                        ) . "\n";
 
                if ( !$wgMiserMode ) {
index e22b42a..05f0b2b 100644 (file)
@@ -30,6 +30,7 @@
  */
 class SpecialPagesWithProp extends QueryPage {
        private $propName = null;
+       private $existingPropNames = null;
 
        function __construct( $name = 'PagesWithProp' ) {
                parent::__construct( $name );
@@ -47,18 +48,7 @@ class SpecialPagesWithProp extends QueryPage {
                $request = $this->getRequest();
                $propname = $request->getVal( 'propname', $par );
 
-               $dbr = wfGetDB( DB_SLAVE );
-               $res = $dbr->select(
-                       'page_props',
-                       'pp_propname',
-                       '',
-                       __METHOD__,
-                       array( 'DISTINCT', 'ORDER BY' => 'pp_propname' )
-               );
-               $propnames = array();
-               foreach ( $res as $row ) {
-                       $propnames[$row->pp_propname] = $row->pp_propname;
-               }
+               $propnames = $this->getExistingPropNames();
 
                $form = new HTMLForm( array(
                        'propname' => array(
@@ -88,6 +78,18 @@ class SpecialPagesWithProp extends QueryPage {
                parent::execute( $data['propname'] );
        }
 
+       /**
+        * Return an array of subpages beginning with $search that this special page will accept.
+        *
+        * @param string $search Prefix to search for
+        * @param integer $limit Maximum number of results to return
+        * @return string[] Matching subpages
+        */
+       public function prefixSearchSubpages( $search, $limit = 10 ) {
+               $subpages = array_keys( $this->getExistingPropNames() );
+               return self::prefixSearchArray( $search, $limit, $subpages );
+       }
+
        /**
         * Disable RSS/Atom feeds
         * @return bool
@@ -150,6 +152,25 @@ class SpecialPagesWithProp extends QueryPage {
                return $ret;
        }
 
+       public function getExistingPropNames() {
+               if ( $this->existingPropNames === null ) {
+                       $dbr = wfGetDB( DB_SLAVE );
+                       $res = $dbr->select(
+                               'page_props',
+                               'pp_propname',
+                               '',
+                               __METHOD__,
+                               array( 'DISTINCT', 'ORDER BY' => 'pp_propname' )
+                       );
+                       $propnames = array();
+                       foreach ( $res as $row ) {
+                               $propnames[$row->pp_propname] = $row->pp_propname;
+                       }
+                       $this->existingPropNames = $propnames;
+               }
+               return $this->existingPropNames;
+       }
+
        protected function getGroupName() {
                return 'pages';
        }
index 4f8cabd..448dd2d 100644 (file)
@@ -114,7 +114,7 @@ class SpecialSearch extends SpecialPage {
         */
        public function load() {
                $request = $this->getRequest();
-               list( $this->limit, $this->offset ) = $request->getLimitOffset( 20 );
+               list( $this->limit, $this->offset ) = $request->getLimitOffset( 20, '' );
                $this->mPrefix = $request->getVal( 'prefix', '' );
 
                $user = $this->getUser();
@@ -207,8 +207,7 @@ class SpecialSearch extends SpecialPage {
 
                $profile = new ProfileSection( __METHOD__ );
                $search = $this->getSearchEngine();
-               // Request an extra result to determine whether a "next page" link is useful
-               $search->setLimitOffset( $this->limit + 1, $this->offset );
+               $search->setLimitOffset( $this->limit, $this->offset );
                $search->setNamespaces( $this->namespaces );
                $this->saveNamespaces();
                $search->prefix = $this->mPrefix;
@@ -352,7 +351,7 @@ class SpecialSearch extends SpecialPage {
                                        $this->offset,
                                        $this->limit,
                                        $this->powerSearchOptions() + array( 'search' => $term ),
-                                       max( $titleMatchesNum, $textMatchesNum ) <= $this->limit
+                                       $this->limit + $this->offset >= $totalRes
                                );
                        }
                        wfRunHooks( 'SpecialSearchResults', array( $term, &$titleMatches, &$textMatches ) );
@@ -512,7 +511,11 @@ class SpecialSearch extends SpecialPage {
 
                if ( $user->isLoggedIn() &&
                        !is_null( $request->getVal( 'nsRemember' ) ) &&
-                       $user->matchEditToken( $request->getVal( 'nsToken' ) )
+                       $user->matchEditToken(
+                               $request->getVal( 'nsToken' ),
+                               'searchnamespace',
+                               $request
+                       )
                ) {
                        // Reset namespace preferences: namespaces are not searched
                        // when they're not mentioned in the URL parameters.
@@ -547,11 +550,9 @@ class SpecialSearch extends SpecialPage {
 
                $out = "<ul class='mw-search-results'>\n";
                $result = $matches->next();
-               $count = 0;
-               while ( $result && $count < $this->limit ) {
+               while ( $result ) {
                        $out .= $this->showHit( $result, $terms );
                        $result = $matches->next();
-                       $count++;
                }
                $out .= "</ul>\n";
 
@@ -936,7 +937,13 @@ class SpecialSearch extends SpecialPage {
                $remember = '';
                $user = $this->getUser();
                if ( $user->isLoggedIn() ) {
-                       $remember .= Html::hidden( 'nsToken', $user->getEditToken() ) .
+                       $remember .= Html::hidden(
+                               'nsToken',
+                               $user->getEditToken(
+                                       'searchnamespace',
+                                       $this->getRequest()
+                               )
+                       ) .
                        Xml::checkLabel(
                                wfMessage( 'powersearch-remember' )->text(),
                                'nsRemember',
index 78390b6..eb9dfe6 100644 (file)
        "cannotdelete-title": "Seiten „$1“ kå néd gléschd wern",
        "badtitle": "koa gitiga Titl",
        "badtitletext": "Da Titl voh da ogfordatn Seitn is ned gitig, laar oda a ungitiga Sprochlink vonam andan Wiki.",
-       "perfcached": "Dé fóigernden Daaten staummern aus'm Cache und san méglicherweis nimmer aktuö. Maximoi {{PLURAL:$1|oah Ergebnis is|$1 Ergebniss san}} im Cache vafiagbor.",
-       "perfcachedts": "Dé Daaten staummern aus 'm Cache. Da Zeidbunkt voh da létzden Aktualisiarung: $1. Maximoi {{PLURAL:$4|oah Ergebnis is|$4 Ergebniss san}} im Cache vafiagbor.",
+       "perfcached": "De foigandn Datn stamma ausm Cache und san meglichaweis neama aktuäi. Maximoi {{PLURAL:$1|oa Eagebnis is|$1 Ergebniss san}} im Cache vafigboar.",
+       "perfcachedts": "De Datn stamma ausm Cache. Da Zeidpunkt vo da lezzdn Aktualisiarung: $2, $3 Uah. Maximoi {{PLURAL:$4|oa Ergebnis is|$4 Ergebniss san}} im Cache vafigboar.",
        "querypage-no-updates": "'''Dé Aktualisiarungsfunkzión voh derer Seiten is derzeid deaktivird. Dé Daaten wern bis auf Weiders néd daneiert.'''",
        "viewsource": "Quejtext ozoagn",
        "viewsource-title": "Quöntext voh da Seiten $1 auhschauh",
        "resetpass-submit-loggedin": "Posswort ändern",
        "resetpass-submit-cancel": "Obbrechen",
        "passwordreset": "Passwoat zrucksetzn",
-       "passwordreset-username": "Benutzernåm:",
+       "passwordreset-username": "Nutzanama:",
        "bold_sample": "Fetta Text",
        "bold_tip": "Fetta Text",
        "italic_sample": "Kursiva Text",
index 98a9201..362db53 100644 (file)
        "expand_templates_remove_nowiki": "Падаўляць тэгі <nowiki> у выніку",
        "expand_templates_generate_xml": "Паказаць дрэва аналізу XML",
        "expand_templates_generate_rawhtml": "Паказаць HTML",
-       "expand_templates_preview": "Папярэдні прагляд"
+       "expand_templates_preview": "Папярэдні прагляд",
+       "pagelanguage": "Выбар мовы старонкі",
+       "pagelang-name": "Старонка",
+       "pagelang-language": "Мова"
 }
index cd03e56..d60d860 100644 (file)
        "http-invalid-url": "Памылковы URL: $1",
        "http-invalid-scheme": "Не падтрымліваюцца адрасы са схемай \"$1\"",
        "http-request-error": "Не атрымалася выканаць HTTP-запыт з-за невядомай памылкі",
-       "http-read-error": "Памылка чытання HTTP",
+       "http-read-error": "Памылка чытання HTTP.",
        "http-timed-out": "Мінуў час чакання HTTP-запыту.",
        "http-curl-error": "Памылка звароту да URL: $1",
        "http-bad-status": "Пад час апрацоўкі HTTP-запыту выяўлена праблема: $1 $2",
        "trackingcategories-msg": "Катэгорыя для асочвання",
        "trackingcategories-name": "Назва паведамлення",
        "trackingcategories-desc": "Крытэрый уключэння ў катэгорыю",
+       "noindex-category-desc": "Старонка не індэксуецца пошукавымі робатамі, таму што на ёй ёсць магічнае слова <code><nowiki>__NOINDEX__</nowiki></code> і яна знаходзіцца ў прасторы назваў, дзе гэты сцяг дазволены.",
+       "index-category-desc": "На старонцы ёсць магічнае слова <code><nowiki>__INDEX__</nowiki></code> (і старонка знаходзіцца ў прасторы назваў, дзе гэты сцяг дазволены), таму яна індэксуецца пошукавымі робатамі у выпадках, калі гэтага звычайна не адбываецца.",
+       "post-expand-template-inclusion-category-desc": "Пасля разгортвання ўсіх шаблонаў памер старонкі перавышае <code>$wgMaxArticleSize</code>, таму некаторыя шаблоны пакінуты неразгорнутымі.",
+       "post-expand-template-argument-category-desc": "Пасля разгортвання аргумента шаблона (штосьці ў патройных фігурных дужках, напрыклад, <code>{{{Foo}}}</code>), памер старонкі перавышае <code>$wgMaxArticleSize</code>.",
+       "expensive-parserfunction-category-desc": "Занадта шмат працаёмкіх зваротаў да функцый парсера (напрыклад, <code>#ifexist</code>) уключана ў старонку. Гл. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+       "broken-file-category-desc": "Катэгорыя дадаецца, калі старонка ўтрымлівае няспраўную спасылку на файл (спасылку на ўкладзены файл, якога няма).",
        "trackingcategories-nodesc": "Апісанне адсутнічае.",
        "trackingcategories-disabled": "Катэгорыя адключана",
        "mailnologin": "Няма эл.адрасу",
        "spambot_username": "Чыстка спаму MediaWiki",
        "spam_reverting": "Вяртаемся да апошняй версіі без спасылак на $1",
        "spam_blanking": "Усе версіі ўтрымлівалі спасылкі на $1, чысцім",
+       "simpleantispam-label": "Праверка анты-спаму.\n<strong>НЕ</strong> ўпісвайце тут нічога!",
        "pageinfo-title": "Інфармацыя для \"$1\"",
+       "pageinfo-not-current": "Выбачайце, немагчыма даць гэтыя звесткі для старых версій.",
        "pageinfo-header-basic": "Агульныя звесткі",
        "pageinfo-header-edits": "Гісторыя правак",
        "pageinfo-header-restrictions": "Ахова старонкі",
        "pageinfo-authors": "Агульная колькасць розных аўтараў",
        "pageinfo-recent-edits": "Колькасць нядаўніх правак (за апошнія $1)",
        "pageinfo-recent-authors": "Колькасць аўтараў за апошні час",
+       "pageinfo-magic-words": "{{PLURAL:$1|1=Магічнае слова|Магічныя словы}} ($1)",
        "pageinfo-hidden-categories": "Схаван{{PLURAL:$1|ая катэгорыя|ыя катэгорыі}} ($1)",
        "pageinfo-templates": "Выкарыстаны {{PLURAL:$1|шаблон|шаблоны}} ($1)",
        "pageinfo-transclusions": "Выкарыстаны на {{PLURAL:$1|старонцы|старонках}} ($1)",
        "file-info-size-pages": "$1 × $2 пікселяў, памер файла: $3, MIME-тип: $4, $5 {{PLURAL:$5|старонка|старонкі|старонак}}",
        "file-nohires": "Без версіі ў лепшым разрозненні.",
        "svg-long-desc": "файл SVG, намінальна $1 × $2 кропак, аб'ём файла: $3",
+       "svg-long-desc-animated": "Анімаваны файл SVG, намінальна $1 × $2 кропак, аб'ём файла: $3",
        "svg-long-error": "Няспраўны файл SVG: $1",
        "show-big-image": "Арыгінальны файл",
        "show-big-image-preview": "Памер пры папярэднім праглядзе: $1.",
        "version-software-version": "Версія",
        "version-entrypoints-header-entrypoint": "Кропка ўваходу",
        "version-entrypoints-header-url": "URL",
+       "redirect": "Перасылка да файла, ID удзельніка, старонкі ці версіі",
        "redirect-legend": "Перасылка да файла ці старонкі",
+       "redirect-summary": "Гэта адмысловая старонка перасылае да файла (з назвы файла), на старонку (з ідэнтыфікатара версіі ці старонкі), ці на старонку ўдзельніка (калі дадзены лічбавы ID удзельніка). Ужыванне: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ці [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Перайсці",
        "redirect-lookup": "Шукаць:",
        "redirect-value": "Значэнне:",
        "htmlform-reset": "Адкаціць змяненні",
        "htmlform-selectorother-other": "Рознае",
        "htmlform-no": "Не",
+       "htmlform-yes": "Так",
        "htmlform-cloner-create": "Дадаць яшчэ",
        "htmlform-cloner-delete": "Сцерці",
        "htmlform-cloner-required": "Неабходна хаця б адно значэнне.",
        "api-error-overwrite": "Замена існуючага файла не дапускаецца.",
        "api-error-stashfailed": "Унутраная памылка: сервер не змог захаваць часовы файл.",
        "api-error-publishfailed": "Унутраная памылка: сервер не змог апублікаваць тымчасовы файл.",
+       "api-error-stasherror": "У час укладання файла ў сховішча здарылася памылка.",
        "api-error-timeout": "Сервер не адказаў у чаканы тэрмін.",
        "api-error-unclassified": "Узнікла невядомая памылка",
        "api-error-unknown-code": "Невядомая памылка: «$1».",
        "duration-decades": "$1 {{PLURAL:$1|дзесяцігоддзе|дзесяцігоддзі|дзесяцігоддзяў}}",
        "duration-centuries": "$1 {{PLURAL:$1|стагоддзе|стагоддзі|стагоддзяў}}",
        "duration-millennia": "$1 {{PLURAL:$1|тысячагоддзе|тысячагоддзі|тысячагоддзяў}}",
+       "rotate-comment": "Выява павернута на $1 {{PLURAL:$1|градус|градусы|градусаў}} па гадзіннікавай стрэлцы",
+       "limitreport-title": "Звесткі прафілявання парсера:",
        "limitreport-cputime-value": "$1 {{PLURAL:$1|секунда|секунды|секундаў}}",
        "limitreport-walltime-value": "$1 {{PLURAL:$1|секунда|секунды|секундаў}}",
        "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|байт|байты|байтаў}}",
        "expand_templates_intro": "Гэта адмысловая старонка бярэ тэкст і разгортвае ў ім усе шаблоны рэкурсіўна.\nТаксама разгортвае падтрыманыя функцыі парсера кшталту\n<code><nowiki>{{</nowiki>#language:…}}</code> і зменныя віду\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nФактычна, яна разгортвае ў пэўнай ступені ўсё ў двайных фігурных дужках.",
        "expand_templates_input": "Уваходны тэкст:",
        "expand_templates_output": "Вынік",
+       "expand_templates_xml_output": "Выніковы XML",
+       "expand_templates_html_output": "Выніковы зыходны код HTML",
+       "expand_templates_ok": "Добра",
        "expand_templates_remove_comments": "Сцерці каментарыі",
+       "expand_templates_remove_nowiki": "Прыбраць тэгі <nowiki> з выніку",
+       "expand_templates_generate_xml": "Паказаць дрэва сінтаксічнага аналізу XML",
        "expand_templates_generate_rawhtml": "Паказаць зыходны код HTML",
        "expand_templates_preview": "Перадпаказ",
+       "pagelanguage": "Выбар мовы старонкі",
        "pagelang-name": "Старонка",
        "pagelang-language": "Мова",
        "pagelang-use-default": "Прадвызначаная мова",
        "pagelang-select-lang": "Выберыце мову",
        "right-pagelang": "Змяняць мову старонкі",
        "action-pagelang": "змяняць мову старонкі",
+       "log-name-pagelang": "Журнал змянення мовы",
        "log-description-pagelang": "Гэта журнал змяненняў у мовах старонкі.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змяніў|змяніла}} мову старонкі $3 з $4 на $5."
 }
index 2c731aa..0198e96 100644 (file)
        "wrongpasswordempty": "Ger-tremen ebet. Lakait unan mar plij.",
        "passwordtooshort": "{{PLURAL:$1|1 arouezenn|$1 arouezenn}} hir a rank bezañ ar gerioù-tremen da nebeutañ.",
        "password-name-match": "Rankout a ra ho ker-tremen bezañ disheñvel diouzh hoc'h anv implijer.",
-       "password-login-forbidden": "Berzet eo ober gant an anv-implijer hag ar ger-tremen-mañ.",
+       "password-login-forbidden": "Berzet eo ober gant an anv implijer hag ar ger-tremen-mañ.",
        "mailmypassword": "Adderaouekaat ar ger-tremen",
        "passwordremindertitle": "Ho ker-tremen berrbad nevez evit {{SITENAME}}",
        "passwordremindertext": "Unan bennak (c'hwi moarvat gant ar chomlec'h IP $1)\nen deus goulennet ma vo kaset dezhañ ur ger-tremen nevez evit {{SITENAME}} ($4).\nSavet ez eus bet ur ger-tremen da c'hortoz evit an implijer \"$2\" hag a zo \"$3\".\nMard eo se a felle deoc'h ober e vo ret deoc'h kevreañ ha cheñch ho ker-tremen bremañ. Didalvez e vo ho ker ker-tremen da c'hortoz a-benn {{PLURAL:$5|un devezh|$5 devezh}}\n\nMard eo bet graet ar goulenn gant unan bennak all, pe m'hoc'h eus soñj eus ho ker-tremen bremañ ha\nma ne fell ket deoc'h cheñch anezhañ ken, e c'hallit leuskel ar postel-mañ a-gostez ha kenderc'hel d'ober gant ho ker-tremen kozh.",
        "duplicate-defaultsort": "Diwallit : Frikañ a ra an alc'hwez dre ziouer \"$2\" an hini a oa a-raok \"$1\".",
        "version": "Stumm",
        "version-extensions": "Astennoù staliet",
-       "version-skins": "Gwiskadurioù",
+       "version-skins": "Gwiskadurioù staliet",
        "version-specialpages": "Pajennoù dibar",
        "version-parserhooks": "Galvoù dielfennañ",
        "version-variables": "Argemmennoù",
        "expand_templates_remove_nowiki": "Diverkañ a ra ar balizennoù <nowiki> en disoc'h",
        "expand_templates_generate_xml": "Gwelet ar gwezennadur XML",
        "expand_templates_generate_rawhtml": "Diskouez an HTML kriz",
-       "expand_templates_preview": "Rakwelet"
+       "expand_templates_preview": "Rakwelet",
+       "pagelang-name": "Pajenn",
+       "pagelang-language": "Yezh",
+       "pagelang-use-default": "Implijout ar yezh dre ziouer",
+       "pagelang-select-lang": "Dibab ar yezh",
+       "right-pagelang": "Cheñch yezh ar bajenn"
 }
index 926aad5..0c30961 100644 (file)
        "pageinfo-lasttime": "Datum posljednje izmjene",
        "pageinfo-edits": "Ukupan broj izmjena",
        "pageinfo-authors": "Ukupan broj različitih autora",
-       "pageinfo-recent-edits": "Broj nedavnih izmjena (u poslednjih $1)",
+       "pageinfo-recent-edits": "Broj nedavnih izmjena (u posljednjih $1)",
        "pageinfo-recent-authors": "Broj nedavnih različitih autora",
        "pageinfo-magic-words": "{{PLURAL:$1|Čarobna riječ|Čarobne riječi}} ($1)",
        "pageinfo-hidden-categories": "{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}} ($1)",
index f87c2e2..0e298a5 100644 (file)
        "expand_templates_remove_nowiki": "Potlačit ve výsledku značky <nowiki>",
        "expand_templates_generate_xml": "Zobrazit syntaktický strom v XML",
        "expand_templates_generate_rawhtml": "Zobrazit surové HTML",
-       "expand_templates_preview": "Náhled"
+       "expand_templates_preview": "Náhled",
+       "pagelanguage": "Volba jazyka stránky",
+       "pagelang-name": "Stránka",
+       "pagelang-language": "Jazyk",
+       "pagelang-use-default": "Použít implicitní jazyk",
+       "pagelang-select-lang": "Vybrat jazyk",
+       "right-pagelang": "Změnit jazyk stránky",
+       "action-pagelang": "měnit jazyk stránky",
+       "log-name-pagelang": "Kniha změn jazyků",
+       "log-description-pagelang": "Toto je protokol změn jazyků stránek.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|změnil|změnila}} jazyk stránky $3 z $4 na $5."
 }
index 028f1c7..797b8b6 100644 (file)
        "right-move": "Flytte sider",
        "right-move-subpages": "Flytte sider og undersider",
        "right-move-rootuserpages": "Flytte hovedbrugersider",
+       "right-move-categorypages": "Flytte kategorisider",
        "right-movefile": "Flytte filer",
        "right-suppressredirect": "Flytte sider uden at oprette en omdirigering fra det gamle navn",
        "right-upload": "Lægge filer op",
        "action-move": "flytte denne side",
        "action-move-subpages": "flytte denne side og dens undersider",
        "action-move-rootuserpages": "flytte hovedbrugersider",
+       "action-move-categorypages": "flytte kategorisider",
        "action-movefile": "flytte denne fil",
        "action-upload": "lægge denne fil op",
        "action-reupload": "overskrive den nuværende fil",
        "duplicate-defaultsort": "Advarsel: Standardsorteringsnøglen \"$2\" tilsidesætter den tidligere sorteringsnøgle \"$1\".",
        "version": "Information om MediaWiki",
        "version-extensions": "Installerede udvidelser",
+       "version-skins": "Udseender",
        "version-specialpages": "Specialsider",
        "version-parserhooks": "Parserfunktioner",
        "version-variables": "Variabler",
        "version-antispam": "Spamforebyggelse",
-       "version-skins": "Udseender",
        "version-other": "Andet",
        "version-mediahandlers": "Specialhåndtering af mediefiler",
        "version-hooks": "Funktionstilføjelser",
index 295a54f..9b4db95 100644 (file)
        "tog-prefershttps": "Utilizar una conexión segura siempre que haya iniciado una sesión",
        "underline-always": "Siempre",
        "underline-never": "Nunca",
-       "underline-default": "Aspecto (skin) o valor predeterminado del navegador",
+       "underline-default": "Tema o valor predeterminado del navegador",
        "editfont-style": "Estilo de tipografía del área de edición:",
        "editfont-default": "Predeterminado del navegador",
        "editfont-monospace": "Tipo de letra monoespaciado",
        "nolicense": "Ninguna seleccionada",
        "license-nopreview": "(Previsualización no disponible)",
        "upload_source_url": " (una URL válida y accesible públicamente)",
-       "upload_source_file": " (un archivo en tu disco)",
+       "upload_source_file": "(un archivo en tu computadora)",
        "listfiles-summary": "Esta página especial muestra todos los archivos subidos.\nCuando el usuario la filtra, solo se muestran los archivos cargados por el usuario en su versión más reciente.",
        "listfiles_search_for": "Buscar por nombre de imagen:",
        "imgfile": "archivo",
        "patrol-log-header": "Este es un registro de revisiones patrulladas.",
        "log-show-hide-patrol": "$1 registro de patrullaje",
        "deletedrevision": "Borrada revisión antigua $1",
-       "filedeleteerror-short": "Se produjo un error al borrar el archivo: $1",
+       "filedeleteerror-short": "Error al borrar el archivo: $1",
        "filedeleteerror-long": "Se han producido errores mientras se borraba el archivo:\n\n$1",
        "filedelete-missing": "No se pudo borrar el archivo \"$1\" porque no existe.",
        "filedelete-old-unregistered": "La revisión de archivo \"$1\" no está en la base de datos.",
        "duplicate-defaultsort": "'''Atención:''' La clave de ordenamiento predeterminada «$2» anula la clave de ordenamiento anterior «$1».",
        "version": "Versión",
        "version-extensions": "Extensiones instaladas",
-       "version-skins": "Apariencias",
+       "version-skins": "Temas instalados",
        "version-specialpages": "Páginas especiales",
        "version-parserhooks": "Extensiones del analizador sintáctico",
        "version-variables": "Variables",
        "version-license": "Licencia de MediaWiki",
        "version-ext-license": "Licencia",
        "version-ext-colheader-name": "Extensión",
+       "version-skin-colheader-name": "Tema",
        "version-ext-colheader-version": "Versión",
        "version-ext-colheader-license": "Licencia",
        "version-ext-colheader-description": "Descripción",
        "expand_templates_remove_nowiki": "Suprimir <nowiki> etiquetas en resultado",
        "expand_templates_generate_xml": "Mostrar el árbol XML.",
        "expand_templates_generate_rawhtml": "Mostrar HTML en crudo",
-       "expand_templates_preview": "Previsualización"
+       "expand_templates_preview": "Previsualización",
+       "pagelanguage": "Selector de idioma de página",
+       "pagelang-name": "Página",
+       "pagelang-language": "Idioma",
+       "pagelang-use-default": "Utilizar el idioma predeterminado",
+       "pagelang-select-lang": "Seleccionar idioma",
+       "right-pagelang": "Cambiar el idioma de la página",
+       "action-pagelang": "cambiar el idioma de la página",
+       "log-name-pagelang": "Registro de cambios en idiomas",
+       "log-description-pagelang": "Este es un registro de los cambios en los idiomas de las páginas.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} el idioma de la página «$3» del $4 al $5."
 }
index 2ae3059..77c1b16 100644 (file)
        "duplicate-defaultsort": "هشدار: ترتیب پیش‌فرض «$2» ترتیب پیش‌فرض قبلی «$1» را باطل می‌کند.",
        "version": "نسخه",
        "version-extensions": "افزونه‌های نصب‌شده",
-       "version-skins": "پوسته‌ها",
+       "version-skins": "پوسته‌های نصب شده",
        "version-specialpages": "صفحه‌های ویژه",
        "version-parserhooks": "قلاب‌های تجزیه‌گر",
        "version-variables": "متغیرها",
        "version-hook-name": "نام قلاب",
        "version-hook-subscribedby": "وارد شده توسط",
        "version-version": "(نسخه  $1)",
+       "version-no-ext-name": "[بدون نام]",
        "version-svn-revision": "(&رلم;r$2)",
        "version-license": "اجازه‌نامهٔ مدیاویکی",
        "version-ext-license": "مجوزها",
        "version-ext-colheader-name": "گستره‌ها",
+       "version-skin-colheader-name": "پوسته",
        "version-ext-colheader-version": "نسخه",
        "version-ext-colheader-license": "مجوز",
        "version-ext-colheader-description": "توصیفات",
        "expand_templates_remove_nowiki": "خنثی کردن تگ‌های <nowiki> در نتیجه",
        "expand_templates_generate_xml": "نمایش درخت تجزیهٔ XML",
        "expand_templates_generate_rawhtml": "نمایش اچ‌تی‌ام‌ال خام",
-       "expand_templates_preview": "پیش‌نمایش"
+       "expand_templates_preview": "پیش‌نمایش",
+       "pagelanguage": "صفحه انتخاب زبان",
+       "pagelang-name": "صفحه",
+       "pagelang-language": "زبان",
+       "pagelang-use-default": "استفاده از زبان پیش‌فرض",
+       "pagelang-select-lang": "انتخاب زبان",
+       "right-pagelang": "تغییر صفحهٔ زبان",
+       "action-pagelang": "تغییر زبان صفحه",
+       "log-name-pagelang": "تغییر سیاههٔ زبان",
+       "log-description-pagelang": "این سیاههٔ تغییرات صفحهٔ زبان‌ها است.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2| تغییریافت}} زبان صفحه برای  $3  از  $4  به  $5 ."
 }
index 4a2b184..79c467f 100644 (file)
        "expand_templates_remove_nowiki": "Poista <nowiki>-tagit tulosteesta",
        "expand_templates_generate_xml": "Näytä XML-jäsennyspuu",
        "expand_templates_generate_rawhtml": "Näytä raaka HTML",
-       "expand_templates_preview": "Esikatselu"
+       "expand_templates_preview": "Esikatselu",
+       "pagelanguage": "Sivun kielen valinta",
+       "pagelang-name": "Sivu",
+       "pagelang-language": "Kieli",
+       "pagelang-use-default": "Käytä oletuskieltä",
+       "pagelang-select-lang": "Valitse kieli",
+       "right-pagelang": "Vaihda sivun kieli",
+       "action-pagelang": "muuttaa sivun kieliasetuksia",
+       "log-name-pagelang": "Kielenvaihtoloki",
+       "log-description-pagelang": "Tämä on loki, johon merkitään muutokset sivujen kieliasetuksissa.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|muutti}} sivun kieltä sivulla $3 kielestä $4 kieleksi $5."
 }
index 4d0716c..2e56326 100644 (file)
        "gotaccountlink": "Rita inn",
        "userlogin-resetlink": "Hevur tú gloymt tínar logg inn upplýsingar",
        "userlogin-resetpassword-link": "Hevur tú gloymt títt loyniorð?",
+       "userlogin-helplink2": "Hjálp til innritan",
        "userlogin-loggedin": "Tú ert longu innritað/ur sum {{GENDER:$1|$1}}.\nNýt formularin niðanfyri fyri at rita inn sum ein annar brúkari.",
        "userlogin-createanother": "Stovna eina aðra kontu",
        "createacct-emailrequired": "Teldupost adressa",
        "resetpass-submit-loggedin": "Broyt loyniorð",
        "resetpass-submit-cancel": "Ógildað",
        "resetpass-wrong-oldpass": "Ógyldug fyribils ella verandi loyniorð.\nMøguliga hevur tú longu broytt títt loyniorð ella biðið um eitt nýtt fyribils loyniorð.",
+       "resetpass-recycled": "Vinarliga broyt títt loyniorð til okkurt annað enn tað tú hevur í løtuni.",
+       "resetpass-temp-emailed": "Tú hevur ritað inn við einum fyribils loyniorði frá telduposti. \nFyri at gjøgnumføra innritanina, so mást tú velja tær eitt nýtt loyniorð og skriva tað her:",
        "resetpass-temp-password": "Fyribils loyniorð",
        "resetpass-abort-generic": "Broyting av loyniorði bleiv avbrotin av einari víðkan.",
+       "resetpass-expired": "Títt loyniorð er útgingið. Vinarliga vel tær eitt nýtt, so tú kanst rita inn.",
+       "resetpass-expired-soft": "Títt loyniorð er útgingið og má broytast. Vinarliga vel tær eitt nýtt nú ella trýst á \"{{int:resetpass-submit-cancel}}\" fyri at broyta tað seinni.",
        "passwordreset": "Nullstilla loyniorðið",
        "passwordreset-text-one": "Útfyll henda teigin fyri at nullstilla títt loyniorð.",
        "passwordreset-text-many": "{{PLURAL:$1|Útfyll í ein av teigunum fyri at móttaka eitt fyribils loyniorð við telduposti.}}",
        "edit-gone-missing": "Tað var ikki møguligt at dagføra síðuna.\nTað sær út til at hon er blivin strikað.",
        "edit-conflict": "Rættingar trupulleiki (konflikt).",
        "edit-no-change": "Tín rætting var sæð burtur frá, tí ongin broyting varð gjørd í tekstinum.",
+       "postedit-confirmation-created": "Síðan er upprættað.",
+       "postedit-confirmation-restored": "Síðan er endurskapað.",
        "postedit-confirmation-saved": "Tín rætting varð goymd.",
        "edit-already-exists": "Tað var ikki møguligt at upprætta nýggja síðu.\nSíðan er longu til.",
        "defaultmessagetext": "Standard boðtekstur",
        "undo-summary-username-hidden": "Angra versjón $1 sum ein fjaldur brúkari hevur gjørt",
        "cantcreateaccounttitle": "Tað ber ikki til at upprætta konto",
        "cantcreateaccount-text": "Upprættan frá hesi IP adressuni ('''$1''') er blivin sperrað av [[User:$3|$3]]. Orsøkin til sperringina sigst vera ''$2''\n\n$3 sigur orsøkina vera ''$2''",
+       "cantcreateaccount-range-text": "IP adressur í intervallinum '''$1''', sum fevnir um tína IP adressu ('''$4'''), eru sperraðar fyri upprættan av nýggjari konto av [[User:$3|$3]].\n\n$3 segði orsøkina vera ''$2''",
        "viewpagelogs": "Sí logg fyri hesa grein",
        "nohistory": "Eingin broytisøga er til hesa síðuna.",
        "currentrev": "Núverandi endurskoðan",
        "currentrev-asof": "Seinasta endurskoðan sum var $1",
        "revisionasof": "Endurskoðan frá $1",
-       "revision-info": "Versjón frá $1 av $2",
+       "revision-info": "Versjón frá $1 av {{GENDER:$6|$2}}$7",
        "previousrevision": "←Eldri endurskoðan",
        "nextrevision": "Nýggjari endurskoðan→",
        "currentrevisionlink": "Skoða verandi endurskoðan",
        "search-section": "(sektión $1)",
        "search-suggest": "Meinti tú: $1",
        "search-interwiki-caption": "Líknandi verkætlanir",
-       "search-interwiki-default": "$1 úrslit:",
+       "search-interwiki-default": "Úrslit frá $1:",
        "search-interwiki-more": "(meira)",
        "search-relatedarticle": "Líknandi",
        "searchrelated": "líknandi",
        "searchall": "alt",
        "showingresults": "Niðanfyri standa upp til {{PLURAL:$1|'''$1''' úrslit, sum byrjar|'''$1''' úrslit, sum byrja}} við #<b>$2</b>.",
+       "showingresultsinrange": "Niðanfyri verða víst upp til {{PLURAL:$1|<strong>1</strong> úrslit|<strong>$1</strong> úrslit}} í økinum #<strong>$2</strong> til #<strong>$3</strong>.",
        "showingresultsheader": "{{PLURAL:$5|Úrslit '''$1''' av '''$3'''|Úrslit '''$1 - $2''' av '''$3'''}} fyri '''$4'''",
        "search-nonefound": "Leitingin gav onki úrslit.",
        "powersearch-legend": "Víðkað leitan",
        "powersearch-togglelabel": "Kanna eftir:",
        "powersearch-toggleall": "Alt",
        "powersearch-togglenone": "Ongi",
+       "powersearch-remember": "Minst til tað valda til framtíðar leitingar",
        "search-external": "Uttanhýsis leitan",
        "searchdisabled": "{{SITENAME}} leitan er sett úr gildi.\nTú kanst leita via Google ímeðan.\nLegg til merkis, at teirra innihaldsyvirlit av {{SITENAME}} kann vera gamalt og ikki dagført.",
        "search-error": "Ein feilur hendi undir leitanini: $1",
        "preferences": "Innstillingar",
        "mypreferences": "Innstillingar",
        "prefs-edits": "Tal av rættingum:",
+       "prefsnologintext2": "Vinarliga $1 fyri at broyta tínar innstillingat.",
        "prefs-skin": "Hamur",
        "skin-preview": "Forskoðan",
        "datedefault": "Ongi serlig ynskir",
        "right-move": "Flyt síður",
        "right-move-subpages": "Flyt síður saman við undirsíðum teirra",
        "right-move-rootuserpages": "Flyta høvuðs brúkarasíður",
+       "right-move-categorypages": "Flyt bólkasíður",
        "right-movefile": "Flyt fílur",
        "right-suppressredirect": "Flyta síður uttan at upprætta víðaristilling frá tí gomlu síðuni.",
        "right-upload": "Legg upp fílur",
        "action-createpage": "upprætta síður",
        "action-createtalk": "upprætta kjak síður",
        "action-createaccount": "upprætta hesa brúkarakontuna",
+       "action-history": "vís søguna hjá hesi síðu",
        "action-minoredit": "marka hesa rætting sum lítla",
        "action-move": "flyt hesa síðu",
        "action-move-subpages": "flyt hesa síðu og undirsíður hennara",
        "action-move-rootuserpages": "flyt høvuðs brúkarasíður",
+       "action-move-categorypages": "Flyt bólkasíður",
        "action-movefile": "flyt hesa fílu",
        "action-upload": "send hesa fílu upp",
        "action-reupload": "yvirskriva hesa verandi fíluna",
        "recentchanges-label-minor": "Hetta er ein lítil rætting",
        "recentchanges-label-bot": "Henda rætting varð gjørd av einum botti",
        "recentchanges-label-unpatrolled": "Henda rætting er ikki blivin eftirkannað enn",
+       "recentchanges-label-plusminus": "Støddin á síðuni broyttist við hesum talinum av bytes",
        "recentchanges-legend-heading": "'''Teknfrágreiðing:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (sí eisini [[Special:NewPages|yvirlit yvir nýggjar síður]])",
-       "rcnotefrom": "Niðanfyri standa broytingarnar síðani '''$2''', (upp til '''$1''' er sýndar).",
+       "rcnotefrom": "Niðanfyri verða broytingar síðan <strong>$2</strong> (upp til <strong>$1</strong> vístar).",
        "rclistfrom": "Sýn nýggjar broytingar byrjandi við $3 $2",
        "rcshowhideminor": "$1 minni rættingar",
+       "rcshowhideminor-show": "Vís",
+       "rcshowhideminor-hide": "Fjal",
        "rcshowhidebots": "$1 bottar",
+       "rcshowhidebots-show": "Vís",
+       "rcshowhidebots-hide": "Fjal",
        "rcshowhideliu": "$1 skrásettir brúkarar",
+       "rcshowhideliu-show": "Vís",
+       "rcshowhideliu-hide": "Fjal",
        "rcshowhideanons": "$1 navnleysar brúkarar",
+       "rcshowhideanons-show": "Vís",
+       "rcshowhideanons-hide": "Fjal",
        "rcshowhidepatr": "$1 eftirhugdar rættingar",
+       "rcshowhidepatr-show": "Vís",
+       "rcshowhidepatr-hide": "Fjal",
        "rcshowhidemine": "$1 mínar rættingar",
+       "rcshowhidemine-show": "Vís",
+       "rcshowhidemine-hide": "Fjal",
        "rclinks": "Sýn seinastu $1 broytingarnar seinastu $2 dagarnar<br />$3",
        "diff": "munur",
        "hist": "søga",
        "lockmanager-fail-svr-acquire": "Kundi ikki skaffa lás til dátagrunnin $1.",
        "lockmanager-fail-svr-release": "Kundi ikki loysa lásini í ambætaranum $1.",
        "uploadstash": "Legg út stash",
+       "uploadstash-clear": "Rudda burtur stashaðar fílur",
        "uploadstash-refresh": "Uppfrískað listan við fílum",
        "img-auth-accessdenied": "Atgongd noktað",
        "img-auth-badtitle": "Tað bar ikki til at gera eitt heiti útfrá \"$1\".",
index 2508e23..9d3fd76 100644 (file)
        "expand_templates_remove_nowiki": "Supprime les marqueurs <nowiki> dans le résultat",
        "expand_templates_generate_xml": "Voir l’arborescence d’analyse XML",
        "expand_templates_generate_rawhtml": "Afficher le HTML brut",
-       "expand_templates_preview": "Aperçu du rendu"
+       "expand_templates_preview": "Aperçu du rendu",
+       "pagelanguage": "Sélecteur de langue de la page",
+       "pagelang-name": "Page",
+       "pagelang-language": "Langue",
+       "pagelang-use-default": "Utiliser la langue par défaut",
+       "pagelang-select-lang": "Sélectionner la langue",
+       "right-pagelang": "Changer la langue de la page",
+       "action-pagelang": "changer la langue de la page",
+       "log-name-pagelang": "Tracer les changements de langue",
+       "log-description-pagelang": "Ceci est un journal des changements dans les langues des pages.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|a changé}} la langue de la page $3 de $4 à $5."
 }
index ae9dfde..6bb0457 100644 (file)
        "permalink": "Permanent link",
        "print": "Drük",
        "view": "Lees",
+       "view-foreign": "Üüb $1 uunluke",
        "edit": "Bewerke",
+       "edit-local": "Lokaal beskriiwang bewerke",
        "create": "Maage",
+       "create-local": "Lokaal beskriiwang diartudu",
        "editthispage": "Sidj bewerke",
        "create-this-page": "Nei sidj maage",
        "delete": "Strik",
        "jumptonavigation": "Nawigatjuun",
        "jumptosearch": "Schük",
        "view-pool-error": "Det dää üs iarag, a servers san auerläästet.\nTuföl brükern ferschük, det sidj tu beschüken.\nWees so gud an teew en uugenblak, iar dü det noch ans ferschükst.\n\n$1",
+       "generic-pool-error": "Det dää üs iarag, a servers san tu tidj auerläästet.\nTuföl brükern ferschük, det sidj tu beschüken.\nWees so gud an teew en uugenblak, iar dü det noch ans weder ferschükst.",
        "pool-timeout": "Tidj uflepen bi't teewen üüb't sperang",
        "pool-queuefull": "Pool as auerläästet",
        "pool-errorunknown": "Ünbekäänd feeler",
        "edit-gone-missing": "Detdiar sidj küd ei aktualisiaret wurd. Ferlicht as det stregen wurden.",
        "edit-conflict": "Konflikt bi't bewerkin (BK).",
        "edit-no-change": "Din feranrang woort ei seekert, auer dü di tekst ei feranert heest.",
+       "postedit-confirmation-created": "Det sidj as maaget wurden.",
+       "postedit-confirmation-restored": "Det sidj as weder turaghaalet wurden.",
        "postedit-confirmation-saved": "Din feranrang as seekert wurden.",
        "edit-already-exists": "Det nei sidj küd ei iinracht wurd. Son sidj as al diar.",
        "defaultmessagetext": "Standard tekst",
        "parser-template-recursion-depth-warning": "Tuföl föörlaagen uun föörlaagen ($1)",
        "language-converter-depth-warning": "Spriakenkonwerter auerläästet ($1)",
        "node-count-exceeded-category": "Jodiar sidjen haa tuföl ferbinjangen (nodes)",
+       "node-count-exceeded-category-desc": "En kategorii för sidjen mä tuföl knooter (nodes).",
        "node-count-exceeded-warning": "Detdiar sidj hää tuföl ferbinjangen (nodes)",
        "expansion-depth-exceeded-category": "Jodiar sidjen haa tuföl ütjwidjangen (expansion)",
+       "expansion-depth-exceeded-category-desc": "Det as en kategorii för sidjen mä tuföl ütjwidjangen.",
        "expansion-depth-exceeded-warning": "Detdiar sidj hää tuföl ütjwidjangen (expansion)",
        "parser-unstrip-loop-warning": "Diar as en jinsidjag ferwisang",
        "parser-unstrip-recursion-limit": "Tuföl jinsidjag ferwisangen bi $1",
        "currentrev": "Leetst werjuun",
        "currentrev-asof": "Leetst werjuun faan di $2, am a klook $3",
        "revisionasof": "Werjuun faan a $2, klook $3",
-       "revision-info": "Werjuun faan di $4 am a klook $5 faan $2",
+       "revision-info": "Werjuun faan di $4, am a klook $5 faan {{GENDER:$6|$2}}$7",
        "previousrevision": "← Naistääler werjuun:",
        "nextrevision": "Naistjonger werjuun →",
        "currentrevisionlink": "Leetst werjuun",
        "mergehistory-empty": "Nian werjuunen kön tuupfeerd wurd.",
        "mergehistory-success": "$3 {{PLURAL:$3|werjuun|werjuunen}} faan [[:$1]] tuupfeerd tu [[:$2]].",
        "mergehistory-fail": "Werjuunen kön ei tuupfeerd wurd. Luke noch ans efter at sidj an a tidjen.",
+       "mergehistory-fail-toobig": "A werjuunen küd ei tuupfeerd wurd, auer muar üs {{PLURAL:$1|ian werjuun|$1 werjuunen}} fersköwen {{PLURAL:$1|wurd skul|wurd skul}}.",
        "mergehistory-no-source": "Det iarst sidj \"$1\" as ai diar.",
        "mergehistory-no-destination": "Det ööder sidj „$1“ as ei diar.",
        "mergehistory-invalid-source": "Jurtkamstsid mötj en gülti sidnoome heewe.",
        "powersearch-togglelabel": "Schük uun:",
        "powersearch-toggleall": "Aaltumaal",
        "powersearch-togglenone": "Nianen",
+       "powersearch-remember": "Ütjwool mark för leeder schükuunfraagen",
        "search-external": "Schük ekstern",
        "searchdisabled": "Det schüken üüb {{SITENAME}} as ei aktiif. Dü könst uuntesken mä Google schük. Seenk diaram, dat Google sin steegwurden miast ei üüb a leetst stant san.",
        "search-error": "Diar as wat skiaf gingen bi't schüken: $1",
        "right-move": "Sidjen fersküüw",
        "right-move-subpages": "Sidjen mä onersidjen fersküüw",
        "right-move-rootuserpages": "Hood-brükersidj fersküüw",
+       "right-move-categorypages": "Kategoriisidjen fersküüw",
        "right-movefile": "Datein fersküüw",
        "right-suppressredirect": "Bi't fersküüwen nian widjerfeerang iinracht",
        "right-upload": "Datein huuchschüür",
        "action-createpage": "nei sidjen tu maagin",
        "action-createtalk": "diskusjuunssidjen maage",
        "action-createaccount": "jüdeer brükerkonto mååge",
+       "action-history": "di ferluup faan detdiar sidj uuntulukin.",
        "action-minoredit": "detdiar feranrang üs letj kääntiakne",
        "action-move": "an fersküüw det diar sidj",
        "action-move-subpages": "an fersküüw detdiar sidj mä hör onersidjen",
        "action-move-rootuserpages": "hood-brükersidj fersküüw",
+       "action-move-categorypages": "kategoriisidjen uuntulukin",
        "action-movefile": "an fersküüw detdiar datei",
        "action-upload": "Datein huuchschüür",
        "action-reupload": "det datei auerskriiw",
        "windows-nonascii-filename": "Detheer wiki läät nian dateinöömer mä aparte tiakens tu.",
        "fileexists": "En datei mä didiar nööm jaft at al. Luke noch ans efter <strong>[[:$1]]</strong>, wan dü ei gans seeker beest, of dü det anre wel.\n[[$1|thumb]]",
        "filepageexists": "En beskriiwangssidj för <strong>[[:$1]]</strong> as al diar, oober nian datei. Din beskriiwang woort ei apnimen. Det beskriiwangssidj mut do man efter't huuchschüüren noch ans efterluket wurd.\n[[$1|thumb]]",
-       "fileexists-extension": "Diar as al en datei mä di nööm: [[$2|thumb]]\n* Nööm faan det nei datei: <strong>[[:$1]]</strong>\n* Nööm faan det ual datei: <strong>[[:$2]]</strong>\nWees so gud an nem en öödern nööm.",
+       "fileexists-extension": "Diar as al en datei mä di nööm: [[$2|thumb]]\n* Nööm faan det nei datei: <strong>[[:$1]]</strong>\n* Nööm faan det ual datei: <strong>[[:$2]]</strong>\nWel dü ei ferlicht en beedern nööm brük?",
        "fileexists-thumbnail-yes": "Detdiar datei as was en sümnaielbil ''(thumbnail)''. [[$1|thumb]]\nLuke di det datei <strong>[[:$1]]</strong> noch ans uun.\nWan det det originaal bil as, säärst dü nian sümnaielbil huuchschüür.",
        "file-thumbnail-no": "Di dateinööm begant mä <strong>$1</strong>. Det as was en sümnaielbil ''(thumbnail)''.\nLuke noch ans efter, of dü det bil uun fol grate diar heest, an do schüür det huuch.",
        "fileexists-forbidden": "En datei mä didiar nööm jaft at al an koon ei auerskrewen wurd.\nGung noch ans turag an schüür det datei mä en öödern nööm huuch.\n[[File:$1|thumb|center|$1]]",
        "filedelete-maintenance": "Det striken of turaghaalin faan datein gongt uun uugenblak ei.",
        "filedelete-maintenance-title": "Det datei koon ei stregen wurd",
        "mimesearch": "Efter MIME-Typ schük",
-       "mimesearch-summary": "Üüb detheer sidj könst dü datein efter hör MIME-Typ filtre.\nDet formoot as leewen slach/onerslach üs uun det bispal: <code>image/jpeg</code>.",
+       "mimesearch-summary": "Üüb detheer sidj könst dü datein efter hör MIME-Typ filtre.\nDet formoot as leewen slach/onerslach üs uun det bispal: <code>image/jpeg</code> of uk <code>image/*</code>.",
        "mimetype": "MIME-Typ:",
        "download": "Deelloose",
        "unwatchedpages": "Sidjen, diar näämen uun't uug hää",
        "pageswithprop-prophidden-binary": "Binär eegenskapswäärs ferbürgen ($1)",
        "doubleredirects": "Dobelt widjerfeerangen",
        "doubleredirectstext": "Detheer list feert widjerfeerangen ap, diar üüb widjerfeerangen widjer feer.\nUun arke rä stun ferwisangen tu't iarst an ööder widjerfeerang an uk tu det sidj, huar det ööder widjerfeerang üüb ferwiset. <del>Trochstregen</del> iindracher san al bewerket wurden.",
-       "double-redirect-fixed-move": "[[$1]] as fersköwen wurden an feert nü widjer tu [[$2]].",
+       "double-redirect-fixed-move": "[[$1]] as fersköwen wurden. Hat feert nü widjer tu [[$2]].",
        "double-redirect-fixed-maintenance": "Dobelt widjerfeerang faan [[$1]] tu [[$2]] as apredet wurden.",
        "double-redirect-fixer": "Bot för widjerfeerangen",
        "brokenredirects": "Uunstaken widjerfeerangen",
        "wantedtemplates": "Föörlaagen, diar brükt wurd",
        "mostlinked": "Sidjen, huar a miast ööder sidjen üüb ferwise",
        "mostlinkedcategories": "Miast brükt kategoriin",
-       "mostlinkedtemplates": "Miast brükt föörlaagen",
+       "mostlinkedtemplates": "Miast iinbünjen sidjen",
        "mostcategories": "Sidjen mä a miast kategoriin",
        "mostimages": "Datein, huar a miast sidjen üüb ferwise",
        "mostinterwikis": "Sidjen mä a miast ferwisangen tu ööder spriaken",
        "listgrouprights-removegroup-self": "Aanj brükerkonto faan {{PLURAL:$2|detdiar skööl|jodiar sköölen}} wechnem: $1",
        "listgrouprights-addgroup-self-all": "Koon aal a sköölen tu't aanj brükerkonto tuwise",
        "listgrouprights-removegroup-self-all": "Koon aal a sköölen faan't aanj brükerkonto wechnem",
+       "listgrouprights-namespaceprotection-header": "Nöömrüm mögelkhaiden",
+       "listgrouprights-namespaceprotection-namespace": "Nöömrüm",
+       "listgrouprights-namespaceprotection-restrictedto": "Rochten faan di brüker tu bewerkin",
        "trackingcategories": "Kategoriin ferfulge",
        "trackingcategories-summary": "Üüb detdiar sidj stun ferfulagt kategoriin, diar faan't MediaWiki-software iindraanj wurden san. Hör nöömer kön feranert wurd, wan dü a süsteem-noorachten uun a {{ns:8}}-nöömrüm feranerst.",
        "trackingcategories-msg": "Kategorii ferfulge",
        "watchnologin": "Ei uunmeldet",
        "addwatch": "Uk uun't uug behual",
        "addedwatchtext": "Det sidj „[[:$1]]“ wel dü [[Special:Watchlist|uun't uug behual]].\nFeranrangen faan detdiar sidj wurd üüb detdiar list fäästhäälen.",
+       "addedwatchtext-short": "Det sidj „$1“ kaam tu din sidjen, diar dü uun't uug behual wel.",
        "removewatch": "Ei muar uun't uug behual",
        "removedwatchtext": "Det sidj „[[:$1]]“ as faan a sidjen, diar dü [[Special:Watchlist|uun't uug behual]] wel, wechnimen wurden.",
+       "removedwatchtext-short": "Det sidj „$1“ woort ei muar faan di uun't uug behäälen.",
        "watch": "Uun't uug behual",
        "watchthispage": "Detdiar sidj uun't uug behual",
        "unwatch": "Ei muar uun't uug behual",
        "unwatchthispage": "Ei muar uun't uug behual",
        "notanarticle": "Nään artiikel",
        "notvisiblerev": "Det werjuun faan en öödern brüker as stregen wurden.",
-       "watchlist-details": "Dü heest {{PLURAL:$1|1 sidj|$1 sidjen}} uun't uug.",
+       "watchlist-details": "Dü behäälst {{PLURAL:$1|1 sidj|$1 sidjen}} uun't uug, diarbi wurd diskuschuunsidjen ei mätääld.",
        "wlheader-enotif": "Di e-mail siinst as aktiif.",
        "wlheader-showupdated": "Nei feranert sidjen wurd '''fäät''' uunwiset.",
        "wlnote2": "Diar stun a feranrangen faan a leetst {{PLURAL:$1|stünj|<strong>$1</strong> stünjen}}, üüb a stant faan $2, $3.",
        "contributions-title": "Brükerbidracher för \"$1\"",
        "mycontris": "Bidracher",
        "contribsub2": "För {{GENDER:$3|$1}} ($2)",
+       "contributions-userdoesnotexist": "Son brükerkonto \"$1\" jaft at ei.",
        "nocontribs": "Diar wiar nian paasin brükerbidracher",
        "uctop": "(aktuel)",
        "month": "faan muun (of iarer):",
        "movepagetalktext": "Uk det diskusjuunssidj woort fersköwen, wan det diar as, '''oober ei, wan:'''\n*Diar al en diskusjuunssidj mä didiar nööm as, of\n*Dü detdiar mögelkhaid ütjslotst.\n\nUun didiar faal skel dü a diskusjuunssidjen faan hun tuupfeer.\n\nDreeg di '''nei''' tiitel bi '''ööder sidj''' iin, an diaroner '''en grünj''' för't amnäämen.",
        "movearticle": "Sidj fersküüw:",
        "moveuserpage-warning": "'''Paase üüb:''' Dü wel en brükersidj fersküüw. Seenk diaram, dat bluas det brükersidj amnäämd woort, oober '''ei''' di brüker. Hi behäält san ual nööm.",
+       "movecategorypage-warning": "<strong>Paase üüb:</strong> Dü wel jüst en kategoriisidj fersküüw. Seenk diaram, dat bluas det sidj fersköwen woort. A sidjen uun det kategorii wurd <em>ei</em> nei kategorisiaret.",
        "movenologintext": "Dü skel registriaret an [[Special:UserLogin|uunmeldet]] wees, am en sidj tu fersküüwen.",
        "movenotallowed": "Dü mutst nian sidjen fersküüw.",
        "movenotallowedfile": "Dü mutst nian datein fersküüw.",
        "cant-move-user-page": "Dü mutst nian brükersidjen fersküüw (bluas onersidjen).",
        "cant-move-to-user-page": "Dü mutst nian sidjen üüb en brükersidj fersküüw (bluas üüb onersidjen).",
+       "cant-move-category-page": "Dü mutst nian kategoriisidjen fersküüw.",
+       "cant-move-to-category-page": "Dü mutst nian sidj tu en kategoriisidj fersküüw.",
        "newtitle": "Müülj:",
        "move-watch": "Jodiar sidjen uun't uug behual",
        "movepagebtn": "Sidj fersküüw",
        "newimages-summary": "Detdiar spezial-sidj wiset a tuleetst huuchschüürd datein uun.",
        "newimages-legend": "Filter",
        "newimages-label": "Dateinööm (of en dial diarfaan):",
+       "newimages-showbots": "Faan bots huuchschüürd sidjen uunwise.",
        "noimages": "Niks tu sen.",
        "ilsubmit": "Schük",
        "bydate": "efter dootem",
        "watchlistedit-raw-done": "Det list mä sidjen, diar dü uun't uug behual wel, as nü üüb di neist stant.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Ään iindrach as|$1 iindracher san}} diartu skrewen wurden:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Ään iindrach as|$1 iindracher san}} wechnimen wurden:",
+       "watchlistedit-clear-title": "Nian sidjen muar uun't uug behual",
+       "watchlistedit-clear-legend": "Nian sidjen muar uun't uug behual",
+       "watchlistedit-clear-explain": "Aal a sidjennöömer wel dü ei muar uun't uug behual",
+       "watchlistedit-clear-titles": "Sidjennöömer:",
+       "watchlistedit-clear-submit": "Sidjen, diar dü uun't uug behual wel, strik (permanent)",
+       "watchlistedit-clear-done": "Det list mä sidjen, diar dü uun't uug behual wel, as nü leesag maaget wurden.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|Ään iindrach as|$1 iindracher san}} wechnimen wurden:",
+       "watchlistedit-too-many": "Diar san tuföl sidjen tu uunwisin heer.",
+       "watchlisttools-clear": "Nian sidjen muar uun't uug behual",
        "watchlisttools-view": "Uun't uug behual: Feranrangen",
        "watchlisttools-edit": "Normool bewerke",
        "watchlisttools-raw": "Uun't listenformoot bewerke",
        "duplicate-defaultsort": "'''Paase üüb:''' Di sortiarkai \"$2\" auerskraft di ual sortiarkai \"$1\"",
        "version": "Werjuun",
        "version-extensions": "Instaliaret ütjwidjangen",
+       "version-skins": "Instaliaret brükerskaker",
        "version-specialpages": "Spezial-sidjen",
        "version-parserhooks": "Ütjwidjet parserfunktjuunen",
        "version-variables": "Wariaabeln",
        "version-antispam": "''Spam''seekerangen",
-       "version-skins": "Brükerskaker",
        "version-other": "Ööders wat",
        "version-mediahandlers": "Ütjwidjet medien-funktjuunen",
        "version-hooks": "Hooks",
        "version-hook-name": "Hook nööm",
        "version-hook-subscribedby": "Aprepen faan",
        "version-version": "($1)",
+       "version-no-ext-name": "[saner nööm]",
        "version-license": "MediaWiki-lisens",
        "version-ext-license": "Lisens",
        "version-ext-colheader-name": "Ütjwidjang",
+       "version-skin-colheader-name": "Skak",
        "version-ext-colheader-version": "Werjuun",
        "version-ext-colheader-license": "Lisens",
        "version-ext-colheader-description": "Beskriiwang",
        "htmlform-no": "Naan",
        "htmlform-yes": "Ja",
        "htmlform-chosen-placeholder": "Schük ütj",
+       "htmlform-cloner-create": "Muar diartudu",
+       "htmlform-cloner-delete": "Wechnem",
+       "htmlform-cloner-required": "Dü skel tumanst ään wäärs uundu.",
        "sqlite-has-fts": "Werjuun $1 mä halep för't schüken uun di hialer tekst.",
        "sqlite-no-fts": "Werjuun $1 saner halep för't schüken uun di hialer tekst.",
        "logentry-delete-delete": "$1 {{Gender:$2}} hää det sidj $3 stregen",
        "expand_templates_remove_nowiki": "<nowiki>-tags uun't resultaat ei uunwise",
        "expand_templates_generate_xml": "XML-parser-buum uunwise",
        "expand_templates_generate_rawhtml": "Rä HTML uunwise",
-       "expand_templates_preview": "Föörskau"
+       "expand_templates_preview": "Föörskau",
+       "pagelanguage": "Ütjwool faan sidjenspriaken",
+       "pagelang-name": "Sidj",
+       "pagelang-language": "Spriak",
+       "pagelang-use-default": "Standard spriak brük",
+       "pagelang-select-lang": "Spriak ütjschük",
+       "right-pagelang": "Sidjenspriak feranre",
+       "action-pagelang": "det sidjenspriak tu feranrin",
+       "log-name-pagelang": "Logbuk för spriak-feranrangen",
+       "log-description-pagelang": "Det as en logbuk för sidjenspriak-feranrangen",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|hää}} det sidjenspriak för $3 faan $4 tu $5 feranert."
 }
index 58e4fc0..94fc6cd 100644 (file)
        "exif-xresolution": "Dùmhlachd-bhreacaidh chòmhnard",
        "exif-yresolution": "Dùmhlachd-bhreacaidh inghearach",
        "exif-stripoffsets": "Ionad dàta an deilbh",
+       "exif-jpeginterchangeformat": "Frith-àireamh gu JPEG SOI",
        "exif-jpeginterchangeformatlength": "Baidhtichean de dhàta JPEG",
+       "exif-ycbcrcoefficients": "Co-èifeachdan a' mheatraigs atharrachaidh airson an spàs datha",
+       "exif-referenceblackwhite": "Càraid de luachan iomraidh dubh is geal",
        "exif-datetime": "Ceann-là 's àm aig atharrachadh an fhaidhle",
        "exif-imagedescription": "Tiotal an deilbh",
        "exif-make": "Dèanadair a' chamara",
        "exif-copyright": "Seilbheadair na còrach-lethbhreac",
        "exif-exifversion": "Tionndadh de Exif",
        "exif-flashpixversion": "An tionndadh de Flashpix ris an cuirear taic",
+       "exif-colorspace": "Spàs datha",
+       "exif-componentsconfiguration": "Ciall aig gach co-phàirt",
        "exif-compressedbitsperpixel": "Modh dùmhlachd-bhreacaidh an deilbh",
        "exif-pixelydimension": "Leud an deilbh",
        "exif-pixelxdimension": "Àirde an deilbh",
        "exif-relatedsoundfile": "Faidhle fuaime co-cheangailte ris",
        "exif-datetimeoriginal": "Ceann-là 's àm a chaidh an dàta a chruthachadh",
        "exif-datetimedigitized": "Ceann-là 's àm a chaidh cruth digiteach a chur air an dàta",
+       "exif-subsectime": "Fo-dhiogan cinn-là 's ama",
+       "exif-subsectimeoriginal": "Fo-dhiogan cinn-là 's ama thùsail",
+       "exif-subsectimedigitized": "Fo-dhiogan cinn-là 's ama an dreach digitich",
+       "exif-exposuretime": "Ùine deisearais",
        "exif-exposuretime-format": "$1 diog ($2)",
+       "exif-fnumber": "Àireamh F",
+       "exif-fnumber-format": "f/$1",
+       "exif-exposureprogram": "Prògram deisearais",
+       "exif-spectralsensitivity": "Mothalachd speictreach",
+       "exif-isospeedratings": "Rangachadh astar ISO",
+       "exif-shutterspeedvalue": "Luaths siutair APEX",
+       "exif-aperturevalue": "Fosgladh APEX",
+       "exif-brightnessvalue": "Soilleireachd APEX",
+       "exif-exposurebiasvalue": "Claonadh deisearais APEX",
+       "exif-subjectdistance": "Astar a' chuspair",
+       "exif-meteringmode": "Modh meidheachaidh",
+       "exif-lightsource": "Tùs an t-solais",
        "exif-flash": "Solas-boillsgidh",
+       "exif-focallength": "Faid fòcas an lionsa",
        "exif-focallength-format": "$1 mm",
+       "exif-subjectarea": "Raon a' chuspair",
+       "exif-flashenergy": "Lùths an t-solais boillsgidh",
+       "exif-focalplanexresolution": "Dùmhlachd-bhreacaidh X aig plèana an fhòcais",
+       "exif-focalplaneyresolution": "Dùmhlachd-bhreacaidh Y aig plèana an fhòcais",
+       "exif-focalplaneresolutionunit": "Aonad dùmhlachd-breacaidh aig plèana an fhòcais",
+       "exif-subjectlocation": "Ionad a' chuspair",
+       "exif-exposureindex": "Inneacs deisearais",
+       "exif-sensingmethod": "Dòigh a' mhothaicheir",
        "exif-filesource": "Tùs an fhaidhle",
+       "exif-scenetype": "Seòrsa an t-seallaidh",
+       "exif-customrendered": "Pròiseasadh gnàthaichte an deilbh",
+       "exif-exposuremode": "Modh deisearais",
+       "exif-whitebalance": "Meidh na gile",
+       "exif-digitalzoomratio": "Co-mheas an t-sùma dhigitich",
+       "exif-focallengthin35mmfilm": "Faid fòcas an am film 35 mm",
+       "exif-scenecapturetype": "Seòrsa glacaidh-sgrìn",
+       "exif-gaincontrol": "Smachd air an t-seallaidh",
+       "exif-contrast": "Iomsgaradh",
+       "exif-saturation": "Sàthachd",
+       "exif-sharpness": "Geurad",
        "exif-devicesettingdescription": "Tuairisgeul aig roghainnean an uidheim",
+       "exif-subjectdistancerange": "Rainse astar a' chuspair",
+       "exif-imageuniqueid": "ID fa leth an deilbh",
+       "exif-gpsversionid": "Tionndadh dhen taga GPS",
+       "exif-gpslatituderef": "Domhan-leud tuath no deas",
+       "exif-gpslatitude": "Domhan-leud",
+       "exif-gpslongituderef": "Domhan-fhad ear no siar",
+       "exif-gpslongitude": "Domhan-fhad",
+       "exif-gpsaltituderef": "Iomradh na h-àirde",
+       "exif-gpsaltitude": "Àirde",
+       "exif-gpstimestamp": "Àm GPS (uaireadair atomach)",
+       "exif-gpssatellites": "Saidealan a chaidh a chleachdadh airson an tomhais",
+       "exif-gpsstatus": "Staid a' ghlacadair",
+       "exif-gpsmeasuremode": "Modh an tomhais",
+       "exif-gpsdop": "Pongalachd an tomhais",
+       "exif-gpsspeedref": "Aonad an luaiths",
+       "exif-gpsspeed": "Luaths a' ghlacadair GPS",
+       "exif-gpstrackref": "Iomradh airson comhair a' ghluasaid",
+       "exif-gpstrack": "Comhair a' ghluasaid",
+       "exif-gpsimgdirectionref": "Iomradh airson comhair an deilbh",
+       "exif-gpsimgdirection": "Comhair an deilbh",
+       "exif-gpsdestlatituderef": "Iomradh airson domhan-leud a' chinn-uidhe",
+       "exif-gpsdestlatitude": "Domhan-leud a' chinn-uidhe",
+       "exif-gpsdestlongituderef": "Iomradh airson domhan-fhad a' chinn-uidhe",
+       "exif-gpsdestlongitude": "Domhan-fhad a' chinn-uidhe",
+       "exif-gpsdestbearingref": "Iomradh airson comhair a' chinn-uidhe",
+       "exif-gpsdestbearing": "Comhair a' chinn-uidhe",
+       "exif-gpsdestdistanceref": "Iomradh airson astar on cheann-uidhe",
+       "exif-gpsdestdistance": "Astar on cheann-uidhe",
+       "exif-gpsprocessingmethod": "Ainm air modh pròiseasadh GPS",
+       "exif-gpsareainformation": "Ainm raon GPS",
+       "exif-gpsdatestamp": "Ceann-là GPS",
+       "exif-gpsdifferential": "Ceartachadh diofarail GPS",
+       "exif-coordinate-format": "$1° $2′ $3″ $4",
+       "exif-jpegfilecomment": "Beachd faidhle JPEG",
+       "exif-keywords": "Facalan-luirg",
+       "exif-worldregioncreated": "An roinn-dùthcha san deach an dealbh a thogail",
+       "exif-countrycreated": "An dùthaich san deach an dealbh a thogail",
+       "exif-countrycodecreated": "Còd na dùthcha san deach an dealbh a thogail",
+       "exif-provinceorstatecreated": "An t-siorrachd no còigeamh san deach an dealbh a thogail",
+       "exif-citycreated": "Am baile san deach an dealbh a thogail",
+       "exif-sublocationcreated": "An t-ionad sa bhaile san deach an dealbh a thogail",
+       "exif-worldregiondest": "Tha an roinn-dùthcha 'ga sealltainn",
+       "exif-countrydest": "Tha an dùthaich 'ga sealltainn",
+       "exif-countrycodedest": "Tha còd na dùthcha air 'ga sealltainn",
+       "exif-provinceorstatedest": "Tha an t-siorrachd no còigeamh 'ga sealltainn",
+       "exif-citydest": "Tha am baile 'ga shealltainn",
+       "exif-sublocationdest": "Tha an t-ionad sa bhaile 'ga shealltainn",
        "exif-objectname": "Tiotal goirid",
        "exif-specialinstructions": "Stiùireadh sònraichte",
        "exif-headline": "Ceann-sgrìobhadh",
        "exif-credit": "Cliù/Solaraiche",
        "exif-source": "Tùs",
        "exif-editstatus": "Staid deasachaidh an deilbh",
+       "exif-urgency": "Èiginneachd",
+       "exif-fixtureidentifier": "Ainm nì shocraichte",
+       "exif-locationdest": "An t-ionad san dealbh",
+       "exif-locationdestcode": "Còs an ionaid san dealbh",
+       "exif-objectcycle": "Àm an latha iomchaidh airson a' mheadhain",
        "exif-contact": "Fiosrachadh conaltraidh",
        "exif-writer": "Sgrìobhadair",
        "exif-languagecode": "Cànan",
+       "exif-iimversion": "Tionndadh de IIM",
        "exif-iimcategory": "Roinn-seòrsa",
        "exif-iimsupplementalcategory": "Roinnean-seòrsa foirlionach",
        "exif-datetimeexpires": "Na cleachd às dèidh",
        "exif-datetimereleased": "'Ga sgaoileadh o",
+       "exif-originaltransmissionref": "Còd ionaid tùsail an tar-chuir",
        "exif-identifier": "Aithnichear",
+       "exif-lens": "An lionsa a chaidh a chleachdadh",
+       "exif-serialnumber": "Àireamh shreathach a' chamara",
        "exif-cameraownername": "Seilbheadair a' chamara",
        "exif-label": "Leubail",
+       "exif-datetimemetadata": "An ceann-là a chaidh am meata-dàta atharrachadh an turas mu dheireadh",
        "exif-nickname": "Ainm neo-fhoirmeil an deilbh",
        "exif-rating": "Rangachadh (a-mach à 5)",
+       "exif-rightscertificate": "Teisteanas rianachd chòraichean",
        "exif-copyrighted": "Staid na còrach-lethbhreac",
        "exif-copyrightowner": "Seilbheadair na còrach-lethbhreac",
        "exif-usageterms": "Teirmichean a' chleachdaidh",
        "exif-contentwarning": "Rabhadh susbainte",
        "exif-giffilecomment": "Beachd faidhle GIF",
        "exif-intellectualgenre": "Seòrsa na susbainte",
+       "exif-subjectnewscode": "Còd a' chuspair",
+       "exif-scenecode": "Còd seallaidh IPTC",
        "exif-event": "Tachartas san dealbh",
        "exif-organisationinimage": "Buidheann san dealbh",
        "exif-personinimage": "Neach sa dealbh",
        "exif-contact-value": "$1\n\n$2\n<div class=\"adr\">\n$3\n\n$4, $5, $6 $7\n</div>\n$8",
        "exif-subjectnewscode-value": "$2 ($1)",
        "exif-compression-1": "Gun dùmhlachadh",
+       "exif-compression-3": "Còdachadh facs CCITT Group 3",
+       "exif-compression-4": "Còdachadh facs CCITT Group 4",
        "exif-compression-5": "LZW",
        "exif-compression-6": "JPEG (sean)",
        "exif-compression-7": "JPEG",
        "exif-exposureprogram-0": "Gun mhìneachadh",
        "exif-exposureprogram-1": "A làimh",
        "exif-exposureprogram-2": "Prògram àbhaisteach",
+       "exif-exposureprogram-3": "Prìomhachas fosglaidh",
+       "exif-exposureprogram-4": "Prìomhachas siutair",
+       "exif-exposureprogram-5": "Prògram cruthachail (le claonadh gu doimhne an raoin)",
+       "exif-exposureprogram-6": "Prògram gluasaid (le claonadh gu siutair luath)",
+       "exif-exposureprogram-7": "Modh portraid (airson dealbhan faisg gun fhòcas air a' chùlaibh)",
+       "exif-exposureprogram-8": "Modh crutha-tìre (airson dealbhan crutha-tìre le fòcas air a' chùlaibh)",
        "exif-subjectdistance-value": "$1 {{PLURAL:$1|mheatair|mheatair|meatairean|meatair}}",
        "exif-meteringmode-0": "Chan eil fhios",
        "exif-meteringmode-1": "Cuibheasach",
+       "exif-meteringmode-2": "Cuibheas le cuideam sa bheadhan",
+       "exif-meteringmode-3": "Spot",
+       "exif-meteringmode-4": "Iomadh-spot",
+       "exif-meteringmode-5": "Pàtran",
+       "exif-meteringmode-6": "Leth-phàirteach",
        "exif-meteringmode-255": "Eile",
        "exif-lightsource-0": "Chan eil fhios",
+       "exif-lightsource-1": "Eile",
+       "exif-lightsource-2": "Fluaraiseach",
+       "exif-lightsource-3": "Tungstan (solas-dealain)",
        "exif-lightsource-4": "Solas-boillsgidh",
+       "exif-lightsource-9": "Deagh shìde",
+       "exif-lightsource-10": "Sìde neulach",
+       "exif-lightsource-11": "Sgàil",
+       "exif-lightsource-12": "Fluaraiseach solas an latha (D 5700 – 7100K)",
+       "exif-lightsource-13": "Fluaraiseach geal an latha (N 4600 – 5400K)",
+       "exif-lightsource-14": "Fluaraiseach geal fuair (W 3900 – 4500K)",
+       "exif-lightsource-15": "Fluaraiseach geal (WW 3200 – 3700K)",
+       "exif-lightsource-17": "Solas stannardach A",
+       "exif-lightsource-18": "Solas stannardach B",
+       "exif-lightsource-19": "Solas stannardach C",
        "exif-lightsource-20": "D55",
        "exif-lightsource-21": "D65",
        "exif-lightsource-22": "D75",
        "exif-lightsource-23": "D50",
-       "exif-flash-mode-2": "bacadh riatanach air an t-solas-boillsgidh",
+       "exif-lightsource-24": "Tungstan stiùideo ISO",
+       "exif-lightsource-255": "Tùs solais eile",
+       "exif-flash-fired-0": "Cha deach an solas-boillsgidh air",
+       "exif-flash-fired-1": "Chaidh an solas-boillsgidh air",
+       "exif-flash-return-0": "gun fhoincsean mothachaidh airson an t-solais-bhoillsgidh",
+       "exif-flash-return-2": "cha deach solas-boillsgidh a mhothachadh",
+       "exif-flash-return-3": "chaidh solas-boillsgidh a mhothachadh",
+       "exif-flash-mode-1": "solas-boillsgidh riatanach",
+       "exif-flash-mode-2": "bacadh riatanach air an t-solas-bhoillsgidh",
        "exif-flash-mode-3": "modh fèin-obrachail",
+       "exif-flash-function-1": "Gun solas-boillsgidh",
+       "exif-flash-redeye-1": "modh lùghdachadh nan sùilean dearga",
        "exif-focalplaneresolutionunit-2": "òirleach",
        "exif-sensingmethod-1": "Gun mhìneachadh",
+       "exif-sensingmethod-2": "Mothaichear raon datha aon-sgeilbe",
+       "exif-sensingmethod-3": "Mothaichear raon datha dà-sgeilbe",
+       "exif-sensingmethod-4": "Mothaichear raon datha trì-sgeilbe",
+       "exif-sensingmethod-5": "Mothaichear raon datha sreathach",
+       "exif-sensingmethod-7": "Mothaichear trì-loidhneach",
+       "exif-sensingmethod-8": "Mothaichear datha sreathach loidhneach",
+       "exif-filesource-3": "Camara dhealbhan digiteach",
+       "exif-scenetype-1": "Dealbh a chaidh a thogail gu dìreach",
+       "exif-customrendered-0": "Pròiseas àbhaisteach",
+       "exif-customrendered-1": "Pròiseas gnàthaichte",
+       "exif-exposuremode-0": "Deisearas fèin-obrachail",
+       "exif-exposuremode-1": "Deisearas a làimh",
+       "exif-exposuremode-2": "Bracaid fèin-obrachail",
+       "exif-whitebalance-0": "Meidh na gile fèin-obrachail",
+       "exif-whitebalance-1": "Meidh na gile a làimh",
+       "exif-scenecapturetype-0": "Stannardach",
        "exif-scenecapturetype-1": "Dreach-tìre",
        "exif-scenecapturetype-2": "Portraid",
+       "exif-scenecapturetype-3": "Sealladh oidhche",
        "exif-gaincontrol-0": "Chan eil gin",
+       "exif-gaincontrol-1": "Buannachd ìosal suas",
+       "exif-gaincontrol-2": "Buannachd àrd suas",
+       "exif-gaincontrol-3": "Buannachd ìosal sìos",
+       "exif-gaincontrol-4": "Buannachd àrd sìos",
+       "exif-contrast-0": "Àbhaisteach",
+       "exif-contrast-1": "Lag",
+       "exif-contrast-2": "Cruaidh",
+       "exif-saturation-0": "Àbhaisteach",
+       "exif-saturation-1": "Sàthachd ìosal",
+       "exif-saturation-2": "Sàthachd àrd",
+       "exif-sharpness-0": "Àbhaisteach",
+       "exif-sharpness-1": "Lag",
+       "exif-sharpness-2": "Cruaidh",
+       "exif-subjectdistancerange-0": "Chan eil fios",
+       "exif-subjectdistancerange-1": "Macro",
+       "exif-subjectdistancerange-2": "Sealladh dlùth",
+       "exif-subjectdistancerange-3": "Sealladh aig astar",
+       "exif-gpslatitude-n": "Domhan-leud tuath",
+       "exif-gpslatitude-s": "Domhan-leud deas",
+       "exif-gpslongitude-e": "Domhan-fhad ear",
+       "exif-gpslongitude-w": "Domhan-fhad siar",
+       "exif-gpsaltitude-above-sealevel": "$1 {{PLURAL:$1|mheatair|mheatair|meatairean|meatair}} os cionn àirde na mara",
+       "exif-gpsaltitude-below-sealevel": "$1 {{PLURAL:$1|mheatair|mheatair|meatairean|meatair}} fo àirde na mara",
+       "exif-gpsstatus-a": "'Ga thomhas",
+       "exif-gpsstatus-v": "Comas eadar-obrachadh an tomhais",
+       "exif-gpsmeasuremode-2": "Tomhas air 2 dhimeinsean",
+       "exif-gpsmeasuremode-3": "Tomhas air 3 dimeinseanan",
        "exif-gpsspeed-k": "Cilemeatair san uair",
        "exif-gpsspeed-m": "Mìle gach uair",
        "exif-gpsspeed-n": "Mìle-mara san uair",
        "exif-gpsdestdistance-k": "Cilemeatair",
        "exif-gpsdestdistance-m": "Mìle",
        "exif-gpsdestdistance-n": "Mìle-mara",
+       "exif-gpsdop-excellent": "Sgoinneil ($1)",
+       "exif-gpsdop-good": "Math ($1)",
+       "exif-gpsdop-moderate": "Meadhanach ($1)",
+       "exif-gpsdop-fair": "Ceart gu leòr ($1)",
+       "exif-gpsdop-poor": "Dona ($1)",
+       "exif-objectcycle-a": "Sa madainn a-mhàin",
+       "exif-objectcycle-p": "Feasgar a-mhàin",
+       "exif-objectcycle-b": "An dà chuid sa mhadainn 's feasgar",
+       "exif-gpsdirection-t": "Fìor-chomhair",
+       "exif-gpsdirection-m": "Comhair mhagnaiteach",
+       "exif-ycbcrpositioning-1": "Meadhanaichte",
        "exif-dc-contributor": "Deasaichean",
+       "exif-dc-coverage": "Sgòp na h-aite no ama aig a' mheadhan",
        "exif-dc-date": "Ceann-là",
        "exif-dc-publisher": "Foillsichear",
        "exif-dc-relation": "Meadhanan co-cheangailte",
        "exif-rating-rejected": "Air a dhiùltadh",
        "exif-isospeedratings-overflow": "Nas motha na 65535",
        "exif-maxaperturevalue-value": "$1 APEX (f/$2)",
+       "exif-iimcategory-ace": "Na h-ealain, cultar 's dibhearsan",
+       "exif-iimcategory-clj": "Eucoir 's lagha",
+       "exif-iimcategory-dis": "Dunaidh 's tubhaistean",
+       "exif-iimcategory-fin": "Eaconamaidh 's gnìomhachas",
+       "exif-iimcategory-edu": "Foghlam",
+       "exif-iimcategory-evn": "An àrainneachd",
+       "exif-iimcategory-hth": "Slàinte",
+       "exif-iimcategory-hum": "Daoine",
+       "exif-iimcategory-lab": "Obair",
+       "exif-iimcategory-lif": "Dòigh-bheatha 's cur-seachad",
+       "exif-iimcategory-pol": "Polataigs",
+       "exif-iimcategory-rel": "Creideamh",
+       "exif-iimcategory-sci": "Saidheans 's teicneolas",
+       "exif-iimcategory-soi": "Cuspairean sòisealta",
+       "exif-iimcategory-spo": "Spòrs",
+       "exif-iimcategory-war": "Cogadh, còmhstri 's aramach",
+       "exif-iimcategory-wea": "Aimsir",
+       "exif-urgency-normal": "Àbhaisteach ($1)",
+       "exif-urgency-low": "Ìosal ($1)",
+       "exif-urgency-high": "Àrd ($1)",
+       "exif-urgency-other": "Prìomhachas gnàthaiche ($1)",
        "watchlistall2": "na h-uile",
        "namespacesall": "na h-uile",
        "monthsall": "na h-uile",
index bf56976..4567ce3 100644 (file)
@@ -34,7 +34,8 @@
                        "Tgr",
                        "Xbspiro",
                        "아라",
-                       "Csega"
+                       "Csega",
+                       "ViDam"
                ]
        },
        "tog-underline": "Hivatkozások aláhúzása:",
        "expand_templates_remove_nowiki": "<nowiki> tagek mellőzése az eredményben",
        "expand_templates_generate_xml": "XML elemzési fa mutatása",
        "expand_templates_generate_rawhtml": "Nyers HTML megjelenítése",
-       "expand_templates_preview": "Előnézet"
+       "expand_templates_preview": "Előnézet",
+       "pagelanguage": "Oldalnyelv-választó",
+       "pagelang-name": "Oldal",
+       "pagelang-language": "Nyelv",
+       "pagelang-use-default": "Alapértelmezett nyelv használata",
+       "pagelang-select-lang": "Nyelv kiválasztása",
+       "right-pagelang": "Oldal nyelvének megváltoztatása",
+       "action-pagelang": "oldal nyelvének módosítása",
+       "log-name-pagelang": "Nyelvváltoztatások naplója",
+       "log-description-pagelang": "Ebben a naplóban a lap nyelvének változásait követheted nyomon."
 }
index 63fd98e..8c8becf 100644 (file)
@@ -11,7 +11,8 @@
                        "Shirayuki",
                        "Yfdyh000",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Carlosedepaula"
                ]
        },
        "tog-underline": "Sublinear ligamines:",
        "expand_templates_remove_nowiki": "Supprimer le etiquettas <nowiki> in le resultato",
        "expand_templates_generate_xml": "Monstrar arbore syntactic XML",
        "expand_templates_generate_rawhtml": "Monstrar HTML brute",
-       "expand_templates_preview": "Previsualisation"
+       "expand_templates_preview": "Previsualisation",
+       "pagelang-name": "Pagina",
+       "pagelang-language": "Lingua",
+       "pagelang-use-default": "Usar lingua predefinite",
+       "pagelang-select-lang": "Selige lingua",
+       "right-pagelang": "Cambiar lingua del pagina",
+       "action-pagelang": "Cambiar lingua del pagina"
 }
index 6e0c06f..4a8673a 100644 (file)
        "expand_templates_remove_nowiki": "Elimina il tag <nowiki> nel risultato",
        "expand_templates_generate_xml": "Mostra albero sintattico XML",
        "expand_templates_generate_rawhtml": "Mostra HTML",
-       "expand_templates_preview": "Anteprima"
+       "expand_templates_preview": "Anteprima",
+       "pagelanguage": "Seleziona lingua della pagina",
+       "pagelang-name": "Pagina",
+       "pagelang-language": "Lingua",
+       "pagelang-use-default": "Utilizza la lingua predefinita",
+       "pagelang-select-lang": "Seleziona lingua",
+       "right-pagelang": "Modifica la lingua della pagina",
+       "action-pagelang": "modificare la lingua della pagina",
+       "log-name-pagelang": "Modifiche lingua",
+       "log-description-pagelang": "Questo è un registro delle modifiche alla lingua delle pagine.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ha modificato}} la lingua della pagina $3 da $4 a $5."
 }
index 464c083..4457755 100644 (file)
        "resetpass-abort-generic": "拡張機能により、パスワードの変更は取り消されました。",
        "resetpass-expired": "パスワードの有効期限が切れました。ログインするには新しいパスワードを設定してください。",
        "resetpass-expired-soft": "パスワードの有効期限が切れたため、再設定する必要があります。新しいパスワードを今すぐ設定するか、または「{{int:resetpass-submit-cancel}}」をクリックしてあとで再設定してください。",
-       "resetpass-validity-soft": "あなたのパスワードは無効です: $1\n\n今すぐ新しいパスワードに変更するか、{{int:resetpass-submit-cancel}} をクリックして後でリセットしてください。",
+       "resetpass-validity-soft": "あなたのパスワードは無効です: $1\n\n今すぐ新しいパスワードに変更するか、「{{int:resetpass-submit-cancel}}」をクリックして後で再設定してください。",
        "passwordreset": "パスワードの再設定",
        "passwordreset-text-one": "仮パスワードをメールで受け取るにはこのフォームに記入してください。",
        "passwordreset-text-many": "{{PLURAL:$1|仮パスワードをメールで受け取るにはいずれかの欄に記入してください。}}",
        "revdelete-show-file-confirm": "ファイル「<nowiki>$1</nowiki>」の削除された$2$3の版を本当に閲覧しますか?",
        "revdelete-show-file-submit": "はい",
        "revdelete-selected-text": "[[:$2]] の{{PLURAL:$1|選択された版}}:",
-       "revdelete-selected-file": "[[:$2]] の{{PLURAL:$1|選択された版|選択された版}}:",
+       "revdelete-selected-file": "[[:$2]] の{{PLURAL:$1|選択された版}}:",
        "logdelete-selected": "{{PLURAL:$1|選択された記録項目}}:",
        "revdelete-text-text": "削除された版は履歴に表示され続けますが、一般の利用者が内容を閲覧できなくなります。",
        "revdelete-text-file": "削除されたファイルの版はファイルの履歴に表示されつづけますが、一般の利用者はその内容の一部を閲覧できなくなります。",
        "wantedtemplates": "呼び出し先が存在しないテンプレート呼び出し",
        "mostlinked": "被リンク数の多いページ",
        "mostlinkedcategories": "被リンク数の多いカテゴリ",
-       "mostlinkedtemplates": "もっとも使用箇所の多いテンプレート",
+       "mostlinkedtemplates": "使用箇所の多いテンプレート",
        "mostcategories": "カテゴリの多いページ",
        "mostimages": "被リンク数の多いファイル",
        "mostinterwikis": "ウィキ間リンクの多いページ",
        "import-error-special": "ページ「$1」は、ページが許可されない特別名前空間に属しているため取り込みません。",
        "import-error-invalid": "名前が正しくないため、ページ「$1」を取り込みませんでした。",
        "import-error-unserialize": "ページ「$1」の版 $2 はシリアライズ解除できませんでした。この版は $4 としてシリアライズされたコンテンツモデル $3 を使用していると報告されています。",
-       "import-error-bad-location": "コンテンツモデル $3 はこのページではサポート外のため、モデル $3 を使っているリビジョン $2 はこのウィキ上の $1 に保存できません。",
+       "import-error-bad-location": "コンテンツモデル $3 はこのページではサポート外のため、モデル $3 を使用している版 $2 はこのウィキ上の「$1」に保存できません。",
        "import-options-wrong": "間違った{{PLURAL:$2|オプション}}です: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "入力したルートページの名前は無効です。",
        "import-rootpage-nosubpage": "ルートページの名前空間「$1」では、下位ページが許可されていません。",
        "expand_templates_remove_nowiki": "結果に含まれる <nowiki> タグを表示しない",
        "expand_templates_generate_xml": "XML 構文解析ツリーを表示",
        "expand_templates_generate_rawhtml": "HTML ソースを表示",
-       "expand_templates_preview": "プレビュー"
+       "expand_templates_preview": "プレビュー",
+       "pagelanguage": "ページ言語選択",
+       "pagelang-name": "ページ",
+       "pagelang-language": "言語",
+       "pagelang-use-default": "既定の言語を使用",
+       "pagelang-select-lang": "言語を選択",
+       "right-pagelang": "ページの言語を変更",
+       "action-pagelang": "ページの言語の変更",
+       "log-name-pagelang": "言語変更記録",
+       "log-description-pagelang": "これはページ言語の変更の記録です。",
+       "logentry-pagelang-pagelang": "$1 がページ $3 の言語を $4 から $5 に{{GENDER:$2|変更しました}}"
 }
index 884aac4..3ef0a6b 100644 (file)
        "rev-suppressed-unhide-diff": "Бір түзетуі (нұсқасы) <strong>жасырылған</strong>.\nЕгжей-тегжейін [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} жою журналынан] таба аласыз.\nЕгер жалғастырсаңыз [$1 бұл айырмашылықты] көре аласыз.",
        "rev-deleted-diff-view": "Бұл нұсқалар айырмасының бір нұсқасы <strong>жойылған</strong>.\n[{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Жою журналынан] егжей-тегжейін таба аласыз.",
        "rev-suppressed-diff-view": "Бұл нұсқалар айырмасының бір нұсқасы <strong>жасырылған</strong>.\n[{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Жасыру журналынан] егжей-тегжейін таба аласыз.",
-       "rev-delundel": "көÑ\80Ñ\96нÑ\96Ñ\81Ñ\96н Ó©Ð·Ð³ÐµÑ\80Ñ\82Ñ\83",
+       "rev-delundel": "көÑ\80Ñ\81еÑ\82/жаÑ\81Ñ\8bÑ\80",
        "rev-showdeleted": "көрсету",
        "revisiondelete": "Нұсқаларды жою/жоюды болдырмау",
        "revdelete-nooldid-title": "Нысана түзету жарамсыз",
        "revdelete-success": "'''Түзету көрінісі сәтті жаңартылды.'''",
        "revdelete-failure": "'''Түзету көрінісі жаңартылмады:'''\n$1",
        "logdelete-success": "'''Журнал көрінісі сәтті қойылды.'''",
-       "revdel-restore": "Ð\9aөрінісін өзгерту",
+       "revdel-restore": "көрінісін өзгерту",
        "pagehist": "Бет тарихы",
        "deletedhist": "Жойылған тарихы",
        "revdelete-otherreason": "Басқа/қосымша себеп:",
        "ipblocklist-empty": "Бұғаттау тізімі бос.",
        "ipblocklist-no-results": "Сұратылған IP мекенжай немесе қатысушы аты бұғатталмаған.",
        "blocklink": "бұғаттау",
-       "unblocklink": "бұÒ\93аÑ\82Ñ\82амау",
+       "unblocklink": "бұÒ\93аÑ\82Ñ\8bнан Ñ\88Ñ\8bÒ\93аÑ\80у",
        "change-blocklink": "бұғаттауын өзгерту",
        "contribslink": "үлесі",
        "emaillink": "хат жіберу",
index aba2a76..583b573 100644 (file)
        "pagecategories": "{{PLURAL:$1|Saachjrupp|Saachjruppe}}",
        "category_header": "Atikkele en dä Saachjrupp „$1“",
        "subcategories": "Ungerjruppe",
-       "category-media-header": "Dateie en de Saachjrupp \"$1\"",
+       "category-media-header": "Dateije en dä Saachjropp „$1“",
        "category-empty": "''En dä Saachjrupp heh sin kein Sigge un kein Dateie.''",
        "hidden-categories": "Verstoche Saachjrupp{{PLURAL:$1||e|e}}",
        "hidden-category-category": "Verstoche Saachjruppe",
        "duplicate-defaultsort": "'''Opjepaß:'''\nDä Shtanndat-Zoot-Schlößel „$1“ övverschriif dä älldere Zoot-Schlößel „$2“.",
        "version": "Väsjohn vun de Wiki Soffwär zeije",
        "version-extensions": "Installeete Erjänzunge un Zohsätz",
+       "version-skins": "Ovverflääsche",
        "version-specialpages": "{{int:nstab-special}}e",
        "version-parserhooks": "De Parser-Hooke",
        "version-variables": "Variable",
        "version-antispam": "SPAM verhendere",
-       "version-skins": "Ovverflääsche",
        "version-api": "<i lang=\"en\">API</i>",
        "version-other": "Söns",
        "version-mediahandlers": "Medije-Handler",
index 2244079..56c62e6 100644 (file)
        "duplicate-defaultsort": "'''മുന്നറിയിപ്പ്:''' ക്രമപ്പെടുത്താനുള്ള ചാവിയായ \"$2\" മുമ്പ് ക്രമപ്പെടുത്താനുള്ള ചാവിയായിരുന്ന \"$1\" എന്നതിനെ അതിലംഘിക്കുന്നു.",
        "version": "പതിപ്പ്",
        "version-extensions": "ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള അനുബന്ധങ്ങൾ",
-       "version-skins": "ദൃശ്യരൂപങ്ങൾ",
+       "version-skins": "à´\87ൻസàµ\8dà´±àµ\8dà´±àµ\8bൾ à´\9aàµ\86à´¯àµ\8dതിà´\9fàµ\8dà´\9fàµ\81à´³àµ\8dà´³ à´¦àµ\83à´¶àµ\8dയരàµ\82à´ªà´\99àµ\8dà´\99ൾ",
        "version-specialpages": "പ്രത്യേക താളുകൾ",
        "version-parserhooks": "പാഴ്‌സർ കൊളുത്തുകൾ",
        "version-variables": "ചരങ്ങൾ",
        "version-license": "മീഡിയവിക്കി ഉപയോഗാനുമതി",
        "version-ext-license": "അനുമതി",
        "version-ext-colheader-name": "അനുബന്ധം",
+       "version-skin-colheader-name": "ദൃശ്യരൂപം",
        "version-ext-colheader-version": "പതിപ്പ്",
        "version-ext-colheader-license": "ഉപയോഗാനുമതി",
        "version-ext-colheader-description": "വിവരണം",
        "expand_templates_remove_nowiki": "ഫലങ്ങളിലെ <nowiki> റ്റാഗുകൾ ഒതുക്കുക",
        "expand_templates_generate_xml": "എക്സ്.എം.എൽ. പാഴ്‌സർ ട്രീ പ്രദർശിപ്പിക്കുക",
        "expand_templates_generate_rawhtml": "അസംസ്കൃത എച്ച്.റ്റി.എം.എൽ. പ്രദർശിപ്പിക്കുക",
-       "expand_templates_preview": "എങ്ങനെയുണ്ടെന്നു കാണുക"
+       "expand_templates_preview": "എങ്ങനെയുണ്ടെന്നു കാണുക",
+       "pagelanguage": "താളിന്റെ ഭാഷാ തിരഞ്ഞെടുപ്പ് സൗകര്യം",
+       "pagelang-name": "താൾ",
+       "pagelang-language": "ഭാഷ",
+       "pagelang-use-default": "സ്വതേയുള്ള ഭാഷ ഉപയോഗിക്കുക",
+       "pagelang-select-lang": "ഭാഷ തിരഞ്ഞെടുക്കുക",
+       "right-pagelang": "താളിന്റെ ഭാഷ മാറ്റുക",
+       "action-pagelang": "താളിന്റെ ഭാഷ മാറ്റുക",
+       "log-name-pagelang": "ഭാഷ മാറ്റലിന്റെ രേഖ",
+       "log-description-pagelang": "താളുകളുടെ ഭാഷകൾ മാറ്റിയതിന്റെ രേഖകൾ ഇവിടെക്കാണാം.",
+       "logentry-pagelang-pagelang": "$3 എന്ന താളിന്റെ ഭാഷയായിരുന്ന $4, $1 $5 ആയി {{GENDER:$2|മാറ്റി}}."
 }
index 0a2d3ab..f29574c 100644 (file)
        "editinginterface": "'''Sè-jī:''' Lí tng teh siu-kái 1 bīn thê-kiong nńg-thé kài-bīn bûn-jī ê ia̍h. Jīn-hô kái-piàn to ē éng-hióng tio̍h kî-thaⁿ iōng-chiá ê sú-iōng kài-bīn. Nā beh kái hoan-e̍k, chhiaⁿ khì Ûi-ki Mûi-thé chāi-tē-hoà sū-kang [//translatewiki.net/ translatewiki.net] hiâ.",
        "cascadeprotected": "Chit-ê ia̍h í-keng hông pó-hō͘ bē kái tit. In-ūi i tī ē-bīn {{PLURAL:$1|ê|ê}} liân-só pó-hō͘ lāi-té:\n$2",
        "namespaceprotected": "Lí bô khoân-lī kái '''$1'''  miâ-khong-kan ê ia̍h",
+       "exception-nologin": "Bô teng-ji̍p",
+       "exception-nologin-text": "請先[[Special:Userlogin|登入]]了才有法度看這頁抑對這頁做動作。",
+       "exception-nologin-text-manual": "請先$1,才有法度看這頁抑對這頁做動作。",
+       "virus-badscanner": "設定毋著:你的病毒掃描程式阮毋知:<em>$1</em>",
+       "virus-scanfailed": "掃病毒無成功(代碼$1)",
        "virus-unknownscanner": "M̄-chai siáⁿ pēⁿ-to̍k:",
        "logouttext": "'''Lí í-keng teng-chhut.'''\nChhiaⁿ chù-ì: ū-kóa ia̍h ū khó-lêng khoàⁿ-tio̍h bē-su lí iáu teng-ji̍p tī leh; che chi-iàu piàⁿ tiāu liû-lám-khì ê khoài-chhú-khu, tiō ē chèng-siông.",
        "welcomeuser": "Hoan-gêng, $1!",
+       "welcomecreation-msg": "你的口座以經開好矣,\n你若有需要,會使去改你佇{{SITENAME}}的設定。",
        "yourname": "Lí ê iōng-chiá miâ-chheng:",
        "userlogin-yourname": "Iōng-chiá miâ-chheng",
+       "userlogin-yourname-ph": "拍你的用者名稱",
+       "createacct-another-username-ph": "拍你的用者名稱",
        "yourpassword": "Lí ê bi̍t-bé:",
        "userlogin-yourpassword": "Bi̍t-bé",
+       "userlogin-yourpassword-ph": "拍密碼",
        "createacct-yourpassword-ph": "拍密碼",
        "yourpasswordagain": "Têng phah bi̍t-bé:",
        "createacct-yourpasswordagain": "確認密碼",
        "userlogin-loggedin": "你已經用{{GENDER:$1|$1}}登入,用下跤的表,登入別个名。",
        "userlogin-createanother": "開另外一个口座",
        "createacct-emailrequired": "電子批地址",
+       "createacct-emailoptional": "電子批地址(無一定愛寫)",
        "createacct-email-ph": "拍你的電子批地址",
        "createacct-another-email-ph": "拍你的電子批地址",
        "createaccountmail": "Iōng chi̍t-ê lîm-sî loān-sò͘ sán-seng ê bi̍t-bé , kià khì goá chí-tēng ê tiān-chú-phoe tē-chí.",
        "loginerror": "Teng-ji̍p chhò-gō·",
        "createacct-error": "開口座無成功",
        "createaccounterror": "Bô hoat-tō͘ khui kháu-chō: $1",
+       "nocookiesnew": "你的用者口座已經開好矣,毋過你猶未登入,{{SITENAME}}有用Cookies做記錄登入的用者,你無允准用Cookies,請先共阻擋提掉,才閣用你的用者名稱佮密碼登入。",
+       "nocookieslogin": "{{SITENAME}}有用cookies做記錄用者,毋過你無允準用cookies,等你改做會當了後,才閣試。",
        "loginsuccesstitle": "Teng-ji̍p sêng-kong",
        "loginsuccess": "Lí hiān-chhú-sî í-keng teng-ji̍p {{SITENAME}} chò \"$1\".",
        "nosuchuser": "Chia bô iōng-chiá hō-chò \"$1\".\nIiōng-chiá hō-chò ū hun toā-jī sè-jī.\nChhiáⁿ kiám-cha lí ê phèng-im, a̍h-sī  [[Special:UserLogin/signup|khui sin iōng-chiá ê kháu-chō.]]",
index 9631879..fe962ef 100644 (file)
        "duplicate-defaultsort": "'''Waarschuwing:''' de standaardsortering \"$2\" krijgt voorrang voor de sortering \"$1\".",
        "version": "Versie",
        "version-extensions": "Geïnstalleerde uitbreidingen",
-       "version-skins": "Vormgevingen",
+       "version-skins": "Geïnstalleerde vormgevingen",
        "version-specialpages": "Speciale pagina's",
        "version-parserhooks": "Parserhooks",
        "version-variables": "Variabelen",
        "version-license": "Licentie voor MediaWiki",
        "version-ext-license": "Licentie",
        "version-ext-colheader-name": "Uitbreiding",
+       "version-skin-colheader-name": "Vormgeving",
        "version-ext-colheader-version": "Versie",
        "version-ext-colheader-license": "Licentie",
        "version-ext-colheader-description": "Beschrijving",
        "expand_templates_remove_nowiki": "Tags <nowiki> in resultaat onderdrukken",
        "expand_templates_generate_xml": "XML-parserboom bekijken",
        "expand_templates_generate_rawhtml": "Ruwe HTML weergeven",
-       "expand_templates_preview": "Voorvertoning"
+       "expand_templates_preview": "Voorvertoning",
+       "pagelang-name": "Pagina",
+       "pagelang-language": "Taal",
+       "pagelang-select-lang": "Taal selecteren"
 }
index c6b9987..59574f4 100644 (file)
        "mergehistory-empty": "Brak historii zmian do scalenia.",
        "mergehistory-success": "$3 {{PLURAL:$3|zmiana|zmiany|zmian}} w [[:$1]] zostało scalonych z [[:$2]].",
        "mergehistory-fail": "Scalenie historii zmian jest niewykonalne. Zmień ustawienia parametrów.",
+       "mergehistory-fail-toobig": "Nie można połączyć historii, gdyż wymagałoby to przeniesienia więcej niż maksymalnej dopuszczalnej liczby $1 {{PLURAL:$1|wersji}}.",
        "mergehistory-no-source": "Strona źródłowa $1 nie istnieje.",
        "mergehistory-no-destination": "Strona docelowa $1 nie istnieje.",
        "mergehistory-invalid-source": "Strona źródłowa musi mieć poprawną nazwę.",
        "expand_templates_remove_nowiki": "Ukrywaj w wyniku znaczniki <nowiki>",
        "expand_templates_generate_xml": "Pokaż drzewo analizatora składni w formacie XML",
        "expand_templates_generate_rawhtml": "Pokaż surowy HTML",
-       "expand_templates_preview": "Podgląd"
+       "expand_templates_preview": "Podgląd",
+       "pagelanguage": "Wybór języka strony",
+       "pagelang-name": "Strona",
+       "pagelang-language": "Język",
+       "pagelang-use-default": "Użyj domyślnego języka",
+       "pagelang-select-lang": "Wybierz język",
+       "right-pagelang": "Zmiana języka strony",
+       "action-pagelang": "zmiany języka strony",
+       "log-name-pagelang": "Rejestr zmian języka",
+       "log-description-pagelang": "Rejestr zmian języków przypisanych do poszczególnych stron",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|zmienił|zmieniła}} język strony $3 z „$4” na „$5”."
 }
index e1fd399..c43f5b3 100644 (file)
        "expand_templates_remove_nowiki": "Suprimir marcações <nowiki> no resultado",
        "expand_templates_generate_xml": "Mostrar a árvore de análise sintáctica do XML",
        "expand_templates_generate_rawhtml": "Mostrar o HTML puro",
-       "expand_templates_preview": "Antevisão do resultado"
+       "expand_templates_preview": "Antevisão do resultado",
+       "pagelanguage": "Seletor de idioma da página",
+       "pagelang-name": "Página",
+       "pagelang-language": "Idioma",
+       "pagelang-use-default": "Usar idioma pré-definido",
+       "pagelang-select-lang": "Escolher o idioma",
+       "right-pagelang": "Alterar o idioma da página",
+       "action-pagelang": "alterar o idioma da página",
+       "log-name-pagelang": "Alterar registo de idioma",
+       "log-description-pagelang": "Este é um registo de alterações aos idiomas das páginas.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|alterou}} o idioma da página $3 de $4 para $5."
 }
index 71af316..a10ad5a 100644 (file)
        "anonnotice": "{{notranslate}}",
        "newsectionheaderdefaultlevel": "{{notranslate}}\nParameters:\n* $1 - section name",
        "red-link-title": "Title for red hyperlinks. Indicates, that the page is empty, not written yet.\n\nParameters:\n* $1 - page title",
-       "sort-descending": "JavaScript message. Used by sortable table script.",
-       "sort-ascending": "JavaScript message. Used by sortable table script.",
+       "sort-descending": "JavaScript message. Used by sortable table script.\n\nSee also:\n* {{msg-mw|Sort-ascending}}",
+       "sort-ascending": "JavaScript message. Used by sortable table script.\n\nSee also:\n* {{msg-mw|Sort-descending}}\n{{Identical|Sort ascending}}",
        "nstab-main": "The name for the tab of the main namespace. Example: [[Example]]\n\nSee also:\n* {{msg-mw|Nstab-main}}\n* {{msg-mw|Accesskey-ca-nstab-main}}\n* {{msg-mw|Tooltip-ca-nstab-main}}\n{{Identical|Page}}",
        "nstab-user": "The name for the tab of the user namespace. Example: [[User:Example]]. It is possible to use <nowiki>{{GENDER:{{ROOTPAGENAME}}|male form|female form}}</nowiki> if needed.\n\nSee also:\n* {{msg-mw|Nstab-user}}\n* {{msg-mw|Accesskey-ca-nstab-user}}\n* {{msg-mw|Tooltip-ca-nstab-user}}\n{{Identical|User page}}",
        "nstab-media": "The name for the tab of the media namespace. Example: [[Media:Example]]\n\nSee also:\n* {{msg-mw|Nstab-media}}\n* {{msg-mw|Accesskey-ca-nstab-media}}\n* {{msg-mw|Tooltip-ca-nstab-media}}",
        "categoriespagetext": "{{doc-important|Do not translate or change links.}}\nText displayed in [[Special:Categories]].\n\nIn order to translate \"Unused categories\" and \"wanted categories\" see {{msg-mw|Unusedcategories}} and {{msg-mw|Wantedcategories}}.\n\nParameters:\n* $1 - number of categories",
        "categoriesfrom": "Used as label for the input box in [[Special:Categories]].\n\nThis message follows the fieldset label {{msg-mw|categories}}, and is followed by the input box.",
        "special-categories-sort-count": "Commented out at this time.\n\nThis message is used on [[Special:Categories]] to sort the list by the number of members in the categories.\n\nSee also:\n* {{msg-mw|Special-categories-sort-abc}}",
-       "special-categories-sort-abc": "Commented out at this time.\n\nThis message is used on [[Special:Categories]] to sort the list by the category name.\n\nSee also:\n* {{msg-mw|Special-categories-sort-count}}",
+       "special-categories-sort-abc": "Commented out at this time.\n\nThis message is used on [[Special:Categories]] to sort the list by the category name.\n\nSee also:\n* {{msg-mw|Special-categories-sort-count}}\n{{Identical|Sort alphabetically}}",
        "deletedcontributions": "The message is shown as a link on [[Special:SpecialPages]] to [[Special:DeletedContributions]].\n\n{{Identical|Deleted user contributions}}",
        "deletedcontributions-summary": "{{doc-specialpagesummary|deletedcontributions}}",
        "deletedcontributions-title": "Title of [[Special:DeletedContributions]] (extension), a special page with a list of edits to pages which were deleted. Only viewable by sysops.\n\n{{Identical|Deleted user contributions}}",
        "action-pagelang": "{{Doc-action|pagelang}}",
        "log-name-pagelang": "Display entry for log name for changes in page language in Special:Log.",
        "log-description-pagelang": "Display description for log name for changes in page language in Special:Log.",
-       "logentry-pagelang-pagelang": "Log entry for page language changes in Special:Log."
+       "logentry-pagelang-pagelang": "{{Logentry}}\nAdditional parameters:\n* $4 - old language code, or \"[def]\" (hard-coded)\n* $5 - new language code, or \"[def]\" (hard-coded)"
 }
index de9b5cf..4271f79 100644 (file)
        "expand_templates_remove_nowiki": "Suprimă etichetele <nowiki> în rezultat",
        "expand_templates_generate_xml": "Arată arborele de analiză XML",
        "expand_templates_generate_rawhtml": "Arată HTML brut",
-       "expand_templates_preview": "Previzualizare"
+       "expand_templates_preview": "Previzualizare",
+       "pagelanguage": "Selector limbă pagină",
+       "pagelang-name": "Pagină",
+       "pagelang-language": "Limbă",
+       "pagelang-use-default": "Folosește limba implicită",
+       "pagelang-select-lang": "Alege limba",
+       "right-pagelang": "Modifică limba paginii",
+       "action-pagelang": "modificați limba paginii",
+       "log-name-pagelang": "Jurnal modificare limbă",
+       "log-description-pagelang": "Acesta este un jurnal cu modificări ale limbii paginilor.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|a modificat}} limba paginii pentru $3 din $4 în $5."
 }
index 3bc2f4c..fce8dbb 100644 (file)
        "expand_templates_remove_nowiki": "Подавлять теги <nowiki> в результате",
        "expand_templates_generate_xml": "Показать дерево разбора XML",
        "expand_templates_generate_rawhtml": "Показать HTML",
-       "expand_templates_preview": "Предпросмотр"
+       "expand_templates_preview": "Предпросмотр",
+       "pagelanguage": "Выбор языка страницы",
+       "pagelang-name": "Страница",
+       "pagelang-language": "Язык",
+       "pagelang-use-default": "Использовать язык по умолчанию",
+       "pagelang-select-lang": "Выберите язык",
+       "right-pagelang": "Изменить язык страницы",
+       "action-pagelang": "изменять язык страницы",
+       "log-name-pagelang": "Журнал изменения языка",
+       "log-description-pagelang": "Это журнал изменений в языках страницы.",
+       "logentry-pagelang-pagelang": "$1 изменил{{GENDER:$2||а}} язык страницы для $3 с $4 на $5."
 }
index b9ea08d..62f3650 100644 (file)
        "tog-hidepatrolled": "Ammuccia li mudìfichi fatti ntâ l'ùrtimi canciamenti",
        "tog-newpageshidepatrolled": "Ammuccia li pàggini virificati di l'alencu dî pàgging cchiù novi",
        "tog-extendwatchlist": "Attiva tutti li funzioni avanzati pi l'ossirvati spiciali, nun sulu l'ultima",
-       "tog-usenewrc": "Utilizza Ùrtimi canciamenti avanzati (richiedi JavaScript)",
+       "tog-usenewrc": "Raggruppa li canci pi pàggina ntê canciamenti ricenti e ntâ lista dî taliati spiciali",
        "tog-numberheadings": "Nummirazzioni automàtica dî tìtuli di paràgrafu",
        "tog-showtoolbar": "Ammustra la barra dî strumenta pi lu canciamentu",
-       "tog-editondblclick": "Duppiu click pi canciari l'artìculu (richiedi Javascript)",
-       "tog-editsectiononrightclick": "Abbìlita lu canciamentu dî sezzioni tràmiti duppiu click supra lu tìtulu dâ sezzioni (richiedi Javascript)",
-       "tog-watchcreations": "Agghiunci li pàggini criati a l'ossirvati spiciali",
+       "tog-editondblclick": "Duppiu click pi canciari l'artìculu",
+       "tog-editsectiononrightclick": "Abbìlita lu canciamentu dî sizzioni tràmiti duppiu click a manu dritta supra lu tìtulu dâ sezzioni",
+       "tog-watchcreations": "Agghiunci li pàggini criati e li files â lista dî taliati",
        "tog-watchdefault": "Agghiunci li pàggini canciati a l'ossirvati spiciali",
        "tog-watchmoves": "Agghiunci li pàggini spustati a l'ossirvati spiciali",
        "tog-watchdeletion": "Agghiunci li pàggini di mìa cancillati a l'ossirvati spiciali",
index b2d4751..040772c 100644 (file)
        "expand_templates_remove_nowiki": "V rezultatu odstrani oznake <nowiki>",
        "expand_templates_generate_xml": "Pokaži razčlenitveno drevo XML",
        "expand_templates_generate_rawhtml": "Prikaži surovi HTML",
-       "expand_templates_preview": "Predogled"
+       "expand_templates_preview": "Predogled",
+       "pagelanguage": "Izbirnik jezika strani",
+       "pagelang-name": "Stran",
+       "pagelang-language": "Jezik",
+       "pagelang-use-default": "Uporabi privzeti jezik",
+       "pagelang-select-lang": "Izberite jezik",
+       "right-pagelang": "Spreminjanje jezika strani",
+       "action-pagelang": "spreminjanje jezika strani",
+       "log-name-pagelang": "Dnevnik spreminjanja jezika",
+       "log-description-pagelang": "Dnevnik sprememb jezika strani.",
+       "logentry-pagelang-pagelang": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} jezik strani $3 z jezika $4 na jezik $5."
 }
index a42ead2..7a5a4d8 100644 (file)
@@ -58,7 +58,7 @@
        "tog-watchlisthideminor": "Сакриј мање измене са списка надгледања",
        "tog-watchlisthideliu": "Сакриј измене пријављених корисника са списка надгледања",
        "tog-watchlisthideanons": "Сакриј измене анонимних корисника са списка надгледања",
-       "tog-watchlisthidepatrolled": "Сакриј прегледане измене са списка надгледања",
+       "tog-watchlisthidepatrolled": "Сакриј патролиране измене са списка надгледања",
        "tog-ccmeonemails": "Пошаљи ми копије е-порука које пошаљем другим корисницима",
        "tog-diffonly": "Не приказуј садржај странице испод разлика",
        "tog-showhiddencats": "Прикажи скривене категорије",
        "showhideselectedversions": "Прикажи/сакриј изабране измене",
        "editundo": "поништи",
        "diff-empty": "(Нема разлике)",
-       "diff-multi-sameuser": "({{PLURAL:$1|Једна међуизмена истог корисника није приказана|$1 међуизмена истог корисника није приказано}})",
-       "diff-multi-otherusers": "({{PLURAL:$1|Једна међуизмена|$1 међуизмена}} од стране {{PLURAL:$2|још једног корисника није приказана|$2 корисника није приказано}})",
+       "diff-multi-sameuser": "({{PLURAL:$1|Ð\88една Ð¼ÐµÑ\92Ñ\83измена Ð¸Ñ\81Ñ\82ог ÐºÐ¾Ñ\80иÑ\81ника Ð½Ð¸Ñ\98е Ð¿Ñ\80иказана|$1 Ð¼ÐµÑ\92Ñ\83измене Ð¸Ñ\81Ñ\82ог ÐºÐ¾Ñ\80иÑ\81ника Ð½Ð¸Ñ\98е Ð¿Ñ\80иказано|$1 Ð¼ÐµÑ\92Ñ\83измена Ð¸Ñ\81Ñ\82ог ÐºÐ¾Ñ\80иÑ\81ника Ð½Ð¸Ñ\98е Ð¿Ñ\80иказано}})",
+       "diff-multi-otherusers": "({{PLURAL:$1|Ð\88една Ð¼ÐµÑ\92Ñ\83измена|$1 Ð¼ÐµÑ\92Ñ\83измене|$1 Ð¼ÐµÑ\92Ñ\83измена}} Ð¾Ð´ Ñ\81Ñ\82Ñ\80ане {{PLURAL:$2|Ñ\98оÑ\88 Ñ\98едног ÐºÐ¾Ñ\80иÑ\81ника Ð½Ð¸Ñ\98е Ð¿Ñ\80иказана|$2 ÐºÐ¾Ñ\80иÑ\81ника Ð½Ð¸Ñ\98е Ð¿Ñ\80иказано}})",
        "diff-multi-manyusers": "({{PLURAL:$1|Није приказана међуизмена|Нису приказане $1 међуизмене|Није приказано $1 међуизмена}} од више од $2 корисника)",
        "difference-missing-revision": "Не могу да пронађем {{PLURAL:$2|једну измену|$2 измене|$2 измена}} од ове разлике ($1).\n\nОво се обично дешава када пратите застарелу везу до странице која је обрисана.\nВише информација можете пронаћи у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневнику брисања].",
        "searchresults": "Резултати претраге",
        "expand_templates_remove_nowiki": "Поништава ефекат <nowiki> тагова у приказу чланака",
        "expand_templates_generate_xml": "Прикажи XML стабло",
        "expand_templates_generate_rawhtml": "Прикажи сиров HTML",
-       "expand_templates_preview": "Приказ"
+       "expand_templates_preview": "Приказ",
+       "pagelang-name": "Страница",
+       "pagelang-language": "Језик",
+       "pagelang-select-lang": "Изабери језик",
+       "right-pagelang": "промена језика странице",
+       "action-pagelang": "промену језика странице"
 }
index 010c586..799eaea 100644 (file)
@@ -50,7 +50,7 @@
        "tog-watchlisthideminor": "Sakrij manje izmene sa spiska nadgledanja",
        "tog-watchlisthideliu": "Sakrij izmene prijavljenih korisnika sa spiska nadgledanja",
        "tog-watchlisthideanons": "Sakrij izmene anonimnih korisnika sa spiska nadgledanja",
-       "tog-watchlisthidepatrolled": "Sakrij pregledane izmene sa spiska nadgledanja",
+       "tog-watchlisthidepatrolled": "Sakrij patrolirane izmene sa spiska nadgledanja",
        "tog-ccmeonemails": "Pošalji mi primerke e-poruka koje pošaljem drugim korisnicima",
        "tog-diffonly": "Ne prikazuj sadržaj stranice ispod razlika",
        "tog-showhiddencats": "Prikaži skrivene kategorije",
        "showhideselectedversions": "Prikaži/sakrij izabrane izmene",
        "editundo": "poništi",
        "diff-empty": "(Nema razlike)",
-       "diff-multi-sameuser": "({{PLURAL:$1|Jedna međuizmena istog korisnika nije prikazana|$1 međuizmena istog korisnika nije prikazano}})",
-       "diff-multi-otherusers": "({{PLURAL:$1|Jedna međuizmena|$1 međuizmena}} od strane {{PLURAL:$2|još jednog korisnika nije prikazana|$2 korisnika nije prikazano}})",
+       "diff-multi-sameuser": "({{PLURAL:$1|Jedna međuizmena istog korisnika nije prikazana|$1 međuizmene istog korisnika nije prikazano|$1 međuizmena istog korisnika nije prikazano}})",
+       "diff-multi-otherusers": "({{PLURAL:$1|Jedna međuizmena|$1 međuizmene|$1 međuizmena}} od strane {{PLURAL:$2|još jednog korisnika nije prikazana|$2 korisnika nije prikazano}})",
        "diff-multi-manyusers": "({{PLURAL:$1|Nije prikazana međuizmena|Nisu prikazane $1 međuizmene|Nije prikazano $1 međuizmena}} od više od $2 korisnika)",
        "difference-missing-revision": "Ne mogu da pronađem {{PLURAL:$2|jednu izmenu|$2 izmene|$2 izmena}} od ove razlike ($1).\n\nOvo se obično dešava kada pratite zastarelu vezu do stranice koja je obrisana.\nViše informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} dnevniku brisanja].",
        "searchresults": "Rezultati pretrage",
index 024635e..6dc5f90 100644 (file)
        "subject": "Ämne/rubrik:",
        "minoredit": "Mindre ändring (m)",
        "watchthis": "Bevaka denna sida",
-       "savearticle": "Spara sida",
+       "savearticle": "Spara sidan",
        "preview": "Förhandsgranska",
        "showpreview": "Visa förhandsgranskning",
        "showdiff": "Visa ändringar",
        "allinnamespace": "Alla sidor (i namnrymden $1)",
        "allpagessubmit": "Visa",
        "allpagesprefix": "Visa sidor med prefixet:",
-       "allpagesbadtitle": "Den sökta sidtiteln var ogiltig eller så innehöll den ett prefix för annan språkversion eller interwiki-prefix. Titeln kan innehålla bokstäver som inte är tillåtna i sidtitlar.",
+       "allpagesbadtitle": "Den angivna sidtiteln var ogiltig eller innehöll ett prefix för annan språkversion eller ett interwiki-prefix.\nDen kan innehålla en eller fler tecken som inte är tillåtna i titlar.",
        "allpages-bad-ns": "Namnrymden \"$1\" finns inte på {{SITENAME}}.",
        "allpages-hide-redirects": "Göm omdirigeringar",
        "cachedspecial-viewing-cached-ttl": "Du visar en cachad version av denna sida, som kan vara upp till $1 gammal.",
        "expand_templates_remove_nowiki": "Undertryck <nowiki> taggar i resultatet",
        "expand_templates_generate_xml": "Visa parseträd som XML",
        "expand_templates_generate_rawhtml": "Visa rå HTML",
-       "expand_templates_preview": "Förhandsvisning"
+       "expand_templates_preview": "Förhandsvisning",
+       "pagelanguage": "Sidspråksväljare",
+       "pagelang-name": "Sida",
+       "pagelang-language": "Språk",
+       "pagelang-use-default": "Använd standardspråk",
+       "pagelang-select-lang": "Välj språk",
+       "right-pagelang": "Ändra sidans språk",
+       "action-pagelang": "ändra sidspråket",
+       "log-name-pagelang": "Språkändringslogg",
+       "log-description-pagelang": "Detta är en logg över ändringar i sidspråken.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ändrade}} sidspråket för $3 från $4 till $5."
 }
index b3a08bc..4648045 100644 (file)
        "currentrev": "Поточна версія",
        "currentrev-asof": "Поточна версія на $1",
        "revisionasof": "Версія за $1",
-       "revision-info": "Версія від $1; $2",
+       "revision-info": "Версія від $1, створена {{GENDER:$6|$2}}$7",
        "previousrevision": "← Попередня версія",
        "nextrevision": "Новіша версія →",
        "currentrevisionlink": "Поточна версія",
        "mergehistory-empty": "Не знайдені редагування для об'єднання.",
        "mergehistory-success": "$3 {{PLURAL:$3|редагування|редагування|редагувань}} з [[:$1]] успішно перенесені до [[:$2]].",
        "mergehistory-fail": "Не вдалося здійснити об'єднання історій сторінок, будь ласка, перевірте параметри сторінки й часу.",
+       "mergehistory-fail-toobig": "Не вдалося виконати злиття історії оскільки буде перейменовано більше, ніж ліміт у $1 {{PLURAL:$1|версію|версії|версій}}.",
        "mergehistory-no-source": "Вихідна сторінка «$1» не існує.",
        "mergehistory-no-destination": "Цільова сторінка «$1» не існує.",
        "mergehistory-invalid-source": "Джерело повинне мати правильний заголовок.",
        "largefileserver": "Розмір файлу більший за максимальнодозволений.",
        "emptyfile": "Завантажений вами файл ймовірно порожній. Можливо, це сталося через помилку при введенні імені файлу. Будь-ласка, перевірте, чи справді ви бажаєте звантажити цей файл.",
        "windows-nonascii-filename": "Ця вікі не підтримує імена файлів зі спеціальними символами.",
-       "fileexists": "Файл з такою назвою вже існує.\nБудь ласка, перевірте <strong>[[:$1]]</strong>, якщо ви не впевнені, чи хочете замінити його.\n[[$1|thumb]]",
+       "fileexists": "Файл з такою назвою вже існує.\nБудь ласка, перевірте <strong>[[:$1]]</strong>, якщо {{GENDER:|ви}} не впевнені, чи хочете замінити його.\n[[$1|thumb]]",
        "filepageexists": "Сторінка опису цього файлу вже створена як <strong>[[:$1]]</strong>, але файлу з такою назвою немає. Уведений опис не з'явиться на сторінці опису зображення. Щоб додати новий опис, вам доведеться змінити його вручну. [[$1|thumb]]",
-       "fileexists-extension": "Ð\86Ñ\81нÑ\83Ñ\94 Ñ\84айл Ð·Ñ\96 Ñ\81Ñ\85ожоÑ\8e Ð½Ð°Ð·Ð²Ð¾Ñ\8e: [[$2|thumb]]\n* Ð\9dазва Ð·Ð°Ð²Ð°Ð½Ñ\82аженого Ñ\84айлÑ\83: <strong>[[:$1]]</strong>\n* Ð\9dазва Ñ\96Ñ\81нÑ\83Ñ\8eÑ\87ого Ñ\84айлÑ\83: <strong>[[:$2]]</strong>\nÐ\91Ñ\83дÑ\8cÑ\82е Ð»Ð°Ñ\81кавÑ\96, Ð²Ð¸Ð±ÐµÑ\80Ñ\96Ñ\82Ñ\8c Ñ\96нÑ\88Ñ\83 Ð½Ð°Ð·Ð²Ñ\83.",
+       "fileexists-extension": "Ð\86Ñ\81нÑ\83Ñ\94 Ñ\84айл Ð·Ñ\96 Ñ\81Ñ\85ожоÑ\8e Ð½Ð°Ð·Ð²Ð¾Ñ\8e: [[$2|thumb]]\n* Ð\9dазва Ð·Ð°Ð²Ð°Ð½Ñ\82аженого Ñ\84айлÑ\83: <strong>[[:$1]]</strong>\n* Ð\9dазва Ñ\96Ñ\81нÑ\83Ñ\8eÑ\87ого Ñ\84айлÑ\83: <strong>[[:$2]]</strong>\nÐ\9cожливо, Ð²Ð¸ Ñ\85оÑ\87еÑ\82е Ð¾Ð±Ñ\80аÑ\82и Ð½Ð°Ð·Ð²Ñ\83, Ñ\89о Ð±Ñ\83де Ð±Ñ\96лÑ\8cÑ\88е Ð²Ñ\96дÑ\80Ñ\96знÑ\8fÑ\82иÑ\81Ñ\8f?",
        "fileexists-thumbnail-yes": "Можливо, файл є зменшеною копією (мініатюрою). [[$1|thumb]]\nБудь ласка, перевірте файл <strong>[[:$1]]</strong>.\nЯкщо вказаний файл є тим самим зображенням, не варто окремо завантажувати його зменшену копію.",
        "file-thumbnail-no": "Назва файлу починається на <strong>$1</strong>.\nМожливо, це зменшена копія зображення ''(мініатюра)''.\nЯкщо у вас є це зображення в повному розмірі, завантажте його, інакше змініть назву файлу.",
        "fileexists-forbidden": "Файл з такою назвою вже існує і не може бути перезаписаний.\nЯкщо ви все одно хочете завантажити цей файл, будь ласка, поверніться назад і оберіть іншу назву.\n[[File:$1|thumb|center|$1]]",
        "filedelete-maintenance": "Вилучення та відновлення файлів відімкнене на час технічних робіт.",
        "filedelete-maintenance-title": "Не вдається видалити файл",
        "mimesearch": "Пошук по MIME",
-       "mimesearch-summary": "Ця сторінка дозволяє вибирати файли за їх MIME-типом. Формат вводу: тип_вмісту/підтип, наприклад <code>image/jpeg</code>.",
+       "mimesearch-summary": "Ця сторінка дозволяє вибирати файли за їх MIME-типом. Формат вводу: тип_вмісту/підтип або тип_вмісту/* тощо, наприклад <code>image/jpeg</code>.",
        "mimetype": "MIME-тип:",
        "download": "завантажити",
        "unwatchedpages": "Сторінки, за якими ніхто не спостерігає",
        "wantedtemplates": "Необхідні шаблони",
        "mostlinked": "Сторінки, на які найбільше посилань",
        "mostlinkedcategories": "Найбільші категорії",
-       "mostlinkedtemplates": "Ð\9dайÑ\83живанÑ\96Ñ\88Ñ\96 Ñ\88аблони",
+       "mostlinkedtemplates": "Ð\9dайÑ\87аÑ\81Ñ\82Ñ\96Ñ\88е Ð²ÐºÐ»Ñ\8eÑ\87енÑ\96 Ñ\81Ñ\82оÑ\80Ñ\96нки",
        "mostcategories": "Статті з найбільшою кількістю категорій",
        "mostimages": "Найуживаніші зображення",
        "mostinterwikis": "Сторінки з найбільшою кількістю інтервікі-посилань",
        "watchlistedit-clear-titles": "Сторінки:",
        "watchlistedit-clear-submit": "Очистити список спостереження (це безповоротньо!)",
        "watchlistedit-clear-done": "Ваш список спостереження було очищено.",
+       "watchlistedit-clear-removed": "Було видалено {{PLURAL:$1|1 запис|$1 записів|$1 записи}}:",
        "watchlistedit-too-many": "Забагато сторінок для відображення тут.",
        "watchlisttools-clear": "Очистити список спостереження",
        "watchlisttools-view": "Зміни на сторінках зі списку",
        "duplicate-defaultsort": "Увага. Ключ сортування «$2» перекриває попередній ключ сортування «$1».",
        "version": "Версія MediaWiki",
        "version-extensions": "Установлені розширення",
-       "version-skins": "Ð\9eформлення",
+       "version-skins": "Ð\92Ñ\81Ñ\82ановленÑ\96 Ñ\82еми Ð¾формлення",
        "version-specialpages": "Спеціальні сторінки",
        "version-parserhooks": "Перехоплювачі синтаксичного аналізатора",
        "version-variables": "Змінні",
        "version-hook-name": "Ім'я перехоплювача",
        "version-hook-subscribedby": "Підписаний на",
        "version-version": "($1)",
+       "version-no-ext-name": "[без назви]",
        "version-svn-revision": "(r$2)",
        "version-license": "Ліцензія MediaWik",
        "version-ext-license": "Ліцензія",
        "version-ext-colheader-name": "Розширення",
+       "version-skin-colheader-name": "Тема оформлення",
        "version-ext-colheader-version": "Версія",
        "version-ext-colheader-license": "Ліцензія",
        "version-ext-colheader-description": "Опис",
        "expand_templates_remove_nowiki": "Ігнорувати теги <nowiki> в результаті",
        "expand_templates_generate_xml": "Показати дерево аналізу XML",
        "expand_templates_generate_rawhtml": "Показати сирий HTML",
-       "expand_templates_preview": "Попередній перегляд"
+       "expand_templates_preview": "Попередній перегляд",
+       "pagelanguage": "Вибір мови сторінки",
+       "pagelang-name": "Сторінка",
+       "pagelang-language": "Мова",
+       "pagelang-use-default": "Мова за замовчуванням",
+       "pagelang-select-lang": "Оберіть мову",
+       "right-pagelang": "Змінити мову сторінки",
+       "action-pagelang": "змінити мову сторінки",
+       "log-name-pagelang": "Журнал змін мови",
+       "log-description-pagelang": "Це журнал змін мови сторінок.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змінив|змінила}} мову сторінки для $3 з $4 на $5."
 }
index ed99e48..ee88984 100644 (file)
        "nextn-title": "$1 {{PLURAL:$1|kết quả|kết quả}} sau",
        "shown-title": "Hiển thị $1 {{PLURAL:$1|kết quả|kết quả}} mỗi trang",
        "viewprevnext": "Xem ($1 {{int:pipe-separator}} $2) ($3).",
-       "searchmenu-exists": "* Trang '''[[$1]]'''",
-       "searchmenu-new": "'''Tạo trang “[[:$1]]” trên wiki này!''' {{PLURAL:$2|0=|Hãy xem {{PLURAL:$2|kết quả|các kết quả}} tìm kiếm:}}",
+       "searchmenu-exists": "<strong>Có trang với tên “[[:$1]]” trên wiki này.</strong> {{PLURAL:$2|0=|Xem thêm các kết quả tìm kiếm bên dưới:}}",
+       "searchmenu-new": "'''Tạo trang “[[:$1]]” trên wiki này!''' {{PLURAL:$2|0=|Xem thêm {{PLURAL:$2|kết quả|các kết quả}} tìm kiếm:}}",
        "searchprofile-articles": "Trang nội dung",
        "searchprofile-images": "Đa phương tiện",
        "searchprofile-everything": "Tất cả",
        "expand_templates_remove_nowiki": "Bỏ qua thẻ <nowiki> trong kết quả",
        "expand_templates_generate_xml": "Xem cây phân tích XML",
        "expand_templates_generate_rawhtml": "Hiển thị HTML thô",
-       "expand_templates_preview": "Xem trước"
+       "expand_templates_preview": "Xem trước",
+       "pagelanguage": "Chọn ngôn ngữ trang",
+       "pagelang-name": "Trang",
+       "pagelang-language": "Ngôn ngữ",
+       "pagelang-use-default": "Sử dụng ngôn ngữ mặc định",
+       "pagelang-select-lang": "Chọn ngôn ngữ",
+       "right-pagelang": "Thay đổi ngôn ngữ của trang",
+       "action-pagelang": "thay đổi ngôn ngữ của trang",
+       "log-name-pagelang": "Nhật trình thay đổi ngôn ngữ",
+       "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."
 }
index c7d6f91..9ba9f20 100644 (file)
        "searchrelated": "פארבינדן",
        "searchall": "אלץ",
        "showingresults": "ווייזן ביז {{PLURAL:$1|רעזולטאט '''איינס'''|'''$1''' רעזולטאטן}} אנגעפאנגן פון נומער #'''$2''':",
+       "showingresultsinrange": "ווײַזן אונטן ביז {{PLURAL:$1|<strong>1</strong> רעזולטאט|<strong>$1</strong> רעזולטאטן}} אין גרייך #<strong>$2</strong> ביז #<strong>$3</strong>.",
        "showingresultsheader": "{{PLURAL:$5|רעזולטאַט '''$1''' פֿון '''$3'''| רעזולטאַטן '''$1 - $2''' פֿון '''$3'''}} פֿאַר '''$4'''",
        "search-nonefound": "נישטא קיין רעזולטאטן פֿאַר דער שאלה.",
        "powersearch-legend": "ווײַטהאלטן זוכן",
        "prefs-tokenwatchlist": "טאקן",
        "prefs-diffs": "צווישנשיידן",
        "prefs-help-prefershttps": "דער פרעפערענץ וועט ארבעטן ביי אײַער נעקסטער ארײַנלאגירונג.",
+       "prefs-tabs-navigation-hint": "טיפ: איר קענט ניצן די רעכטס און לינקס פייל־קלאווישן צו נאוויגירן צווישן די צינגלעך אין דער צינגלעך־ליסטע.",
        "email-address-validity-valid": "ע-פּאָסט אַדרעס זעט אויס גילטיק",
        "email-address-validity-invalid": "לייגט אַרײַן א גילטיקן ע־פאסט אַדרעס",
        "userrights": "באַניצער רעכטן פֿאַרוואַלטערשאפט",
        "uploadstash-errclear": "אוועקנעמען די טעקעס דורכגעפאלן.",
        "uploadstash-refresh": "דערפֿרישן די רשימה פון טעקעס",
        "img-auth-accessdenied": "צוטריט אָפגעזאָגט",
+       "img-auth-notindir": "געשיכטעס שטעג איז נישט אין דער קאנפיגורטער ארויפלאד־דירעקטאריע.",
        "img-auth-badtitle": "קען נישט שאפֿן א גילטיקן טיטל פֿון \"$1\"",
        "img-auth-nologinnWL": "איר זענט נישט ארײַנלאגירט און \"$1\" איז נישט אין דער ווײַסער ליסטע.",
        "img-auth-nofile": "טעקע \"$1\" עקזיסטירט נישט.",
        "creditspage": "בלאט קרעדיטס",
        "nocredits": "נישט פאראן קיין אינפארמאציע פאר דעם בלאט.",
        "spamprotectiontitle": "ספעם באשיצונג פילטער",
+       "spamprotectionmatch": "די פאלגנדער טעקסט האט געלאזט אין גאנג אונזער ספאם־פילטער: $1",
        "spambot_username": "מעדיעוויקי ספאם פוצן",
        "spam_reverting": "צוריקגעשטעלט צו דער לעצטער ווערסיע אן לינקען צו $1",
        "spam_blanking": "אלע רעוויזיעס האבן לינקען צו $1, אויסליידיקן",
        "spam_deleting": "אלע רעוויזיעס האבן לינקען צו $1, אויסמעקן",
+       "simpleantispam-label": "אנטי־ספאם קאנטראלע.\n'''נישט''' אײַנגעבן קיין אײַנגאב דא!",
        "pageinfo-title": "אינפֿאָרמאַציע פֿאַר \"$1\"",
        "pageinfo-not-current": "קען ווייזן אינפארמאציע נאר פאר דער לויפיקער רעוויזיע.",
        "pageinfo-header-basic": "גרונטלעכע אינפֿארמאַציע",
        "exif-giffilecomment": "GIF טעקע הערה",
        "exif-intellectualgenre": "ארט  איינהייט",
        "exif-subjectnewscode": "טעמע קאד",
+       "exif-scenecode": "IPTC סצענע־קאד",
+       "exif-event": "געוויזענער געשעעניש",
        "exif-organisationinimage": "אויסגעשטעלטע ארגאניזאציע",
        "exif-personinimage": "אויסגעשטעלטער מענטש",
+       "exif-originalimageheight": "בילד־הייך פארן צעשנײַדן",
+       "exif-originalimagewidth": "בילד־ברייט פארן צעשנײַדן",
        "exif-compression-1": "אומ-צאמגעקוועטשט",
        "exif-copyrighted-true": "געשיצט מיט קאפירעכט",
        "exif-copyrighted-false": "קאפירעכט סטאטוס נישט געשטעלט",
        "exif-lightsource-9": "פֿייַן וועטער",
        "exif-lightsource-10": "פאַרוואָלקנטער וועטער",
        "exif-lightsource-11": "שאָטן",
+       "exif-lightsource-255": "אנדער ליכטקוואל",
+       "exif-flash-fired-0": "קיין פלאש",
        "exif-flash-mode-3": "אויטא מאדע",
        "exif-flash-function-1": "קיין בליץ־פונקציע",
        "exif-flash-redeye-1": "רויט־אויג רעדוקציע",
        "watchlistedit-raw-done": "אייער אויפֿפאַסונג ליסטע איז געווארן דערהײַנטיקט",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 טיטל איז|$1 טיטלען זענען}} געווען צוגעלייגט:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 טיטל איז|$1 טיטלען זענען}} געווען אַראָפגענומען:",
+       "watchlistedit-clear-title": "אפגעראמט די אויפפאסן ליסטע",
        "watchlistedit-clear-legend": "ליידיקן די אויפפאסן ליסטע",
+       "watchlistedit-clear-explain": "אלע בלעטער וועט מען אראפנעמען פון אײַער אויפפאסונג־ליסטע",
        "watchlistedit-clear-titles": "טיטלען:",
        "watchlisttools-clear": "ליידיקן די אויפפאסן ליסטע",
        "watchlisttools-view": "ווייזן שייכדיגע ענדערונגען",
        "version-parser-extensiontags": "פארזער פארברייטערן טאַגן",
        "version-hook-name": "נאמען פון hook",
        "version-version": "(ווערסיע $1)",
+       "version-no-ext-name": "[קיין נאמען]",
        "version-license": "מעדיעוויקי ליצענץ",
        "version-ext-license": "ליצענץ",
        "version-ext-colheader-name": "פארברייטערונג",
+       "version-skin-colheader-name": "סקין",
        "version-ext-colheader-version": "ווערסיע",
        "version-ext-colheader-license": "ליצענץ",
        "version-ext-colheader-description": "באַשרײַבונג",
        "version-ext-colheader-credits": "שרייבער",
+       "version-license-title": "ליצענץ פאר $1",
        "version-poweredby-others": "אַנדערע",
        "version-poweredby-translators": "translatewiki.net איבערזעצער",
        "version-credits-summary": "מיר ווילן אנערקענען די פֿאלגנדע מענטשן פֿאר זייער בײַשטײַערוג צו [[Special:Version|מעדיעוויקי]].",
index f2282da..4c403ac 100644 (file)
@@ -75,7 +75,8 @@
                        "阿pp",
                        "Hudafu",
                        "아라",
-                       "Mywood"
+                       "Mywood",
+                       "Impersonator 1"
                ]
        },
        "tog-underline": "链接下划线:",
        "expand_templates_remove_nowiki": "在结果中隐藏<nowiki>标签",
        "expand_templates_generate_xml": "显示XML语法树",
        "expand_templates_generate_rawhtml": "显示原始HTML",
-       "expand_templates_preview": "预览"
+       "expand_templates_preview": "预览",
+       "pagelanguage": "页面语言选择器",
+       "pagelang-name": "页面",
+       "pagelang-language": "语言",
+       "pagelang-use-default": "使用默认语言",
+       "pagelang-select-lang": "选择语言",
+       "right-pagelang": "更改页面语言",
+       "action-pagelang": "更改页面语言",
+       "log-name-pagelang": "更改语言日志",
+       "log-description-pagelang": "这是页面语言更改的日志。",
+       "logentry-pagelang-pagelang": "$1{{GENDER:$2|更改}}$3的页面语言:从$4改为$5。"
 }
index 7787006..19b6c16 100644 (file)
@@ -53,7 +53,9 @@
                        "아라",
                        "Vincent Liu",
                        "Mywood",
-                       "Cwek"
+                       "Cwek",
+                       "Impersonator 1",
+                       "LNDDYL"
                ]
        },
        "tog-underline": "連結底線:",
@@ -73,9 +75,9 @@
        "tog-minordefault": "預設標記所有的編輯為小修訂",
        "tog-previewontop": "顯示預覽於編輯框上方",
        "tog-previewonfirst": "第一次編輯時顯示預覽",
-       "tog-enotifwatchlistpages": "當我的監視清單中的頁面或檔案有變更時,送電子郵件通知我",
-       "tog-enotifusertalkpages": "當我的對話頁面有變更時,送電子郵件通知我",
-       "tog-enotifminoredits": "當頁面與檔案有小修訂時,送電子郵件通知我",
+       "tog-enotifwatchlistpages": "當我的監視清單中的頁面或檔案有變更時,送電子郵件通知我",
+       "tog-enotifusertalkpages": "當我的對話頁面有變更時,送電子郵件通知我",
+       "tog-enotifminoredits": "當頁面與檔案有小修訂時,送電子郵件通知我",
        "tog-enotifrevealaddr": "在通知信件中顯示我的電子郵件位址",
        "tog-shownumberswatching": "顯示正在監視的使用者數",
        "tog-oldsig": "現有簽名:",
@@ -88,7 +90,7 @@
        "tog-watchlisthideliu": "隱藏監視清單中已登入使用者的編輯",
        "tog-watchlisthideanons": "隱藏監視清單中匿名使用者的編輯",
        "tog-watchlisthidepatrolled": "隱藏監視清單中已巡查的編輯",
-       "tog-ccmeonemails": "送郵件給他人時,也送一份副本到我的電子郵件信箱",
+       "tog-ccmeonemails": "送郵件給他人時,也送一份副本到我的電子郵件信箱",
        "tog-diffonly": "比對版本差異時下面不顯示頁面內容",
        "tog-showhiddencats": "顯示隱藏分類",
        "tog-norollbackdiff": "執行還原後略過差異比對",
        "categorypage": "檢視分類頁面",
        "viewtalkpage": "檢視討論頁面",
        "otherlanguages": "其他語言",
-       "redirectedfrom": "(重向自$1)",
-       "redirectpagesub": "重向頁面",
+       "redirectedfrom": "(重新導向自$1)",
+       "redirectpagesub": "重新導向頁面",
        "lastmodifiedat": "此頁面最後修訂於 $1 $2。",
        "viewcount": "此頁面已被檢視過 $1 次。",
        "protectedpage": "受保護頁面",
        "mainpage-description": "首頁",
        "policy-url": "Project:方針",
        "portal": "社群主頁",
-       "portal-url": "Project:社專頁",
+       "portal-url": "Project:社專頁",
        "privacy": "隱私政策",
        "privacypage": "Project:Privacy policy",
        "badaccess": "權限錯誤",
        "virus-unknownscanner": "不明的防毒程式:",
        "logouttext": "<strong>您現在已登出。</strong>\n\n請注意,某些頁面會以登入的狀態持續顯示,直到您清除瀏覽器快取為止。",
        "welcomeuser": "歡迎光臨,$1!",
-       "welcomecreation-msg": "您的帳已建立。\n可至 [[Special:Preferences|偏好設定]] 更新您在 {{SITENAME}} 的個人化設定。",
+       "welcomecreation-msg": "您的帳已建立。\n可至 [[Special:Preferences|偏好設定]] 更新您在 {{SITENAME}} 的個人化設定。",
        "yourname": "使用者名稱:",
        "userlogin-yourname": "使用者名稱",
        "userlogin-yourname-ph": "輸入您的使用者名稱",
        "userlogin-signwithsecure": "使用安全連線",
        "yourdomainname": "您的網域:",
        "password-change-forbidden": "您不可變更此 Wiki 上的密碼。",
-       "externaldberror": "這可能是由於資料庫驗證錯誤,或是不允許您更新外部帳。",
+       "externaldberror": "這可能是由於資料庫驗證錯誤,或是不允許您更新外部帳。",
        "login": "登入",
-       "nav-login-createaccount": "登入/建立帳",
+       "nav-login-createaccount": "登入/建立帳",
        "loginprompt": "您必須允許瀏覽器紀錄 Cookie 才能成功登入 {{SITENAME}}。",
-       "userlogin": "登入/建立帳",
+       "userlogin": "登入/建立帳",
        "userloginnocreate": "登入",
        "logout": "登出",
        "userlogout": "登出",
        "notloggedin": "未登入",
-       "userlogin-noaccount": "沒有帳嗎?",
+       "userlogin-noaccount": "沒有帳嗎?",
        "userlogin-joinproject": "加入 {{SITENAME}}",
-       "nologin": "您還沒有帳嗎? $1。",
-       "nologinlink": "建立帳",
-       "createaccount": "建立帳",
-       "gotaccount": "您已經擁有帳了嗎? $1。",
+       "nologin": "您還沒有帳嗎? $1。",
+       "nologinlink": "建立帳",
+       "createaccount": "建立帳",
+       "gotaccount": "您已經擁有帳了嗎? $1。",
        "gotaccountlink": "登入",
        "userlogin-resetlink": "您忘記了登入的詳細資訊?",
        "userlogin-resetpassword-link": "忘記密碼?",
        "userlogin-helplink2": "登入協助",
        "userlogin-loggedin": "您目前已登入 {{GENDER:$1|$1}} 使用者,\n請使用下列表單改登入另一位使用者。",
-       "userlogin-createanother": "建立另一個帳",
+       "userlogin-createanother": "建立另一個帳",
        "createacct-emailrequired": "電子郵件位址",
        "createacct-emailoptional": "電子郵件位址 (選填)",
        "createacct-email-ph": "輸入您的電子郵件位址",
        "createacct-another-email-ph": "輸入電子郵件位址",
-       "createaccountmail": "使用臨時的隨機密碼,並將它發送到指定的電子郵件地址",
+       "createaccountmail": "使用臨時的隨機密碼,並將它到指定的電子郵件地址",
        "createacct-realname": "真實姓名 (選填)",
        "createaccountreason": "原因:",
        "createacct-reason": "原因",
-       "createacct-reason-ph": "您為什麼要建立另一個帳",
+       "createacct-reason-ph": "您為什麼要建立另一個帳",
        "createacct-captcha": "安全驗證",
        "createacct-imgcaptcha-ph": "輸入您在上方看到的文字",
-       "createacct-submit": "建立您的帳",
-       "createacct-another-submit": "建立另一帳",
+       "createacct-submit": "建立您的帳",
+       "createacct-another-submit": "建立另一帳",
        "createacct-benefit-heading": "{{SITENAME}} 是由像您一樣貢獻的人所建立的。",
        "createacct-benefit-body1": " {{PLURAL:$1|次編輯}}",
        "createacct-benefit-body2": " $1 頁",
        "userexists": "您所輸入的使用者名稱已存在,請另選一個名稱。",
        "loginerror": "登入錯誤",
        "createacct-error": "帳號建立錯誤",
-       "createaccounterror": "無法建立帳:$1",
-       "nocookiesnew": "使用者帳已建立成功,但您尚未登入。\n要登入 {{SITENAME}} 使用者需使用 Cookies,\n您的 Cookies 未尚開啟。\n請在開啟後使用您新的使用者名稱及密碼登入。",
+       "createaccounterror": "無法建立帳:$1",
+       "nocookiesnew": "使用者帳已建立成功,但您尚未登入。\n要登入 {{SITENAME}} 使用者需使用 Cookies,\n您的 Cookies 未尚開啟。\n請在開啟後使用您新的使用者名稱及密碼登入。",
        "nocookieslogin": "要登入 {{SITENAME}} 使用者需使用 Cookies,\n您的 Cookies 未尚開啟。\n請在開啟後重試。",
-       "nocookiesfornew": "這個使用者的帳未建立,我們不能確認它的來源。\n請確認您已開啟 Cookie,重新載入後再試。",
+       "nocookiesfornew": "這個使用者的帳未建立,我們不能確認它的來源。\n請確認您已開啟 Cookie,重新載入後再試。",
        "noname": "您輸入的使用者名稱無效。",
        "loginsuccesstitle": "登入成功",
        "loginsuccess": "<strong>{{GENDER:|你|妳|你}}正使用 \"$1\" 的身份登入 {{SITENAME}}。</strong>",
-       "nosuchuser": "查無使用者 \"$1\"。\n使用者名稱有大小寫區分,\n請檢查您拼寫是否正確,或者 [[Special:UserLogin/signup|建立新帳]]。",
+       "nosuchuser": "查無使用者 \"$1\"。\n使用者名稱有大小寫區分,\n請檢查您拼寫是否正確,或者 [[Special:UserLogin/signup|建立新帳]]。",
        "nosuchusershort": "查無使用者 \"$1\",\n請檢查您拼寫是否正確。",
        "nouserspecified": "您必須指定一個使用者名稱。",
        "login-userblocked": "這位使用者已被封鎖,不允許登入。",
        "mailmypassword": "重設密碼",
        "passwordremindertitle": "{{SITENAME}} 的新臨時密碼",
        "passwordremindertext": "不明人士 (可能是您自己,來自 IP 位址 $1) 要求重設在 {{SITENAME}} ($4) 的密碼。\n給使用者 \"$2\" 的臨時密碼設為 \"$3\"。\n如果這個動作是您做的,您需要立即登入並設定一個新的密碼,\n您的臨時密碼將於{{PLURAL:$5|一|$5}}天內過期。\n\n如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略此訊息並且繼續使用您原本的密碼。",
-       "noemail": "使用者 \"$1\" 未登記電子郵件址。",
-       "noemailcreate": "您需要提供一個有效的電子郵件址。",
-       "passwordsent": "使用者 \"$1\" 的新密碼已寄至當出登記的電子郵件地址,\n請稍後收到信件後再登入。",
+       "noemail": "使用者 \"$1\" 未登記電子郵件址。",
+       "noemailcreate": "您需要提供一個有效的電子郵件址。",
+       "passwordsent": "使用者 \"$1\" 的新密碼已寄至當出登記的電子郵件地址,\n請稍後收到信件後再登入。",
        "blocked-mailpassword": "您的 IP 位址已被封鎖不允許編輯,密碼復原的功能也同樣被禁止使用以防止被濫用。",
-       "eauthentsent": "以發送一封確認信到您所設定的電子郵件地址。\n在未收到其它電子郵件前,您必須先依照信件中的指示,確認這個帳號確實是您本人。",
-       "throttled-mailpassword": "密碼重設的電子郵件已經在最近 $1 小時內送出。\n為防止濫用,$1 小時內只能發送一次密碼重設信件。",
-       "mailerror": "發送郵件錯誤:$1",
-       "acct_creation_throttle_hit": "使用您目前的 IP 位址的參觀者在最近一天建立了 {{PLURAL:$1|1 個帳號|$1 個帳號}},已超出系統允許的上限。\n因此,目前無法讓使用此 IP 位址的參觀者建立帳號。",
+       "eauthentsent": "已寄出一封確認信到您所設定的電子郵件位址。\n在未收到其它電子郵件前,您必須先依照信件中的指示,確認這個帳戶確實是您本人。",
+       "throttled-mailpassword": "密碼重設的電子郵件已經在最近 $1 小時內寄出。\n為防止濫用,$1 小時內只能寄出一次密碼重設信件。",
+       "mailerror": "寄出電子郵件錯誤:$1",
+       "acct_creation_throttle_hit": "使用您目前的 IP 位址的訪客在最近一天建立了 {{PLURAL:$1|1 個帳戶|$1 個帳戶}},已超出系統允許的上限。\n因此,目前無法讓使用此 IP 位址的訪客建立帳戶。",
        "emailauthenticated": "您的電子郵件位址已確認於 $2 的 $3。",
-       "emailnotauthenticated": "您的電子郵件地址尚未確認,\n尚不會發送以下功能的電子郵件給您。",
+       "emailnotauthenticated": "您的電子郵件地址尚未確認,\n尚不會寄出以下功能的電子郵件給您。",
        "noemailprefs": "在您的偏好設定中設定電子郵件地址,讓您可以使用這些功能。",
        "emailconfirmlink": "確認您的電子郵件位址",
        "invalidemailaddress": "無法接受格式不正確的電子郵件地址,\n請輸入正確的電子郵件地址格式或略過填寫該欄位。",
-       "cannotchangeemail": "此 Wiki 不允許更改帳的電子郵件位址。",
-       "emaildisabled": "此網站不能發送電子郵件。",
-       "accountcreated": "已建立帳",
-       "accountcreatedtext": "使用者帳 [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|對話]]) 已建立。",
-       "createaccount-title": "{{SITENAME}} 的帳建立",
-       "createaccount-text": "不明人士使用您的電子郵件位址在 {{SITENAME}} ($4) 建立了一個帳號名稱為 \"$2\",密碼為 \"$3\"。\n您應該立即登入並更改密碼。\n\n如果該帳號是建立錯誤的話,您可以忽略此訊息。",
+       "cannotchangeemail": "此 Wiki 不允許更改帳的電子郵件位址。",
+       "emaildisabled": "此網站不能寄出電子郵件。",
+       "accountcreated": "已建立帳",
+       "accountcreatedtext": "使用者帳 [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|對話]]) 已建立。",
+       "createaccount-title": "{{SITENAME}} 的帳建立",
+       "createaccount-text": "不明人士使用您的電子郵件位址在 {{SITENAME}} ($4) 建立了一個帳戶名稱為 \"$2\",密碼為 \"$3\"。\n您應該立即登入並更改密碼。\n\n如果該帳戶是建立錯誤的話,您可以忽略此訊息。",
        "login-throttled": "您已經嘗試太多次的登入動作。\n請稍等 $1 後再試。",
        "login-abort-generic": "您登入失敗 - 已中止",
        "loginlanguagelabel": "語言:$1",
        "createacct-another-realname-tip": "真實姓名為選填欄位。\n若您提供真實姓名,它會用於使用者貢獻署名。",
        "pt-login": "登入",
        "pt-login-button": "登入",
-       "pt-createaccount": "建立帳",
+       "pt-createaccount": "建立帳",
        "pt-userlogout": "登出",
        "php-mail-error-unknown": "PHP 的 mail() 函數發生不明錯誤。",
-       "user-mail-no-addy": "試圖發送沒有電子郵件地址的電子郵件。",
-       "user-mail-no-body": "試圖發送一個空的或異常簡短的電子郵件。",
+       "user-mail-no-addy": "試圖寄出沒有電子郵件位址的信件。",
+       "user-mail-no-body": "試圖寄出一個空的或異常簡短的電子郵件。",
        "changepassword": "變更密碼",
        "resetpass_announce": "要完成登入,您必須設定一個新密碼。",
        "resetpass_text": "<!-- 在此處加入文字 -->",
-       "resetpass_header": "變更帳密碼",
+       "resetpass_header": "變更帳密碼",
        "oldpassword": "舊密碼:",
        "newpassword": "新密碼:",
        "retypenew": "重新輸入新密碼:",
        "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": "您的密碼已過期。請設定一個新的密碼以登入。",
        "passwordreset-username": "使用者名稱:",
        "passwordreset-domain": "網域名稱:",
        "passwordreset-capture": "檢視電子郵件內容?",
-       "passwordreset-capture-help": "若您勾選此核選方塊,電子郵件 (包含臨時密碼) 將直接顯示,並發送給使用者。",
+       "passwordreset-capture-help": "若您勾選此核選方塊,電子郵件 (包含臨時密碼) 將直接顯示,並給使用者。",
        "passwordreset-email": "電子郵件位址:",
-       "passwordreset-emailtitle": "於 {{SITENAME}} 的帳詳細資訊",
-       "passwordreset-emailtext-ip": "不明人士 (可能是您自己,來自 IP 位址 $1) 要求重設在 {{SITENAME}} ($4) 的密碼,下列是與此電子郵件地址有關的使用者{{PLURAL:$3|帳號}}:\n\n$2\n\n{{PLURAL:$3|這個臨時密碼|這些臨時密碼}}將會在{{PLURAL:$5|一天|$5 天}}內到期,\n您應立即登入並更改新的密碼。如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略此訊息並且繼續使用您原本的密碼。",
-       "passwordreset-emailtext-user": "使用者 $1 要求重設在 {{SITENAME}} ($4) 的密碼,下列是與此電子郵件地址有關的使用者{{PLURAL:$3|帳號}}:\n\n$2\n\n{{PLURAL:$3|這個臨時密碼|這些臨時密碼}}將會在{{PLURAL:$5|一天|$5 天}}內到期,\n您應立即登入並更改新的密碼。如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略此訊息並且繼續使用您原本的密碼。",
+       "passwordreset-emailtitle": "於 {{SITENAME}} 的帳詳細資訊",
+       "passwordreset-emailtext-ip": "不明人士 (可能是您自己,來自 IP 位址 $1) 要求重設在 {{SITENAME}} ($4) 的密碼,下列是與此電子郵件位址有關的使用者{{PLURAL:$3|帳戶}}:\n\n$2\n\n{{PLURAL:$3|這個臨時密碼|這些臨時密碼}}將會在{{PLURAL:$5|一天|$5 天}}內到期,\n您應立即登入並更改新的密碼。如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略此訊息並且繼續使用您原本的密碼。",
+       "passwordreset-emailtext-user": "使用者 $1 要求重設在 {{SITENAME}} ($4) 的密碼,下列是與此電子郵件位址有關的使用者{{PLURAL:$3|帳戶}}:\n\n$2\n\n{{PLURAL:$3|這個臨時密碼|這些臨時密碼}}將會在{{PLURAL:$5|一天|$5 天}}內到期,\n您應立即登入並更改新的密碼。如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略此訊息並且繼續使用您原本的密碼。",
        "passwordreset-emailelement": "使用者名稱:$1\n臨時密碼:$2",
-       "passwordreset-emailsent": "已發送重設密碼的電子郵件。",
-       "passwordreset-emailsent-capture": "已發送重設密碼的電子郵件,並在下面顯示。",
-       "passwordreset-emailerror-capture": "產生的重設密碼的電子郵件如下所示,但送給{{GENDER:$2|使用者}}失敗:$1",
+       "passwordreset-emailsent": "已寄出重設密碼的電子郵件。",
+       "passwordreset-emailsent-capture": "已寄出重設密碼的電子郵件,並在下面顯示。",
+       "passwordreset-emailerror-capture": "產生的重設密碼的電子郵件如下所示,但送給{{GENDER:$2|使用者}}失敗:$1",
        "changeemail": "變更電子郵件位址",
-       "changeemail-header": "變更帳的電子郵件位址",
-       "changeemail-text": "填寫表格以修改您的電子郵件址。您需要輸入密碼以確認此次變更。",
-       "changeemail-no-info": "您必須登入方可直接訪問此頁面。",
+       "changeemail-header": "變更帳的電子郵件位址",
+       "changeemail-text": "填寫表格以修改您的電子郵件址。您需要輸入密碼以確認此次變更。",
+       "changeemail-no-info": "您必須登入方可直接存取此頁面。",
        "changeemail-oldemail": "目前的電子郵件位址:",
        "changeemail-newemail": "新的電子郵件位址:",
        "changeemail-none": "(無)",
        "changeemail-cancel": "取消",
        "changeemail-throttled": "您最近嘗試了太多次登入。\n請等待 $1 後再試。",
        "resettokens": "重設密鑰",
-       "resettokens-text": "您可以在此重設用來存取您帳號相關隱私資料的密鑰。\n\n若您不小心將您的密鑰分享給其他人或您的帳號已遭到入侵、破壞,應該要重設此密鑰。",
+       "resettokens-text": "您可以在此重設用來存取您帳戶相關隱私資料的密鑰。\n\n若您不小心將您的密鑰分享給其他人或您的帳戶已遭到入侵、破壞,應該要重設此密鑰。",
        "resettokens-no-tokens": "沒有可重設的密鑰。",
        "resettokens-legend": "重設密鑰",
        "resettokens-tokens": "密鑰:",
        "summary-preview": "摘要預覽:",
        "subject-preview": "主旨/標題預覽:",
        "blockedtitle": "使用者已被封鎖",
-       "blockedtext": "<strong>您的使用者名稱或 IP 位址以被封鎖。</strong>\n\n您被 $1 封鎖,\n原因爲 <em>$2</em>。\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯繫 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"送電子郵件給這位使用者\" 的功能來聯絡相關管理員。\n您目刖的 IP 位址是 $3,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
-       "autoblockedtext": "因先前的另一位使用者被 $1 封鎖,您的 IP 位址已被自動封鎖。\n原因是:\n\n:<em>$2</em>\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯繫 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"送電子郵件給這位使用者\" 的功能來聯絡相關管理員。\n您目刖的 IP 位址是 $3,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
+       "blockedtext": "<strong>您的使用者名稱或 IP 位址以被封鎖。</strong>\n\n您被 $1 封鎖,\n原因爲 <em>$2</em>。\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯繫 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"送電子郵件給這位使用者\" 的功能來聯絡相關管理員。\n您目刖的 IP 位址是 $3,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
+       "autoblockedtext": "因先前的另一位使用者被 $1 封鎖,您的 IP 位址已被自動封鎖。\n原因是:\n\n:<em>$2</em>\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯繫 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"送電子郵件給這位使用者\" 的功能來聯絡相關管理員。\n您目刖的 IP 位址是 $3,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
        "blockednoreason": "未說明原因",
        "whitelistedittext": "請先 $1 才可編輯頁面。",
        "confirmedittext": "在編輯此頁之前您必須確認您的電子郵件位址。\n請透過 [[Special:Preferences|偏好設定]] 設定並驗證您的電子郵件位址。",
        "nosuchsectiontitle": "找不到章節",
-       "nosuchsectiontext": "æ\82¨å\98\97試編輯ç\9a\84ç« ç¯\80並ä¸\8då­\98å\9c¨ã\80\82\nå\8f¯è\83½å\9c¨æ\82¨æ\9f¥ç\9c\8b頁面時已經移動或刪除。",
+       "nosuchsectiontext": "æ\82¨å\98\97試編輯ç\9a\84ç« ç¯\80並ä¸\8då­\98å\9c¨ã\80\82\nå\8f¯è\83½å\9c¨æ\82¨æª¢è¦\96頁面時已經移動或刪除。",
        "loginreqtitle": "需要登入",
        "loginreqlink": "登入",
        "loginreqpagetext": "您必須 $1 才能檢視其它頁面。",
        "accmailtext": "[[User talk:$1|$1]] 的隨機密碼已經寄送至 $2,可登入後至 <em>[[Special:ChangePassword|變更密碼]] 頁面更改</em>。",
        "newarticle": "(新)",
        "newarticletext": "您正連結至一頁不存在頁面。\n要建立該頁面,請在下方的編輯框中輸入內容 (詳情請參考 [$1 説明頁面])。\n如果您是不小心來到此頁面,請點選瀏覽器的 <strong>返回</strong> 按鈕。",
-       "anontalkpagetext": "----\n<em>此討論頁面是給尚未建立帳號的匿名使用者使用</em>\n因此我們必須使用 IP 位址來辨識身份,但相同的 IP 位置可能由許多不同的使用者所共用。\n如果您是匿名使用者並且覺得評論的內容與您無關,請 [[Special:UserLogin/signup|建立新帳號]] 或 [[Special:UserLogin|登入]] 避免與其他匿名使用者混淆。",
+       "anontalkpagetext": "----\n<em>此討論頁面是給尚未建立帳戶的匿名使用者使用</em>\n因此我們必須使用 IP 位址來辨識身份,但相同的 IP 位址可能由許多不同的使用者所共用。\n如果您是匿名使用者並且覺得評論的內容與您無關,請 [[Special:UserLogin/signup|建立新帳戶]] 或 [[Special:UserLogin|登入]] 避免與其他匿名使用者混淆。",
        "noarticletext": "此頁面目前沒有內容,\n您可以在其它頁面中 [[Special:Search/{{PAGENAME}}|搜尋此頁面標題]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜尋相關日誌],\n或 [{{fullurl:{{FULLPAGENAME}}|action=edit}} 編輯此頁]</span>。",
        "noarticletext-nopermission": "此頁面目前沒有內容,\n您可以在其它頁面中 [[Special:Search/{{PAGENAME}}|搜尋此頁面標題]],或 <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜尋相關日誌]</span>,但您沒有權限建立此頁面。",
        "missing-revision": "頁面名稱 \"{{FULLPAGENAME}}\" 的 #$1 修訂版本不存在。\n\n通常是因連結到過期的歷史頁面,該頁面已被刪除。\n詳情請參考 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]。",
-       "userpage-userdoesnotexist": "使用者帳 \"$1\" 尚未註冊。\n若您要建立/編輯此頁面,請先檢查是否正確。",
-       "userpage-userdoesnotexist-view": "使用者帳 \"$1\" 尚未註冊。",
+       "userpage-userdoesnotexist": "使用者帳 \"$1\" 尚未註冊。\n若您要建立/編輯此頁面,請先檢查是否正確。",
+       "userpage-userdoesnotexist-view": "使用者帳 \"$1\" 尚未註冊。",
        "blocked-notice-logextract": "此使用者目前已被封鎖。\n以下為最近的封鎖紀錄以供參考:",
        "clearyourcache": "<strong>注意:</strong> 在您儲存之後您必須清除瀏覽器快取才可看到最新的變動。\n* <strong>Firefox / Safari:</strong> 按住 <em>Shift</em> 時點選 <em>重新整理</em>,或按 <em>Ctrl-F5</em> 或 <em>Ctrl-R</em> (Mac 為 <em>⌘-R</em>)\n* <strong>Google Chrome:</strong> 按 <em>Ctrl-Shift-R</em> (Mac 為 <em>⌘-Shift-R</em>)\n* <strong>Internet Explorer:</strong> 按住 <em>Ctrl</em> 時點選 <em>重新整理</em>,或按 <em>Ctrl-F5</em>\n* <strong>Opera:</strong> 進入 <em>工具 → 偏好設定</em> 中清除快取。",
        "usercssyoucanpreview": "<strong>提示:</strong>在儲存之前使用 \"{{int:showpreview}}\" 按鈕來測試您的新 CSS。",
        "session_fail_preview": "<strong>很抱歉!由於連線階段的資料遺失,我們無法處理您的編輯動作。</strong>\n請再試一次。\n如果仍然失敗,請 [[Special:UserLogout|登出]] 後重新登入。",
        "session_fail_preview_html": "<strong>很抱歉!由於連線階段的資料遺失,我們無法處理您的編輯動作。</strong>\n\n<em>由於 {{SITENAME}} 開啟了原始 HTML 模式,將不會顯示預覽畫面以避免 JavaScript 攻擊。</em>\n\n<strong>若這是符合規範的編輯動作,請再試一次。</strong>\n如果仍然有問題,請 [[Special:UserLogout|登出]] 後再重新登入一次。",
        "token_suffix_mismatch": "<strong>您使用的瀏覽器刪除了編輯資訊中的特殊符號,已拒絕此編輯動作。</strong>\n為了避免破壞頁面內容,已拒絕此編輯動作,\n這通常是因為您使用了有問題的匿名網頁代理伺服器。",
-       "edit_form_incomplete": "<strong>部份編輯的內容未送至伺服器,請檢查您的編輯內容是否完整並再試一次。</strong>",
+       "edit_form_incomplete": "<strong>部份編輯的內容未送至伺服器,請檢查您的編輯內容是否完整並再試一次。</strong>",
        "editing": "正在編輯 $1",
        "creating": "正在建立 $1",
        "editingsection": "正在編輯 $1 (章節)",
        "explainconflict": "在您開始編輯之後已有其他人儲存了此頁面。\n上方的文字框內顯示了目前頁面中的文字內容,\n您所變更的文字內容顯示在下方文字框中。\n您須要將您所變更的文字內容合併到已儲存的文字內容當中。\n若您直接點選 \"{{int:savearticle}}\" <strong>只有</strong> 上方文字框中的內容會被儲存。",
        "yourtext": "您的文字",
        "storedversion": "已儲存修訂",
-       "nonunicodebrowser": "<strong>警告:您的瀏覽器不相容 Unicode。</strong>\n暫時解決的方式是先在您可安全編輯頁面的地方編輯:非 ASCII 字元在編輯框中會以 16 進位編碼顯示。",
+       "nonunicodebrowser": "<strong>警告:您的瀏覽器與 Unicode 不相容。</strong>\n暫時解決的方式是先在您可安全編輯頁面的地方編輯:非 ASCII 字元在編輯框中會以 16 進位編碼顯示。",
        "editingold": "<strong>警告:您目前正編輯頁面的舊修訂版本。</strong>\n若您儲存,在此修訂之後變更的任何內容將會遺失。",
        "yourdiff": "差異",
        "copyrightwarning": "請注意,所有於 {{SITENAME}} 所做的貢獻會依據 $2 授權條款發佈 (詳情請見 $1)。\n若您不希望您的著作被任意修改與散佈,請勿在此發表文章。<br />\n您同時向我們保証在此的著作內容是您自行撰寫,或是取自不受版權保護的公開領域或自由資源。\n<strong>請勿在未經授權的情況下發表文章!</strong>",
        "template-semiprotected": "(受半保護)",
        "hiddencategories": "此頁面屬於 {{PLURAL:$1|1 個隱藏分類|$1 個隱藏分類}}的成員:",
        "edittools": "<!-- 此處的文字將被顯示在編輯和上傳表單以下。 -->",
-       "nocreatetext": "{{SITENAME}} 已限制建立新頁面的功能。 {{GENDER:|你|妳|你}}可返回並編輯既有的頁面,或者 [[Special:UserLogin|登入或建立新帳]]。",
+       "nocreatetext": "{{SITENAME}} 已限制建立新頁面的功能。 {{GENDER:|你|妳|你}}可返回並編輯既有的頁面,或者 [[Special:UserLogin|登入或建立新帳]]。",
        "nocreate-loggedin": "您沒有權限建立新的頁面。",
        "sectioneditnotsupported-title": "不支援編輯章節",
        "sectioneditnotsupported-text": "此頁面不支援編輯章節。",
        "undo-nochange": "此編輯已被還原。",
        "undo-summary": "取消由 [[Special:Contributions/$2|$2]] ([[User talk:$2|對話]]) 所作出的修訂 $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''",
+       "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''",
        "viewpagelogs": "檢視此頁面的日誌",
        "nohistory": "此頁沒有任何的修訂記錄。",
        "currentrev": "最新修訂",
        "userrights-reason": "原因:",
        "userrights-no-interwiki": "您沒有權限去編輯其它使用者在 Wiki 上的權限。",
        "userrights-nodatabase": "資料庫 $1 不存在或不在本地主機的。",
-       "userrights-nologin": "您必須 [[Special:UserLogin|登入]] 管理員帳以指定使用者權限。",
+       "userrights-nologin": "您必須 [[Special:UserLogin|登入]] 管理員帳以指定使用者權限。",
        "userrights-notallowed": "你無權加入或刪除使用者權限。",
        "userrights-changeable-col": "您可變更的群組",
        "userrights-unchangeable-col": "您不可變更的群組",
        "right-edit": "編輯頁面",
        "right-createpage": "建立頁面 (不含討論頁面)",
        "right-createtalk": "建立討論頁面",
-       "right-createaccount": "建立新的使用者帳",
+       "right-createaccount": "建立新的使用者帳",
        "right-minoredit": "標示編輯為小修訂",
        "right-move": "移動頁面",
        "right-move-subpages": "移動頁面與其子頁面",
        "right-suppressrevision": "複查與還原由管理員隱藏的修訂",
        "right-suppressionlog": "檢視非公開日誌",
        "right-block": "封鎖其他使用者的編輯權限",
-       "right-blockemail": "封鎖使用者送電子郵件的權限",
+       "right-blockemail": "封鎖使用者送電子郵件的權限",
        "right-hideuser": "封鎖使用者名稱,避免公開顯示",
        "right-ipblock-exempt": "略過 IP 封鎖、自動封鎖及範圍封鎖檢查",
        "right-proxyunbannable": "略過 Proxy 自動封鎖檢查",
        "right-userrights-interwiki": "編輯使用者在其它 Wiki 上的權限",
        "right-siteadmin": "鎖定和解除鎖定資料庫",
        "right-override-export-depth": "匯出頁面包含連結內容,深度上限為 5 層",
-       "right-sendemail": "送電子郵件給其他使用者",
+       "right-sendemail": "送電子郵件給其他使用者",
        "right-passwordreset": "檢視重設密碼電子郵件",
        "newuserlogpage": "建立使用者日誌",
        "newuserlogpagetext": "此為建立使用者的日誌。",
        "action-edit": "編輯此頁面",
        "action-createpage": "建立頁面",
        "action-createtalk": "建立討論頁面",
-       "action-createaccount": "建立此使用者帳",
+       "action-createaccount": "建立此使用者帳",
        "action-history": "檢視此頁面歷史",
        "action-minoredit": "標示此編輯為小修訂",
        "action-move": "移動此頁面",
        "action-userrights": "編輯所有使用者的權限",
        "action-userrights-interwiki": "編輯在其它 Wiki 上的使用者權限",
        "action-siteadmin": "鎖定和解除鎖定資料庫",
-       "action-sendemail": "送電子郵件",
+       "action-sendemail": "送電子郵件",
        "action-editmywatchlist": "編輯您的監視清單",
-       "action-viewmywatchlist": "æ\9f¥ç\9c\8b您的監視清單",
+       "action-viewmywatchlist": "檢è¦\96您的監視清單",
        "action-viewmyprivateinfo": "查看您的個人資料",
        "action-editmyprivateinfo": "編輯您的個人資料",
        "nchanges": "$1 次變更",
        "listgrouprights-removegroup": "移除的{{PLURAL:$2|一個|多個}}群組: $1",
        "listgrouprights-addgroup-all": "加入所有群組",
        "listgrouprights-removegroup-all": "移除所有群組",
-       "listgrouprights-addgroup-self": "在自己的戶中加入的{{PLURAL:$2|一個|多個}}群組: $1",
-       "listgrouprights-removegroup-self": "在自己的戶中移除的{{PLURAL:$2|一個|多個}}群組: $1",
-       "listgrouprights-addgroup-self-all": "在自己的戶中加入所有群組",
-       "listgrouprights-removegroup-self-all": "在自己的戶中移除所有群組",
+       "listgrouprights-addgroup-self": "在自己的戶中加入的{{PLURAL:$2|一個|多個}}群組: $1",
+       "listgrouprights-removegroup-self": "在自己的戶中移除的{{PLURAL:$2|一個|多個}}群組: $1",
+       "listgrouprights-addgroup-self-all": "在自己的戶中加入所有群組",
+       "listgrouprights-removegroup-self-all": "在自己的戶中移除所有群組",
        "listgrouprights-namespaceprotection-header": "命名空間限制",
        "listgrouprights-namespaceprotection-namespace": "命名空間",
        "listgrouprights-namespaceprotection-restrictedto": "允許使用者編輯的權限",
        "hidden-category-category-desc": "此分類帶有<code><nowiki>__HIDDENCAT__</nowiki></code>,它預設防止於頁面分類連接盒中顯示。",
        "trackingcategories-nodesc": "並無說明。",
        "trackingcategories-disabled": "分類被禁用",
-       "mailnologin": "沒有送位址",
-       "mailnologintext": "您必須先 [[Special:UserLogin|登入]]\n並在 [[Special:Preferences|偏好設定]]\n中設定一個有效的電子郵件地址才可以送信件給其他使用者。",
+       "mailnologin": "沒有送位址",
+       "mailnologintext": "您必須先 [[Special:UserLogin|登入]]\n並在 [[Special:Preferences|偏好設定]]\n中設定一個有效的電子郵件地址才可以送信件給其他使用者。",
        "emailuser": "寄信給此使用者",
        "emailuser-title-target": "寄信給此{{GENDER:$1|使用者}}",
        "emailuser-title-notarget": "寄信給使用者",
        "emailpage": "E-mail 給使用者",
-       "emailpagetext": "您可以使用以下表格送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件地址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
-       "defemailsubject": "來自使用者 \"$1\" 於 {{SITENAME}} 發送的電子郵件",
+       "emailpagetext": "您可以使用以下表格送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件地址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
+       "defemailsubject": "來自使用者 \"$1\" 於 {{SITENAME}} 寄來的電子郵件",
        "usermaildisabled": "使用者電子郵件已停用",
-       "usermaildisabledtext": "您不可送信件到這個 Wiki 上的其他使用者",
-       "noemailtitle": "沒有電子郵件址",
-       "noemailtext": "此使用者尚未指定一個有效的電子郵件址。",
+       "usermaildisabledtext": "您不可送信件到這個 Wiki 上的其他使用者",
+       "noemailtitle": "沒有電子郵件址",
+       "noemailtext": "此使用者尚未指定一個有效的電子郵件址。",
        "nowikiemailtext": "此使用者選擇不接收其他使用者的信件。",
        "emailnotarget": "收件人不存在或無效的使用者名稱。",
        "emailtarget": "輸入收件人使用者名稱",
        "emailusername": "使用者名稱:",
        "emailusernamesubmit": "送出",
-       "email-legend": "送電子郵件給另一位 {{SITENAME}} 使用者",
+       "email-legend": "送電子郵件給另一位 {{SITENAME}} 使用者",
        "emailfrom": "寄件人:",
        "emailto": "收件人:",
        "emailsubject": "主題:",
        "emailmessage": "訊息:",
-       "emailsend": "送",
-       "emailccme": "送一份副本到我的電子郵件信箱。",
-       "emailccsubject": "您發送給 $1 的訊息副本:$2",
-       "emailsent": "電子郵件已發送",
+       "emailsend": "送",
+       "emailccme": "送一份副本到我的電子郵件信箱。",
+       "emailccsubject": "您給 $1 的訊息副本:$2",
+       "emailsent": "電子郵件已送出",
        "emailsenttext": "您的電子郵件訊息已經送出。",
-       "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"送信件給使用者\" 功能寄給 $2。",
+       "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"送信件給使用者\" 功能寄給 $2。",
        "usermessage-summary": "留給系統訊息。",
        "usermessage-editor": "系統訊息",
        "watchlist": "監視清單",
        "protect-text": "您可以在此檢視與修改頁面 <strong>$1</strong> 的保護層級。",
        "protect-locked-blocked": "頁面被封鎖,無法更改保護層級。\n以下為頁面 <strong>$1</strong> 目前的設定:",
        "protect-locked-dblock": "資料庫被鎖定,無法更改保護層級。\n以下為頁面 <strong>$1</strong> 目前的設定:",
-       "protect-locked-access": "您的帳沒有權限更改保護層級。\n以下為頁面 <strong>$1</strong> 目前的設定:",
+       "protect-locked-access": "您的帳沒有權限更改保護層級。\n以下為頁面 <strong>$1</strong> 目前的設定:",
        "protect-cascadeon": "此頁面目前受保護,因頁面被下列啟動連鎖保護的 $1 個頁面引用。\n更改此頁面的保護層級不會影響連鎖保護的作用。",
        "protect-default": "允許所有使用者",
        "protect-fallback": "僅允許有 \"$1\" 權限的使用者",
        "contributions-title": "$1 的使用者貢獻",
        "mycontris": "我的貢獻",
        "contribsub2": "{{GENDER:$3|$1}} 的貢獻 ($2)",
-       "contributions-userdoesnotexist": "使用者帳 \"$1\" 尚未註冊。",
+       "contributions-userdoesnotexist": "使用者帳 \"$1\" 尚未註冊。",
        "nocontribs": "沒有找到符合特徵的更改。",
        "uctop": "(目前)",
        "month": "截止月份:",
        "year": "截止年份:",
-       "sp-contributions-newbies": "只顯示新帳的貢獻",
+       "sp-contributions-newbies": "只顯示新帳的貢獻",
        "sp-contributions-newbies-sub": "新手",
-       "sp-contributions-newbies-title": "新帳的使用者貢獻",
+       "sp-contributions-newbies-title": "新帳的使用者貢獻",
        "sp-contributions-blocklog": "封鎖記錄",
        "sp-contributions-suppresslog": "已禁止顯示的使用者貢獻",
        "sp-contributions-deleted": "已刪除的使用者貢獻",
        "ipaddressorusername": "IP 位址或使用者名稱:",
        "ipbexpiry": "期限:",
        "ipbreason": "原因:",
-       "ipbreason-dropdown": "*常見的封鎖原因\n** 填寫不實資訊\n** 刪除頁面內容\n** 散佈外部廣告連結\n** 在頁面填寫無意義文字\n** 無禮的行為、攻擊/騷擾別人\n** 濫用多個帳\n** 使用不受歡迎的使用者名稱",
+       "ipbreason-dropdown": "*常見的封鎖原因\n** 填寫不實資訊\n** 刪除頁面內容\n** 散佈外部廣告連結\n** 在頁面填寫無意義文字\n** 無禮的行為、攻擊/騷擾別人\n** 濫用多個帳\n** 使用不受歡迎的使用者名稱",
        "ipb-hardblock": "避免使用此 IP 位址登入的使用者編輯",
-       "ipbcreateaccount": "禁止建立帳",
-       "ipbemailban": "禁止使用者送電子郵件",
-       "ipbenableautoblock": "自動封鎖此使用者最後使用的 IP 位,以及所有之後嘗試編輯使用的 IP 位址",
-       "ipbsubmit": "查封該地址",
+       "ipbcreateaccount": "禁止建立帳",
+       "ipbemailban": "禁止使用者送電子郵件",
+       "ipbenableautoblock": "自動封鎖此使用者最後使用的 IP 位,以及所有之後嘗試編輯使用的 IP 位址",
+       "ipbsubmit": "封禁該使用者",
        "ipbother": "其它時間:",
        "ipboptions": "2小時:2 hours,1天:1 day,3天:3 days,1周:1 week,2周:2 weeks,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year,無限期:infinite",
        "ipbhidename": "在編輯及清單中隱藏使用者名稱",
        "blocklist": "已封鎖的使用者",
        "ipblocklist": "已封鎖的使用者",
        "ipblocklist-legend": "搜尋已封鎖的使用者",
-       "blocklist-userblocks": "隱藏帳封鎖",
+       "blocklist-userblocks": "隱藏帳封鎖",
        "blocklist-tempblocks": "隱藏暫時封鎖",
        "blocklist-addressblocks": "隱藏單一 IP 封鎖",
        "blocklist-rangeblocks": "隱藏 IP 範圍封鎖",
        "expiringblock": "$1 $2 到期",
        "anononlyblock": "限匿名使用者",
        "noautoblockblock": "停用自動封鎖",
-       "createaccountblock": "停用帳建立",
+       "createaccountblock": "停用帳建立",
        "emailblock": "停用電子郵件",
        "blocklist-nousertalk": "無法編輯自己的對話頁面",
        "ipblocklist-empty": "封鎖清單無任何資訊。",
        "unblocklink": "解除封鎖",
        "change-blocklink": "變更封鎖",
        "contribslink": "貢獻",
-       "emaillink": "送電子郵件",
+       "emaillink": "送電子郵件",
        "autoblocker": "您的 IP 位址因最近被 [[User:$1|$1]] 使用過而被自動封鎖。\n封鎖 $1 的原因為 \"$2\"",
        "blocklogpage": "查封日誌",
        "blocklog-showlog": "此使用者先前被封鎖過。\n以下為封鎖紀錄以供參考:",
        "blocklogtext": "此為使用者的封鎖及取消封鎖記錄。\n不包自動封鎖的 IP 位址。\n請參考 [[Special:BlockList|封鎖清單]] 以查看目前的封鎖。",
        "unblocklogentry": "已解封 $1",
        "block-log-flags-anononly": "僅限匿名使用者",
-       "block-log-flags-nocreate": "停用帳建立",
+       "block-log-flags-nocreate": "停用帳建立",
        "block-log-flags-noautoblock": "停用自動封鎖",
        "block-log-flags-noemail": "停用電子郵件",
        "block-log-flags-nousertalk": "無法編輯自己的對話頁面",
        "range_block_disabled": "管理員可建立範圍封鎖的權限以被關閉。",
        "ipb_expiry_invalid": "無效的終止時間。",
        "ipb_expiry_temp": "隱藏使用者名稱的封鎖不可設定期限。",
-       "ipb_hide_invalid": "無法禁止顯示此帳;它擁有超過 $1 次的編輯。",
+       "ipb_hide_invalid": "無法禁止顯示此帳;它擁有超過 $1 次的編輯。",
        "ipb_already_blocked": "已經封鎖 \"$1\"。",
        "ipb-needreblock": "$1已經被封鎖。您是否想更改這個設定?",
        "ipb-otherblocks-header": "其他{{PLURAL:$1|封鎖}}",
        "proxyblocker": "代理封鎖器",
        "proxyblockreason": "因您的 IP 位址是開放代理伺服器,已被封鎖。\n請聯繫您的網路服務供應商或您所在組織的技術支援,告知他們此嚴重的安全性問題。",
        "sorbsreason": "您的IP位址在{{SITENAME}}中被 DNSBL列為屬於開放代理服務器。",
-       "sorbs_create_account_reason": "您連線到 {{SITENAME}} 的 IP 位址被 DNSBL 列為開放代理伺服。\n您不能建立帳號。",
+       "sorbs_create_account_reason": "您連線到 {{SITENAME}} 的 IP 位址被 DNSBL 列為開放代理伺服器。\n您不能建立帳戶。",
        "xffblockreason": "您的 IP 位址使用 X-Forwarded-For 標頭,您或您使用的代理伺服器已被封鎖。\n封鎖的原因為:$1",
        "cant-see-hidden-user": "您欲封鎖的使用者已經被封鎖並且隱藏。\n您沒有隱藏使用者的權限,您無法檢視或編輯該使用者的封鎖狀態。",
        "ipbblocked": "因您已被封鎖,故無法封鎖或解除封鎖其他使用者。",
        "move-page": "移動 $1",
        "move-page-legend": "移動頁面",
        "movepagetext": "以下表格可以用來重新命名頁面,並將該頁面的所有歷史記錄一併移至擁有新名稱的頁面。\n舊標題的頁面將會變成重定向頁面,指向使用新標題的頁面。\n您可以選擇自動更新所有指向舊頁面的重定向,讓它們改為指向新頁面。\n若您選擇不自動更新,請檢查有沒有[[Special:DoubleRedirects|雙重重定向]]或[[Special:BrokenRedirects|損壞的重定向]]需要修正。\n您有責任讓連結繼續指向正確的地方。\n\n請注意,若新的頁面名稱已經被使用,則此頁面將<strong>不會</strong>移動至該處,除非新名稱下是個重定向頁面而且沒有任何編輯記錄。\n即是說,您可以將錯誤移動至其他名稱的頁面還原到原有名稱,但不能覆蓋任何現有的頁面。\n\n<strong>警告!</strong>\n這個動作對受歡迎的頁面來說可能是重大而唐突的更改;\n在行動前請先確認您了解移動可能帶來的後果。",
-       "movepagetext-noredirectfixer": "以下表格可以用來重新命名頁面,並將該頁面的所有歷史記錄一併移至擁有新名稱的頁面。\n舊標題的頁面將會變成重定向頁面,指向使用新標題的頁面。\n請檢查有沒有[[Special:DoubleRedirects|雙重重定向]]或[[Special:BrokenRedirects|損壞的重定向]]需要修正。\n您有責任讓連結繼續指向正確的地方。\n\n請注意,若新的頁面名稱已經被使用,則此頁面將<strong>不會</strong>移動至該處,除非新名稱下是個重定向頁面而且沒有任何編輯記錄。\n即是說,您可以將錯誤移動至其他名稱的頁面還原到原有名稱,但不能覆蓋任何現有的頁面。\n\n<strong>警告!</strong>\n這個動作對受歡迎的頁面來說可能是重大而唐突的更改;\n在行動前請先確認您了解移動可能帶來的後果。",
+       "movepagetext-noredirectfixer": "以下表格可以用來重新命名頁面,並將該頁面的所有歷史記錄一併移至擁有新名稱的頁面。\n舊標題的頁面將會變成重新導向頁面,指向使用新標題的頁面。\n請檢查有沒有[[Special:DoubleRedirects|雙重重新導向]]或[[Special:BrokenRedirects|損壞的重新導向]]需要修正。\n您有責任讓連結繼續指向正確的地方。\n\n請注意,若新的頁面名稱已經被使用,則此頁面將<strong>不會</strong>移動至該處,除非新名稱下是個重新導向頁面而且沒有任何編輯記錄。\n即是說,您可以將錯誤移動至其他名稱的頁面還原到原有名稱,但不能覆蓋任何現有的頁面。\n\n<strong>警告!</strong>\n這個動作對受歡迎的頁面來說可能是重大而唐突的更改;\n在行動前請先確認您了解移動可能帶來的後果。",
        "movepagetalktext": "相關的的對話頁面 (如果有的話) 會自動與該頁面一起移動,<strong>除非:</strong>\n*新的名稱已有一個存在的對話頁面,或\n*您未勾選此核選方塊。\n\n在上述情況下,若有必要您必須手動移動或合併已存在的頁面。",
        "movearticle": "移動頁面:",
        "moveuserpage-warning": "<strong>警告:</strong>您正要移動使用者頁面,請注意只有使用者頁面會變更名稱,並<em>不會</em>重新命名使用者。",
        "tooltip-feed-rss": "訂閱此頁面的 RSS feed",
        "tooltip-feed-atom": "訂閱此頁面的 Atom feed",
        "tooltip-t-contributions": "此使用者的貢獻清單",
-       "tooltip-t-emailuser": "送電子郵件給這個使用者",
+       "tooltip-t-emailuser": "送電子郵件給這個使用者",
        "tooltip-t-upload": "上傳檔案",
        "tooltip-t-specialpages": "全部特殊頁面的列表",
        "tooltip-t-print": "此頁面的可列印版本",
        "expand_templates_remove_nowiki": "在結果中禁止顯示 <nowiki> 標籤",
        "expand_templates_generate_xml": "顯示 XML 解析樹",
        "expand_templates_generate_rawhtml": "顯示原始 HTML",
-       "expand_templates_preview": "預覽"
+       "expand_templates_preview": "預覽",
+       "pagelanguage": "頁面語言選擇器",
+       "pagelang-name": "頁面",
+       "pagelang-language": "語言",
+       "pagelang-use-default": "使用預設語言",
+       "pagelang-select-lang": "選擇語言",
+       "right-pagelang": "更改頁面語言",
+       "action-pagelang": "更改頁面語言",
+       "log-name-pagelang": "更改語言日誌",
+       "log-description-pagelang": "這是頁面語言更改日誌。",
+       "logentry-pagelang-pagelang": "$1{{GENDER:$2|更改}}$3頁面語言從$4到$5。"
 }
old mode 100755 (executable)
new mode 100644 (file)
index 8b0bee4..7ad74dc 100644 (file)
@@ -11,5 +11,9 @@
        "ooui-dialog-action-close": "Aizvērt",
        "ooui-outline-control-move-down": "Pārvietot vienumu uz leju",
        "ooui-outline-control-move-up": "Pārvietot vienumu uz augšu",
-       "ooui-toolbar-more": "Vairāk"
+       "ooui-toolbar-more": "Vairāk",
+       "ooui-dialog-confirm-title": "Apstiprināt",
+       "ooui-dialog-confirm-default-prompt": "Vai esat pārliecināts?",
+       "ooui-dialog-confirm-default-ok": "Labi",
+       "ooui-dialog-confirm-default-cancel": "Atcelt"
 }
index df78186..ff52c32 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="apply" style="opacity:0.75;">
-       <polygon id="check" style="fill-rule:evenodd;clip-rule:evenodd;" points="19.062,5.139 17.418,4 8.867,16.357 5.413,12.903 4,14.316 9.021,19.338"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="apply" opacity=".75">
+        <path id="check" fill-rule="evenodd" clip-rule="evenodd" d="M19.062 5.139l-1.644-1.139-8.551 12.357-3.454-3.454-1.413 1.413 5.021 5.022z"/>
+    </g>
 </svg>
index 2620e76..b25d5b7 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="apply" style="opacity:0.75;">
-       <path d="M13,8 L11,8 L11,11 L8,11 L8,13 L11,13 L11,16 L13,16 L13,13 L16,13 L16,11 L13,11 z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="apply" opacity=".75">
+        <path d="M13 8h-2v3h-3v2h3v3h2v-3h3v-2h-3z"/>
+    </g>
 </svg>
index 3e87cab..223b7fc 100644 (file)
@@ -1,17 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="settings" style="opacity:0.75;">
-       <path id="gear" style="fill-rule:evenodd;clip-rule:evenodd;" d="M20.869,13.476C20.948,12.994,21,12.504,21,12
-               s-0.052-0.994-0.131-1.476l-2.463-0.259c-0.149-0.556-0.367-1.082-0.648-1.57l1.558-1.924c-0.576-0.806-1.281-1.511-2.087-2.087
-               l-1.924,1.558c-0.488-0.281-1.015-0.499-1.57-0.648l-0.259-2.463C12.994,3.052,12.504,3,12,3s-0.994,0.052-1.476,0.131
-               l-0.259,2.463C9.71,5.743,9.184,5.961,8.695,6.242L6.771,4.685C5.966,5.261,5.261,5.966,4.685,6.771l1.558,1.924
-               c-0.281,0.488-0.499,1.015-0.648,1.57l-2.463,0.259C3.052,11.006,3,11.496,3,12s0.052,0.994,0.131,1.476l2.463,0.259
-               c0.149,0.556,0.367,1.082,0.648,1.57l-1.558,1.924c0.576,0.806,1.281,1.511,2.087,2.087l1.924-1.558
-               c0.488,0.281,1.015,0.499,1.57,0.648l0.259,2.463C11.006,20.948,11.496,21,12,21s0.994-0.052,1.476-0.131l0.259-2.463
-               c0.556-0.149,1.082-0.367,1.57-0.648l1.924,1.558c0.806-0.576,1.511-1.281,2.087-2.087l-1.558-1.924
-               c0.281-0.488,0.499-1.015,0.648-1.57L20.869,13.476z M12,15.998c-2.209,0-3.998-1.789-3.998-3.998S9.791,8.002,12,8.002
-               S15.998,9.791,15.998,12S14.209,15.998,12,15.998z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="settings" opacity=".75">
+        <path id="gear" d="M20.869 13.476c.079-.482.131-.972.131-1.476s-.052-.994-.131-1.476l-2.463-.259c-.149-.556-.367-1.082-.648-1.57l1.558-1.924c-.576-.806-1.281-1.511-2.087-2.087l-1.924 1.558c-.488-.281-1.015-.499-1.57-.648l-.259-2.463c-.482-.079-.972-.131-1.476-.131s-.994.052-1.476.131l-.259 2.463c-.555.149-1.081.367-1.57.648l-1.924-1.557c-.805.576-1.51 1.281-2.086 2.086l1.558 1.924c-.281.488-.499 1.015-.648 1.57l-2.463.259c-.08.482-.132.972-.132 1.476s.052.994.131 1.476l2.463.259c.149.556.367 1.082.648 1.57l-1.558 1.924c.576.806 1.281 1.511 2.087 2.087l1.924-1.558c.488.281 1.015.499 1.57.648l.259 2.463c.482.079.972.131 1.476.131s.994-.052 1.476-.131l.259-2.463c.556-.149 1.082-.367 1.57-.648l1.924 1.558c.806-.576 1.511-1.281 2.087-2.087l-1.558-1.924c.281-.488.499-1.015.648-1.57l2.463-.259zm-8.869 2.522c-2.209 0-3.998-1.789-3.998-3.998s1.789-3.998 3.998-3.998 3.998 1.789 3.998 3.998-1.789 3.998-3.998 3.998z" fill-rule="evenodd" clip-rule="evenodd"/>
+    </g>
 </svg>
index 886a7c0..fb25766 100644 (file)
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="alert" style="opacity:0.75;">
-       <rect id="point" x="11" y="16" style="fill-rule:evenodd;clip-rule:evenodd;" width="2" height="2"/>
-       <polygon id="stroke" style="fill-rule:evenodd;clip-rule:evenodd;" points="13.516,10 10.516,10 11,15 13,15"/>
-       <path id="triangle" d="M12.017,5.974L19.536,19H4.496L12.017,5.974 M12.017,3.5c-0.544,0-1.088,0.357-1.5,1.071L2.532,18.402 C1.707,19.831,2.382,21,4.032,21H20c1.65,0,2.325-1.169,1.5-2.599L13.517,4.572C13.104,3.857,12.561,3.5,12.017,3.5L12.017,3.5z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="alert" opacity=".75">
+        <path id="point" fill-rule="evenodd" clip-rule="evenodd" d="M11 16h2v2h-2z"/>
+        <path id="stroke" fill-rule="evenodd" clip-rule="evenodd" d="M13.516 10h-3l.484 5h2z"/>
+        <path id="triangle" d="M12.017 5.974l7.519 13.026h-15.04l7.521-13.026m0-2.474c-.544 0-1.088.357-1.5 1.071l-7.985 13.831c-.825 1.429-.15 2.598 1.5 2.598h15.968c1.65 0 2.325-1.169 1.5-2.599l-7.983-13.829c-.413-.715-.956-1.072-1.5-1.072z"/>
+    </g>
 </svg>
index 5b343a5..88a6a40 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="arched-arrow-ltr" style="opacity:0.75;">
-       <path id="arrow" style="fill-rule:evenodd;clip-rule:evenodd;" d="M19.925,14.937l-2.391-6.901l-1.48,2.329 c-0.964-0.845-2.699-1.85-5.513-1.823c-4.887,0.046-6.524,4.244-6.524,4.244s2.753-2.639,6.925-1.949 c1.729,0.286,3.007,1.206,3.675,1.791l-1.474,2.319L19.925,14.937z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="arched-arrow-ltr" opacity=".75">
+        <path id="arrow" d="M19.925 14.937l-2.391-6.901-1.48 2.329c-.964-.845-2.699-1.85-5.513-1.823-4.887.046-6.524 4.244-6.524 4.244s2.753-2.639 6.925-1.949c1.729.286 3.007 1.206 3.675 1.791l-1.474 2.319 6.782-.01z" fill-rule="evenodd" clip-rule="evenodd"/>
+    </g>
 </svg>
index bb5f10e..50541d2 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="arched-arrow-rtl" style="opacity:0.75;">
-       <path id="arrow" style="fill-rule:evenodd;clip-rule:evenodd;" d="M13.401,8.542c-2.814-0.027-4.549,0.978-5.513,1.823 l-1.48-2.329l-2.391,6.901l6.782,0.009l-1.474-2.319c0.668-0.584,1.945-1.504,3.675-1.791c4.172-0.69,6.925,1.949,6.925,1.949 S18.288,8.588,13.401,8.542z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="arched-arrow-rtl" opacity=".75">
+        <path id="arrow" d="M13.401 8.542c-2.814-.027-4.549.978-5.513 1.823l-1.48-2.329-2.391 6.901 6.782.009-1.474-2.319c.668-.584 1.945-1.504 3.675-1.791 4.172-.69 6.925 1.949 6.925 1.949s-1.637-4.197-6.524-4.243z" fill-rule="evenodd" clip-rule="evenodd"/>
+    </g>
 </svg>
index e67cd6c..8d4a1f8 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24" height="24" viewBox="0, 0, 24, 24">
-  <g id="check">
-    <path d="M7.105,13.473 L8.527,12.05 L10.428,13.952 L15.238,7 L16.895,8.148 L10.635,17 z" fill="#000000"/>
-  </g>
-  <defs/>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0, 0, 24, 24">
+    <g id="check">
+        <path d="M7.105 13.473l1.422-1.423 1.901 1.902 4.81-6.952 1.657 1.148-6.26 8.852z"/>
+    </g>
 </svg>
index d83eb02..484a104 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="clear" style="opacity:0.75;">
-       <path id="circle_with_strike" style="fill-rule:evenodd;clip-rule:evenodd;" d="M11.999,5.022c-3.853,0-6.977,3.124-6.977,6.978 c0,3.853,3.124,6.978,6.977,6.978c3.854,0,6.979-3.125,6.979-6.978C18.978,8.146,15.853,5.022,11.999,5.022z M6.886,12 c0-1.092,0.572-3.25,0.93-2.929l7.113,7.113c0.488,0.525-1.837,0.931-2.93,0.931C9.174,17.114,6.886,14.824,6.886,12z M16.184,14.929L9.07,7.816c-0.445-0.483,1.837-0.931,2.929-0.931c2.827,0,5.115,2.289,5.115,5.114 C17.114,13.092,16.75,15.542,16.184,14.929z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="clear" opacity=".75">
+        <path id="circle_with_strike" d="M11.999 5.022c-3.853 0-6.977 3.124-6.977 6.978 0 3.853 3.124 6.978 6.977 6.978 3.854 0 6.979-3.125 6.979-6.978 0-3.854-3.125-6.978-6.979-6.978zm-5.113 6.978c0-1.092.572-3.25.93-2.929l7.113 7.113c.488.525-1.837.931-2.93.931-2.825-.001-5.113-2.291-5.113-5.115zm9.298 2.929l-7.114-7.113c-.445-.483 1.837-.931 2.929-.931 2.827 0 5.115 2.289 5.115 5.114 0 1.093-.364 3.543-.93 2.93z" fill-rule="evenodd" clip-rule="evenodd"/>
+    </g>
 </svg>
index a0118c2..15278e9 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="close" style="opacity:0.75;">
-       <polygon id="x" style="fill-rule:evenodd;clip-rule:evenodd;" points="18.717,6.697 17.303,5.283 12,10.586 6.697,5.283 5.283,6.697 10.586,12 5.283,17.303 6.697,18.717 12,13.414 17.303,18.717 18.717,17.303 13.414,12            "/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="close" opacity=".75">
+        <path id="x" fill-rule="evenodd" clip-rule="evenodd" d="M18.717 6.697l-1.414-1.414-5.303 5.303-5.303-5.303-1.414 1.414 5.303 5.303-5.303 5.303 1.414 1.414 5.303-5.303 5.303 5.303 1.414-1.414-5.303-5.303z"/>
+    </g>
 </svg>
index 6f1ed53..a45ab1e 100644 (file)
@@ -1,14 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-        width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
-<g id="code" opacity="0.75">
-       <path id="left-bracket" d="M4,12v-1h1c1,0,1,0,1-1V7.614C6,7.1,6.024,6.718,6.073,6.472C6.127,6.22,6.212,6.009,6.33,5.839
-               C6.534,5.56,6.803,5.364,7.138,5.255C7.473,5.14,8.01,5,8.973,5H10v1H9.248c-0.457,0-0.77,0.191-0.936,0.408
-               C8.145,6.623,8,6.853,8,7.476v1.857c0,0.729-0.041,1.18-0.244,1.493c-0.2,0.307-0.562,0.529-1.09,0.667
-               c0.535,0.155,0.9,0.385,1.096,0.688C7.961,12.484,8,12.938,8,13.665v1.862c0,0.619,0.145,0.848,0.312,1.062
-               c0.166,0.22,0.479,0.407,0.936,0.407L10,17l0,0v1H8.973c-0.963,0-1.5-0.133-1.835-0.248c-0.335-0.109-0.604-0.307-0.808-0.591
-               c-0.118-0.165-0.203-0.374-0.257-0.625C6.024,16.283,6,15.9,6,15.387V13c0-1,0-1-1-1H4z"/>
-       <use transform="matrix(-1,0,0,1,24,0)" id="right-bracket" x="0" y="0" width="24" height="24" xlink:href="#left-bracket" />
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
+    <g id="code" opacity=".75">
+        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1v-2.386c0-.514.024-.896.073-1.142.054-.252.139-.463.257-.633.204-.279.473-.475.808-.584.335-.115.872-.255 1.835-.255h1.027v1h-.752c-.457 0-.77.191-.936.408-.167.215-.312.445-.312 1.068v1.857c0 .729-.041 1.18-.244 1.493-.2.307-.562.529-1.09.667.535.155.9.385 1.096.688.199.303.238.757.238 1.484v1.862c0 .619.145.848.312 1.062.166.22.479.407.936.407l.752.004v1h-1.027c-.963 0-1.5-.133-1.835-.248-.335-.109-.604-.307-.808-.591-.118-.165-.203-.374-.257-.625-.049-.253-.073-.636-.073-1.149v-2.387c0-1 0-1-1-1h-1z"/>
+        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
+    </g>
 </svg>
index a89cebf..97bdc50 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="collapse" style="opacity:0.75;">
-       <polygon id="arrow" style="fill-rule:evenodd;clip-rule:evenodd;" points="6.697,15.714 12,10.412 17.303,15.714 18.717,14.3 12,7.583 5.283,14.3"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="collapse" opacity=".75">
+        <path id="arrow" fill-rule="evenodd" clip-rule="evenodd" d="M6.697 15.714l5.303-5.302 5.303 5.302 1.414-1.414-6.717-6.717-6.717 6.717z"/>
+    </g>
 </svg>
index e052935..ebb038e 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="comment" style="opacity:0.75;">
-       <path id="speech_bubble" style="fill-rule:evenodd;clip-rule:evenodd;" d="M15,6H9C7.343,6,6,7.344,6,9v4c0,1.656,1.343,3,3,3v3 l3-3h3c1.657,0,3-1.344,3-3V9C18,7.344,16.657,6,15,6z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="comment" opacity=".75">
+        <path id="speech_bubble" d="M15 6h-6c-1.657 0-3 1.344-3 3v4c0 1.656 1.343 3 3 3v3l3-3h3c1.657 0 3-1.344 3-3v-4c0-1.656-1.343-3-3-3z" fill-rule="evenodd" clip-rule="evenodd"/>
+    </g>
 </svg>
index b542f5f..81c2ec0 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="expand" style="opacity:0.75;">
-       <polygon id="arrow" style="fill-rule:evenodd;clip-rule:evenodd;" points="17.303,8.283 12,13.586 6.697,8.283 5.283,9.697 12,16.414 18.717,9.697"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="expand" opacity=".75">
+        <path id="arrow" fill-rule="evenodd" clip-rule="evenodd" d="M17.303 8.283l-5.303 5.303-5.303-5.303-1.414 1.414 6.717 6.717 6.717-6.717z"/>
+    </g>
 </svg>
index c68bdda..09117e1 100644 (file)
@@ -1,12 +1,10 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="help" style="opacity:0.75;">
-       <path id="circle" style="fill-rule:evenodd;clip-rule:evenodd;" d="M12.001,2.085c-5.478,0-9.916,4.438-9.916,9.916 c0,5.476,4.438,9.914,9.916,9.914c5.476,0,9.914-4.438,9.914-9.914C21.915,6.523,17.477,2.085,12.001,2.085z M12.002,20.085 c-4.465,0-8.084-3.619-8.084-8.083c0-4.465,3.619-8.084,8.084-8.084c4.464,0,8.083,3.619,8.083,8.084 C20.085,16.466,16.466,20.085,12.002,20.085z"/>
-       <g id="question_mark">
-               <path id="top" style="fill-rule:evenodd;clip-rule:evenodd;" d="M11.766,6.688c-2.5,0-3.219,2.188-3.219,2.188l1.411,0.854 c0,0,0.298-0.791,0.901-1.229c0.516-0.375,1.625-0.625,2.219,0.125c0.701,0.885-0.17,1.587-1.078,2.719 C11.047,12.531,11,15,11,15h1.969c0,0,0.135-2.318,1.041-3.381c0.603-0.707,1.443-1.338,1.443-2.494S14.266,6.688,11.766,6.688z"/>
-               <rect id="bottom" x="11" y="16" style="fill-rule:evenodd;clip-rule:evenodd;" width="2" height="2"/>
-       </g>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="help" opacity=".75" fill-rule="evenodd" clip-rule="evenodd">
+        <path id="circle" d="M12.001 2.085c-5.478 0-9.916 4.438-9.916 9.916 0 5.476 4.438 9.914 9.916 9.914 5.476 0 9.914-4.438 9.914-9.914 0-5.478-4.438-9.916-9.914-9.916zm.001 18c-4.465 0-8.084-3.619-8.084-8.083 0-4.465 3.619-8.084 8.084-8.084 4.464 0 8.083 3.619 8.083 8.084 0 4.464-3.619 8.083-8.083 8.083z"/>
+        <g id="question_mark">
+            <path id="top" d="M11.766 6.688c-2.5 0-3.219 2.188-3.219 2.188l1.411.854s.298-.791.901-1.229c.516-.375 1.625-.625 2.219.125.701.885-.17 1.587-1.078 2.719-.953 1.186-1 3.655-1 3.655h1.969s.135-2.318 1.041-3.381c.603-.707 1.443-1.338 1.443-2.494s-1.187-2.437-3.687-2.437z"/>
+            <path id="bottom" d="M11 16h2v2h-2z"/>
+        </g>
+    </g>
 </svg>
index 40c0ae3..a89e257 100644 (file)
@@ -1,9 +1,7 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="history" style="opacity:0.75;">
-       <path id="clock_hands" style="fill-rule:evenodd;clip-rule:evenodd;" d="M17.26,15.076c0,0-2.385-1.935-4.005-3.062 c0.72-2.397,1.702-6.559,1.702-6.559s-4.35,5.363-4.877,6.699c-0.463,1.168,1.459,2.209,2.346,1.678 C14.326,14.383,17.26,15.076,17.26,15.076z"/>
-       <path id="arrow" style="fill-rule:evenodd;clip-rule:evenodd;" d="M12.086,2.085c-5.478,0-9.916,4.438-9.916,9.916 c0,1.783,0.476,3.454,1.301,4.898l-2.223,2.04h5.688v-5.219l-2.066,1.896c-0.55-1.088-0.866-2.312-0.866-3.615 c0-4.465,3.619-8.084,8.084-8.084c4.464,0,8.083,3.619,8.083,8.084c0,4.464-3.619,8.083-8.083,8.083 c-1.145,0-2.228-0.247-3.213-0.678l-0.833,1.634c1.235,0.557,2.602,0.874,4.045,0.874c5.476,0,9.914-4.438,9.914-9.914 C22,6.523,17.562,2.085,12.086,2.085z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="history" opacity=".75" fill-rule="evenodd" clip-rule="evenodd">
+        <path id="clock_hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.559 1.702-6.559s-4.35 5.363-4.877 6.699c-.463 1.168 1.459 2.209 2.346 1.678 1.9.551 4.834 1.244 4.834 1.244z"/>
+        <path id="arrow" d="M12.086 2.085c-5.478 0-9.916 4.438-9.916 9.916 0 1.783.476 3.454 1.301 4.898l-2.223 2.04h5.688v-5.219l-2.066 1.896c-.55-1.088-.866-2.312-.866-3.615 0-4.465 3.619-8.084 8.084-8.084 4.464 0 8.083 3.619 8.083 8.084 0 4.464-3.619 8.083-8.083 8.083-1.145 0-2.228-.247-3.213-.678l-.833 1.634c1.235.557 2.602.874 4.045.874 5.476 0 9.914-4.438 9.914-9.914-.001-5.477-4.439-9.915-9.915-9.915z"/>
+    </g>
 </svg>
index 8c5672a..22ad9be 100644 (file)
@@ -1,10 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24" height="24" viewBox="0, 0, 24, 24">
-  <g id="help" opacity="0.75">
-    <path d="M11.499,17 C8.463,17 6,14.536 6,11.5 C6,8.463 8.462,6 11.499,6 C14.536,6 17,8.462 17,11.5 C17,14.536 14.536,17 11.499,17 z M11.501,5 C7.91,5 5,7.91 5,11.5 C5,15.09 7.91,18 11.501,18 C15.089,18 18,15.089 18,11.5 C18,7.911 15.089,5 11.501,5 z" fill="#000000"/>
-    <path d="M12,10 L12,14 L13,14 L13,15 L10,15 L10,14 L11,14 L11,11 L10,11 L10,10 z" fill="#000000"/>
-    <path d="M11,8 L12,8 L12,9 L11,9 z" fill="#000000"/>
-  </g>
-  <defs/>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0, 0, 24, 24">
+    <g id="help" opacity=".75">
+        <path d="M11.499 17c-3.036 0-5.499-2.464-5.499-5.5 0-3.037 2.462-5.5 5.499-5.5 3.037 0 5.501 2.462 5.501 5.5 0 3.036-2.464 5.5-5.501 5.5zm.002-12c-3.591 0-6.501 2.91-6.501 6.5s2.91 6.5 6.501 6.5c3.588 0 6.499-2.911 6.499-6.5s-2.911-6.5-6.499-6.5zM12 10v4h1v1h-3v-1h1v-3h-1v-1zM11 8h1v1h-1z"/>
+    </g>
 </svg>
index dadf69c..7d8a1ef 100644 (file)
@@ -1,15 +1,8 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="link" style="opacity:0.75;">
-       <path id="right" d="M19.188,12.001c0,1.1-0.891,2.015-1.988,2.015l-4.195-0.015C13.543,15.089,13.968,16,15.002,16h3
-               C19.658,16,21,13.657,21,12s-1.342-4-2.998-4h-3c-1.034,0-1.459,0.911-1.998,1.999l4.195-0.015
-               C18.297,9.984,19.188,10.901,19.188,12.001z"/>
-       <path id="center" d="M8,12c0,0.535,0.42,1,0.938,1h6.109c0.518,0,0.938-0.465,0.938-1c0-0.534-0.42-1-0.938-1H8.938
-               C8.42,11,8,11.466,8,12z"/>
-       <path id="left" d="M4.816,11.999c0-1.1,0.891-2.015,1.988-2.015L11,9.999C10.461,8.911,10.036,8,9.002,8h-3
-               c-1.656,0-2.998,2.343-2.998,4s1.342,4,2.998,4h3c1.034,0,1.459-0.911,1.998-1.999l-4.195,0.015
-               C5.707,14.016,4.816,13.099,4.816,11.999z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="link" opacity=".75">
+        <path id="right" d="M19.188 12.001c0 1.1-.891 2.015-1.988 2.015l-4.195-.015c.538 1.088.963 1.999 1.997 1.999h3c1.656 0 2.998-2.343 2.998-4s-1.342-4-2.998-4h-3c-1.034 0-1.459.911-1.998 1.999l4.195-.015c1.098 0 1.989.917 1.989 2.017z"/>
+        <path id="center" d="M8 12c0 .535.42 1 .938 1h6.109c.518 0 .938-.465.938-1 0-.534-.42-1-.938-1h-6.109c-.518 0-.938.466-.938 1z"/>
+        <path id="left" d="M4.816 11.999c0-1.1.891-2.015 1.988-2.015l4.196.015c-.539-1.088-.964-1.999-1.998-1.999h-3c-1.656 0-2.998 2.343-2.998 4s1.342 4 2.998 4h3c1.034 0 1.459-.911 1.998-1.999l-4.195.015c-1.098 0-1.989-.917-1.989-2.017z"/>
+    </g>
 </svg>
index 657fab2..75866f6 100644 (file)
@@ -1,10 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="menu" style="opacity:0.75;">
-       <path id="lines" d="M6,15h12c0.553,0,1,0.447,1,1v1c0,0.553-0.447,1-1,1H6c-0.553,0-1-0.447-1-1v-1C5,15.447,5.447,15,6,15z M5,11v1
-               c0,0.553,0.447,1,1,1h12c0.553,0,1-0.447,1-1v-1c0-0.553-0.447-1-1-1H6C5.447,10,5,10.447,5,11z M5,6v1c0,0.553,0.447,1,1,1h12
-               c0.553,0,1-0.447,1-1V6c0-0.553-0.447-1-1-1H6C5.447,5,5,5.447,5,6z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="menu" opacity=".75">
+        <path id="lines" d="M6 15h12c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1h-12c-.553 0-1-.447-1-1v-1c0-.553.447-1 1-1zm-1-4v1c0 .553.447 1 1 1h12c.553 0 1-.447 1-1v-1c0-.553-.447-1-1-1h-12c-.553 0-1 .447-1 1zm0-5v1c0 .553.447 1 1 1h12c.553 0 1-.447 1-1v-1c0-.553-.447-1-1-1h-12c-.553 0-1 .447-1 1z"/>
+    </g>
 </svg>
index a378a5d..3c19c4f 100644 (file)
@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="move-ltr" style="opacity:0.75;">
-       <polygon id="arrow" style="fill-rule:evenodd;clip-rule:evenodd;" points="8.935,7.181 14.237,12.483 8.935,17.786
-               10.349,19.2 17.065,12.483 10.349,5.767"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="move-ltr" opacity=".75">
+        <path id="arrow" fill-rule="evenodd" clip-rule="evenodd" d="M8.935 7.181l5.302 5.302-5.302 5.303 1.414 1.414 6.716-6.717-6.716-6.716z"/>
+    </g>
 </svg>
index c0b334b..d9f35c1 100644 (file)
@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="move-rtl" style="opacity:0.75;">
-       <polygon id="arrow_9_" style="fill-rule:evenodd;clip-rule:evenodd;" points="15.065,17.786 9.763,12.483 15.065,7.181
-               13.651,5.767 6.935,12.483 13.651,19.2"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="move-rtl" opacity=".75">
+        <path id="arrow_9_" fill-rule="evenodd" clip-rule="evenodd" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.414-1.414-6.716 6.716 6.716 6.717z"/>
+    </g>
 </svg>
index 078ce10..cd4c0f7 100644 (file)
@@ -1,12 +1,8 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="picture" style="opacity:0.75;">
-       <path id="frame" style="fill-rule:evenodd;clip-rule:evenodd;" d="M18,4H6C4,3.993,3,4.993,3,6.993L3.014,16C3,18,4,18.988,6,19h12
-               c2-0.012,2.994-1,3-3.006V6.993C20.994,4.993,20,3.993,18,4z M19,17H5V6h14V17z"/>
-       <polygon id="mountains" style="fill-rule:evenodd;clip-rule:evenodd;" points="6,13.5 9.5,10 11.828,12.312 10.516,13.406
-               11.391,14.438 15.5,11 18,13 18,16 6,16"/>
-       <polygon id="sky" style="fill-rule:evenodd;clip-rule:evenodd;" points="6,12 9.516,7.844 12.562,11.016 15.5,9 18,11 18,7 6,7"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="picture" opacity=".75" fill-rule="evenodd" clip-rule="evenodd">
+        <path id="frame" d="M18 4h-12c-2-.007-3 .993-3 2.993l.014 9.007c-.014 2 .986 2.988 2.986 3h12c2-.012 2.994-1 3-3.006v-9.001c-.006-2-1-3-3-2.993zm1 13h-14v-11h14v11z"/>
+        <path id="mountains" d="M6 13.5l3.5-3.5 2.328 2.312-1.312 1.094.875 1.032 4.109-3.438 2.5 2v3h-12z"/>
+        <path id="sky" d="M6 12l3.516-4.156 3.046 3.172 2.938-2.016 2.5 2v-4h-12z"/>
+    </g>
 </svg>
index b95e7d3..5dd607b 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24" height="24" viewBox="0, 0, 24, 24">
-  <g id="remove-item">
-    <path d="M8,11 L16,11 L16,13 L8,13 z" fill="#000000"/>
-  </g>
-  <defs/>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0, 0, 24, 24">
+    <g id="remove-item">
+        <path d="M8 11h8v2h-8z"/>
+    </g>
 </svg>
index 17c8d39..06c89d7 100644 (file)
@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="remove" style="opacity:0.75;">
-       <path id="trash_can" style="fill-rule:evenodd;clip-rule:evenodd;" d="M12,10h-1v6h1V10z M10,10H9v6h1V10z M14,10h-1v6h1V10z
-                M14,6V5H9v1H6v3h1v7.966l1,1.031v-0.074V18h6.984L15,17.982v0.015l1-1.031V9h1V6H14z M15,17H8V9h7V17z M16,8H7V7h9V8z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="remove" opacity=".75">
+        <path id="trash_can" d="M12 10h-1v6h1v-6zm-2 0h-1v6h1v-6zm4 0h-1v6h1v-6zm0-4v-1h-5v1h-3v3h1v7.966l1 1.031v-.074.077h6.984l.016-.018v.015l1-1.031v-7.966h1v-3h-3zm1 11h-7v-8h7v8zm1-9h-9v-1h9v1z" fill-rule="evenodd" clip-rule="evenodd"/>
+    </g>
 </svg>
index 37feda4..ff7144c 100644 (file)
@@ -1,13 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="search" style="opacity:0.75;">
-       <path id="magnifying_glass" d="M16.021,15.96l-2.374-2.375c-0.048-0.047-0.105-0.079-0.169-0.099c0.403-0.566,0.643-1.26,0.643-2.009
-               C14.12,9.557,12.563,8,10.644,8c-1.921,0-3.478,1.557-3.478,3.478c0,1.92,1.557,3.477,3.478,3.477c0.749,0,1.442-0.239,2.01-0.643
-               c0.019,0.063,0.051,0.121,0.098,0.169l2.375,2.374c0.19,0.189,0.543,0.143,0.79-0.104S16.21,16.15,16.021,15.96z M10.644,13.69
-               c-1.221,0-2.213-0.991-2.213-2.213c0-1.221,0.992-2.213,2.213-2.213c1.222,0,2.213,0.992,2.213,2.213
-               C12.856,12.699,11.865,13.69,10.644,13.69z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="search" opacity=".75">
+        <path id="magnifying_glass" d="M16.021 15.96l-2.374-2.375-.169-.099c.403-.566.643-1.26.643-2.009-.001-1.92-1.558-3.477-3.477-3.477-1.921 0-3.478 1.557-3.478 3.478 0 1.92 1.557 3.477 3.478 3.477.749 0 1.442-.239 2.01-.643l.098.169 2.375 2.374c.19.189.543.143.79-.104s.293-.601.104-.791zm-5.377-2.27c-1.221 0-2.213-.991-2.213-2.213 0-1.221.992-2.213 2.213-2.213 1.222 0 2.213.992 2.213 2.213-.001 1.222-.992 2.213-2.213 2.213z"/>
+    </g>
 </svg>
index 1464a79..cbc4efc 100644 (file)
@@ -1,16 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24" height="24" viewBox="0, 0, 24, 24">
-  <g id="settings" opacity="0.75">
-    <path d="M3,4 L6,4 L6,6 L3,6 z" fill="#000000"/>
-    <path d="M12,4 L21,4 L21,6 L12,6 z" fill="#000000"/>
-    <path d="M8,3 L10,3 C10.552,3 11,3.448 11,4 L11,6 C11,6.552 10.552,7 10,7 L8,7 C7.448,7 7,6.552 7,6 L7,4 C7,3.448 7.448,3 8,3 z" fill="#000000"/>
-    <path d="M3,11 L12,11 L12,13 L3,13 z" fill="#000000"/>
-    <path d="M18,11 L21,11 L21,13 L18,13 z" fill="#000000"/>
-    <path d="M14,10 L16,10 C16.552,10 17,10.448 17,11 L17,13 C17,13.552 16.552,14 16,14 L14,14 C13.448,14 13,13.552 13,13 L13,11 C13,10.448 13.448,10 14,10 z" fill="#000000"/>
-    <path d="M3,18 L9,18 L9,20 L3,20 z" fill="#000000"/>
-    <path d="M15,18 L21,18 L21,20 L15,20 z" fill="#000000"/>
-    <path d="M11,17 L13,17 C13.552,17 14,17.448 14,18 L14,20 C14,20.552 13.552,21 13,21 L11,21 C10.448,21 10,20.552 10,20 L10,18 C10,17.448 10.448,17 11,17 z" fill="#000000"/>
-  </g>
-  <defs/>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0, 0, 24, 24">
+    <g id="settings" opacity=".75">
+        <path d="M3 4h3v2h-3zM12 4h9v2h-9zM8 3h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1zM3 11h9v2h-9zM18 11h3v2h-3zM14 10h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1zM3 18h6v2h-6zM15 18h6v2h-6zM11 17h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1z"/>
+    </g>
 </svg>
index d21e5e3..496e7fc 100644 (file)
@@ -1,11 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="tag" style="opacity:0.75;">
-       <path d="M18.748,11.717c0.389,0.389,0.389,1.025,0,1.414l-4.949,4.95c-0.389,0.389-1.025,0.389-1.414,0l-6.01-6.01
-               c-0.389-0.389-0.707-1.157-0.707-1.707L5.667,6c0-0.55,0.45-1,1-1h4.364c0.55,0,1.318,0.318,1.707,0.707L18.748,11.717z
-                M8.104,7.456C7.525,8.032,7.526,8.97,8.103,9.549c0.578,0.577,1.516,0.577,2.095,0.001c0.576-0.578,0.576-1.517,0-2.095
-               C9.617,6.879,8.68,6.878,8.104,7.456z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="tag" opacity=".75">
+        <path d="M18.748 11.717c.389.389.389 1.025 0 1.414l-4.949 4.95c-.389.389-1.025.389-1.414 0l-6.01-6.01c-.389-.389-.707-1.157-.707-1.707l-.001-4.364c0-.55.45-1 1-1h4.364c.55 0 1.318.318 1.707.707l6.01 6.01zm-10.644-4.261c-.579.576-.578 1.514-.001 2.093.578.577 1.516.577 2.095.001.576-.578.576-1.517 0-2.095-.581-.576-1.518-.577-2.094.001z"/>
+    </g>
 </svg>
index 621cf2c..ad12773 100644 (file)
@@ -1,10 +1,7 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="window" style="opacity:0.75;">
-       <rect id="title" x="7" y="10" width="10" height="1"/>
-       <path id="window" d="M16,19H8c-2.206,0-4-1.794-4-4V9c0-2.206,1.794-4,4-4h8c2.206,0,4,1.794,4,4v6C20,17.206,18.206,19,16,19z
-                M8,7C6.897,7,6,7.897,6,9v6c0,1.103,0.897,2,2,2h8c1.103,0,2-0.897,2-2V9c0-1.103-0.897-2-2-2H8z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="window" opacity=".75">
+        <path id="title" d="M7 10h10v1h-10z"/>
+        <path id="window" d="M16 19h-8c-2.206 0-4-1.794-4-4v-6c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v6c0 2.206-1.794 4-4 4zm-8-12c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2h8c1.103 0 2-.897 2-2v-6c0-1.103-.897-2-2-2h-8z"/>
+    </g>
 </svg>
index e549b17..7cfde44 100644 (file)
@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="12px"
-        height="12px" viewBox="0 0 12 12">
-  <g id="deprecated" opacity="0.75">
-    <path d="M6,12 C2.686,12 -0,9.314 -0,6 C-0,2.686 2.686,-0 6,-0 C9.314,-0 12,2.686 12,6 C12,9.314 9.314,12 6,12 z M5,7 L7,7 L7,2 L5,2 z M5,10 L7,10 L7,8 L5,8 z"/>
-  </g>
-  <defs/>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="deprecated" opacity=".75">
+        <path d="M6 12c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6zm-1-5h2v-5h-2zm0 3h2v-2h-2z"/>
+    </g>
 </svg>
index 89c21e3..d345ec0 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="12px"
-        height="12px" viewBox="0 0 12 12">
-<g id="down" style="opacity:0.75;">
-       <polygon id="arrow" points="2,3 5.5,9 9,3"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="down" opacity=".75">
+        <path id="arrow" d="M2 3l3.5 6 3.5-6z"/>
+    </g>
 </svg>
index ad87640..5092d88 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="12px"
-        height="12px" viewBox="0 0 12 12">
-<g id="ltr" opacity="0.75">
-       <path id="arrow" d="M3,9 L3,2 L9,5.5 z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="ltr" opacity=".75">
+        <path id="arrow" d="M3 9v-7l6 3.5z"/>
+    </g>
 </svg>
index 010b24e..8d39de8 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="12px"
-        height="12px" viewBox="0 0 12 12">
-<g id="rtl" opacity="0.75">
-       <path id="arrow" d="M3,5.5 L9,9 L9,2 z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="rtl" opacity=".75">
+        <path id="arrow" d="M3 5.5l6 3.5v-7z"/>
+    </g>
 </svg>
index bbc2b3c..78e0115 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="12px"
-        height="12px" viewBox="0 0 12 12">
-<g id="up" style="opacity:0.75;">
-       <polygon id="arrow" points="5.5,2 2,8 9,8"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="up" opacity=".75">
+        <path id="arrow" d="M5.5 2l-3.5 6h7z"/>
+    </g>
 </svg>
index d8b36b1..45035f4 100644 (file)
@@ -1,11 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="12px"
-        height="12px" viewBox="0 0 12 12">
-  <g id="required" opacity="0.75">
-    <path d="M5,1 L7,1 L7,11 L5,11 z"/>
-    <path d="M9.83,2.634 L10.83,4.366 L2.17,9.366 L1.17,7.634 z"/>
-    <path d="M1.17,4.366 L2.17,2.634 L10.83,7.634 L9.83,9.366 z"/>
-  </g>
-  <defs/>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="required" opacity=".75">
+        <path d="M5 1h2v10h-2zM9.83 2.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z"/>
+    </g>
 </svg>
index 3e0bfb9..dc999cd 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (a63f03882e)
+ * OOjs UI v0.1.0-pre (85cfc2e735)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-06-27T23:51:18Z
+ * Date: 2014-07-03T02:33:09Z
  */
 .oo-ui-dialog-content .oo-ui-window-closeButton {
   position: absolute;
index e651ff0..7018b52 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (a63f03882e)
+ * OOjs UI v0.1.0-pre (85cfc2e735)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-06-27T23:51:18Z
+ * Date: 2014-07-03T02:33:09Z
  */
 .oo-ui-dialog {
   background-color: #fff;
index 0262042..f2e3202 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (a63f03882e)
+ * OOjs UI v0.1.0-pre (85cfc2e735)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-06-27T23:51:18Z
+ * Date: 2014-07-03T02:33:09Z
  */
 ( function ( OO ) {
 
@@ -750,6 +750,9 @@ OO.ui.Frame.static.transplantStyles = function ( parentDoc, frameDoc, timeout )
 
        for ( i = 0, numSheets = parentDoc.styleSheets.length; i < numSheets; i++ ) {
                styleNode = parentDoc.styleSheets[i].ownerNode;
+               if ( styleNode.disabled ) {
+                       continue;
+               }
                if ( styleNode.nodeName.toLowerCase() === 'link' ) {
                        // External stylesheet
                        // Create a node with a unique ID that we're going to monitor to see when the CSS
@@ -2136,11 +2139,12 @@ OO.ui.ButtonedElement = function OoUiButtonedElement( $button, config ) {
        this.$button.on( 'mousedown', OO.ui.bind( this.onMouseDown, this ) );
 
        // Initialization
-       this.$element.addClass( 'oo-ui-buttonedElement' );
+       this.$element
+               .addClass( 'oo-ui-buttonedElement' )
+               .prop( 'tabIndex', config.tabIndex || 0 );
        this.$button
                .addClass( 'oo-ui-buttonedElement-button' )
-               .attr( 'role', 'button' )
-               .prop( 'tabIndex', config.tabIndex || 0 );
+               .attr( 'role', 'button' );
        if ( config.frameless ) {
                this.$element.addClass( 'oo-ui-buttonedElement-frameless' );
        } else {
@@ -3118,7 +3122,9 @@ OO.ui.Tool = function OoUiTool( toolGroup, config ) {
        this.$title.addClass( 'oo-ui-tool-title' );
        this.$link
                .addClass( 'oo-ui-tool-link' )
-               .append( this.$icon, this.$title );
+               .append( this.$icon, this.$title )
+               .prop( 'tabIndex', 0 )
+               .attr( 'role', 'button' );
        this.$element
                .data( 'oo-ui-tool', this )
                .addClass(
index a568a6d..a249314 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (a63f03882e)
+ * OOjs UI v0.1.0-pre (85cfc2e735)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-06-27T23:51:18Z
+ * Date: 2014-07-03T02:33:09Z
  */
 /* Textures */
 
index b3e8193..1931aad 100644 (file)
@@ -7,7 +7,7 @@
 /* Layout helpers
 ----------------------------------*/
 .ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
 .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
 .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
 .ui-helper-clearfix { display: inline-block; }
index d6dfedd..8d38401 100644 (file)
@@ -12,7 +12,7 @@
  *
  * @author Timo Tijhof, 2011-2012
  */
-( function ( $ ) {
+( function ( mw, $ ) {
        'use strict';
 
        var util,
@@ -64,6 +64,8 @@
         *  were not called from that instance.
         */
        function CompletenessTest( masterVariable, ignoreFn ) {
+               var warn,
+                       that = this;
 
                // Keep track in these objects. Keyed by strings with the
                // method names (ie. 'my.foo', 'my.bar', etc.) values are boolean true.
                this.lazyLimit = 2000;
                this.lazyCounter = 0;
 
-               var that = this;
-
                // Bind begin and end to QUnit.
                QUnit.begin( function () {
-                       that.walkTheObject( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_INJECT );
-                       log( 'CompletenessTest/walkTheObject/ACTION_INJECT', that );
+                       // Suppress warnings (e.g. deprecation notices for accessing the properties)
+                       warn = mw.log.warn;
+                       mw.log.warn = $.noop;
+
+                       that.walkTheObject( masterVariable, null, masterVariable, [] );
+                       log( 'CompletenessTest/walkTheObject', that );
+
+                       // Restore warnings
+                       mw.log.warn = warn;
+                       warn = undefined;
                });
 
                QUnit.done( function () {
                return this;
        }
 
-       /* Static members */
-       CompletenessTest.ACTION_INJECT = 500;
-       CompletenessTest.ACTION_CHECK = 501;
-
        /* Public methods */
        CompletenessTest.fn = CompletenessTest.prototype = {
 
                 *  Initially this is the same as currVar.
                 * @param parentPathArray {Array} Array of names that indicate our breadcrumb path starting at
                 *  masterVariable. Not including currName.
-                * @param action {Number} What is this function supposed to do (ACTION_INJECT or ACTION_CHECK)
                 */
-               walkTheObject: function ( currName, currVar, masterVariable, parentPathArray, action ) {
-                       var key, value, currPathArray,
-                               type = util.type( currVar ),
-                               that = this;
+               walkTheObject: function ( currObj, currName, masterVariable, parentPathArray ) {
+                       var key, currVal, type,
+                               ct = this,
+                               currPathArray = parentPathArray;
 
-                       currPathArray = parentPathArray;
                        if ( currName ) {
                                currPathArray.push( currName );
+                               currVal = currObj[currName];
+                       } else {
+                               currName = '(root)';
+                               currVal = currObj;
                        }
 
+                       type = util.type( currVal );
+
                        // Hard ignores
-                       if ( this.ignoreFn( currVar, that, currPathArray ) ) {
+                       if ( this.ignoreFn( currVal, this, currPathArray ) ) {
                                return null;
                        }
 
 
                        // Functions
                        if ( type === 'function' ) {
-
-                               if ( !currVar.prototype || util.isEmptyObject( currVar.prototype ) ) {
-
-                                       if ( action === CompletenessTest.ACTION_INJECT ) {
-
-                                               that.injectionTracker[ currPathArray.join( '.' ) ] = true;
-                                               that.injectCheck( masterVariable, currPathArray, function () {
-                                                       that.methodCallTracker[ currPathArray.join( '.' ) ] = true;
-                                               } );
-                                       }
-
-                               // We don't support checking object constructors yet...
-                               // ...we can check the prototypes fine, though.
-                               } else {
-                                       if ( action === CompletenessTest.ACTION_INJECT ) {
-
-                                               for ( key in currVar.prototype ) {
-                                                       if ( hasOwn.call( currVar.prototype, key ) ) {
-                                                               value = currVar.prototype[key];
-                                                               if ( key === 'constructor' ) {
-                                                                       continue;
-                                                               }
-
-                                                               that.walkTheObject( key, value, masterVariable, currPathArray.concat( 'prototype' ), action );
-                                                       }
-                                               }
-
-                                       }
+                               // Don't put a spy in constructor functions as it messes with
+                               // instanceof etc.
+                               if ( !currVal.prototype || util.isEmptyObject( currVal.prototype ) ) {
+                                       this.injectionTracker[ currPathArray.join( '.' ) ] = true;
+                                       this.injectCheck( currObj, currName, function () {
+                                               ct.methodCallTracker[ currPathArray.join( '.' ) ] = true;
+                                       } );
                                }
-
                        }
 
                        // Recursively. After all, this is the *completeness* test
-                       if ( type === 'function' || type === 'object' ) {
-                               for ( key in currVar ) {
-                                       if ( hasOwn.call( currVar, key ) ) {
-                                               value = currVar[key];
-
-                                               that.walkTheObject( key, value, masterVariable, currPathArray.slice(), action );
+                       // This also traverses static properties and the prototype of a constructor
+                       if ( type === 'object' || type === 'function' ) {
+                               for ( key in currVal ) {
+                                       if ( hasOwn.call( currVal, key ) ) {
+                                               this.walkTheObject( currVal, key, masterVariable, currPathArray.slice() );
                                        }
                                }
                        }
                 * @param objectPathArray {Array}
                 * @param injectFn {Function}
                 */
-               injectCheck: function ( masterVariable, objectPathArray, injectFn ) {
-                       var i, len, prev, memberName, lastMember,
-                               curr = masterVariable;
-
-                       // Get the object in question through the path from the master variable,
-                       // We can't pass the value directly because we need to re-define the object
-                       // member and keep references to the parent object, member name and member
-                       // value at all times.
-                       for ( i = 0, len = objectPathArray.length; i < len; i++ ) {
-                               memberName = objectPathArray[i];
-
-                               prev = curr;
-                               curr = prev[memberName];
-                               lastMember = memberName;
-                       }
+               injectCheck: function ( obj, key, injectFn ) {
+                       var spy,
+                               val = obj[ key ];
 
-                       // Objects are by reference, members (unless objects) are not.
-                       prev[lastMember] = function () {
+                       spy = function () {
                                injectFn();
-                               return curr.apply( this, arguments );
+                               return val.apply( this, arguments );
                        };
+
+                       // Make the spy inherit from the original so that its static methods are also
+                       // visible in the spy (e.g. when we inject a check into mw.log, mw.log.warn
+                       // must remain accessible).
+                       /*jshint proto:true */
+                       spy.__proto__ = val;
+
+                       // Objects are by reference, members (unless objects) are not.
+                       obj[ key ] = spy;
                }
        };
 
        /* Expose */
        window.CompletenessTest = CompletenessTest;
 
-}( jQuery ) );
+}( mediaWiki, jQuery ) );
index 67e2f33..b65a62b 100644 (file)
@@ -61,7 +61,6 @@
 }
 
 .transition(@value) {
-       -webkit-backface-visibility: hidden; // fixes Chrome 1px movement bug
        -webkit-transition: @value;
        -moz-transition: @value;
        -o-transition: @value;
index ebd6b92..6a35182 100644 (file)
@@ -99,7 +99,6 @@ figure[typeof~='mw:Image/Frame'] {
        display: table;
        overflow: auto;
        text-align: center;
-       padding: 3px;
        border: 1px solid #ccc;
        border-bottom: 0; // No border to caption
        border-collapse: collapse;
@@ -115,7 +114,7 @@ figure[typeof~='mw:Image/Thumb'] > *:first-child > img,
 figure[typeof~='mw:Image/Frame'] > *:first-child > img,
 .mw-image-border > *:first-child > img {
        border: 1px solid #cccccc;
-       margin: 4px;
+       margin: 3px;
 }
 
 /* Hide the caption for frameless and plain floated images */
index a805f3e..a30a15d 100644 (file)
@@ -5,3 +5,7 @@
 label[for="mw-input-wpConfirm"] {
        font-weight: bold;
 }
+
+tr.mw-block-hideuser {
+       font-weight: bold;
+}
index 5860adf..7ac8154 100644 (file)
@@ -27,11 +27,6 @@ table.mw-allpages-table-form tr {
        vertical-align: top;
 }
 
-/* Special:Block */
-tr.mw-block-hideuser {
-       font-weight: bold;
-}
-
 /* Special:BlockList */
 table.mw-blocklist span.mw-usertoollinks,
 span.mw-blocklist-actions {
@@ -71,166 +66,6 @@ td#mw-prefixindex-nav-form {
        text-align: right;
 }
 
-
-/* Special:Search */
-.searchresults {
-}
-
-.searchresults p {
-       margin-left: 0.4em;
-       margin-top: 1em;
-       margin-bottom: 1.2em;
-}
-div.searchresult {
-       font-size: 95%;
-       width: 38em;
-}
-.mw-search-results {
-       margin-left: 0.4em;
-}
-.mw-search-results li {
-       padding-bottom: 1.2em;
-       list-style: none;
-       list-style-image: none;
-}
-.mw-search-results li a {
-       font-size: 108%;
-}
-.mw-search-result-data {
-       color: green;
-       font-size: 97%;
-}
-.mw-search-formheader {
-       background-color: #f3f3f3;
-       margin-top: 1em;
-       border: 1px solid silver;
-}
-.mw-search-formheader div.search-types {
-       float: left;
-       padding-left: 0.25em;
-}
-.mw-search-formheader div.search-types ul {
-       margin: 0 !important;
-       padding: 0 !important;
-       list-style: none !important;
-}
-.mw-search-formheader div.search-types ul li {
-       float: left;
-       margin: 0;
-       padding: 0;
-}
-.mw-search-formheader div.search-types ul li a {
-       display: block;
-       padding: 0.5em;
-}
-.mw-search-formheader div.search-types ul li.current a {
-       color: #333333;
-       cursor: default;
-}
-.mw-search-formheader div.search-types ul li.current a:hover {
-       text-decoration: none;
-}
-#mw-search-top-table div.results-info {
-       float: right;
-       padding: 0.5em;
-       padding-right: 0.75em;
-       color: #666;
-       font-size: 95%;
-}
-
-fieldset#mw-searchoptions {
-       margin: 0;
-       padding: 0.5em 0.75em 0.75em 0.75em !important;
-       border: none;
-       background-color: #f9f9f9;
-       border: 1px solid silver !important;
-       border-top-width: 0 !important;
-}
-fieldset#mw-searchoptions legend {
-       display: none;
-}
-fieldset#mw-searchoptions h4 {
-       padding: 0;
-       margin: 0;
-       float: left;
-}
-fieldset#mw-searchoptions div#mw-search-togglebox {
-       float: right;
-}
-fieldset#mw-searchoptions div#mw-search-togglebox label {
-       margin-right: 0.25em;
-}
-fieldset#mw-searchoptions div#mw-search-togglebox input {
-       margin-left: 0.25em;
-}
-fieldset#mw-searchoptions table {
-       float: left;
-       margin-right: 3em;
-}
-fieldset#mw-searchoptions table td {
-       padding-right: 1em;
-}
-fieldset#mw-searchoptions div.divider {
-       clear: both;
-       border-bottom: 1px solid #DDDDDD;
-       padding-top: 0.5em;
-       margin-bottom: 0.5em;
-}
-td#mw-search-menu {
-       padding-left:6em;
-       font-size:85%;
-}
-div#mw-search-interwiki {
-       float: right;
-       width: 18em;
-       border: 1px solid #AAAAAA;
-       margin-top: 2ex;
-}
-div#mw-search-interwiki li {
-       font-size: 95%;
-}
-.mw-search-interwiki-more {
-       float: right;
-       font-size: 90%;
-}
-div#mw-search-interwiki-caption {
-       text-align: center;
-       font-weight: bold;
-       font-size: 95%;
-}
-.mw-search-interwiki-project {
-       font-size: 97%;
-       text-align: left;
-       padding: 0.15em 0.15em 0.2em 0.2em;
-       background-color: #ececec;
-       border-top: 1px solid #BBBBBB;
-}
-span.searchalttitle {
-       font-size: 95%;
-}
-div.searchdidyoumean {
-       font-size: 127%;
-       margin-top: 0.8em;
-       /* Note that this color won't affect the link, as desired. */
-       color: #c00;
-}
-div.searchdidyoumean em {
-       font-weight: bold;
-}
-.searchmatch {
-       font-weight: bold;
-}
-/* Advanced PowerSearch box */
-td#mw-search-togglebox {
-       text-align: right;
-}
-table#mw-search-powertable {
-       width: 100%;
-}
-form#powersearch {
-       clear: both;
-}
-
 /* Special:Specialpages */
 .mw-specialpagerestricted {
        font-weight: bold;
index f6ed82c..a98c782 100644 (file)
@@ -1,3 +1,5 @@
+/* Special:Search */
+
 /*
  * Fixes sister projects box moving down the extract
  * of the first result (bug #16886).
 .searchresult {
        display: inline !ie;
 }
+.searchresults {
+}
+.searchresults p {
+       margin-left: 0.4em;
+       margin-top: 1em;
+       margin-bottom: 1.2em;
+}
+div.searchresult {
+       font-size: 95%;
+       width: 38em;
+}
+.mw-search-results {
+       margin-left: 0.4em;
+}
+.mw-search-results li {
+       padding-bottom: 1.2em;
+       list-style: none;
+       list-style-image: none;
+}
+.mw-search-results li a {
+       font-size: 108%;
+}
+.mw-search-result-data {
+       color: green;
+       font-size: 97%;
+}
+.mw-search-formheader {
+       background-color: #f3f3f3;
+       margin-top: 1em;
+       border: 1px solid silver;
+}
+.mw-search-formheader div.search-types {
+       float: left;
+       padding-left: 0.25em;
+}
+.mw-search-formheader div.search-types ul {
+       margin: 0 !important;
+       padding: 0 !important;
+       list-style: none !important;
+}
+.mw-search-formheader div.search-types ul li {
+       float: left;
+       margin: 0;
+       padding: 0;
+}
+.mw-search-formheader div.search-types ul li a {
+       display: block;
+       padding: 0.5em;
+}
+.mw-search-formheader div.search-types ul li.current a {
+       color: #333333;
+       cursor: default;
+}
+.mw-search-formheader div.search-types ul li.current a:hover {
+       text-decoration: none;
+}
+#mw-search-top-table div.results-info {
+       float: right;
+       padding: 0.5em;
+       padding-right: 0.75em;
+       color: #666;
+       font-size: 95%;
+}
+
+fieldset#mw-searchoptions {
+       margin: 0;
+       padding: 0.5em 0.75em 0.75em 0.75em !important;
+       border: none;
+       background-color: #f9f9f9;
+       border: 1px solid silver !important;
+       border-top-width: 0 !important;
+}
+fieldset#mw-searchoptions legend {
+       display: none;
+}
+fieldset#mw-searchoptions h4 {
+       padding: 0;
+       margin: 0;
+       float: left;
+}
+fieldset#mw-searchoptions div#mw-search-togglebox {
+       float: right;
+}
+fieldset#mw-searchoptions div#mw-search-togglebox label {
+       margin-right: 0.25em;
+}
+fieldset#mw-searchoptions div#mw-search-togglebox input {
+       margin-left: 0.25em;
+}
+fieldset#mw-searchoptions table {
+       float: left;
+       margin-right: 3em;
+}
+fieldset#mw-searchoptions table td {
+       padding-right: 1em;
+}
+fieldset#mw-searchoptions div.divider {
+       clear: both;
+       border-bottom: 1px solid #DDDDDD;
+       padding-top: 0.5em;
+       margin-bottom: 0.5em;
+}
+td#mw-search-menu {
+       padding-left:6em;
+       font-size:85%;
+}
+div#mw-search-interwiki {
+       float: right;
+       width: 18em;
+       border: 1px solid #AAAAAA;
+       margin-top: 2ex;
+}
+div#mw-search-interwiki li {
+       font-size: 95%;
+}
+.mw-search-interwiki-more {
+       float: right;
+       font-size: 90%;
+}
+div#mw-search-interwiki-caption {
+       text-align: center;
+       font-weight: bold;
+       font-size: 95%;
+}
+.mw-search-interwiki-project {
+       font-size: 97%;
+       text-align: left;
+       padding: 0.15em 0.15em 0.2em 0.2em;
+       background-color: #ececec;
+       border-top: 1px solid #BBBBBB;
+}
+span.searchalttitle {
+       font-size: 95%;
+}
+div.searchdidyoumean {
+       font-size: 127%;
+       margin-top: 0.8em;
+       /* Note that this color won't affect the link, as desired. */
+       color: #c00;
+}
+div.searchdidyoumean em {
+       font-weight: bold;
+}
+.searchmatch {
+       font-weight: bold;
+}
+/* Advanced PowerSearch box */
+td#mw-search-togglebox {
+       text-align: right;
+}
+table#mw-search-powertable {
+       width: 100%;
+}
+form#powersearch {
+       clear: both;
+}
index e160579..6533db1 100644 (file)
 
                        this.displaySubmitting();
 
-                       this.api.newSection( this.title, subject, message, ok, err );
+                       this.api.newSection( this.title, subject, message ).done( ok ).fail( err );
                },
 
                /**
index a314dcb..a214cb3 100644 (file)
@@ -22,8 +22,9 @@
                        konqueror: [['>=', '4.11']],
                        docomo: false,
                        blackberry: false,
-                       ipod: false,
-                       iphone: false
+                       // Support for iOS 6 or higher. It has not been tested on iOS 5 or lower
+                       ipod: [['>=', 6]],
+                       iphone: [['>=', 6]]
                };
 
                if ( !$.client.test( map ) ) {
index 9792754..48d424c 100644 (file)
@@ -2,10 +2,12 @@
        "@metadata": {
                "authors": [
                        "Sanbec",
-                       "Vivaelcelta"
+                       "Vivaelcelta",
+                       "Fitoschido"
                ]
        },
        "skinname-monobook": "MonoBook",
+       "monobook-desc": "El tema clásico de MediaWiki desde 2004, cuyo nombre viene de la foto en blanco y negro de un libro en el fondo",
        "monobook.css": "/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia \"MonoBook\" */",
        "monobook.js": "/* El código JavaScript que se ponga aquí será cargado por los usuarios de la apariencia MonoBook */"
 }
index 8e278d3..02a0185 100644 (file)
@@ -1,4 +1,10 @@
 {
+       "@metadata": {
+               "authors": [
+                       "Reza1615"
+               ]
+       },
        "skinname-monobook": "مونوبوک",
+       "monobook-desc": "پوسته کلاسیک مدیاویکی از سال ۲۰۰۴ از عکس سیاه و سفید در زمینه صفحه  کتاب نام گرفت",
        "monobook.css": "/* دستورات این بخش کاربرانی را که از پوستهٔ مونوبوک استفاده کنند تحت تاثیر قرار می‌دهند. */"
 }
index 89b72e4..b08e117 100644 (file)
@@ -1,10 +1,12 @@
 {
        "@metadata": {
                "authors": [
-                       "Siebrand"
+                       "Siebrand",
+                       "Sjoerddebruin"
                ]
        },
        "skinname-monobook": "Monobook",
+       "monobook-desc": "De klassieke MediaWiki-vormgeving sinds 2004, genoemd naar de zwart-witfoto van een boek op de achtergrond van de pagina",
        "monobook.css": "/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Monobook */",
        "monobook.js": "/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Monobook gebruiken */"
 }
index 0f3b618..4c7031a 100644 (file)
@@ -1,10 +1,12 @@
 {
        "@metadata": {
                "authors": [
-                       "Sp5uhe"
+                       "Sp5uhe",
+                       "Matma Rex"
                ]
        },
        "skinname-monobook": "Książka",
+       "monobook-desc": "Klasyczna skórka MediaWiki, stworzona w 2004 roku, nazwana od czarno-białego zdjęcia książki w tle strony",
        "monobook.css": "/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Książka */",
        "monobook.js": "/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Książka */"
 }
index 13c2ac2..c3b1d46 100644 (file)
@@ -2,9 +2,11 @@
        "@metadata": {
                "authors": [
                        "AlexSm",
-                       "Kaganer"
+                       "Kaganer",
+                       "Okras"
                ]
        },
+       "monobook-desc": "Классическая тема оформления MediaWiki, созданная в 2004 году и названая в честь чёрно-белой фотографии книги с фонового изображения страницы",
        "monobook.css": "/* Размещённый здесь CSS будет применяться к теме оформления Monobook */",
        "monobook.js": "/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления MonoBook */"
 }
index 249c1f5..289f50e 100644 (file)
@@ -2,10 +2,12 @@
        "@metadata": {
                "authors": [
                        "Dim Grits",
-                       "Matma Rex"
+                       "Matma Rex",
+                       "Ата"
                ]
        },
        "skinname-monobook": "Моно-книга",
+       "monobook-desc": "Класична тема оформлення MediaWiki з 2004 року, названа за чорно-білим фото книги на фоні сторінки",
        "monobook.css": "/* Розміщений тут CSS буде застосовуватися до всіх тем оформлення Monobook */",
        "monobook.js": "/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують тему оформлення Моно-книга */"
 }
index 960807a..67566f6 100644 (file)
@@ -4,6 +4,7 @@
                        "Minh Nguyen"
                ]
        },
+       "monobook-desc": "Giao diện MediaWiki cổ điển năm 2004, được đặt tên theo bức hình nền cuốn sách đen trắng",
        "monobook.css": "/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng giao diện MonoBook */",
        "monobook.js": "/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng giao diện MonoBook */"
 }
index cdee3ac..081783b 100644 (file)
@@ -5,6 +5,7 @@
                ]
        },
        "skinname-vector": "Vektor",
+       "vector-skin-desc": "Moderní verze MonoBooku s novějším vzhledem a vylepšenou použitelností",
        "vector.css": "/* Zde uvedené CSS bude ovlivňovat pouze styl „Vektor“ */",
        "vector.js": "/* JavaScript pro uživatele používající vzhled „Vektor“ */",
        "vector-action-addsection": "Přidat téma",
index df7b397..75352a5 100644 (file)
                ]
        },
        "skinname-vector": "Vector",
+       "vector-skin-desc": "Versión moderna de MonoBook, con un aspecto actualizado y muchas mejoras de usabilidad",
        "vector.css": "/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia \"Vector\" */",
        "vector.js": "/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la apariencia Vector */",
-       "vector-action-addsection": "Nueva sección",
+       "vector-action-addsection": "Sección nueva",
        "vector-action-delete": "Borrar",
        "vector-action-move": "Trasladar",
        "vector-action-protect": "Proteger",
index 888ff1e..856742c 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Unai Fdz. de Betoño",
-                       "Xabier Armendaritz"
+                       "Xabier Armendaritz",
+                       "Fitoschido"
                ]
        },
        "vector-action-addsection": "Gehitu atala",
@@ -15,5 +16,6 @@
        "vector-view-edit": "Aldatu",
        "vector-view-history": "Ikusi historia",
        "vector-view-view": "Irakurri",
-       "vector-view-viewsource": "Kodea ikusia"
+       "vector-view-viewsource": "Kodea ikusia",
+       "vector-more-actions": "Gehiago"
 }
index c18eba4..1d329ff 100644 (file)
@@ -9,6 +9,7 @@
                ]
        },
        "skinname-vector": "برداری",
+       "vector-skin-desc": "نسخه مدرن منوبوک با نگاه تازه و بهبود قابلیت استفاده",
        "vector-action-addsection": "افزودن بخش",
        "vector-action-delete": "حذف",
        "vector-action-move": "انتقال",
index d63223a..f9ff0a3 100644 (file)
@@ -5,6 +5,7 @@
                        "Pyt"
                ]
        },
+       "vector-skin-desc": "Modern werjuun faan Monobook mä frisk skak an föl muar mögelkhaiden",
        "vector-action-addsection": "Nei kirew began",
        "vector-action-delete": "Strik",
        "vector-action-move": "Fersküüw",
@@ -15,5 +16,6 @@
        "vector-view-edit": "Bewerke",
        "vector-view-history": "Ferluup uunluke",
        "vector-view-view": "Lees",
-       "vector-view-viewsource": "Kweltekst uunluke"
+       "vector-view-viewsource": "Kweltekst uunluke",
+       "vector-more-actions": "Muar"
 }
index 5e8ad90..07c18d9 100644 (file)
@@ -5,10 +5,12 @@
                        "Romaine",
                        "SPQRobin",
                        "Siebrand",
-                       "Troefkaart"
+                       "Troefkaart",
+                       "Sjoerddebruin"
                ]
        },
        "skinname-vector": "Vector",
+       "vector-skin-desc": "Moderne versie van MonoBook met een fris uiterlijk en verbeteringen op het gebied van gebruiksvriendelijkheid",
        "vector.css": "/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Vector */",
        "vector.js": "/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Vector gebruiken */",
        "vector-action-addsection": "Kopje toevoegen",
index d0faf4d..5cf2082 100644 (file)
@@ -6,6 +6,7 @@
                ]
        },
        "skinname-vector": "Wektor",
+       "vector-skin-desc": "Odświeżona wersja skórki Książka, z nowym wyglądem i usprawnieniami",
        "vector.css": "/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Wektor */",
        "vector.js": "/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Wektor */",
        "vector-action-addsection": "Dodaj temat",
index 5bf9d24..2bf1407 100644 (file)
@@ -8,10 +8,12 @@
                        "Dim Grits",
                        "NickK",
                        "Prima klasy4na",
-                       "Тест"
+                       "Тест",
+                       "Ата"
                ]
        },
        "skinname-vector": "Векторне",
+       "vector-skin-desc": "Сучасна версія MonoBook зі свіжим виглядом і багатьма зручними покращеннями",
        "vector.css": "/* Розміщений тут CSS-код буде використаний в темі оформлення Векторне */",
        "vector.js": "/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують векторну тему оформлення */",
        "vector-action-addsection": "Додати тему",
index 04becc3..a59d9b4 100644 (file)
@@ -7,6 +7,7 @@
                ]
        },
        "skinname-vector": "Vectơ",
+       "vector-skin-desc": "Giao diện làm lại từ MonoBook có màu tươi và khả dụng hơn",
        "vector.css": "/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng giao diện Vectơ */",
        "vector.js": "/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng giao diện Vectơ */",
        "vector-action-addsection": "Thêm chủ đề",
index 3c28d7a..3be33b7 100755 (executable)
@@ -3,6 +3,5 @@
 
 source "https://rubygems.org"
 
-gem "chunky_png"
 gem "mediawiki_api"
 gem "mediawiki_selenium"
index 6ec2493..92784bf 100644 (file)
@@ -4,7 +4,6 @@ GEM
     builder (3.2.2)
     childprocess (0.5.3)
       ffi (~> 1.0, >= 1.0.11)
-    chunky_png (1.3.1)
     cucumber (1.3.15)
       builder (>= 2.1.2)
       diff-lcs (>= 1.1.3)
@@ -32,7 +31,7 @@ GEM
       domain_name (~> 0.5)
     i18n (0.6.9)
     json (1.8.1)
-    mediawiki_api (0.1.2)
+    mediawiki_api (0.1.3)
       faraday (~> 0.9, >= 0.9.0)
       faraday-cookie_jar (~> 0.0, >= 0.0.6)
     mediawiki_selenium (0.2.25)
@@ -57,7 +56,7 @@ GEM
       mime-types (>= 1.16)
     rspec-expectations (2.99.1)
       diff-lcs (>= 1.1.3, < 2.0)
-    rubyzip (1.1.4)
+    rubyzip (1.1.5)
     selenium-webdriver (2.42.0)
       childprocess (>= 0.5.0)
       multi_json (~> 1.0)
@@ -76,6 +75,5 @@ PLATFORMS
   ruby
 
 DEPENDENCIES
-  chunky_png
   mediawiki_api
   mediawiki_selenium
index 90e062d..29dd1c1 100644 (file)
@@ -1,4 +1,4 @@
-@chrome @clean @en.wikipedia.beta.wmflabs.org @firefox @phantomjs @test2.wikipedia.org
+@chrome @clean @en.wikipedia.beta.wmflabs.org @firefox @login @phantomjs @test2.wikipedia.org
 Feature: Create Page With Wiki Link
 
   Scenario: Create Page With Wiki Link
@@ -6,4 +6,4 @@ Feature: Create Page With Wiki Link
       And I go to the "Link Source Test Page" page with content "This is a [[Link Target Test Page|link to the test target page]] right here."
     When I click the Link Target link
     Then I should be on the Link Target Test Page
-      And the page content should contain "Link Target Test Page"
\ No newline at end of file
+      And the page content should contain "Link Target Test Page"
index ef9991a..c190a78 100644 (file)
@@ -1,9 +1,11 @@
-@chrome @clean @en.wikipedia.beta.wmflabs.org @firefox @phantomjs @test2.wikipedia.org
+@chrome @clean @en.wikipedia.beta.wmflabs.org @firefox @login @phantomjs @test2.wikipedia.org
 Feature: Edit Page
 
   Scenario: Create and edit page
     Given I go to the "Editing Test Page" page with content "This is a page to test editing"
     When I click Edit
       And I edit the page with "Edited and a random string"
+      And I click Preview
+      And I click Show Changes
       And I save the edit
     Then the edited page content should contain "Edited and a random string"
diff --git a/tests/browser/features/login.feature b/tests/browser/features/login.feature
new file mode 100644 (file)
index 0000000..9ff2a2a
--- /dev/null
@@ -0,0 +1,42 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+@chrome @en.wikipedia.beta.wmflabs.org @firefox @internet_explorer_6 @internet_explorer_7 @internet_explorer_8 @internet_explorer_9 @internet_explorer_10 @phantomjs @test2.wikipedia.org
+Feature: Log in
+
+  Background:
+    Given I am at Log in page
+
+  Scenario: Go to Log in page
+    Then Username element should be there
+      And Password element should be there
+      And Log in element should be there
+
+  Scenario: Log in without entering credentials
+    When I log in without entering credentials
+    Then error box should be visible
+
+  Scenario: Log in without entering password
+    When I log in without entering password
+    Then error box should be visible
+
+  Scenario: Log in with incorrect username
+    When I log in with incorrect username
+    Then error box should be visible
+
+  Scenario: Log in with incorrect password
+    When I log in with incorrect password
+    Then error box should be visible
+
+  @login
+  Scenario: Log in with valid credentials
+    When I am logged in
+    Then error box should not be visible
\ No newline at end of file
index 7c4c472..1a958bb 100644 (file)
@@ -25,7 +25,7 @@ Feature: Preferences
       And I can click Save
       And I can restore default settings
       And I can select date format
-      And I can see server time
+      And I can see time offset section
       And I can see local time
       And I can select my time zone
 
index 5af097b..5ab02be 100644 (file)
@@ -2,6 +2,14 @@ When(/^I click Edit$/) do
   on(MainPage).edit_link
 end
 
+When(/^I click Preview$/) do
+  on(EditPage).preview_button
+end
+
+When(/^I click Show Changes$/) do
+  on(EditPage).show_changes_button
+end
+
 When(/^I edit the page with "(.*?)"$/) do |edit_content|
   on(EditPage).edit_page_content_element.send_keys(edit_content + @random_string)
 end
diff --git a/tests/browser/features/step_definitions/login_steps.rb b/tests/browser/features/step_definitions/login_steps.rb
new file mode 100644 (file)
index 0000000..b654b2d
--- /dev/null
@@ -0,0 +1,65 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+Given(/^I am at Log in page$/) do
+  visit LoginPage
+end
+
+When(/^I log in with incorrect password$/) do
+  on(LoginPage).login_with(ENV["MEDIAWIKI_USER"], "incorrect password", false)
+end
+
+When(/^I log in with incorrect username$/) do
+  on(LoginPage).login_with("incorrect username", ENV["MEDIAWIKI_PASSWORD"], false)
+end
+
+When(/^I log in without entering credentials$/) do
+  on(LoginPage).login_with("", "", false)
+end
+
+When(/^I log in without entering password$/) do
+  on(LoginPage).login_with(ENV["MEDIAWIKI_USER"], "", false)
+end
+
+Then(/^error box should be visible$/) do
+  on(LoginErrorPage).error_box_element.should be_visible
+end
+
+Then(/^error box should not be visible$/) do
+  on(LoginErrorPage).error_box_element.should_not be_visible
+end
+
+Then(/^feedback should be (.+)$/) do |feedback|
+  on(LoginPage) do |page|
+    page.feedback_element.when_present.click
+    page.feedback.should match Regexp.escape(feedback)
+  end
+end
+
+Then(/^Log in element should be there$/) do
+  on(LoginPage).login_element.should exist
+end
+
+Then(/^main page should open$/) do
+  @browser.url.should == on(MainPage).class.url
+end
+
+Then(/^Password element should be there$/) do
+  on(LoginPage).password_element.should exist
+end
+
+Then(/^there should be a link to (.+)$/) do |text|
+  on(LoginPage).username_displayed_element.when_present.text.should == text
+end
+
+Then(/^Username element should be there$/) do
+  on(LoginPage).username_element.should exist
+end
index d3e275e..0046af6 100644 (file)
@@ -18,7 +18,7 @@ When(/^I navigate to Preferences$/) do
 end
 
 Then(/^I can click Save$/) do
-  on(PreferencesAppearancePage).save_button_element.should exist
+  on(PreferencesPage).save_button_element.should exist
 end
 
 Then(/^I can restore default settings$/) do
@@ -26,12 +26,11 @@ Then(/^I can restore default settings$/) do
 end
 
 Then(/^I can see local time$/) do
-  @browser.text.should match Regexp.escape("Local time")
   on(PreferencesAppearancePage).local_time_span_element.should exist
 end
 
-Then(/^I can see server time$/) do
-  @browser.text.should match Regexp.escape("Server time")
+Then(/^I can see time offset section$/) do
+  on(PreferencesAppearancePage).time_offset_table_element.should be_visible
 end
 
 Then(/^I can select date format$/) do
@@ -49,7 +48,6 @@ Then(/^I can select image size$/) do
 end
 
 Then(/^I can select my time zone$/) do
-  @browser.text.should match Regexp.escape("Time zone")
   on(PreferencesAppearancePage) do |page|
     page.time_offset_select_element.should exist
     page.other_offset_element.should exist
index 4ffef5e..7c12236 100644 (file)
@@ -1,2 +1,2 @@
-require "mediawiki_selenium"
 require "mediawiki_api"
+require "mediawiki_selenium"
index 594ac73..b619c34 100644 (file)
@@ -2,6 +2,7 @@ class EditPage
   include PageObject
 
   text_area(:edit_page_content, id: "wpTextbox1")
+  button(:preview_button, id: "wpPreview")
+  button(:show_changes_button, id: "wpDiff")
   button(:save_button, id: "wpSave")
-
 end
\ No newline at end of file
diff --git a/tests/browser/features/support/pages/login_error_page.rb b/tests/browser/features/support/pages/login_error_page.rb
new file mode 100644 (file)
index 0000000..4fc9ca7
--- /dev/null
@@ -0,0 +1,5 @@
+class LoginErrorPage
+  include PageObject
+
+  div(:error_box, class: "errorbox")
+end
\ No newline at end of file
index c01aab4..e7b64cd 100644 (file)
@@ -29,11 +29,11 @@ class PreferencesAppearancePage
   radio_button(:monobook, id: "mw-input-wpskin-monobook")
   radio_button(:no_preference_radio, id: "mw-input-wpdate-default")
   text_field(:other_offset, id: "mw-input-wptimecorrection-other")
-  a(:restore_default_link, text:/Restore all default settings/)
-  button(:save_button, text: "Save")
+  a(:restore_default_link, href: /reset/)
   select_list(:size_select, id: "mw-input-wpimagesize")
   select_list(:threshold_select, id: "mw-input-wpstubthreshold")
   select_list(:time_offset_select, id: "mw-input-wptimecorrection")
+  table(:time_offset_table, id: "mw-htmlform-timeoffset")
   select_list(:thumb_select, id: "mw-input-wpthumbsize")
   select_list(:underline_select, id: "mw-input-wpunderline")
   radio_button(:vector, id: "mw-input-wpskin-vector")
index b581ca4..919ba27 100644 (file)
@@ -15,14 +15,8 @@ class PreferencesPage
   include URL
   page_url URL.url("Special:Preferences")
 
-  a(:appearance_link, text: "Appearance")
-  a(:date_and_time_link, text: "Date and time")
-  a(:editing_link, text: "Editing")
-  a(:gadgets_link, text: "Gadgets")
-  a(:misc_link, text: "Misc")
-  a(:pending_changes_link, text: "Pending changes")
-  a(:recent_changes_link, text: "Recent changes")
-  a(:search_link, text: "Search")
-  a(:user_profile_link, text: "User profile")
-  a(:watchlist_link, text: "Watchlist")
+  a(:appearance_link, id: "preftab-rendering")
+  a(:editing_link, id: "preftab-editing")
+  a(:user_profile_link, id: "preftab-personal")
+  button(:save_button, id: "prefcontrol")
 end
diff --git a/tests/phpunit/includes/ImagePage404Test.php b/tests/phpunit/includes/ImagePage404Test.php
new file mode 100644 (file)
index 0000000..3660456
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+/**
+ * For doing Image Page tests that rely on 404 thumb handling
+ */
+class ImagePage404Test extends MediaWikiMediaTestCase {
+
+       protected function getRepoOptions() {
+               return parent::getRepoOptions() + array( 'transformVia404' => true );
+       }
+
+       function setUp() {
+               $this->setMwGlobals( 'wgImageLimits', array(
+                       array( 320, 240 ),
+                       array( 640, 480 ),
+                       array( 800, 600 ),
+                       array( 1024, 768 ),
+                       array( 1280, 1024 )
+               ) );
+               parent::setUp();
+       }
+
+       function getImagePage( $filename ) {
+               $title = Title::makeTitleSafe( NS_FILE, $filename );
+               $file = $this->dataFile( $filename );
+               $iPage = new ImagePage( $title );
+               $iPage->setFile( $file );
+               return $iPage;
+       }
+
+       /**
+        * @dataProvider providerGetThumbSizes
+        * @param $filename String
+        * @param $expectedNumberThumbs integer How many thumbnails to show
+        */
+       function testGetThumbSizes( $filename, $expectedNumberThumbs ) {
+               $iPage = $this->getImagePage( $filename );
+               $reflection = new ReflectionClass( $iPage );
+               $reflMethod = $reflection->getMethod( 'getThumbSizes' );
+               $reflMethod->setAccessible( true );
+
+               $actual = $reflMethod->invoke( $iPage, 545, 700 );
+               $this->assertEquals( count( $actual ), $expectedNumberThumbs );
+       }
+
+       function providerGetThumbSizes() {
+               return array(
+                       array( 'animated.gif', 6 ),
+                       array( 'Toll_Texas_1.svg', 6 ),
+                       array( '80x60-Greyscale.xcf', 6 ),
+                       array( 'jpeg-comment-binary.jpg', 6 ),
+               );
+       }
+}
diff --git a/tests/phpunit/includes/ImagePageTest.php b/tests/phpunit/includes/ImagePageTest.php
new file mode 100644 (file)
index 0000000..d5ecb95
--- /dev/null
@@ -0,0 +1,90 @@
+<?php
+class ImagePageTest extends MediaWikiMediaTestCase {
+
+       function setUp() {
+               $this->setMwGlobals( 'wgImageLimits', array(
+                       array( 320, 240 ),
+                       array( 640, 480 ),
+                       array( 800, 600 ),
+                       array( 1024, 768 ),
+                       array( 1280, 1024 )
+               ) );
+               parent::setUp();
+       }
+
+       function getImagePage( $filename ) {
+               $title = Title::makeTitleSafe( NS_FILE, $filename );
+               $file = $this->dataFile( $filename );
+               $iPage = new ImagePage( $title );
+               $iPage->setFile( $file );
+               return $iPage;
+       }
+
+       /**
+        * @dataProvider providerGetDisplayWidthHeight
+        * @param $dimensions Array [maxWidth, maxHeight, width, height]
+        * @param $expected Array [width, height] The width and height we expect to display at
+        */
+       function testGetDisplayWidthHeight( $dim, $expected ) {
+               $iPage = $this->getImagePage( 'animated.gif' );
+               $reflection = new ReflectionClass( $iPage );
+               $reflMethod = $reflection->getMethod( 'getDisplayWidthHeight' );
+               $reflMethod->setAccessible( true );
+
+               $actual = $reflMethod->invoke( $iPage, $dim[0], $dim[1], $dim[2], $dim[3] );
+               $this->assertEquals( $actual, $expected );
+       }
+
+       function providerGetDisplayWidthHeight() {
+               return array(
+                       array(
+                               array( 1024.0, 768.0, 600.0, 600.0 ),
+                               array( 600.0, 600.0 )
+                       ),
+                       array(
+                               array( 1024.0, 768.0, 1600.0, 600.0 ),
+                               array( 1024.0, 384.0 )
+                       ),
+                       array(
+                               array( 1024.0, 768.0, 1024.0, 768.0 ),
+                               array( 1024.0, 768.0 )
+                       ),
+                       array(
+                               array( 1024.0, 768.0, 800.0, 1000.0 ),
+                               array( 614.0, 768.0 )
+                       ),
+                       array(
+                               array( 1024.0, 768.0, 0, 1000 ),
+                               array( 0, 0 )
+                       ),
+                       array(
+                               array( 1024.0, 768.0, 2000, 0 ),
+                               array( 0, 0 )
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider providerGetThumbSizes
+        * @param $filename String
+        * @param $expectedNumberThumbs integer How many thumbnails to show
+        */
+       function testGetThumbSizes( $filename, $expectedNumberThumbs ) {
+               $iPage = $this->getImagePage( $filename );
+               $reflection = new ReflectionClass( $iPage );
+               $reflMethod = $reflection->getMethod( 'getThumbSizes' );
+               $reflMethod->setAccessible( true );
+
+               $actual = $reflMethod->invoke( $iPage, 545, 700 );
+               $this->assertEquals( count( $actual ), $expectedNumberThumbs );
+       }
+
+       function providerGetThumbSizes() {
+               return array(
+                       array( 'animated.gif', 2 ),
+                       array( 'Toll_Texas_1.svg', 1 ),
+                       array( '80x60-Greyscale.xcf', 1 ),
+                       array( 'jpeg-comment-binary.jpg', 2 ),
+               );
+       }
+}
index a19d035..36de114 100644 (file)
@@ -125,6 +125,31 @@ class UserTest extends MediaWikiTestCase {
                );
        }
 
+       /**
+        * @dataProvider provideIPs
+        * @covers User::isIP
+        */
+       public function testIsIP( $value, $result, $message ) {
+               $this->assertEquals( $this->user->isIP( $value ), $result, $message );
+       }
+
+       public static function provideIPs() {
+               return array(
+                       array( '', false, 'Empty string' ),
+                       array( ' ', false, 'Blank space' ),
+                       array( '10.0.0.0', true, 'IPv4 private 10/8' ),
+                       array( '10.255.255.255', true, 'IPv4 private 10/8' ),
+                       array( '192.168.1.1', true, 'IPv4 private 192.168/16' ),
+                       array( '203.0.113.0', true, 'IPv4 example' ),
+                       array( '2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff', true, 'IPv6 example' ),
+                       // Not valid IPs but classified as such by MediaWiki for negated asserting
+                       // of whether this might be the identifier of a logged-out user or whether
+                       // to allow usernames like it.
+                       array( '300.300.300.300', true, 'Looks too much like an IPv4 address' ),
+                       array( '203.0.113.xxx', true, 'Assigned by UseMod to cloaked logged-out users' ),
+               );
+       }
+
        /**
         * @dataProvider provideUserNames
         * @covers User::isValidUserName
@@ -148,6 +173,9 @@ class UserTest extends MediaWikiTestCase {
                        array( 'Abcdകഖഗഘ', true, ' Mixed scripts' ),
                        array( 'ജോസ്‌തോമസ്', false, 'ZWNJ- Format control character' ),
                        array( 'Ab cd', false, ' Ideographic space' ),
+                       array( '300.300.300.300', false, 'Looks too much like an IPv4 address' ),
+                       array( '302.113.311.900', false, 'Looks too much like an IPv4 address' ),
+                       array( '203.0.113.xxx', false, 'Reserved for usage by UseMod for cloaked logged-out users' ),
                );
        }
 
@@ -157,7 +185,7 @@ class UserTest extends MediaWikiTestCase {
         * Extensions and core
         */
        public function testAllRightsWithMessage() {
-               //Getting all user rights, for core: User::$mCoreRights, for extensions: $wgAvailableRights
+               // Getting all user rights, for core: User::$mCoreRights, for extensions: $wgAvailableRights
                $allRights = User::getAllRights();
                $allMessageKeys = Language::getMessageKeysFor( 'en' );
 
index e031ce3..5f955bb 100644 (file)
@@ -17,7 +17,7 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
        /** @var DerivativeContext */
        private $mContext;
 
-       private $mOldGetPreferencesHooks = false;
+       private $mOldGetPreferencesHooks;
 
        private static $Success = array( 'options' => 'success' );
 
@@ -61,10 +61,8 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
        protected function tearDown() {
                global $wgHooks;
 
-               if ( $this->mOldGetPreferencesHooks !== false ) {
-                       $wgHooks['GetPreferences'] = $this->mOldGetPreferencesHooks;
-                       $this->mOldGetPreferencesHooks = false;
-               }
+               $wgHooks['GetPreferences'] = $this->mOldGetPreferencesHooks;
+               $this->mOldGetPreferencesHooks = false;
 
                parent::tearDown();
        }
index bb5e398..2b4d60d 100644 (file)
@@ -291,6 +291,41 @@ class CSSMinTest extends MediaWikiTestCase {
                                '@import url(//localhost/styles.css?query=yes)',
                                '@import url(//localhost/styles.css?query=yes)',
                        ),
+                       array(
+                               'Simple case with comments before url',
+                               'foo { prop: /* some {funny;} comment */ url(bar.png); }',
+                               'foo { prop: /* some {funny;} comment */ url(http://localhost/w/bar.png); }',
+                       ),
+                       array(
+                               'Simple case with comments after url',
+                               'foo { prop: url(red.gif)/* some {funny;} comment */ ; }',
+                               'foo { prop: url(http://localhost/w/red.gif?timestamp)/* some {funny;} comment */ ; }',
+                       ),
+                       array(
+                               'Embedded file with comment before url',
+                               'foo { /* @embed */ background: /* some {funny;} comment */ url(red.gif); }',
+                               "foo { background: /* some {funny;} comment */ url($red); background: /* some {funny;} comment */ url(http://localhost/w/red.gif?timestamp)!ie; }",
+                       ),
+                       array(
+                               'Embedded file with comments inside and outside the rule',
+                               'foo { /* @embed */ background: url(red.gif) /* some {foo;} comment */; /* some {bar;} comment */ }',
+                               "foo { background: url($red) /* some {foo;} comment */; background: url(http://localhost/w/red.gif?timestamp) /* some {foo;} comment */!ie; /* some {bar;} comment */ }",
+                       ),
+                       array(
+                               'Embedded file with comment outside the rule',
+                               'foo { /* @embed */ background: url(red.gif); /* some {funny;} comment */ }',
+                               "foo { background: url($red); background: url(http://localhost/w/red.gif?timestamp)!ie; /* some {funny;} comment */ }",
+                       ),
+                       array(
+                               'Rule with two urls, each with comments',
+                               '{ background: /*asd*/ url(something.png); background: /*jkl*/ url(something.png); }',
+                               '{ background: /*asd*/ url(http://localhost/w/something.png); background: /*jkl*/ url(http://localhost/w/something.png); }',
+                       ),
+                       array(
+                               'Sanity check for offending line from jquery.ui.theme.css (bug 60077)',
+                               '.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }',
+                               '.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(http://localhost/w/images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }',
+                       ),
                );
        }
 
index 96347d9..7b64dfd 100644 (file)
@@ -29,11 +29,18 @@ abstract class MediaWikiMediaTestCase extends MediaWikiTestCase {
                        'wikiId' => wfWikiId(),
                        'containerPaths' => $containers
                ) );
-               $this->repo = new FSRepo( array(
+               $this->repo = new FSRepo( $this->getRepoOptions() );
+       }
+
+       /**
+        * @return Array Argument for FSRepo constructor
+        */
+       protected function getRepoOptions() {
+               return array(
                        'name' => 'temp',
                        'url' => 'http://localhost/thumbtest',
                        'backend' => $this->backend
-               ) );
+               );
        }
 
        /**
diff --git a/tests/phpunit/includes/media/XCFTest.php b/tests/phpunit/includes/media/XCFTest.php
new file mode 100644 (file)
index 0000000..ae4fa8b
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+class XCFHandlerTest extends MediaWikiMediaTestCase {
+
+       /** @var XCFHandler */
+       protected $handler;
+
+       protected function setUp() {
+               parent::setUp();
+               $this->handler = new XCFHandler();
+       }
+
+
+       /**
+        * @param string $filename
+        * @param int $expectedWidth width
+        * @param int $expectedHeigh height
+        * @dataProvider provideGetImageSize
+        * @covers XCFHandler::getImageSize
+        */
+       public function testGetImageSize( $filename, $expectedWidth, $expectedHeight ) {
+               $file = $this->dataFile( $filename, 'image/x-xcf' );
+               $actual = $this->handler->getImageSize( $file, $file->getLocalRefPath() );
+               $this->assertEquals( $expectedWidth, $actual[0] );
+               $this->assertEquals( $expectedHeight, $actual[1] );
+       }
+
+       public static function provideGetImageSize() {
+               return array(
+                       array( '80x60-2layers.xcf', 80, 60 ),
+                       array( '80x60-RGB.xcf', 80, 60 ),
+                       array( '80x60-Greyscale.xcf', 80, 60 ),
+               );
+       }
+
+       /**
+        * @param string $metadata Serialized metadata
+        * @param int $expected One of the class constants of XCFHandler
+        * @dataProvider provideIsMetadataValid
+        * @covers XCFHandler::isMetadataValid
+        */
+       public function testIsMetadataValid( $metadata, $expected ) {
+               $actual = $this->handler->isMetadataValid( null, $metadata );
+               $this->assertEquals( $expected, $actual );
+       }
+
+       public static function provideIsMetadataValid() {
+               return array(
+                       array( '', XCFHandler::METADATA_BAD ),
+                       array( serialize( array( 'error' => true ) ), XCFHandler::METADATA_GOOD ),
+                       array( false, XCFHandler::METADATA_BAD ),
+                       array( serialize( array( 'colorType' => 'greyscale-alpha' ) ), XCFHandler::METADATA_GOOD ),
+               );
+       }
+
+       /**
+        * @param string $filename
+        * @param string $expected Serialized array
+        * @dataProvider provideGetMetadata
+        * @covers XCFHandler::getMetadata
+        */
+       public function testGetMetadata( $filename, $expected ) {
+               $file = $this->dataFile( $filename, 'image/png' );
+               $actual = $this->handler->getMetadata( $file, "$this->filePath/$filename" );
+               $this->assertEquals( $expected, $actual );
+       }
+
+       public static function provideGetMetadata() {
+               return array(
+                       array( '80x60-2layers.xcf', 'a:1:{s:9:"colorType";s:16:"truecolour-alpha";}' ),
+                       array( '80x60-RGB.xcf', 'a:1:{s:9:"colorType";s:16:"truecolour-alpha";}' ),
+                       array( '80x60-Greyscale.xcf', 'a:1:{s:9:"colorType";s:15:"greyscale-alpha";}' ),
+               );
+       }
+}
index ab9aab1..50e89da 100644 (file)
                                return true;
                        }
 
+                       // Don't iterate over the module registry (the 'script' references would
+                       // be listed as untested methods otherwise)
+                       if ( val === mw.loader.moduleRegistry ) {
+                               return true;
+                       }
+
                        return false;
                };
 
index df800bc..c6dd91c 100644 (file)
@@ -4,7 +4,6 @@
 
        var uacount = 0,
                // Object keyed by userAgent. Value is an array (human-readable name, client-profile object, navigator.platform value)
-               // Info based on results from http://toolserver.org/~krinkle/testswarm/job/174/
                uas = {
                        // Internet Explorer 6
                        // Internet Explorer 7