Merge "API: Remove metadata keys from indexpageids output"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 27 Apr 2015 17:54:28 +0000 (17:54 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 27 Apr 2015 17:54:28 +0000 (17:54 +0000)
179 files changed:
RELEASE-NOTES-1.25
RELEASE-NOTES-1.26
autoload.php
composer.json
includes/DefaultSettings.php
includes/GlobalFunctions.php
includes/Setup.php
includes/ZhConversion.php
includes/api/ApiEditPage.php
includes/api/ApiQueryPageProps.php
includes/api/ApiQueryRevisions.php
includes/api/i18n/ast.json [new file with mode: 0644]
includes/api/i18n/cs.json
includes/api/i18n/de.json
includes/api/i18n/en.json
includes/api/i18n/gl.json
includes/api/i18n/ja.json
includes/api/i18n/ksh.json
includes/api/i18n/ku-latn.json
includes/api/i18n/ta.json
includes/api/i18n/zh-hans.json
includes/context/IContextSource.php
includes/db/DBConnRef.php [new file with mode: 0644]
includes/db/Database.php
includes/db/DatabaseMysqlBase.php
includes/db/LoadBalancer.php
includes/eventrelayer/EventRelayer.php [new file with mode: 0755]
includes/eventrelayer/EventRelayerMCRD.php [new file with mode: 0755]
includes/installer/i18n/da.json
includes/installer/i18n/es.json
includes/installer/i18n/ja.json
includes/jobqueue/JobRunner.php
includes/libs/objectcache/BagOStuff.php
includes/media/DjVu.php
includes/media/FormatMetadata.php
includes/objectcache/MemcachedBagOStuff.php
includes/objectcache/ObjectCache.php
includes/objectcache/RedisBagOStuff.php
includes/objectcache/WANObjectCache.php [new file with mode: 0755]
includes/profiler/ProfilerSectionOnly.php [changed mode: 0755->0644]
includes/resourceloader/ResourceLoaderModule.php
includes/specials/SpecialActiveusers.php
languages/Names.php
languages/i18n/aeb-arab.json [new file with mode: 0644]
languages/i18n/aeb-latn.json [new file with mode: 0644]
languages/i18n/aeb.json [deleted file]
languages/i18n/af.json
languages/i18n/ast.json
languages/i18n/awa.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bgn.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/ckb.json
languages/i18n/cs.json
languages/i18n/cv.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/egl.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/frr.json
languages/i18n/gd.json
languages/i18n/gl.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hsb.json
languages/i18n/hu.json
languages/i18n/hy.json
languages/i18n/ia.json
languages/i18n/ilo.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/ka.json
languages/i18n/kk-cyrl.json
languages/i18n/kn.json
languages/i18n/ko.json
languages/i18n/krc.json
languages/i18n/ksh.json
languages/i18n/ku-latn.json
languages/i18n/la.json
languages/i18n/lb.json
languages/i18n/lrc.json
languages/i18n/lt.json
languages/i18n/lv.json
languages/i18n/mg.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/oc.json
languages/i18n/or.json
languages/i18n/pl.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/scn.json
languages/i18n/sco.json
languages/i18n/ses.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/su.json
languages/i18n/sv.json
languages/i18n/szl.json
languages/i18n/ta.json
languages/i18n/te.json
languages/i18n/tg-cyrl.json
languages/i18n/th.json
languages/i18n/tr.json
languages/i18n/uk.json
languages/i18n/ur.json
languages/i18n/yi.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesAeb.php
languages/messages/MessagesAeb_arab.php [new file with mode: 0644]
maintenance/language/zhtable/Makefile.py
maintenance/language/zhtable/toCN.manual
maintenance/language/zhtable/toHK.manual
maintenance/language/zhtable/toTW.manual
maintenance/language/zhtable/toTrad.manual
maintenance/language/zhtable/trad2simp.manual
resources/lib/oojs-ui/i18n/bn.json
resources/lib/oojs-ui/i18n/fo.json
resources/lib/oojs-ui/i18n/kn.json
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-alerts.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-content.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-editing-advanced.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-editing-core.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-editing-list.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-editing-styling.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-interactions.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-layout.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-location.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-media.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-moderation.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-movement.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-user.css
resources/lib/oojs-ui/oojs-ui-mediawiki-icons-wikimedia.css
resources/lib/oojs-ui/oojs-ui-mediawiki-noimages.css
resources/lib/oojs-ui/oojs-ui-mediawiki.css
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.svg [new file with mode: 0644]
resources/src/mediawiki.action/mediawiki.action.view.categoryPage.less
resources/src/mediawiki.legacy/wikibits.js
tests/phpunit/Makefile
tests/phpunit/includes/media/FormatMetadataTest.php
tests/phpunit/includes/objectcache/WANObjectCacheTest.php [new file with mode: 0644]
tests/phpunit/install-phpunit.sh [deleted file]
tests/qunit/data/testrunner.js

index e74474d..9d8487c 100644 (file)
@@ -491,8 +491,9 @@ changes to languages because of Bugzilla reports.
     RewriteBase /
     RewriteRule ^(.*)\.php5 $1.php [R=301,L]
 
-* The global importScript and importStylesheet functions, as well as the loadedScripts object,
-  from wikibits.js (deprecated since 1.17) now emit warnings through mw.log.warn when accessed.
+* The global importScriptURI and importStylesheetURI functions, as well as the
+  loadedScripts object, from wikibits.js (deprecated since 1.17) now emit
+  warnings through mw.log.warn when accessed.
 
 
 == Compatibility ==
index 9426635..57166ef 100644 (file)
@@ -23,6 +23,8 @@ production.
   tag is meant to be hidden from user interfaces.
 * action=import no longer allows both the namespace= and rootpage= parameters
   to be set. If they are both set, the value of rootpage= will be ignored.
+* prop=revision output in enum mode is now sorted by timestamp rather than
+  revision ID. This usually won't make any difference.
 
 === Action API internal changes in 1.26 ===
 
index ddd8254..71bc7b2 100644 (file)
@@ -278,7 +278,7 @@ $wgAutoloadLocalClasses = array(
        'CurlHttpRequest' => __DIR__ . '/includes/HttpFunctions.php',
        'DBAccessBase' => __DIR__ . '/includes/dao/DBAccessBase.php',
        'DBAccessError' => __DIR__ . '/includes/db/LBFactory.php',
-       'DBConnRef' => __DIR__ . '/includes/db/LoadBalancer.php',
+       'DBConnRef' => __DIR__ . '/includes/db/DBConnRef.php',
        'DBConnectionError' => __DIR__ . '/includes/db/DatabaseError.php',
        'DBError' => __DIR__ . '/includes/db/DatabaseError.php',
        'DBExpectedError' => __DIR__ . '/includes/db/DatabaseError.php',
@@ -382,6 +382,9 @@ $wgAutoloadLocalClasses = array(
        'EnqueueJob' => __DIR__ . '/includes/jobqueue/jobs/EnqueueJob.php',
        'EraseArchivedFile' => __DIR__ . '/maintenance/eraseArchivedFile.php',
        'ErrorPageError' => __DIR__ . '/includes/exception/ErrorPageError.php',
+       'EventRelayer' => __DIR__ . '/includes/eventrelayer/EventRelayer.php',
+       'EventRelayerMCRD' => __DIR__ . '/includes/eventrelayer/EventRelayerMCRD.php',
+       'EventRelayerNull' => __DIR__ . '/includes/eventrelayer/EventRelayer.php',
        'Exif' => __DIR__ . '/includes/media/Exif.php',
        'ExifBitmapHandler' => __DIR__ . '/includes/media/ExifBitmap.php',
        'ExplodeIterator' => __DIR__ . '/includes/libs/ExplodeIterator.php',
@@ -1313,6 +1316,7 @@ $wgAutoloadLocalClasses = array(
        'ViewAction' => __DIR__ . '/includes/actions/ViewAction.php',
        'VirtualRESTService' => __DIR__ . '/includes/libs/virtualrest/VirtualRESTService.php',
        'VirtualRESTServiceClient' => __DIR__ . '/includes/libs/virtualrest/VirtualRESTServiceClient.php',
+       'WANObjectCache' => __DIR__ . '/includes/objectcache/WANObjectCache.php',
        'WaitForSlave' => __DIR__ . '/maintenance/waitForSlave.php',
        'WantedCategoriesPage' => __DIR__ . '/includes/specials/SpecialWantedcategories.php',
        'WantedFilesPage' => __DIR__ . '/includes/specials/SpecialWantedfiles.php',
index d0c8f53..c8f16ba 100644 (file)
@@ -20,7 +20,7 @@
                "ext-iconv": "*",
                "leafo/lessphp": "0.5.0",
                "liuggio/statsd-php-client": "1.0.12",
-               "oojs/oojs-ui": "0.9.8",
+               "oojs/oojs-ui": "0.10.1",
                "php": ">=5.3.3",
                "psr/log": "1.0.0",
                "wikimedia/cdb": "1.0.1",
index 3cfeb8c..2145d8a 100644 (file)
@@ -2061,8 +2061,8 @@ $wgCacheDirectory = false;
 
 /**
  * Main cache type. This should be a cache with fast access, but it may have
- * limited space. By default, it is disabled, since the database is not fast
- * enough to make it worthwhile.
+ * limited space. By default, it is disabled, since the stock database cache
+ * is not fast enough to make it worthwhile.
  *
  * The options are:
  *
@@ -2140,6 +2140,50 @@ $wgObjectCaches = array(
        'hash' => array( 'class' => 'HashBagOStuff' ),
 );
 
+/**
+ * Main cache Wide-Area-Network cache type. This should be a cache with fast access,
+ * but it may have limited space. By default, it is disabled, since the basic stock
+ * cache is not fast enough to make it worthwhile. For single data-center setups, this can
+ * simply be pointed to a cache in $wgWANObjectCaches that uses a local $wgObjectCaches
+ * cache with a relayer of type EventRelayerNull.
+ *
+ * The options are:
+ *   - CACHE_NONE:       Do not cache
+ *   - (other):          A string may be used which identifies a cache
+ *                       configuration in $wgWANObjectCaches.
+ */
+$wgMainWANCache = CACHE_NONE;
+
+/**
+ * Advanced WAN object cache configuration.
+ *
+ * Each WAN cache wraps a registered object cache (for the local cluster)
+ * and it must also be configured to point to a PubSub instance. Subscribers
+ * must be configured to relay purges to the actual cache servers.
+ *
+ * The format is an associative array where the key is a cache identifier, and
+ * the value is an associative array of parameters. The "cacheId" parameter is
+ * a cache identifier from $wgObjectCaches. The "relayerConfig" parameter is an
+ * array used to construct an EventRelayer object. The "pool" parameter is a
+ * string that is used as a PubSub channel prefix.
+ */
+$wgWANObjectCaches = array(
+       CACHE_NONE => array(
+               'class'         => 'WANObjectCache',
+               'cacheId'       => CACHE_NONE,
+               'pool'          => 'mediawiki-main-none',
+               'relayerConfig' => array( 'class' => 'EventRelayerNull' )
+       )
+       /* Example of a simple single data-center cache:
+       'memcached-php' => array(
+               'class'         => 'WANObjectCache',
+               'cacheId'       => 'memcached-php',
+               'pool'          => 'mediawiki-main-memcached',
+               'relayerConfig' => array( 'class' => 'EventRelayerNull' )
+       )
+       */
+);
+
 /**
  * The expiry time for the parser cache, in seconds.
  * The default is 86400 (one day).
@@ -6451,6 +6495,21 @@ $wgJobTypesExcludedFromDefaultQueue = array( 'AssembleUploadChunks', 'PublishSta
  */
 $wgJobBackoffThrottling = array();
 
+/**
+ * Make job runners commit changes for slave-lag prone jobs one job at a time.
+ * This is useful if there are many job workers that race on slave lag checks.
+ * If set, jobs taking this many seconds of DB write time have serialized commits.
+ *
+ * Note that affected jobs may have worse lock contention. Also, if they affect
+ * several DBs at once they may have a smaller chance of being atomic due to the
+ * possibility of connection loss while queueing up to commit. Affected jobs may
+ * also fail due to the commit lock acquisition timeout.
+ *
+ * @var float|bool
+ * @since 1.26
+ */
+$wgJobSerialCommitThreshold = false;
+
 /**
  * Map of job types to configuration arrays.
  * This determines which queue class and storage system is used for each job type.
index 0287798..cefa375 100644 (file)
@@ -1346,9 +1346,14 @@ function wfReadOnlyReason() {
                }
                // Callers use this method to be aware that data presented to a user
                // may be very stale and thus allowing submissions can be problematic.
-               if ( $wgReadOnly === false && wfGetLB()->getLaggedSlaveMode() ) {
+               try {
+                       if ( $wgReadOnly === false && wfGetLB()->getLaggedSlaveMode() ) {
+                               $wgReadOnly = 'The database has been automatically locked ' .
+                                       'while the slave database servers catch up to the master';
+                       }
+               } catch ( DBConnectionError $e ) {
                        $wgReadOnly = 'The database has been automatically locked ' .
-                               'while the slave database servers catch up to the master';
+                               'until the slave database servers become available';
                }
        }
 
index 596e605..b8139d9 100644 (file)
@@ -523,15 +523,25 @@ if ( $wgSecureLogin && substr( $wgServer, 0, 2 ) !== '//' ) {
 
 // Now that GlobalFunctions is loaded, set defaults that depend on it.
 if ( $wgTmpDirectory === false ) {
-       $ps_tmpdir = Profiler::instance()->scopedProfileIn( $fname . '-tempDir' );
        $wgTmpDirectory = wfTempDir();
-       Profiler::instance()->scopedProfileOut( $ps_tmpdir );
 }
 
 // We don't use counters anymore. Left here for extensions still
 // expecting this to exist. Should be removed sometime 1.26 or later.
 $wgDisableCounters = true;
 
+if ( $wgMainWANCache === false ) {
+       // Setup a WAN cache from $wgMainCacheType with no relayer.
+       // Sites using multiple datacenters can configure a relayer.
+       $wgMainWANCache = 'mediawiki-main-default';
+       $wgWANObjectCaches[$wgMainWANCache] = array(
+               'class'         => 'WANObjectCache',
+               'cacheId'       => $wgMainCacheType,
+               'pool'          => 'mediawiki-main-default',
+               'relayerConfig' => array( 'class' => 'EventRelayerNull' )
+       );
+}
+
 Profiler::instance()->scopedProfileOut( $ps_default2 );
 
 $ps_misc = Profiler::instance()->scopedProfileIn( $fname . '-misc1' );
index b05c219..ba9f448 100644 (file)
@@ -3000,10 +3000,10 @@ $zh2Hant = array(
 '𫛢' => '鸋',
 '𫛶' => '鶒',
 '𫛸' => '鶗',
-'0出現' => '0出現',
 '0出现' => '0出現',
-'0å\87ºçº¿' => '0å\87ºç·\9a',
+'0å\87ºç\8f¾' => '0å\87ºç\8f¾',
 '0出線' => '0出線',
+'0出线' => '0出線',
 '0只支持' => '0只支持',
 '0只支援' => '0只支援',
 '0周后' => '0周後',
@@ -3219,8 +3219,8 @@ $zh2Hant = array(
 '不吊' => '不弔',
 '不卷' => '不捲',
 '不采' => '不採',
-'不斗膽' => '不斗膽',
 '不斗胆' => '不斗膽',
+'不斗膽' => '不斗膽',
 '不断发' => '不斷發',
 '不每只' => '不每只',
 '不谷' => '不穀',
@@ -3281,16 +3281,15 @@ $zh2Hant = array(
 '丰南' => '丰南',
 '丰姿' => '丰姿',
 '丰容' => '丰容',
-'丰度' => '丰度',
 '丰情' => '丰情',
 '丰标' => '丰標',
-'丰標不凡' => '丰標不凡',
 '丰标不凡' => '丰標不凡',
+'丰標不凡' => '丰標不凡',
 '丰神' => '丰神',
 '丰茸' => '丰茸',
 '丰采' => '丰采',
-'丰韻' => '丰韻',
 '丰韵' => '丰韻',
+'丰韻' => '丰韻',
 '丹棱' => '丹稜',
 '主仆' => '主僕',
 '主干' => '主幹',
@@ -3328,12 +3327,10 @@ $zh2Hant = array(
 '九扎' => '九紮',
 '九只' => '九隻',
 '九余' => '九餘',
-'干上' => '乾上',
 '干干' => '乾乾',
 '干干净净' => '乾乾淨淨',
-'干了' => '乾了',
 '干井' => '乾井',
-'干个' => '乾個',
+'干个够' => '乾個夠',
 '干儿' => '乾兒',
 '干冰' => '乾冰',
 '干冷' => '乾冷',
@@ -3368,7 +3365,6 @@ $zh2Hant = array(
 '干巴' => '乾巴',
 '干式' => '乾式',
 '干弟' => '乾弟',
-'干得' => '乾得',
 '干急' => '乾急',
 '干性' => '乾性',
 '干打雷' => '乾打雷',
@@ -3500,8 +3496,8 @@ $zh2Hant = array(
 '二缶钟惑' => '二缶鐘惑',
 '二老板' => '二老板',
 '二虎相斗' => '二虎相鬥',
-'二里頭' => '二里頭',
 '二里头' => '二里頭',
+'二里頭' => '二里頭',
 '二只' => '二隻',
 '二余' => '二餘',
 '于丹' => '于丹',
@@ -3510,13 +3506,13 @@ $zh2Hant = array(
 '于仲文' => '于仲文',
 '于佳卉' => '于佳卉',
 '于来山' => '于來山',
-'于偉國' => '于偉國',
 '于伟国' => '于偉國',
+'于偉國' => '于偉國',
 '于光新' => '于光新',
 '于光远' => '于光遠',
 '于光遠' => '于光遠',
-'于克-蘭多縣' => '于克-蘭多縣',
 '于克-兰多县' => '于克-蘭多縣',
+'于克-蘭多縣' => '于克-蘭多縣',
 '于克勒' => '于克勒',
 '于再清' => '于再清',
 '于冕' => '于冕',
@@ -3527,18 +3523,18 @@ $zh2Hant = array(
 '于化虎' => '于化虎',
 '于占元' => '于占元',
 '于友泽' => '于友澤',
-'于台煙' => '于台煙',
 '于台烟' => '于台煙',
+'于台煙' => '于台煙',
 '于右任' => '于右任',
 '于吉' => '于吉',
 '于和伟' => '于和偉',
 '于品海' => '于品海',
 '于国桢' => '于國楨',
 '于國楨' => '于國楨',
-'于國治' => '于國治',
 '于国治' => '于國治',
-'äº\8eå \85' => 'äº\8eå \85',
+'äº\8eå\9c\8bæ²»' => 'äº\8eå\9c\8bæ²»',
 '于坚' => '于堅',
+'于堅' => '于堅',
 '于大宝' => '于大寶',
 '于大寶' => '于大寶',
 '于天仁' => '于天仁',
@@ -3550,8 +3546,8 @@ $zh2Hant = array(
 '于娟' => '于娟',
 '于子千' => '于子千',
 '于孔兼' => '于孔兼',
-'于學忠' => '于學忠',
 '于学忠' => '于學忠',
+'于學忠' => '于學忠',
 '于家堡' => '于家堡',
 '于寘' => '于寘',
 '于宝轩' => '于寶軒',
@@ -3561,10 +3557,10 @@ $zh2Hant = array(
 '于小惠' => '于小惠',
 '于少保' => '于少保',
 '于山' => '于山',
-'于山國' => '于山國',
 '于山国' => '于山國',
-'äº\8e帥' => 'äº\8e帥',
+'äº\8eå±±å\9c\8b' => 'äº\8eå±±å\9c\8b',
 '于帅' => '于帥',
+'于帥' => '于帥',
 '于幼军' => '于幼軍',
 '于幼軍' => '于幼軍',
 '于康震' => '于康震',
@@ -3580,16 +3576,16 @@ $zh2Hant = array(
 '于思' => '于思',
 '于慎行' => '于慎行',
 '于慧' => '于慧',
-'于成龙' => '于成龍',
 '于成龍' => '于成龍',
+'于成龙' => '于成龍',
 '于振' => '于振',
 '于振武' => '于振武',
 '于敏' => '于敏',
 '于敏中' => '于敏中',
 '于斌' => '于斌',
 '于斯塔德' => '于斯塔德',
-'于斯纳尔斯贝里' => '于斯納爾斯貝里',
 '于斯納爾斯貝里' => '于斯納爾斯貝里',
+'于斯纳尔斯贝里' => '于斯納爾斯貝里',
 '于斯达尔' => '于斯達爾',
 '于斯達爾' => '于斯達爾',
 '于明涛' => '于明濤',
@@ -3597,8 +3593,8 @@ $zh2Hant = array(
 '于是之' => '于是之',
 '于晨楠' => '于晨楠',
 '于晴' => '于晴',
-'于會泳' => '于會泳',
 '于会泳' => '于會泳',
+'于會泳' => '于會泳',
 '于根伟' => '于根偉',
 '于根偉' => '于根偉',
 '于格' => '于格',
@@ -3606,8 +3602,8 @@ $zh2Hant = array(
 '于楓' => '于楓',
 '于荣光' => '于榮光',
 '于樂' => '于樂',
-'于樹潔' => '于樹潔',
 '于树洁' => '于樹潔',
+'于樹潔' => '于樹潔',
 '于欣' => '于欣',
 '于欣源' => '于欣源',
 '于正昇' => '于正昇',
@@ -3618,25 +3614,25 @@ $zh2Hant = array(
 '于江震' => '于江震',
 '于波' => '于波',
 '于洋' => '于洋',
-'于洪區' => '于洪區',
 '于洪区' => '于洪區',
+'于洪區' => '于洪區',
 '于浩威' => '于浩威',
 '于海' => '于海',
 '于海洋' => '于海洋',
 '于湘兰' => '于湘蘭',
 '于湘蘭' => '于湘蘭',
-'于漢超' => '于漢超',
 '于汉超' => '于漢超',
+'于漢超' => '于漢超',
 '于澄' => '于澄',
-'于澤爾' => '于澤爾',
 '于泽尔' => '于澤爾',
-'äº\8e濤' => 'äº\8e濤',
+'äº\8e澤ç\88¾' => 'äº\8e澤ç\88¾',
 '于涛' => '于濤',
+'于濤' => '于濤',
 '于熙珍' => '于熙珍',
 '于尔岑' => '于爾岑',
 '于爾岑' => '于爾岑',
-'于爾根' => '于爾根',
 '于尔根' => '于爾根',
+'于爾根' => '于爾根',
 '于尔里克' => '于爾里克',
 '于爾里克' => '于爾里克',
 '于特森' => '于特森',
@@ -3656,8 +3652,8 @@ $zh2Hant = array(
 '于謙' => '于謙',
 '于谦' => '于謙',
 '于谨' => '于謹',
-'于贝尔' => '于貝爾',
 '于貝爾' => '于貝爾',
+'于贝尔' => '于貝爾',
 '于贈' => '于贈',
 '于赠' => '于贈',
 '于越' => '于越',
@@ -3666,8 +3662,8 @@ $zh2Hant = array(
 '于道泉' => '于道泉',
 '于远伟' => '于遠偉',
 '于遠偉' => '于遠偉',
-'于都縣' => '于都縣',
 '于都县' => '于都縣',
+'于都縣' => '于都縣',
 '于里察' => '于里察',
 '于阗' => '于闐',
 '于双戈' => '于雙戈',
@@ -3680,10 +3676,10 @@ $zh2Hant = array(
 '于靖' => '于靖',
 '于非暗' => '于非闇',
 '于非闇' => '于非闇',
-'于韦斯屈莱' => '于韋斯屈萊',
 '于韋斯屈萊' => '于韋斯屈萊',
-'äº\8eé£\8eæ\94¿' => 'äº\8e風æ\94¿',
+'äº\8eé\9f¦æ\96¯å±\88è\8e±' => 'äº\8eé\9f\8bæ\96¯å±\88è\90\8a',
 '于風政' => '于風政',
+'于风政' => '于風政',
 '于飞' => '于飛',
 '于飛島' => '于飛島',
 '于飞岛' => '于飛島',
@@ -3692,16 +3688,16 @@ $zh2Hant = array(
 '于魁智' => '于魁智',
 '于凤桐' => '于鳳桐',
 '于鳳桐' => '于鳳桐',
-'于鳳至' => '于鳳至',
 '于凤至' => '于鳳至',
-'äº\8eé»\98奧' => 'äº\8eé»\98奧',
+'äº\8eé³³è\87³' => 'äº\8eé³³è\87³',
 '于默奥' => '于默奧',
+'于默奧' => '于默奧',
 '云乎' => '云乎',
 '云云' => '云云',
 '云何' => '云何',
 '云敞' => '云敞',
-'云為' => '云為',
 '云为' => '云為',
+'云為' => '云為',
 '云然' => '云然',
 '云尔' => '云爾',
 '云:' => '云:',
@@ -3802,8 +3798,8 @@ $zh2Hant = array(
 '作准' => '作準',
 '你夸' => '你誇',
 '佣金' => '佣金',
-'佣钿' => '佣鈿',
 '佣鈿' => '佣鈿',
+'佣钿' => '佣鈿',
 '佣錢' => '佣錢',
 '佣钱' => '佣錢',
 '佳肴' => '佳肴',
@@ -3875,8 +3871,8 @@ $zh2Hant = array(
 '佣仆' => '傭僕',
 '傲游' => '傲遊',
 '傲霜斗雪' => '傲霜鬥雪',
-'傳位于四太子' => '傳位于四太子',
 '传位于四太子' => '傳位于四太子',
+'傳位于四太子' => '傳位于四太子',
 '传于' => '傳於',
 '债累累' => '債纍纍',
 '傻里傻气' => '傻裡傻氣',
@@ -4039,8 +4035,8 @@ $zh2Hant = array(
 '冷面相' => '冷面相',
 '冷面' => '冷麵',
 '准三后' => '准三后',
-'准保護' => '准保護',
 '准保护' => '准保護',
+'准保護' => '准保護',
 '准保释' => '准保釋',
 '准保釋' => '准保釋',
 '凌蒙初' => '凌濛初',
@@ -4081,13 +4077,13 @@ $zh2Hant = array(
 '划不來' => '划不來',
 '划不来' => '划不來',
 '划了一会' => '划了一會',
-'划来划去' => '划來划去',
 '划來划去' => '划來划去',
+'划来划去' => '划來划去',
 '划具' => '划具',
 '划到岸' => '划到岸',
 '划到江心' => '划到江心',
-'划動' => '划動',
 '划动' => '划動',
+'划動' => '划動',
 '划去' => '划去',
 '划子' => '划子',
 '划得來' => '划得來',
@@ -4105,8 +4101,8 @@ $zh2Hant = array(
 '划行' => '划行',
 '划走' => '划走',
 '划起' => '划起',
-'划進' => '划進',
 '划进' => '划進',
+'划進' => '划進',
 '划过' => '划過',
 '划過' => '划過',
 '划龍舟' => '划龍舟',
@@ -4208,8 +4204,8 @@ $zh2Hant = array(
 '十出' => '十齣',
 '千个' => '千個',
 '千只可' => '千只可',
-'千只夠' => '千只夠',
 '千只够' => '千只夠',
+'千只夠' => '千只夠',
 '千只怕' => '千只怕',
 '千只能' => '千只能',
 '千只足够' => '千只足夠',
@@ -4249,7 +4245,6 @@ $zh2Hant = array(
 '印鉴' => '印鑑',
 '危于' => '危於',
 '卵与石斗' => '卵與石鬥',
-'卷发' => '卷髮',
 '卷须' => '卷鬚',
 '厂部' => '厂部',
 '厝薪于火' => '厝薪於火',
@@ -4283,8 +4278,8 @@ $zh2Hant = array(
 '古書云' => '古書云',
 '古柯咸' => '古柯鹹',
 '古朴' => '古樸',
-'古语云' => '古語云',
 '古語云' => '古語云',
+'古语云' => '古語云',
 '古迹' => '古蹟',
 '古钟' => '古鐘',
 '古钟表' => '古鐘錶',
@@ -4303,8 +4298,8 @@ $zh2Hant = array(
 '只身上有' => '只身上有',
 '只身上沒' => '只身上沒',
 '只身上没' => '只身上沒',
-'只身上無' => '只身上無',
 '只身上无' => '只身上無',
+'只身上無' => '只身上無',
 '只身上的' => '只身上的',
 '只身世' => '只身世',
 '只身份' => '只身份',
@@ -4313,19 +4308,19 @@ $zh2Hant = array(
 '只身子' => '只身子',
 '只身形' => '只身形',
 '只身影' => '只身影',
-'只身後' => '只身後',
 '只身后' => '只身後',
+'只身後' => '只身後',
 '只身心' => '只身心',
 '只身旁' => '只身旁',
 '只身材' => '只身材',
 '只身段' => '只身段',
-'只身為' => '只身為',
 '只身为' => '只身為',
+'只身為' => '只身為',
 '只身边' => '只身邊',
 '只身邊' => '只身邊',
 '只身首' => '只身首',
-'只身體' => '只身體',
 '只身体' => '只身體',
+'只身體' => '只身體',
 '只身高' => '只身高',
 '只采声' => '只采聲',
 '叮叮当当' => '叮叮噹噹',
@@ -4391,10 +4386,10 @@ $zh2Hant = array(
 '后丰' => '后豐',
 '后豐' => '后豐',
 '后里' => '后里',
-'后髮FK型星' => '后髮FK型星',
 '后发FK型星' => '后髮FK型星',
-'后髮座' => '后髮座',
+'后髮FK型星' => '后髮FK型星',
 '后发座' => '后髮座',
+'后髮座' => '后髮座',
 '后发星系团' => '后髮星系團',
 '后髮星系團' => '后髮星系團',
 '吐哺捉发' => '吐哺捉髮',
@@ -4411,8 +4406,8 @@ $zh2Hant = array(
 '吹发' => '吹髮',
 '吹胡' => '吹鬍',
 '吾为之范我驰驱' => '吾爲之範我馳驅',
-'呂后' => '呂后',
 '吕后' => '呂后',
+'呂后' => '呂后',
 '呆呆兽' => '呆呆獸',
 '呆致致' => '呆緻緻',
 '呆里呆气' => '呆裡呆氣',
@@ -4472,8 +4467,8 @@ $zh2Hant = array(
 '单单于' => '單單於',
 '单干' => '單幹',
 '单打独斗' => '單打獨鬥',
-'喲喂' => '喲喂',
 '哟喂' => '喲喂',
+'喲喂' => '喲喂',
 '嘉谷' => '嘉穀',
 '嘉肴' => '嘉肴',
 '嘴里' => '嘴裡',
@@ -4516,7 +4511,6 @@ $zh2Hant = array(
 '回旋加速' => '回旋加速',
 '回历' => '回曆',
 '回历史' => '回歷史',
-'回荡' => '回蕩',
 '回复中' => '回覆中',
 '回复你' => '回覆你',
 '回复帖子' => '回覆帖子',
@@ -4606,8 +4600,8 @@ $zh2Hant = array(
 '壸范' => '壼範',
 '壽天里' => '壽天里',
 '寿面' => '壽麵',
-'夏于喬' => '夏于喬',
 '夏于乔' => '夏于喬',
+'夏于喬' => '夏于喬',
 '夏历' => '夏曆',
 '夏历史' => '夏歷史',
 '夏游' => '夏遊',
@@ -4884,8 +4878,8 @@ $zh2Hant = array(
 '尸弃佛' => '尸棄佛',
 '尸祝' => '尸祝',
 '尸禄' => '尸祿',
-'尸羅精舍' => '尸羅精舍',
 '尸罗精舍' => '尸羅精舍',
+'尸羅精舍' => '尸羅精舍',
 '尸臣' => '尸臣',
 '尸谏' => '尸諫',
 '尸魂界' => '尸魂界',
@@ -4988,14 +4982,16 @@ $zh2Hant = array(
 '幸免于难' => '幸免於難',
 '幸于' => '幸於',
 '幸运胡' => '幸運鬍',
+'干上' => '幹上',
 '干下去' => '幹下去',
 '干不了' => '幹不了',
 '干不成' => '幹不成',
+'干了' => '幹了',
 '干事' => '幹事',
 '干些' => '幹些',
 '干人' => '幹人',
 '干什么' => '幹什麼',
-'干个够' => '幹個夠',
+'干个' => '幹個',
 '干劲' => '幹勁',
 '干吏' => '幹吏',
 '干员' => '幹員',
@@ -5005,7 +5001,7 @@ $zh2Hant = array(
 '干坏事' => '幹壞事',
 '干完' => '幹完',
 '干家' => '幹家',
-'干得了' => '幹得了',
+'干得' => '幹得',
 '干性油' => '幹性油',
 '干才' => '幹才',
 '干掉' => '幹掉',
@@ -5053,8 +5049,8 @@ $zh2Hant = array(
 '府干政' => '府干政',
 '府干涉' => '府干涉',
 '府干犯' => '府干犯',
-'府干预' => '府干預',
 '府干預' => '府干預',
+'府干预' => '府干預',
 '府干' => '府幹',
 '座钟' => '座鐘',
 '廍子里' => '廍子里',
@@ -5114,11 +5110,11 @@ $zh2Hant = array(
 '弘历史' => '弘歷史',
 '弱于' => '弱於',
 '弱水三千只取一瓢' => '弱水三千只取一瓢',
-'張三丰' => '張三丰',
 '张三丰' => '張三丰',
+'張三丰' => '張三丰',
 '张勋' => '張勳',
-'張杰' => '張杰',
 '张杰' => '張杰',
+'張杰' => '張杰',
 '张乐于张徐' => '張樂于張徐',
 '强制作用' => '強制作用',
 '强奸' => '強姦',
@@ -5397,8 +5393,8 @@ $zh2Hant = array(
 '意大利面' => '意大利麵',
 '爱困' => '愛睏',
 '感于' => '感於',
-'愿樸' => '愿樸',
 '愿朴' => '愿樸',
+'愿樸' => '愿樸',
 '愿而恭' => '愿而恭',
 '栗冽' => '慄冽',
 '栗栗' => '慄慄',
@@ -5460,21 +5456,21 @@ $zh2Hant = array(
 '扁拟谷盗虫' => '扁擬穀盜蟲',
 '手塚治虫' => '手塚治虫',
 '手折' => '手摺',
-'手表態' => '手表態',
 '手表态' => '手表態',
+'手表態' => '手表態',
 '手表明' => '手表明',
-'手表決' => '手表決',
 '手表决' => '手表決',
+'手表決' => '手表決',
 '手表演' => '手表演',
 '手表现' => '手表現',
 '手表現' => '手表現',
 '手表示' => '手表示',
-'手表達' => '手表達',
 '手表达' => '手表達',
+'手表達' => '手表達',
 '手表露' => '手表露',
 '手表面' => '手表面',
-'手里' => '手裏',
 '手里剑' => '手裏劍',
+'手里' => '手裡',
 '手表' => '手錶',
 '手链' => '手鍊',
 '手松' => '手鬆',
@@ -5504,7 +5500,6 @@ $zh2Hant = array(
 '打斗' => '打鬥',
 '托管国' => '托管國',
 '扛大梁' => '扛大樑',
-'捍御' => '扞禦',
 '扯面' => '扯麵',
 '扶余' => '扶餘',
 '批准的' => '批准的',
@@ -5512,7 +5507,6 @@ $zh2Hant = array(
 '批复' => '批覆',
 '批注' => '批註',
 '批斗' => '批鬥',
-'扼肮' => '扼肮',
 '承制' => '承製',
 '抑制作用' => '抑制作用',
 '抑制剂' => '抑制劑',
@@ -5521,8 +5515,8 @@ $zh2Hant = array(
 '抓斗' => '抓鬥',
 '抗御' => '抗禦',
 '折向往' => '折向往',
-'折子戲' => '折子戲',
 '折子戏' => '折子戲',
+'折子戲' => '折子戲',
 '折戟沈河' => '折戟沈河',
 '折冲' => '折衝',
 '披榛采兰' => '披榛採蘭',
@@ -5588,13 +5582,13 @@ $zh2Hant = array(
 '挑大梁' => '挑大樑',
 '挑斗' => '挑鬥',
 '振荡' => '振蕩',
-'捆扎' => '捆紮',
 '捉奸徒' => '捉奸徒',
 '捉奸细' => '捉奸細',
 '捉奸贼' => '捉奸賊',
 '捉奸党' => '捉奸黨',
 '捉奸' => '捉姦',
 '捉发' => '捉髮',
+'捍御' => '捍禦',
 '捏面人' => '捏麵人',
 '舍不得' => '捨不得',
 '舍入' => '捨入',
@@ -5642,7 +5636,6 @@ $zh2Hant = array(
 '卷纸' => '捲紙',
 '卷缩' => '捲縮',
 '卷舌' => '捲舌',
-'卷铺盖' => '捲舖蓋',
 '卷烟' => '捲菸',
 '卷叶蛾' => '捲葉蛾',
 '卷袖' => '捲袖',
@@ -5650,9 +5643,10 @@ $zh2Hant = array(
 '卷起' => '捲起',
 '卷轴' => '捲軸',
 '卷逃' => '捲逃',
+'卷铺盖' => '捲鋪蓋',
 '卷云' => '捲雲',
 '卷风' => '捲風',
-'卷发器' => '捲髮器',
+'卷发' => '捲髮',
 '捵面' => '捵麵',
 '捶炼' => '捶鍊',
 '扫荡' => '掃蕩',
@@ -5762,6 +5756,7 @@ $zh2Hant = array(
 '损于' => '損於',
 '搏斗' => '搏鬥',
 '捣鬼吊白' => '搗鬼弔白',
+'扼肮' => '搤肮',
 '扼肮拊背' => '搤肮拊背',
 '搬斗' => '搬鬥',
 '搭干铺' => '搭乾鋪',
@@ -5793,8 +5788,8 @@ $zh2Hant = array(
 '拨谷' => '撥穀',
 '撩斗' => '撩鬥',
 '播于' => '播於',
-'扑咚' => '撲鼕',
 '扑冬' => '撲鼕',
+'扑咚' => '撲鼕',
 '扑咚咚' => '撲鼕鼕',
 '擀面' => '擀麵',
 '击扑' => '擊扑',
@@ -5920,9 +5915,9 @@ $zh2Hant = array(
 '于国' => '於國',
 '于坏' => '於坏',
 '于垂' => '於垂',
-'於夫羅' => '於夫羅',
-'於夫罗' => '於夫羅',
 '于夫罗' => '於夫羅',
+'於夫罗' => '於夫羅',
+'於夫羅' => '於夫羅',
 '于她' => '於她',
 '于好' => '於好',
 '于始' => '於始',
@@ -5947,8 +5942,8 @@ $zh2Hant = array(
 '于是' => '於是',
 '于是乎' => '於是乎',
 '于时' => '於時',
-'於梨華' => '於梨華',
 '于梨华' => '於梨華',
+'於梨華' => '於梨華',
 '于乐' => '於樂',
 '于此' => '於此',
 '於氏' => '於氏',
@@ -6083,11 +6078,11 @@ $zh2Hant = array(
 '有回复' => '有回覆',
 '有够赞' => '有夠讚',
 '有征伐' => '有征伐',
-'有征戰' => '有征戰',
 '有征战' => '有征戰',
+'有征戰' => '有征戰',
 '有征服' => '有征服',
-'有征讨' => '有征討',
 '有征討' => '有征討',
+'有征讨' => '有征討',
 '有征' => '有徵',
 '有恒街' => '有恒街',
 '有栖川' => '有栖川',
@@ -6101,8 +6096,8 @@ $zh2Hant = array(
 '望后石' => '望后石',
 '朝乾夕惕' => '朝乾夕惕',
 '朝钟' => '朝鐘',
-'蒙胧' => '朦朧',
 '朦胧' => '朦朧',
+'蒙胧' => '朦朧',
 '木偶戏扎' => '木偶戲紮',
 '木材干馏' => '木材乾餾',
 '木梁' => '木樑',
@@ -6138,10 +6133,10 @@ $zh2Hant = array(
 '杠轂' => '杠轂',
 '杯干' => '杯乾',
 '杯面' => '杯麵',
-'杰倫' => '杰倫',
 '杰伦' => '杰倫',
-'æ\9d°å¨\81ç\88¾' => 'æ\9d°å¨\81ç\88¾',
+'æ\9d°å\80«' => 'æ\9d°å\80«',
 '杰威尔' => '杰威爾',
+'杰威爾' => '杰威爾',
 '东周钟' => '東周鐘',
 '东岳' => '東嶽',
 '東湖里' => '東湖里',
@@ -6263,8 +6258,8 @@ $zh2Hant = array(
 '树干' => '樹榦',
 '树梁' => '樹樑',
 '桥梁' => '橋樑',
-'機械系' => '機械系',
 '机械系' => '機械系',
+'機械系' => '機械系',
 '机械表' => '機械錶',
 '机械钟' => '機械鐘',
 '机械钟表' => '機械鐘錶',
@@ -6343,8 +6338,8 @@ $zh2Hant = array(
 '求知欲' => '求知慾',
 '求签' => '求籤',
 '求道于盲' => '求道於盲',
-'污蔑' => '汙衊',
 '池里' => '池裡',
+'污蔑' => '污衊',
 '汤卤' => '汤滷',
 '汲于' => '汲於',
 '决斗' => '決鬥',
@@ -6395,8 +6390,8 @@ $zh2Hant = array(
 '洒濯' => '洒濯',
 '洒然' => '洒然',
 '洒脱' => '洒脫',
-'洗练' => '洗鍊',
 '洗炼' => '洗鍊',
+'洗练' => '洗鍊',
 '洗发' => '洗髮',
 '洛钟东应' => '洛鐘東應',
 '洞里' => '洞裡',
@@ -6420,18 +6415,18 @@ $zh2Hant = array(
 '浮夸' => '浮誇',
 '浮松' => '浮鬆',
 '海干' => '海乾',
-'海淀山後' => '海淀山後',
 '海淀山后' => '海淀山後',
+'海淀山後' => '海淀山後',
 '浸卤' => '浸滷',
 '涂善妮' => '涂善妮',
 '涂坤' => '涂坤',
-'涂壯勳' => '涂壯勳',
 '涂壮勋' => '涂壯勳',
+'涂壯勳' => '涂壯勳',
 '涂天相' => '涂天相',
 '涂姓' => '涂姓',
 '涂序瑄' => '涂序瑄',
-'涂敏恒' => '涂敏恆',
 '涂敏恆' => '涂敏恆',
+'涂敏恒' => '涂敏恆',
 '涂泽民' => '涂澤民',
 '涂澤民' => '涂澤民',
 '涂绍煃' => '涂紹煃',
@@ -6440,10 +6435,10 @@ $zh2Hant = array(
 '涂谨申' => '涂謹申',
 '涂逢年' => '涂逢年',
 '涂醒哲' => '涂醒哲',
-'涂长望' => '涂長望',
 '涂長望' => '涂長望',
-'æ¶\82鸿é\92¦' => 'æ¶\82鴻欽',
+'æ¶\82é\95¿æ\9c\9b' => 'æ¶\82é\95·æ\9c\9b',
 '涂鴻欽' => '涂鴻欽',
+'涂鸿钦' => '涂鴻欽',
 '涳蒙' => '涳濛',
 '涸干' => '涸乾',
 '凉席' => '涼蓆',
@@ -7088,8 +7083,8 @@ $zh2Hant = array(
 '笑里藏刀' => '笑裡藏刀',
 '第一出现' => '第一出現',
 '第一出現' => '第一出現',
-'第一出线' => '第一出線',
 '第一出線' => '第一出線',
+'第一出线' => '第一出線',
 '第一出' => '第一齣',
 '第七出' => '第七齣',
 '第三出局' => '第三出局',
@@ -7111,15 +7106,15 @@ $zh2Hant = array(
 '筑前' => '筑前',
 '筑北' => '筑北',
 '筑州' => '筑州',
-'筑後' => '筑後',
 '筑后' => '筑後',
+'筑後' => '筑後',
 '筑波' => '筑波',
 '筑紫' => '筑紫',
 '筑肥' => '筑肥',
 '筑西' => '筑西',
 '筑邦' => '筑邦',
-'筑陽' => '筑陽',
 '筑阳' => '筑陽',
+'筑陽' => '筑陽',
 '答复' => '答覆',
 '筵几' => '筵几',
 '个中原因' => '箇中原因',
@@ -7245,6 +7240,7 @@ $zh2Hant = array(
 '丝发' => '絲髮',
 '绑扎' => '綁紮',
 '绥棱' => '綏稜',
+'捆扎' => '綑紮',
 '經有云' => '經有云',
 '经有云' => '經有云',
 '综合征' => '綜合徵',
@@ -7527,8 +7523,8 @@ $zh2Hant = array(
 '范文藤' => '范文藤',
 '范文虎' => '范文虎',
 '范登堡' => '范登堡',
-'范贤惠' => '范賢惠',
 '范賢惠' => '范賢惠',
+'范贤惠' => '范賢惠',
 '茅于軾' => '茅于軾',
 '茅于轼' => '茅于軾',
 '茶几' => '茶几',
@@ -7551,8 +7547,8 @@ $zh2Hant = array(
 '菠棱菜' => '菠稜菜',
 '菠萝干' => '菠蘿乾',
 '华严钟' => '華嚴鐘',
-'萬一只' => '萬一只',
 '万一只' => '萬一只',
+'萬一只' => '萬一只',
 '万个' => '萬個',
 '万周后' => '萬周後',
 '万天后' => '萬天後',
@@ -7634,8 +7630,8 @@ $zh2Hant = array(
 '熏风' => '薰風',
 '熏香' => '薰香',
 '苧悴' => '薴悴',
-'薴烯' => '薴烯',
 '苧烯' => '薴烯',
+'薴烯' => '薴烯',
 '借以' => '藉以',
 '借助' => '藉助',
 '借口' => '藉口',
@@ -7765,13 +7761,13 @@ $zh2Hant = array(
 '夹裙' => '袷裙',
 '裁并' => '裁併',
 '裁制' => '裁製',
-'里勾外连' => '裏勾外連',
 '里水镇' => '裏水鎮',
 '里海' => '裏海',
 '里运河' => '裏運河',
 '补于' => '補於',
 '补注' => '補註',
 '装折' => '裝摺',
+'里勾外连' => '裡勾外連',
 '里屋' => '裡屋',
 '里层' => '裡層',
 '里带' => '裡帶',
@@ -8023,8 +8019,8 @@ $zh2Hant = array(
 '诱奸' => '誘姦',
 '语云' => '語云',
 '语汇' => '語彙',
-'语有云' => '語有云',
 '語有云' => '語有云',
+'语有云' => '語有云',
 '语法里' => '語法裡',
 '语里' => '語裡',
 '诚征' => '誠徵',
@@ -8044,14 +8040,14 @@ $zh2Hant = array(
 '咨询' => '諮詢',
 '诸余' => '諸餘',
 '谋干' => '謀幹',
-'谢杰' => '謝杰',
 '謝杰' => '謝杰',
+'谢杰' => '謝杰',
 '谢华后' => '謝華后',
 '谬采虚声' => '謬採虛聲',
 '谬赞' => '謬讚',
 '謷丑' => '謷醜',
-'谨愿' => '謹愿',
 '謹愿' => '謹愿',
+'谨愿' => '謹愿',
 '谨于心' => '謹於心',
 '哗噪' => '譁噪',
 '哗嚣' => '譁囂',
@@ -8089,6 +8085,7 @@ $zh2Hant = array(
 '豆干' => '豆乾',
 '豆腐干' => '豆腐乾',
 '竖起脊梁' => '豎起脊梁',
+'丰度' => '豐度',
 '丰滨' => '豐濱',
 '丰滨乡' => '豐濱鄉',
 '丰台' => '豐臺',
@@ -8102,15 +8099,15 @@ $zh2Hant = array(
 '买凶' => '買兇',
 '买断发' => '買斷發',
 '贻范' => '貽範',
-'贾后' => '賈后',
 '賈后' => '賈后',
+'贾后' => '賈后',
 '赈饥' => '賑饑',
 '赏赞' => '賞讚',
 '賢后' => '賢后',
 '贤后' => '賢后',
 '卖断发' => '賣斷發',
-'赋范' => '賦范',
 '賦范' => '賦范',
+'赋范' => '賦范',
 '质数里' => '質數裡',
 '质朴' => '質樸',
 '赌后' => '賭后',
@@ -8202,6 +8199,7 @@ $zh2Hant = array(
 '回翔' => '迴翔',
 '回肠' => '迴腸',
 '回肠荡气' => '迴腸盪氣',
+'回荡' => '迴蕩',
 '回诵' => '迴誦',
 '回路' => '迴路',
 '回转' => '迴轉',
@@ -8371,10 +8369,10 @@ $zh2Hant = array(
 '部落发' => '部落發',
 '郭后' => '郭后',
 '都于' => '都於',
-'鄉愿' => '鄉愿',
 '乡愿' => '鄉愿',
-'é\84­å\87±äº\91' => 'é\84­å\87±äº\91',
+'é\84\89æ\84¿' => 'é\84\89æ\84¿',
 '郑凯云' => '鄭凱云',
+'鄭凱云' => '鄭凱云',
 '配制饲料' => '配制飼料',
 '配图里' => '配圖裡',
 '配水干管' => '配水幹管',
@@ -8447,10 +8445,10 @@ $zh2Hant = array(
 '采石之役' => '采石之役',
 '采石之战' => '采石之戰',
 '采石之戰' => '采石之戰',
-'采石磯' => '采石磯',
 '采石矶' => '采石磯',
-'é\87\8c海大學' => 'é\87\8c海大學',
+'é\87\87ç\9f³ç£¯' => 'é\87\87ç\9f³ç£¯',
 '里海大学' => '里海大學',
+'里海大學' => '里海大學',
 '里海崖' => '里海崖',
 '里海茨' => '里海茨',
 '里铺' => '里舖',
@@ -8616,13 +8614,13 @@ $zh2Hant = array(
 '鉴察' => '鑑察',
 '鉴往知来' => '鑑往知來',
 '鉴戒' => '鑑戒',
-'鉴于' => '鑑於',
 '鉴湖' => '鑑湖',
 '鉴藏' => '鑑藏',
 '鉴谅' => '鑑諒',
 '鉴证' => '鑑證',
 '鉴识' => '鑑識',
 '鉴赏' => '鑑賞',
+'鉴于' => '鑒於',
 '长几' => '長几',
 '长于' => '長於',
 '长历' => '長曆',
@@ -8793,8 +8791,8 @@ $zh2Hant = array(
 '面包起' => '面包起',
 '面包办' => '面包辦',
 '面店铺' => '面店鋪',
-'面條目' => '面條目',
 '面条目' => '面條目',
+'面條目' => '面條目',
 '面粉碎' => '面粉碎',
 '面粉红' => '面粉紅',
 '面食饭' => '面食飯',
@@ -8813,8 +8811,8 @@ $zh2Hant = array(
 '頁面' => '頁面',
 '页面' => '頁面',
 '顶凶' => '頂兇',
-'顶多' => '頂多',
 '頂多' => '頂多',
+'顶多' => '頂多',
 '项链' => '項鍊',
 '顺于' => '順於',
 '顺钟向' => '順鐘向',
@@ -8834,8 +8832,8 @@ $zh2Hant = array(
 '额我略历史' => '額我略歷史',
 '颜范' => '顏範',
 '颠干倒坤' => '顛乾倒坤',
-'颠颠仆仆' => '顛顛仆仆',
 '顛顛仆仆' => '顛顛仆仆',
+'颠颠仆仆' => '顛顛仆仆',
 '颤栗' => '顫慄',
 '显示表明' => '顯示表明',
 '显示表格' => '顯示表格',
@@ -9017,8 +9015,8 @@ $zh2Hant = array(
 '马干' => '馬乾',
 '馬占山' => '馬占山',
 '马斯垂克期' => '馬斯垂克期',
-'马格里布' => '馬格里布',
 '馬格里布' => '馬格里布',
+'马格里布' => '馬格里布',
 '驻扎' => '駐紮',
 '骀荡' => '駘蕩',
 '腾格里' => '騰格里',
@@ -9198,13 +9196,13 @@ $zh2Hant = array(
 '斗而铸锥' => '鬥而鑄錐',
 '斗脚' => '鬥腳',
 '斗舰' => '鬥艦',
-'斗艳' => '鬥艷',
 '斗茶' => '鬥茶',
 '斗草' => '鬥草',
 '斗叶儿' => '鬥葉兒',
 '斗叶子' => '鬥葉子',
 '斗蟋蟀' => '鬥蟋蟀',
 '斗话' => '鬥話',
+'斗艳' => '鬥豔',
 '斗起' => '鬥起',
 '斗趣' => '鬥趣',
 '斗闲气' => '鬥閒氣',
@@ -9272,8 +9270,8 @@ $zh2Hant = array(
 '魔表' => '魔錶',
 '鱼干' => '魚乾',
 '鱼松' => '魚鬆',
-'鲜于枢' => '鮮于樞',
 '鮮于樞' => '鮮于樞',
+'鲜于枢' => '鮮于樞',
 '鲸须' => '鯨鬚',
 '鳥栖' => '鳥栖',
 '鸟栖市' => '鳥栖市',
@@ -9367,8 +9365,8 @@ $zh2Hant = array(
 '黄岩区' => '黃巖區',
 '黄岩县' => '黃巖縣',
 '黄历' => '黃曆',
-'黄杰' => '黃杰',
 '黃杰' => '黃杰',
+'黄杰' => '黃杰',
 '黄历史' => '黃歷史',
 '黃詩杰' => '黃詩杰',
 '黄诗杰' => '黃詩杰',
@@ -9379,8 +9377,8 @@ $zh2Hant = array(
 '黄发' => '黃髮',
 '黄曲毒素' => '黃麴毒素',
 '黎克特制' => '黎克特制',
-'黎吉雲' => '黎吉雲',
 '黎吉云' => '黎吉雲',
+'黎吉雲' => '黎吉雲',
 '黑奴吁天录' => '黑奴籲天錄',
 '黑干将' => '黑幹將',
 '黑长发' => '黑長髮',
@@ -9399,8 +9397,8 @@ $zh2Hant = array(
 '霉黧' => '黴黧',
 '鼓里' => '鼓裡',
 '鼓噪' => '鼓譟',
-'咚咚鼓' => '鼕鼕鼓',
 '冬冬鼓' => '鼕鼕鼓',
+'咚咚鼓' => '鼕鼕鼓',
 '鼠曲草' => '鼠麴草',
 '鼻梁儿' => '鼻梁兒',
 '鼻梁' => '鼻樑',
@@ -13245,11 +13243,11 @@ $zh2Hans = array(
 '專著' => '专著',
 '乾一坛' => '乾一坛',
 '乾一壇' => '乾一坛',
-'乾一组' => '乾一组',
 '乾一組' => '乾一组',
+'乾一组' => '乾一组',
 '乾上乾下' => '乾上乾下',
-'乾東' => '乾东',
 '乾东' => '乾东',
+'乾東' => '乾东',
 '乾為天' => '乾为天',
 '乾為陽' => '乾为阳',
 '乾九' => '乾九',
@@ -13264,18 +13262,18 @@ $zh2Hans = array(
 '乾光' => '乾光',
 '乾兴' => '乾兴',
 '乾興' => '乾兴',
-'乾岡' => '乾冈',
 '乾冈' => '乾冈',
-'ä¹¾å\8a\89' => 'ä¹¾å\88\98',
+'乾岡' => 'ä¹¾å\86\88',
 '乾刘' => '乾刘',
-'ä¹¾å\89\9b' => 'ä¹¾å\88\9a',
+'ä¹¾å\8a\89' => 'ä¹¾å\88\98',
 '乾刚' => '乾刚',
-'ä¹¾å\8b\99' => 'ä¹¾å\8a¡',
+'ä¹¾å\89\9b' => 'ä¹¾å\88\9a',
 '乾务' => '乾务',
+'乾務' => '乾务',
 '乾化' => '乾化',
 '乾卦' => '乾卦',
-'乾縣' => '乾县',
 '乾县' => '乾县',
+'乾縣' => '乾县',
 '乾台' => '乾台',
 '乾吉' => '乾吉',
 '乾启' => '乾启',
@@ -13283,16 +13281,16 @@ $zh2Hans = array(
 '乾命' => '乾命',
 '乾和' => '乾和',
 '乾嘉' => '乾嘉',
-'乾圖' => '乾图',
 '乾图' => '乾图',
+'乾圖' => '乾图',
 '乾坤' => '乾坤',
 '乾城' => '乾城',
 '乾基' => '乾基',
 '乾天也' => '乾天也',
 '乾始' => '乾始',
 '乾姓' => '乾姓',
-'乾寧' => '乾宁',
 '乾宁' => '乾宁',
+'乾寧' => '乾宁',
 '乾宅' => '乾宅',
 '乾宇' => '乾宇',
 '乾安' => '乾安',
@@ -13356,36 +13354,36 @@ $zh2Hans = array(
 '乾符' => '乾符',
 '乾策' => '乾策',
 '乾精' => '乾精',
-'乾红' => '乾红',
 '乾紅' => '乾红',
+'乾红' => '乾红',
 '乾綱' => '乾纲',
 '乾纲' => '乾纲',
-'乾纽' => '乾纽',
 '乾紐' => '乾纽',
+'乾纽' => '乾纽',
 '乾絡' => '乾络',
 '乾络' => '乾络',
 '乾統' => '乾统',
 '乾统' => '乾统',
-'乾维' => '乾维',
 '乾維' => '乾维',
+'乾维' => '乾维',
 '乾罗' => '乾罗',
 '乾羅' => '乾罗',
 '乾花' => '乾花',
-'乾蔭' => '乾荫',
 '乾荫' => '乾荫',
+'乾蔭' => '乾荫',
 '乾行' => '乾行',
 '乾衡' => '乾衡',
 '乾西' => '乾西',
 '乾覆' => '乾覆',
 '乾象' => '乾象',
-'乾象歷' => '乾象历',
 '乾象历' => '乾象历',
-'ä¹¾è´\9e' => 'ä¹¾è´\9e',
+'乾象歷' => '乾象å\8e\86',
 '乾貞' => '乾贞',
-'乾贵士' => '乾贵士',
+'ä¹¾è´\9e' => 'ä¹¾è´\9e',
 '乾貴士' => '乾贵士',
-'乾贶' => '乾贶',
+'乾贵士' => '乾贵士',
 '乾貺' => '乾贶',
+'乾贶' => '乾贶',
 '乾車' => '乾车',
 '乾车' => '乾车',
 '乾軸' => '乾轴',
@@ -13395,8 +13393,8 @@ $zh2Hans = array(
 '乾道' => '乾道',
 '乾鉴' => '乾鉴',
 '乾鑒' => '乾鉴',
-'乾钧' => '乾钧',
 '乾鈞' => '乾钧',
+'乾钧' => '乾钧',
 '乾闥' => '乾闼',
 '乾闼' => '乾闼',
 '乾陀' => '乾陀',
@@ -13405,11 +13403,11 @@ $zh2Hans = array(
 '乾音' => '乾音',
 '乾顧' => '乾顾',
 '乾顾' => '乾顾',
-'乾风' => '乾风',
 '乾風' => '乾风',
+'乾风' => '乾风',
 '乾首' => '乾首',
-'乾马' => '乾马',
 '乾馬' => '乾马',
+'乾马' => '乾马',
 '乾鵠' => '乾鹄',
 '乾鹄' => '乾鹄',
 '乾鵲' => '乾鹊',
@@ -13496,8 +13494,8 @@ $zh2Hans = array(
 '復甦' => '复苏',
 '多么' => '多么',
 '大麴' => '大曲',
-'天道為乾' => '天道为乾',
 '天道为乾' => '天道为乾',
+'天道為乾' => '天道为乾',
 '奧區' => '奧区',
 '如瀋' => '如渖',
 '姓么' => '姓幺',
@@ -13511,10 +13509,10 @@ $zh2Hans = array(
 '將軍抽車' => '将军抽車',
 '爾冬陞' => '尔冬升',
 '尼乾陀' => '尼乾陀',
-'跼促' => '局促',
 '侷促' => '局促',
-'跼限' => '局限',
+'跼促' => '局促',
 '侷限' => '局限',
+'跼限' => '局限',
 '山崎闇齋' => '山崎闇斋',
 '岳託' => '岳讬',
 '巨著' => '巨著',
@@ -13528,8 +13526,8 @@ $zh2Hans = array(
 '么鳳' => '幺凤',
 '么半' => '幺半',
 '么半群' => '幺半群',
-'幺厮' => '幺厮',
 '么廝' => '幺厮',
+'幺厮' => '幺厮',
 '么叔' => '幺叔',
 '么女' => '幺女',
 '么媽' => '幺妈',
@@ -13550,13 +13548,13 @@ $zh2Hans = array(
 '么舅' => '幺舅',
 '么蛾子' => '幺蛾子',
 '么謙' => '幺谦',
-'么麽' => '幺麽',
 '么麼' => '幺麽',
+'么麽' => '幺麽',
 '么麽小丑' => '幺麽小丑',
 '慶餘' => '庆馀',
 '康乾' => '康乾',
-'張法乾' => '张法乾',
 '张法乾' => '张法乾',
+'張法乾' => '张法乾',
 '彰明較著' => '彰明较著',
 '待覆' => '待复',
 '後姓' => '後姓',
@@ -13604,23 +13602,23 @@ $zh2Hans = array(
 '觔斗' => '斤斗',
 '新著' => '新著',
 '於世成' => '於世成',
-'於之莹' => '於之莹',
 '於之瑩' => '於之莹',
+'於之莹' => '於之莹',
 '於乎' => '於乎',
 '於乙于同' => '於乙于同',
 '於乙宇同' => '於乙宇同',
 '於于同' => '於于同',
 '於哲' => '於哲',
-'於夫羅' => '於夫罗',
 '於夫罗' => '於夫罗',
+'於夫羅' => '於夫罗',
 '於姓' => '於姓',
 '於宇同' => '於宇同',
 '於崇文' => '於崇文',
 '於志賀' => '於志贺',
 '於志贺' => '於志贺',
 '於戲' => '於戏',
-'於梨華' => '於梨华',
 '於梨华' => '於梨华',
+'於梨華' => '於梨华',
 '於氏' => '於氏',
 '於潜' => '於潜',
 '於潛縣' => '於潜县',
@@ -13676,8 +13674,8 @@ $zh2Hans = array(
 '楈枒' => '楈枒',
 '樊於期' => '樊於期',
 '殘瀋' => '残渖',
-'慇懃' => '殷勤',
 '慇勤' => '殷勤',
+'慇懃' => '殷勤',
 '比較顯著' => '比较显著',
 '毫釐' => '毫厘',
 '氆氌' => '氆氌',
@@ -13702,19 +13700,19 @@ $zh2Hans = array(
 '甚夥' => '甚夥',
 '男为乾' => '男为乾',
 '男為乾' => '男为乾',
-'男性為乾' => '男性为乾',
 '男性为乾' => '男性为乾',
+'男性為乾' => '男性为乾',
 '療效顯著' => '疗效显著',
 '白瀋' => '白渖',
 '皁保' => '皁保',
 '目劄' => '目劄',
 '直昇' => '直升',
 '睹微知著' => '睹微知著',
-'瞭臺' => '瞭台',
 '瞭台' => '瞭台',
+'瞭臺' => '瞭台',
 '瞭望' => '瞭望',
-'矇矓' => '矇眬',
 '矇眬' => '矇眬',
+'矇矓' => '矇眬',
 '石碁' => '石碁',
 '石碁鎮' => '石碁镇',
 '碩託' => '硕讬',
@@ -13741,8 +13739,8 @@ $zh2Hans = array(
 '肉乾乾' => '肉干干',
 '肘手鍊足' => '肘手链足',
 '甦醒' => '苏醒',
-'薴烯' => '苧烯',
 '苧烯' => '苧烯',
+'薴烯' => '苧烯',
 '蘋果' => '苹果',
 '荠苧' => '荠苧',
 '榮陞' => '荣升',
@@ -13789,8 +13787,8 @@ $zh2Hans = array(
 '醉瀋' => '醉渖',
 '醯壶' => '醯壶',
 '醯壺' => '醯壶',
-'醯醬' => '醯酱',
 '醯酱' => '醯酱',
+'醯醬' => '醯酱',
 '醯醋' => '醯醋',
 '醯醢' => '醯醢',
 '醯雞' => '醯鸡',
@@ -13818,10 +13816,10 @@ $zh2Hans = array(
 '阿部正瞭' => '阿部正瞭',
 '陆徵祥' => '陆徵祥',
 '陸徵祥' => '陆徵祥',
-'陳乾生' => '陈乾生',
 '陈乾生' => '陈乾生',
-'陳元扞' => '陈元扞',
+'陳乾生' => '陈乾生',
 '陈元扞' => '陈元扞',
+'陳元扞' => '陈元扞',
 '陈公乾生' => '陈公乾生',
 '陳公乾生' => '陈公乾生',
 '陈遇乾' => '陈遇乾',
@@ -13840,15 +13838,15 @@ $zh2Hans = array(
 '餘慶' => '馀庆',
 '餘瀋' => '馀渖',
 '馬鞌' => '马鞍',
-'高陞' => '高升',
 '高昇' => '高升',
+'高陞' => '高升',
 '鬱姓' => '鬱姓',
 '鬱氏' => '鬱氏',
 '魏徵' => '魏徵',
 '魚乾乾' => '鱼干干',
 '麽氏' => '麽氏',
-'麽麽' => '麽麽',
 '麼麼' => '麽麽',
+'麽麽' => '麽麽',
 '黃麴毒素' => '黄曲毒素',
 '黃潤乾' => '黄润乾',
 '黄润乾' => '黄润乾',
@@ -13880,18 +13878,18 @@ $zh2TW = array(
 '一杆' => '一桿',
 '七杆' => '七桿',
 '三杆' => '三桿',
-'三極管' => '三極體',
 '三极管' => '三極體',
+'三極管' => '三極體',
 '达累斯萨拉姆' => '三蘭港',
 '上落客' => '上下客',
 '落車' => '下車',
-'不来梅' => '不萊梅',
 '不來梅' => '不萊梅',
+'不来梅' => '不萊梅',
 '以太网' => '乙太網',
 '九杆' => '九桿',
 '了結他' => '了結他',
-'二手煙' => '二手菸',
 '二手烟' => '二手菸',
+'二手煙' => '二手菸',
 '二杆' => '二桿',
 '二极管' => '二極體',
 '二極管' => '二極體',
@@ -13915,8 +13913,8 @@ $zh2TW = array(
 '掌上壓' => '伏地挺身',
 '伯明翰' => '伯明罕',
 '服务器' => '伺服器',
-'字节' => '位元組',
 '字節' => '位元組',
+'字节' => '位元組',
 '佛罗伦萨' => '佛羅倫斯',
 '操作系统' => '作業系統',
 '系数' => '係數',
@@ -13924,15 +13922,15 @@ $zh2TW = array(
 '傅里叶' => '傅立葉',
 '光盘' => '光碟',
 '光驱' => '光碟機',
-'克羅地亞' => '克羅埃西亞',
 '克罗地亚' => '克羅埃西亞',
+'克羅地亞' => '克羅埃西亞',
 '克里斯托弗' => '克里斯多福',
 '万维网' => '全球資訊網',
 '八杆' => '八桿',
 '公共交通' => '公共運輸',
 '六杆' => '六桿',
-'嘉芙蓮' => '凱薩琳',
 '凯瑟琳' => '凱薩琳',
+'嘉芙蓮' => '凱薩琳',
 '划着独木舟' => '划著獨木舟',
 '划着竹筏' => '划著竹筏',
 '划着船' => '划著船',
@@ -13947,21 +13945,21 @@ $zh2TW = array(
 '北朝鲜' => '北韓',
 '局域网' => '區域網',
 '十杆' => '十桿',
-'特立尼達和多巴哥' => '千里達托貝哥',
 '特立尼达和托巴哥' => '千里達托貝哥',
+'特立尼達和多巴哥' => '千里達托貝哥',
 '南朝鲜' => '南韓',
 '卡斯特罗' => '卡斯楚',
 '卡塔尔' => '卡達',
 '卡塔爾' => '卡達',
 '铆足' => '卯足',
-'打印機' => '印表機',
 '打印机' => '印表機',
-'厄立特里亞' => '厄利垂亞',
+'打印機' => '印表機',
 '厄利垂亚' => '厄利垂亞',
 '厄立特里亚' => '厄利垂亞',
+'厄立特里亞' => '厄利垂亞',
+'厄瓜多' => '厄瓜多',
 '厄瓜多尔' => '厄瓜多',
 '厄瓜多爾' => '厄瓜多',
-'厄瓜多' => '厄瓜多',
 '源代码' => '原始碼',
 '圆珠笔' => '原子筆',
 '反烟' => '反菸',
@@ -13977,70 +13975,70 @@ $zh2TW = array(
 '斯坦福' => '史丹福',
 '斯皮尔伯格' => '史匹柏',
 '斯特劳斯' => '史特勞斯',
-'斯威士蘭' => '史瓦濟蘭',
 '斯威士兰' => '史瓦濟蘭',
+'斯威士蘭' => '史瓦濟蘭',
 '斯蒂芬' => '史蒂芬',
 '斯大林' => '史達林',
 '結他' => '吉他',
-'乞力马扎罗' => '吉力馬札羅',
 '乞力馬札羅' => '吉力馬札羅',
-'吉布提' => '吉布地',
+'乞力马扎罗' => '吉力馬札羅',
 '吉布堤' => '吉布地',
+'吉布提' => '吉布地',
 '基里巴斯' => '吉里巴斯',
-'圖瓦盧' => '吐瓦魯',
 '图瓦卢' => '吐瓦魯',
-'å\90¸ç\85\99' => 'å\90¸è\8f¸',
+'å\9c\96ç\93¦ç\9b§' => 'å\90\90ç\93¦é­¯',
 '吸烟' => '吸菸',
-'å\91\82å®\8bç\85\99' => 'å\91\82å®\8b菸',
+'å\90¸ç\85\99' => 'å\90¸菸',
 '吕宋烟' => '呂宋菸',
+'呂宋煙' => '呂宋菸',
 '格丁根' => '哥廷根',
 '哥特式' => '哥德式',
-'哥斯達黎加' => '哥斯大黎加',
 '哥斯达黎加' => '哥斯大黎加',
+'哥斯達黎加' => '哥斯大黎加',
 '卡拉奇' => '喀拉蚩',
 '乔治·奥威尔' => '喬治·歐威爾',
-'格魯吉亞' => '喬治亞',
-'佐治亞' => '喬治亞',
 '佐治亚' => '喬治亞',
+'佐治亞' => '喬治亞',
+'格魯吉亞' => '喬治亞',
 '格鲁吉亚' => '喬治亞',
-'單鏡反光機' => '單眼相機',
 '单反相机' => '單眼相機',
+'單鏡反光機' => '單眼相機',
 '嘯咤' => '嘯吒',
 '四杆' => '四桿',
 '图卢兹' => '土魯斯',
 '圖盧茲' => '土魯斯',
 '戛纳' => '坎城',
 '堪培拉' => '坎培拉',
-'坦桑尼亞' => '坦尚尼亞',
 '坦桑尼亚' => '坦尚尼亞',
+'坦桑尼亞' => '坦尚尼亞',
 '端口' => '埠',
 '首席执行官' => '執行長',
 '塞舌尔' => '塞席爾',
 '塞舌爾' => '塞席爾',
-'薩拉熱窩' => '塞拉耶佛',
 '萨拉热窝' => '塞拉耶佛',
+'薩拉熱窩' => '塞拉耶佛',
 '塞尔维亚和黑山' => '塞爾維亞與蒙特內哥羅',
-'塞爾維亞與蒙特內哥羅' => '塞爾維亞與蒙特內哥羅',
 '塞爾維亞和黑山' => '塞爾維亞與蒙特內哥羅',
-'西維爾' => '塞維亞',
+'塞爾維亞與蒙特內哥羅' => '塞爾維亞與蒙特內哥羅',
 '塞维利亚' => '塞維亞',
+'西維爾' => '塞維亞',
 '塞黑' => '塞蒙',
-'英聯邦' => '大英國協',
-'英联邦' => '大英國協',
 '共和联邦' => '大英國協',
+'英联邦' => '大英國協',
+'英聯邦' => '大英國協',
 '太空飛行員' => '太空人',
 '宇航员' => '太空人',
 '穿梭機' => '太空梭',
 '航天飞机' => '太空梭',
 '宇航服' => '太空衣',
 '航天器' => '太空飛行器',
-'尼日利亞' => '奈及利亞',
 '尼日利亚' => '奈及利亞',
+'尼日利亞' => '奈及利亞',
 '忌廉' => '奶油',
 '荷里活' => '好萊塢',
 '威廉姆斯' => '威廉士',
-'威斯特法倫' => '威斯伐倫',
 '威斯特法伦' => '威斯伐倫',
+'威斯特法倫' => '威斯伐倫',
 '威士顿康星' => '威斯康辛',
 '威尔士' => '威爾斯',
 '威爾士' => '威爾斯',
@@ -14048,19 +14046,19 @@ $zh2TW = array(
 '存盘' => '存檔',
 '孟德爾遜' => '孟德爾頌',
 '门德尔松' => '孟德爾頌',
-'安哈爾特' => '安哈特',
 '安哈尔特' => '安哈特',
-'安提瓜和巴布達' => '安地卡及巴布達',
+'安哈爾特' => '安哈特',
 '安提瓜和巴布达' => '安地卡及巴布達',
+'安提瓜和巴布達' => '安地卡及巴布達',
 '洪都拉斯' => '宏都拉斯',
 '密歇根' => '密西根',
 '宽带' => '寬頻',
-'老撾人民民主共和國' => '寮人民民主共和國',
 '老挝人民民主共和国' => '寮人民民主共和國',
-'老撾' => '寮國',
+'老撾人民民主共和國' => '寮人民民主共和國',
 '老挝' => '寮國',
-'老撾語' => '寮語',
+'老撾' => '寮國',
 '老挝语' => '寮語',
+'老撾語' => '寮語',
 '波里活' => '寶萊塢',
 '高峰时段' => '尖峰時段',
 '高峰时间' => '尖峰時間',
@@ -14076,17 +14074,17 @@ $zh2TW = array(
 '发达国家' => '已開發國家',
 '巴塞罗那' => '巴塞隆納',
 '巴塞隆拿' => '巴塞隆納',
-'巴布亞新畿內亞' => '巴布亞紐幾內亞',
 '巴布亚新几内亚' => '巴布亞紐幾內亞',
+'巴布亞新畿內亞' => '巴布亞紐幾內亞',
 '巴士拉' => '巴斯拉',
 '巴巴多斯' => '巴貝多',
 '佈' => '布',
 '布基納法索' => '布吉納法索',
 '布基纳法索' => '布吉納法索',
-'布殊' => '布希',
 '布什' => '布希',
-'å\8b\83è\98­ç\99»å ¡' => 'å¸\83è\98­ç\99»å ¡',
+'å¸\83æ®\8a' => 'å¸\83å¸\8c',
 '勃兰登堡' => '布蘭登堡',
+'勃蘭登堡' => '布蘭登堡',
 '布里斯托尔' => '布里斯托',
 '布隆方丹' => '布隆泉',
 '希拉里' => '希拉蕊',
@@ -14098,49 +14096,49 @@ $zh2TW = array(
 '干着急' => '干著急',
 '干着' => '幹著',
 '畿內亞' => '幾內亞',
-'幾內亞比紹' => '幾內亞比索',
 '几内亚比绍' => '幾內亞比索',
+'幾內亞比紹' => '幾內亞比索',
 '比利牛斯' => '庇里牛斯',
 '库尔德人' => '庫德人',
 '库尔德族' => '庫德族',
 '康涅狄格' => '康乃狄克',
 '约翰斯顿岛' => '強斯頓環礁',
 '汇编' => '彙編',
-'形而上學' => '形上學',
 '形而上学' => '形上學',
-'å¾\97å\85\8bè\96©æ\96¯' => 'å¾·å\85\8bè\96©æ\96¯',
+'å½¢è\80\8cä¸\8aå­¸' => 'å½¢ä¸\8aå­¸',
 '得克萨斯' => '德克薩斯',
-'å¾·ç´¯æ\96¯é¡¿' => 'å¾·å\8b\92æ\96¯ç\99»',
+'å¾\97å\85\8bè\96©æ\96¯' => 'å¾·å\85\8bè\96©æ\96¯',
 '德累斯頓' => '德勒斯登',
+'德累斯顿' => '德勒斯登',
 '德里达' => '德希達',
 '特拉华' => '德拉瓦',
 '特拉華' => '德拉瓦',
-'闪存' => '快閃記憶體',
 '快闪存储器' => '快閃記憶體',
+'闪存' => '快閃記憶體',
 '想象' => '想像',
 '愛德文' => '愛德溫',
 '艾滋' => '愛滋',
 '艾奧瓦' => '愛荷華',
 '爱德华州' => '愛達荷州',
 '应用程序' => '應用程式',
-'戈爾巴喬夫' => '戈巴契夫',
 '戈尔巴乔夫' => '戈巴契夫',
-'æ\88\92ç\85\99' => 'æ\88\92è\8f¸',
+'æ\88\88ç\88¾å·´å\96¬å¤«' => 'æ\88\88å·´å¥\91夫',
 '戒烟' => '戒菸',
+'戒煙' => '戒菸',
 '戴克里先' => '戴克里先',
 '抽烟' => '抽菸',
 '抽煙' => '抽菸',
 '拉普兰' => '拉布蘭',
 '拒烟' => '拒菸',
 '拒煙' => '拒菸',
-'捲煙' => '捲菸',
 '卷烟' => '捲菸',
+'捲煙' => '捲菸',
 '積架' => '捷豹',
 '控件' => '控制項',
 '推杆' => '推桿',
 '第比利斯' => '提比里西',
-'揮杆' => '揮桿',
 '挥杆' => '揮桿',
+'揮杆' => '揮桿',
 '搜索引擎' => '搜尋引擎',
 '摩根士丹利' => '摩根史坦利',
 '台球' => '撞球',
@@ -14149,14 +14147,14 @@ $zh2TW = array(
 '數碼技術' => '數位技術',
 '数码相机' => '數位相機',
 '數碼相機' => '數位相機',
-'數碼訊號' => '數位訊號',
 '数字信号' => '數位訊號',
+'數碼訊號' => '數位訊號',
 '数字电视' => '數位電視',
 '數碼電視' => '數位電視',
 '調制解調器' => '數據機',
 '调制解调器' => '數據機',
-'斯洛文尼亞' => '斯洛維尼亞',
 '斯洛文尼亚' => '斯洛維尼亞',
+'斯洛文尼亞' => '斯洛維尼亞',
 '新罕布什尔' => '新罕布夏',
 '施罗德' => '施洛德',
 '旱烟' => '旱菸',
@@ -14166,28 +14164,28 @@ $zh2TW = array(
 '智能卡' => '智慧卡',
 '智能手机' => '智慧型手機',
 '智能手機' => '智慧型手機',
-'智能電話' => '智慧型電話',
 '智能电话' => '智慧型電話',
+'智能電話' => '智慧型電話',
 '知識產權' => '智慧財產權',
 '知识产权' => '智慧財產權',
-'马恩岛' => '曼島',
 '萌島' => '曼島',
+'马恩岛' => '曼島',
 '木杆' => '木桿',
 '列奥纳多' => '李奧納多',
-'杜塞爾多夫' => '杜塞道夫',
 '杜塞尔多夫' => '杜塞道夫',
+'杜塞爾多夫' => '杜塞道夫',
 '迪拜' => '杜拜',
-'亚细安' => '東協',
 '东盟' => '東協',
+'亚细安' => '東協',
 '东南亚国家联盟' => '東南亞國協',
-'柏林牆' => '柏林圍牆',
 '柏林墙' => '柏林圍牆',
+'柏林牆' => '柏林圍牆',
 '乍得' => '查德',
 '查韦斯' => '查維茲',
-'克林顿' => '柯林頓',
 '克林頓' => '柯林頓',
-'撒切尔' => '柴契爾',
+'克林顿' => '柯林頓',
 '戴卓爾' => '柴契爾',
+'撒切尔' => '柴契爾',
 '格林納達' => '格瑞那達',
 '格林纳达' => '格瑞那達',
 '乒乓' => '桌球',
@@ -14204,8 +14202,8 @@ $zh2TW = array(
 '枪支' => '槍枝',
 '标准杆' => '標準桿',
 '標準杆' => '標準桿',
-'毛里裘斯' => '模里西斯',
 '毛里求斯' => '模里西斯',
+'毛里裘斯' => '模里西斯',
 '机器人' => '機器人',
 '機械人' => '機器人',
 '概率' => '機率',
@@ -14217,31 +14215,31 @@ $zh2TW = array(
 '正在叱咤' => '正在叱咤',
 '文莱' => '汶萊',
 '沙律' => '沙拉',
-'沙特阿拉伯' => '沙烏地阿拉伯',
 '沙地阿拉伯' => '沙烏地阿拉伯',
+'沙特阿拉伯' => '沙烏地阿拉伯',
 '法属圭亚那' => '法屬蓋亞那',
 '波斯尼亚' => '波士尼亞',
 '波斯尼亞' => '波士尼亞',
 '波斯尼亚和黑塞哥维那' => '波士尼亞赫塞哥維納',
 '波斯尼亞黑塞哥維那' => '波士尼亞赫塞哥維納',
-'博茨瓦纳' => '波札那',
 '博茨瓦納' => '波札那',
+'博茨瓦纳' => '波札那',
 '波黑' => '波赫',
 '洋烟' => '洋菸',
 '洋煙' => '洋菸',
 '帕特里克' => '派屈克',
 '海洛英' => '海洛因',
-'侯赛因' => '海珊',
 '侯賽因' => '海珊',
+'侯赛因' => '海珊',
 '鼠标' => '滑鼠',
 '汉诺威' => '漢諾瓦',
 '漢诺威' => '漢諾瓦',
 '烤烟' => '烤菸',
 '烤煙' => '烤菸',
-'無煙日' => '無菸日',
 '无烟日' => '無菸日',
-'無煙環境' => '無菸環境',
+'無煙日' => '無菸日',
 '无烟环境' => '無菸環境',
+'無煙環境' => '無菸環境',
 '烟熏' => '煙燻',
 '首席运营官' => '營運長',
 '熏烤' => '燻烤',
@@ -14249,13 +14247,13 @@ $zh2TW = array(
 '熏黑' => '燻黑',
 '版权信息' => '版權資訊',
 '疯牛症' => '狂牛症',
-'铁托' => '狄托',
 '鐵托' => '狄托',
+'铁托' => '狄托',
 '塞拉利昂' => '獅子山',
 '独联体' => '獨立國協',
 '独立国家联合体' => '獨立國家國協',
-'波利尼西亞' => '玻里尼西亞',
 '波利尼西亚' => '玻里尼西亞',
+'波利尼西亞' => '玻里尼西亞',
 '本傑明' => '班傑明',
 '本杰明' => '班傑明',
 '球杆' => '球桿',
@@ -14263,10 +14261,10 @@ $zh2TW = array(
 '卢塞恩' => '琉森',
 '危地馬拉' => '瓜地馬拉',
 '危地马拉' => '瓜地馬拉',
-'華倫西亞' => '瓦倫西亞',
 '巴伦西亚' => '瓦倫西亞',
-'岡比亞' => '甘比亞',
+'華倫西亞' => '瓦倫西亞',
 '冈比亚' => '甘比亞',
+'岡比亞' => '甘比亞',
 '肯尼迪' => '甘迺迪',
 '留尼汪' => '留尼旺',
 '毕加索' => '畢卡索',
@@ -14274,8 +14272,8 @@ $zh2TW = array(
 '徵狀' => '症狀',
 '勃朗宁' => '白朗寧',
 '百慕大' => '百慕達',
-'盧旺達' => '盧安達',
 '卢旺达' => '盧安達',
+'盧旺達' => '盧安達',
 '睾' => '睪',
 '知识产权局' => '知識產權局',
 '知識產權局' => '知識產權署',
@@ -14288,8 +14286,8 @@ $zh2TW = array(
 '盘片' => '碟片',
 '磁盘' => '磁碟',
 '磁道' => '磁軌',
-'禁煙' => '禁菸',
 '禁烟' => '禁菸',
+'禁煙' => '禁菸',
 '福尔马林' => '福馬林',
 '福爾馬林' => '福馬林',
 '私烟' => '私菸',
@@ -14299,21 +14297,21 @@ $zh2TW = array(
 '空气质量' => '空氣品質',
 '空氣質素' => '空氣品質',
 '突尼斯' => '突尼西亞',
-'蹦极跳' => '笨豬跳',
 '绑紧跳' => '笨豬跳',
+'蹦极跳' => '笨豬跳',
 '短信' => '簡訊',
 '纽黑文' => '紐哈芬',
-'新奧爾良' => '紐奧良',
 '新奥尔良' => '紐奧良',
+'新奧爾良' => '紐奧良',
 '新几内亚' => '紐幾內亞',
-'新西蘭' => '紐西蘭',
 '新西兰' => '紐西蘭',
-'纸烟' => '紙菸',
+'新西蘭' => '紐西蘭',
 '紙煙' => '紙菸',
-'ç´¢è´\8aå°¼è¾\9b' => 'ç´¢å¿\8då°¼è¾\9b',
+'纸ç\83\9f' => 'ç´\99è\8f¸',
 '索尔仁尼琴' => '索忍尼辛',
-'所羅門群島' => '索羅門群島',
+'索贊尼辛' => '索忍尼辛',
 '所罗门群岛' => '索羅門群島',
+'所羅門群島' => '索羅門群島',
 '索馬里' => '索馬利亞',
 '索马里' => '索馬利亞',
 '索馬里蘭' => '索馬利蘭',
@@ -14323,27 +14321,27 @@ $zh2TW = array(
 '弗吉尼亚' => '維吉尼亞',
 '佛得角' => '維德角',
 '维特根斯坦' => '維根斯坦',
-'互联网络' => '網際網路',
-'因特网' => '網際網路',
 '互联网' => '網際網路',
+'互联网络' => '網際網路',
 '互聯網' => '網際網路',
+'因特网' => '網際網路',
 '系着' => '繫著',
 '卢瓦尔' => '羅亞爾',
 '盧瓦爾' => '羅亞爾',
 '卢浮宫' => '羅浮宮',
 '樂行童軍' => '羅浮童軍',
 '意大利' => '義大利',
-'昂山素季' => '翁山蘇姬',
 '昂山素姬' => '翁山蘇姬',
-'聖吉斯納域斯' => '聖克里斯多福及尼維斯',
+'昂山素季' => '翁山蘇姬',
 '圣基茨和尼维斯' => '聖克里斯多福及尼維斯',
-'聖文森特和格林納丁斯' => '聖文森及格瑞那丁',
+'聖吉斯納域斯' => '聖克里斯多福及尼維斯',
 '圣文森特和格林纳丁斯' => '聖文森及格瑞那丁',
+'聖文森特和格林納丁斯' => '聖文森及格瑞那丁',
 '圣赫勒拿' => '聖赫倫那',
-'聖盧西亞' => '聖露西亞',
 '圣卢西亚' => '聖露西亞',
-'聖馬力諾' => '聖馬利諾',
+'聖盧西亞' => '聖露西亞',
 '圣马力诺' => '聖馬利諾',
+'聖馬力諾' => '聖馬利諾',
 '肯尼亚' => '肯亞',
 '氨基酸' => '胺基酸',
 '卧' => '臥',
@@ -14372,37 +14370,37 @@ $zh2TW = array(
 '味美思' => '苦艾酒',
 '毛里塔尼亚' => '茅利塔尼亞',
 '毛里塔尼亞' => '茅利塔尼亞',
-'霍爾木茲' => '荷姆茲',
 '霍尔木兹' => '荷姆茲',
+'霍爾木茲' => '荷姆茲',
 '荷李活道' => '荷李活道',
 '莫桑比克' => '莫三比克',
-'華里沙' => '華勒沙',
 '瓦文萨' => '華勒沙',
+'華里沙' => '華勒沙',
 '瓦格纳' => '華格納',
 '烟具' => '菸具',
 '煙具' => '菸具',
-'煙品' => '菸品',
 '烟品' => '菸品',
-'ç\85\99å\98´' => 'è\8f¸å\98´',
+'ç\85\99å\93\81' => 'è\8f¸å\93\81',
 '烟嘴' => '菸嘴',
-'煙捲' => '菸捲',
+'煙嘴' => '菸嘴',
 '烟卷' => '菸捲',
-'ç\85\99æ\96\97' => 'è\8f¸æ\96\97',
+'ç\85\99æ\8d²' => 'è\8f¸æ\8d²',
 '烟斗' => '菸斗',
-'ç\85\99æ°\91' => 'è\8f¸æ°\91',
+'ç\85\99æ\96\97' => 'è\8f¸æ\96\97',
 '烟民' => '菸民',
+'煙民' => '菸民',
 '烟灰' => '菸灰',
 '煙灰' => '菸灰',
 '烟瘾' => '菸癮',
 '煙癮' => '菸癮',
 '烟丝' => '菸絲',
 '煙絲' => '菸絲',
-'煙草' => '菸草',
 '烟草' => '菸草',
+'煙草' => '菸草',
 '烟叶' => '菸葉',
 '煙葉' => '菸葉',
-'煙蒂' => '菸蒂',
 '烟蒂' => '菸蒂',
+'煙蒂' => '菸蒂',
 '烟袋' => '菸袋',
 '煙袋' => '菸袋',
 '烟农' => '菸農',
@@ -14413,11 +14411,11 @@ $zh2TW = array(
 '煙頭' => '菸頭',
 '烟鬼' => '菸鬼',
 '煙鬼' => '菸鬼',
-'煙鹼' => '菸鹼',
 '烟碱' => '菸鹼',
+'煙鹼' => '菸鹼',
 '万历朝鲜战争' => '萬曆朝鮮戰爭',
-'瓦努阿圖' => '萬那杜',
 '瓦努阿图' => '萬那杜',
+'瓦努阿圖' => '萬那杜',
 '叶利钦' => '葉爾欽',
 '葉利欽' => '葉爾欽',
 '埃里温' => '葉里溫',
@@ -14431,9 +14429,9 @@ $zh2TW = array(
 '格莱美奖' => '葛萊美獎',
 '黑山共和国' => '蒙特內哥羅共和國',
 '黑山共和國' => '蒙特內哥羅共和國',
+'滿地可' => '蒙特婁',
 '蒙特利尔' => '蒙特婁',
 '蒙特利爾' => '蒙特婁',
-'滿地可' => '蒙特婁',
 '普密蓬' => '蒲美蓬',
 '布隆迪' => '蒲隆地',
 '圭亚那' => '蓋亞那',
@@ -14453,20 +14451,20 @@ $zh2TW = array(
 '荧光' => '螢光',
 '荧屏' => '螢屏',
 '屏幕' => '螢幕',
-'移动网络' => '行動網路',
 '流動網絡' => '行動網路',
+'移动网络' => '行動網路',
 '流動電話' => '行動電話',
 '移动电话' => '行動電話',
 '冲着' => '衝著',
 '埃塞俄比亚' => '衣索比亞',
 '埃塞俄比亞' => '衣索比亞',
 '克隆人' => '複製人',
-'國際象棋' => '西洋棋',
-'国际象棋' => '西洋棋',
 '囯际象棋' => '西洋棋',
+'国际象棋' => '西洋棋',
+'國際象棋' => '西洋棋',
 '赫梯' => '西臺',
-'解像度' => '解析度',
 '分辨率' => '解析度',
+'解像度' => '解析度',
 '译码' => '解碼',
 '出租车' => '計程車',
 '约翰逊' => '詹森',
@@ -14474,8 +14472,8 @@ $zh2TW = array(
 '瑙魯' => '諾魯',
 '瑙鲁' => '諾魯',
 '科特迪瓦' => '象牙海岸',
-'贝尔格莱德' => '貝爾格勒',
 '貝爾格萊德' => '貝爾格勒',
+'贝尔格莱德' => '貝爾格勒',
 '伯利兹' => '貝里斯',
 '伯利茲' => '貝里斯',
 '首席财务官' => '財務長',
@@ -14485,10 +14483,10 @@ $zh2TW = array(
 '信息论' => '資訊理論',
 '乔布斯' => '賈伯斯',
 '宾西法尼亚' => '賓夕法尼亞',
-'利比里亞' => '賴比瑞亞',
 '利比里亚' => '賴比瑞亞',
-'萊索托' => '賴索托',
+'利比里亞' => '賴比瑞亞',
 '莱索托' => '賴索托',
+'萊索托' => '賴索托',
 '塞浦路斯' => '賽普勒斯',
 '碧咸' => '贝克漢',
 '赫丘勒·波洛' => '赫丘勒·白羅',
@@ -14526,8 +14524,8 @@ $zh2TW = array(
 '健力士世界纪录' => '金氏世界紀錄',
 '吉尼斯世界纪录' => '金氏世界紀錄',
 '钚' => '鈽',
-'钩' => '鉤',
 '鈎' => '鉤',
+'钩' => '鉤',
 '锎' => '鉲',
 '锫' => '鉳',
 '镅' => '鋂',
@@ -14546,30 +14544,30 @@ $zh2TW = array(
 '阿拉伯联合酋长国' => '阿拉伯聯合大公國',
 '阿拉伯聯合酋長國' => '阿拉伯聯合大公國',
 '亚拉巴马' => '阿拉巴馬',
-'阿聯酋' => '阿聯',
 '阿联酋' => '阿聯',
+'阿聯酋' => '阿聯',
 '罗纳德·里根' => '隆納·雷根',
 '私隱' => '隱私',
 '耶加達' => '雅加達',
-'雅爾塔' => '雅爾達',
 '雅尔塔' => '雅爾達',
+'雅爾塔' => '雅爾達',
 '雅穆苏克雷' => '雅穆索戈',
 '雅穆蘇克雷' => '雅穆索戈',
 '悉尼' => '雪梨',
-'雪茄煙' => '雪茄菸',
 '雪茄烟' => '雪茄菸',
+'雪茄煙' => '雪茄菸',
 '莱特湾' => '雷伊泰灣',
 '萊特灣' => '雷伊泰灣',
 '激光' => '雷射',
 '雷诺阿' => '雷諾瓦',
-'電子煙' => '電子菸',
 '电子烟' => '電子菸',
-'晶體管' => '電晶體',
+'電子煙' => '電子菸',
 '晶体管' => '電晶體',
+'晶體管' => '電晶體',
 '电杆' => '電桿',
 '电线杆' => '電線桿',
-'计算机程序' => '電腦程式',
 '电脑程序' => '電腦程式',
+'计算机程序' => '電腦程式',
 '荷尔斯泰因' => '霍爾斯坦',
 '荷爾斯泰因' => '霍爾斯坦',
 '朝鲜战争' => '韓戰',
@@ -14577,10 +14575,10 @@ $zh2TW = array(
 '缺省' => '預設',
 '导弹' => '飛彈',
 '糊口' => '餬口',
-'香煙' => '香菸',
 '香烟' => '香菸',
-'马é\87\8cå\85±å\92\8cå\9b½' => '馬å\88©å\85±å\92\8cå\9c\8b',
+'é¦\99ç\85\99' => 'é¦\99è\8f¸',
 '馬里共和國' => '馬利共和國',
+'马里共和国' => '馬利共和國',
 '马拉维' => '馬拉威',
 '馬斯特里赫特' => '馬斯垂克',
 '马斯特里赫特' => '馬斯垂克',
@@ -14592,13 +14590,13 @@ $zh2TW = array(
 '斗着' => '鬥著',
 '魯賓斯·巴里切羅' => '魯本·巴瑞切羅',
 '咪高峰' => '麥克風',
-'麦克尔' => '麥可',
 '迈克尔' => '麥可',
-'é\82\81å\87±è¼ª' => '麥æ\8b¿è¼ª',
+'麦å\85\8bå°\94' => '麥å\8f¯',
 '迈凯轮' => '麥拿輪',
+'邁凱輪' => '麥拿輪',
 '马萨诸塞' => '麻薩諸塞',
-'狄安娜' => '黛安娜',
 '戴安娜' => '黛安娜',
+'狄安娜' => '黛安娜',
 '点烟' => '點菸',
 '點煙' => '點菸',
 '霉素' => '黴素',
@@ -14623,8 +14621,8 @@ $zh2HK = array(
 '下著稱' => '下著稱',
 '下著者' => '下著者',
 '下著述' => '下著述',
-'下著錄' => '下著錄',
 '下著录' => '下著錄',
+'下著錄' => '下著錄',
 '不占' => '不佔',
 '不萊梅' => '不來梅',
 '不著痕跡' => '不着痕跡',
@@ -14648,8 +14646,8 @@ $zh2HK = array(
 '葉門' => '也門',
 '事里' => '事裏',
 '二極體' => '二極管',
-'網際網路' => '互聯網',
 '因特网' => '互聯網',
+'網際網路' => '互聯網',
 '井里' => '井裏',
 '亮著' => '亮着',
 '亮著作' => '亮著作',
@@ -14702,31 +14700,31 @@ $zh2HK = array(
 '布於' => '佈於',
 '布施' => '佈施',
 '布景' => '佈景',
-'布滿' => '佈滿',
 '布满' => '佈滿',
+'布滿' => '佈滿',
 '布置' => '佈置',
 '布設' => '佈設',
 '布设' => '佈設',
 '布警' => '佈警',
 '布道' => '佈道',
 '布防' => '佈防',
-'布陣' => '佈陣',
 '布阵' => '佈陣',
+'布陣' => '佈陣',
 '布雷、' => '佈雷、',
 '布雷。' => '佈雷。',
 '布雷封鎖' => '佈雷封鎖',
 '布雷封锁' => '佈雷封鎖',
 '布雷的' => '佈雷的',
 '布雷艇' => '佈雷艇',
-'布雷艦' => '佈雷艦',
 '布雷舰' => '佈雷艦',
+'布雷艦' => '佈雷艦',
 '布雷速度' => '佈雷速度',
 '布雷,' => '佈雷,',
 '布雷;' => '佈雷;',
-'布點' => '佈點',
 '布点' => '佈點',
-'å­\97è\8a\82' => 'ä½\8då\85\83çµ\84',
+'å¸\83é»\9e' => 'ä½\88é»\9e',
 '字節' => '位元組',
+'字节' => '位元組',
 '低著' => '低着',
 '低著作' => '低著作',
 '低著名' => '低著名',
@@ -14783,8 +14781,8 @@ $zh2HK = array(
 '占一' => '佔一',
 '占七' => '佔七',
 '占三' => '佔三',
-'占上风' => '佔上風',
 '占上風' => '佔上風',
+'占上风' => '佔上風',
 '占下' => '佔下',
 '占下風' => '佔下風',
 '占下风' => '佔下風',
@@ -14804,14 +14802,14 @@ $zh2HK = array(
 '占占' => '佔佔',
 '占便宜' => '佔便宜',
 '占俄' => '佔俄',
-'占個' => '佔個',
 '占个' => '佔個',
+'占個' => '佔個',
 '占个位' => '佔個位',
 '占個位' => '佔個位',
 '占亿' => '佔億',
 '占億' => '佔億',
-'占優' => '佔優',
 '占优' => '佔優',
+'占優' => '佔優',
 '占先' => '佔先',
 '占光' => '佔光',
 '占全' => '佔全',
@@ -14834,8 +14832,8 @@ $zh2HK = array(
 '占台' => '佔台',
 '占囁' => '佔囁',
 '占四' => '佔四',
-'占國' => '佔國',
 '占国' => '佔國',
+'占國' => '佔國',
 '占在' => '佔在',
 '占地' => '佔地',
 '占场' => '佔場',
@@ -14860,13 +14858,13 @@ $zh2HK = array(
 '占德' => '佔德',
 '占所有' => '佔所有',
 '占掉' => '佔掉',
-'占據' => '佔據',
 '占据' => '佔據',
+'占據' => '佔據',
 '占整' => '佔整',
 '占新' => '佔新',
 '占有' => '佔有',
-'占東' => '佔東',
 '占东' => '佔東',
+'占東' => '佔東',
 '占查' => '佔查',
 '占次' => '佔次',
 '占比' => '佔比',
@@ -14881,16 +14879,16 @@ $zh2HK = array(
 '占毕' => '佔畢',
 '占畢' => '佔畢',
 '占百' => '佔百',
-'占盡' => '佔盡',
 '占尽' => '佔盡',
+'占盡' => '佔盡',
 '占着' => '佔着',
 '占著' => '佔着',
 '占網' => '佔網',
 '占网' => '佔網',
 '占線' => '佔線',
 '占线' => '佔線',
-'占總' => '佔總',
 '占总' => '佔總',
+'占總' => '佔總',
 '占缺' => '佔缺',
 '占美' => '佔美',
 '占耕' => '佔耕',
@@ -14898,29 +14896,29 @@ $zh2HK = array(
 '占至少' => '佔至少',
 '占臺' => '佔臺',
 '占英' => '佔英',
-'占萬' => '佔萬',
 '占万' => '佔萬',
+'占萬' => '佔萬',
 '占著名' => '佔著名',
 '占著者' => '佔著者',
 '占葡' => '佔葡',
-'占蘇' => '佔蘇',
 '占苏' => '佔蘇',
+'占蘇' => '佔蘇',
 '占西' => '佔西',
 '占資' => '佔資',
 '占资' => '佔資',
 '占起' => '佔起',
-'占超過' => '佔超過',
 '占超过' => '佔超過',
+'占超過' => '佔超過',
 '占过' => '佔過',
 '占過' => '佔過',
 '占道' => '佔道',
 '占零' => '佔零',
 '占領' => '佔領',
 '占领' => '佔領',
-'占頭' => '佔頭',
 '占头' => '佔頭',
-'占頭籌' => '佔頭籌',
+'占頭' => '佔頭',
 '占头筹' => '佔頭籌',
+'占頭籌' => '佔頭籌',
 '占香' => '佔香',
 '占馬' => '佔馬',
 '占马' => '佔馬',
@@ -15074,8 +15072,8 @@ $zh2HK = array(
 '剪彩' => '剪綵',
 '割占' => '割佔',
 '劃著' => '劃着',
-'擊劍' => '劍擊',
 '击剑' => '劍擊',
+'擊劍' => '劍擊',
 '加薩走廊' => '加沙地帶',
 '迦納' => '加納',
 '加彭' => '加蓬',
@@ -15129,9 +15127,9 @@ $zh2HK = array(
 '印著述' => '印著述',
 '印著錄' => '印著錄',
 '瓜地馬拉' => '危地馬拉',
-'厄瓜多爾' => '厄瓜多爾',
-'厄瓜多尔' => '厄瓜多爾',
 '厄瓜多' => '厄瓜多爾',
+'厄瓜多尔' => '厄瓜多爾',
+'厄瓜多爾' => '厄瓜多爾',
 '厄利垂亚' => '厄立特里亞',
 '厄利垂亞' => '厄立特里亞',
 '源代码' => '原始碼',
@@ -15167,8 +15165,8 @@ $zh2HK = array(
 '古柯鹼' => '可卡因',
 '叱吒' => '叱咤',
 '斯坦福' => '史丹福',
-'斯皮尔伯格' => '史匹堡',
 '史匹柏' => '史匹堡',
+'斯皮尔伯格' => '史匹堡',
 '史蒂芬·史匹柏' => '史提芬·史匹堡',
 '斯蒂芬·斯皮尔伯格' => '史提芬·史匹堡',
 '吃不著' => '吃不着',
@@ -15246,13 +15244,13 @@ $zh2HK = array(
 '喝著錄' => '喝著錄',
 '賈伯斯' => '喬布斯',
 '乔治·奥威尔' => '喬治·歐威爾',
-'單眼相機' => '單鏡反光機',
 '单反相机' => '單鏡反光機',
+'單眼相機' => '單鏡反光機',
 '嗅不著' => '嗅不着',
 '嗅得著' => '嗅得着',
 '嗅著' => '嗅着',
-'凱薩琳' => '嘉芙蓮',
 '凯瑟琳' => '嘉芙蓮',
+'凱薩琳' => '嘉芙蓮',
 '嘯吒' => '嘯咤',
 '嘴里' => '嘴裏',
 '嚷著' => '嚷着',
@@ -15332,8 +15330,8 @@ $zh2HK = array(
 '吉里巴斯' => '基里巴斯',
 '场里' => '場裏',
 '塗著' => '塗着',
-'賽普勒斯' => '塞浦路斯',
 '塞普勒斯' => '塞浦路斯',
+'賽普勒斯' => '塞浦路斯',
 '塞爾維亞與蒙特內哥羅' => '塞爾維亞和黑山',
 '塞席爾' => '塞舌爾',
 '境里' => '境裏',
@@ -15375,14 +15373,14 @@ $zh2HK = array(
 '歐巴馬' => '奧巴馬',
 '妆台' => '妝枱',
 '威斯伐倫' => '威斯特法倫',
-'威爾士' => '威爾斯',
 '威尔士' => '威爾斯',
+'威爾士' => '威爾斯',
 '子里' => '子裏',
 '字里行间' => '字裏行間',
 '存著' => '存着',
 '存著名' => '存著名',
-'门德尔松' => '孟德爾遜',
 '孟德爾頌' => '孟德爾遜',
+'门德尔松' => '孟德爾遜',
 '孤著' => '孤着',
 '孤著作' => '孤著作',
 '孤著名' => '孤著名',
@@ -15436,10 +15434,10 @@ $zh2HK = array(
 '寫著錄' => '寫著錄',
 '宝里宝气' => '寶裏寶氣',
 '封面里' => '封面裏',
-'將占' => '將佔',
 '将占' => '將佔',
-'將占卜' => '將占卜',
+'將占' => '將佔',
 '将占卜' => '將占卜',
+'將占卜' => '將占卜',
 '专辑里' => '專輯裏',
 '尋著' => '尋着',
 '尋著作' => '尋著作',
@@ -15536,8 +15534,8 @@ $zh2HK = array(
 '康著述' => '康著述',
 '康著錄' => '康著錄',
 '庙里' => '廟裏',
-'强占' => '強佔',
 '強占' => '強佔',
+'强占' => '強佔',
 '约翰斯顿岛' => '強斯頓環礁',
 '弹子台' => '彈子枱',
 '蹦床' => '彈床',
@@ -15573,8 +15571,8 @@ $zh2HK = array(
 '循著者' => '循著者',
 '循著述' => '循著述',
 '循著錄' => '循著錄',
-'徵占' => '徵佔',
 '征占' => '徵佔',
+'徵占' => '徵佔',
 '德占' => '德佔',
 '得克萨斯' => '德克薩斯',
 '德勒斯登' => '德累斯頓',
@@ -15648,8 +15646,8 @@ $zh2HK = array(
 '想著者' => '想著者',
 '想著述' => '想著述',
 '想著錄' => '想著錄',
-'義占' => '意佔',
 '意占' => '意佔',
+'義占' => '意佔',
 '義大利' => '意大利',
 '艾滋' => '愛滋',
 '愛著' => '愛着',
@@ -15708,10 +15706,10 @@ $zh2HK = array(
 '戏彩娱亲' => '戲綵娛親',
 '戲彩娛親' => '戲綵娛親',
 '戏里' => '戲裏',
-'柴契爾' => '戴卓爾',
 '撒切尔' => '戴卓爾',
-'黛安娜' => '戴安娜',
+'柴契爾' => '戴卓爾',
 '狄安娜' => '戴安娜',
+'黛安娜' => '戴安娜',
 '戴著' => '戴着',
 '戴著作' => '戴著作',
 '戴著名' => '戴著名',
@@ -15886,8 +15884,8 @@ $zh2HK = array(
 '揮著述' => '揮著述',
 '揮著錄' => '揮著錄',
 '搜索引擎' => '搜尋引擎',
-'搶占' => '搶佔',
 '抢占' => '搶佔',
+'搶占' => '搶佔',
 '摟著' => '摟着',
 '摟著作' => '摟著作',
 '摟著名' => '摟著名',
@@ -15922,8 +15920,8 @@ $zh2HK = array(
 '據著述' => '據著述',
 '據著錄' => '據著錄',
 '擡著' => '擡着',
-'擺布' => '擺佈',
 '摆布' => '擺佈',
+'擺布' => '擺佈',
 '擺著' => '擺着',
 '擺著作' => '擺著作',
 '擺著名' => '擺著名',
@@ -15949,8 +15947,8 @@ $zh2HK = array(
 '数字技术' => '數碼技術',
 '數位技術' => '數碼技術',
 '數位相機' => '數碼相機',
-'數碼訊號' => '數碼訊號',
 '数字信号' => '數碼訊號',
+'數碼訊號' => '數碼訊號',
 '数字电视' => '數碼電視',
 '數位電視' => '數碼電視',
 '數著作' => '數著作',
@@ -15985,8 +15983,8 @@ $zh2HK = array(
 '昂著者' => '昂著者',
 '昂著述' => '昂著述',
 '昂著錄' => '昂著錄',
-'星羅棋布' => '星羅棋佈',
 '星罗棋布' => '星羅棋佈',
+'星羅棋布' => '星羅棋佈',
 '映著' => '映着',
 '映著作' => '映著作',
 '映著名' => '映著名',
@@ -16002,8 +16000,8 @@ $zh2HK = array(
 '晃著者' => '晃著者',
 '晃著述' => '晃著述',
 '晃著錄' => '晃著錄',
-'芯片' => '晶片',
 '晶元' => '晶片',
+'芯片' => '晶片',
 '智慧型' => '智能',
 '智慧卡' => '智能卡',
 '智慧手機' => '智能手機',
@@ -16063,8 +16061,8 @@ $zh2HK = array(
 '村里' => '村裏',
 '杜塞道夫' => '杜塞爾多夫',
 '迪拜' => '杜拜',
-'東協' => '東盟',
 '亚细安' => '東盟',
+'東協' => '東盟',
 '板著臉' => '板着臉',
 '枕著' => '枕着',
 '枕著作' => '枕著作',
@@ -16081,18 +16079,18 @@ $zh2HK = array(
 '台面化' => '枱面化',
 '柏林墙' => '柏林圍牆',
 '奧黛莉·朵杜' => '柯德莉·塔圖',
-'奧黛麗·赫本' => '柯德莉·夏萍',
 '奥黛丽·赫本' => '柯德莉·夏萍',
+'奧黛麗·赫本' => '柯德莉·夏萍',
 '哥廷根' => '格丁根',
 '格瑞那達' => '格林納達',
-'葛萊美獎' => '格林美獎',
 '格莱美奖' => '格林美獎',
+'葛萊美獎' => '格林美獎',
 '格鲁吉亚' => '格魯吉亞',
 '框里' => '框裏',
-'撞球' => '桌球',
 '台球' => '桌球',
-'默多克' => '梅鐸',
+'撞球' => '桌球',
 '梅鐸' => '梅鐸',
+'默多克' => '梅鐸',
 '梳著' => '梳着',
 '梳著作' => '梳著作',
 '梳著名' => '梳著名',
@@ -16104,8 +16102,8 @@ $zh2HK = array(
 '桑巴舞' => '森巴舞',
 '森林里' => '森林裏',
 '棺材里' => '棺材裏',
-'榴蓮' => '榴槤',
 '榴莲' => '榴槤',
+'榴蓮' => '榴槤',
 '樂著' => '樂着',
 '樂著作' => '樂著作',
 '樂著名' => '樂著名',
@@ -16135,8 +16133,8 @@ $zh2HK = array(
 '殺著錄' => '殺著錄',
 '壳里' => '殼裏',
 '茅利塔尼亞' => '毛里塔尼亞',
-'毛里求斯' => '毛里裘斯',
 '模里西斯' => '毛里裘斯',
+'毛里求斯' => '毛里裘斯',
 '公厘' => '毫米',
 '公釐' => '毫米',
 '水来汤里去' => '水來湯裏去',
@@ -16182,8 +16180,8 @@ $zh2HK = array(
 '玻里尼西亞' => '波利尼西亞',
 '波士尼亞' => '波斯尼亞',
 '波士尼亞赫塞哥維納' => '波斯尼亞黑塞哥維那',
-'寶萊塢' => '波里活',
 '宝莱坞' => '波里活',
+'寶萊塢' => '波里活',
 '幫浦' => '泵',
 '洞里' => '洞裏',
 '辛巴威' => '津巴布韋',
@@ -16198,8 +16196,8 @@ $zh2HK = array(
 '活著錄' => '活著錄',
 '移动网络' => '流動網絡',
 '行動網路' => '流動網絡',
-'行動電話' => '流動電話',
 '移动电话' => '流動電話',
+'行動電話' => '流動電話',
 '流著' => '流着',
 '流著作' => '流著作',
 '流著名' => '流著名',
@@ -16220,8 +16218,8 @@ $zh2HK = array(
 '浮著錄' => '浮著錄',
 '海上布雷' => '海上佈雷',
 '海洛因' => '海洛英',
-'海灣布雷' => '海灣佈雷',
 '海湾布雷' => '海灣佈雷',
+'海灣布雷' => '海灣佈雷',
 '涵著' => '涵着',
 '涵著作' => '涵著作',
 '涵著名' => '涵著名',
@@ -16357,8 +16355,8 @@ $zh2HK = array(
 '猜著述' => '猜著述',
 '猜著錄' => '猜著錄',
 '狱里' => '獄裏',
-'獨占' => '獨佔',
 '独占' => '獨佔',
+'獨占' => '獨佔',
 '獨著' => '獨着',
 '獨著作' => '獨著作',
 '獨著名' => '獨著名',
@@ -16419,18 +16417,18 @@ $zh2HK = array(
 '畫著稱' => '畫著稱',
 '畫著者' => '畫著者',
 '當著' => '當着',
-'過著作' => '當著作',
 '當著作' => '當著作',
-'過著名' => '當著名',
+'過著作' => '當著作',
 '當著名' => '當著名',
-'過著書' => '當著書',
+'過著名' => '當著名',
 '當著書' => '當著書',
+'過著書' => '當著書',
 '當著稱' => '當著稱',
 '過著稱' => '當著稱',
 '當著者' => '當著者',
 '過著者' => '當著者',
-'過著述' => '當著述',
 '當著述' => '當著述',
+'過著述' => '當著述',
 '當著錄' => '當著錄',
 '過著錄' => '當著錄',
 '几内亚' => '畿內亞',
@@ -16575,16 +16573,16 @@ $zh2HK = array(
 '瞪著錄' => '瞪著錄',
 '智慧財產權' => '知識產權',
 '智財權' => '知識產權',
-'簡訊' => '短訊',
 '短信' => '短訊',
+'簡訊' => '短訊',
 '什勒斯維希' => '石勒蘇益格',
 '硅' => '矽',
 '硅藻' => '硅藻',
 '硬件' => '硬件',
 '硬體' => '硬件',
 '碗里' => '碗裏',
-'贝克漢' => '碧咸',
 '贝克汉姆' => '碧咸',
+'贝克漢' => '碧咸',
 '社里' => '社裏',
 '福馬林' => '福爾馬林',
 '福著' => '福着',
@@ -16597,18 +16595,18 @@ $zh2HK = array(
 '福著錄' => '福著錄',
 '秀发布' => '秀發佈',
 '私下里' => '私下裏',
-'隱私' => '私隱',
 '隐私' => '私隱',
+'隱私' => '私隱',
 '葛摩' => '科摩羅',
 '程序员' => '程式設計師',
 '捷豹' => '積架',
-'穩占' => '穩佔',
 '稳占' => '穩佔',
+'穩占' => '穩佔',
 '穫著' => '穫着',
 '空中布雷' => '空中佈雷',
 '空投布雷' => '空投佈雷',
-'空氣品質' => '空氣質素',
 '空气质量' => '空氣質素',
+'空氣品質' => '空氣質素',
 '空著' => '空着',
 '空著作' => '空著作',
 '空著名' => '空著名',
@@ -16659,8 +16657,8 @@ $zh2HK = array(
 '节目里' => '節目裏',
 '簽著' => '簽着',
 '籃板球' => '籃板球',
-'麦克尔' => '米高',
 '迈克尔' => '米高',
+'麦克尔' => '米高',
 '迈克尔·欧文' => '米高·奧雲',
 '糊里糊涂' => '糊裏糊塗',
 '系列里' => '系列裏',
@@ -16669,10 +16667,10 @@ $zh2HK = array(
 '約占' => '約佔',
 '约占' => '約佔',
 '紐賓士域' => '紐賓士域',
-'索忍尼辛' => '索贊尼辛',
 '索尔仁尼琴' => '索贊尼辛',
-'索馬利里' => '索馬里',
+'索忍尼辛' => '索贊尼辛',
 '索馬利亞' => '索馬里',
+'索馬利里' => '索馬里',
 '紮著' => '紮着',
 '紮著作' => '紮著作',
 '紮著名' => '紮著名',
@@ -16728,8 +16726,8 @@ $zh2HK = array(
 '繞著者' => '繞著者',
 '繞著述' => '繞著述',
 '繞著錄' => '繞著錄',
-'繫著' => '繫着',
 '系着' => '繫着',
+'繫著' => '繫着',
 '纏著' => '纏着',
 '纏著作' => '纏著作',
 '纏著名' => '纏著名',
@@ -16783,8 +16781,8 @@ $zh2HK = array(
 '考著者' => '考著者',
 '考著述' => '考著述',
 '考著錄' => '考著錄',
-'聖克里斯多福及尼維斯' => '聖吉斯納域斯',
 '圣基茨和尼维斯' => '聖吉斯納域斯',
+'聖克里斯多福及尼維斯' => '聖吉斯納域斯',
 '聖文森及格瑞那丁' => '聖文森特和格林納丁斯',
 '聖露西亞' => '聖盧西亞',
 '聖馬利諾' => '聖馬力諾',
@@ -16863,13 +16861,13 @@ $zh2HK = array(
 '好萊塢' => '荷里活',
 '庄里' => '莊裏',
 '莫三比克' => '莫桑比克',
-'瓦倫西亞' => '華倫西亞',
 '巴伦西亚' => '華倫西亞',
 '巴倫西亞' => '華倫西亞',
+'瓦倫西亞' => '華倫西亞',
 '瓦文萨' => '華里沙',
 '華勒沙' => '華里沙',
-'菲利普親王' => '菲臘親王',
 '菲利普亲王' => '菲臘親王',
+'菲利普親王' => '菲臘親王',
 '賴索托' => '萊索托',
 '马恩岛' => '萌島',
 '馬自達' => '萬事得',
@@ -16886,8 +16884,8 @@ $zh2HK = array(
 '葉爾欽' => '葉利欽',
 '葡占' => '葡佔',
 '葫芦里卖甚么药' => '葫蘆裏賣甚麼藥',
-'蒙特婁' => '蒙特利爾',
 '滿地可' => '蒙特利爾',
+'蒙特婁' => '蒙特利爾',
 '蒙著' => '蒙着',
 '蒙著作' => '蒙著作',
 '蒙著名' => '蒙著名',
@@ -17014,8 +17012,8 @@ $zh2HK = array(
 '視著' => '視着',
 '視著名' => '視著名',
 '角落里' => '角落裏',
-'解析度' => '解像度',
 '分辨率' => '解像度',
+'解析度' => '解像度',
 '言里' => '言裏',
 '計畫' => '計劃',
 '記著' => '記着',
@@ -17092,8 +17090,8 @@ $zh2HK = array(
 '負著' => '負着',
 '貢寮國' => '貢寮國',
 '買凶' => '買兇',
-'费占' => '費佔',
 '費占' => '費佔',
+'费占' => '費佔',
 '赌台' => '賭枱',
 '尚比亞' => '贊比亞',
 '西臺人' => '赫梯人',
@@ -17272,8 +17270,8 @@ $zh2HK = array(
 '連著者' => '連著者',
 '連著述' => '連著述',
 '連著錄' => '連著錄',
-'進占' => '進佔',
 '进占' => '進佔',
+'進占' => '進佔',
 '演化論' => '進化論',
 '逼著' => '逼着',
 '逼著作' => '逼著作',
@@ -17311,8 +17309,8 @@ $zh2HK = array(
 '遠著者' => '遠著者',
 '遠著述' => '遠著述',
 '遠著錄' => '遠著錄',
-'還占' => '還佔',
 '还占' => '還佔',
+'還占' => '還佔',
 '邋里邋遢' => '邋裏邋遢',
 '那里' => '那裏',
 '配合著' => '配合着',
@@ -17335,14 +17333,14 @@ $zh2HK = array(
 '醜著者' => '醜著者',
 '醜著述' => '醜著述',
 '醜著錄' => '醜著錄',
-'醯壺' => '醯壺',
 '醯壶' => '醯壺',
+'醯壺' => '醯壺',
 '醯醋' => '醯醋',
 '醯醢' => '醯醢',
-'醯醬' => '醯醬',
 '醯酱' => '醯醬',
-'é\86¯é¸¡' => 'é\86¯é\9b\9e',
+'é\86¯é\86¬' => 'é\86¯é\86¬',
 '醯雞' => '醯雞',
+'醯鸡' => '醯雞',
 '釀著' => '釀着',
 '釀著作' => '釀著作',
 '釀著名' => '釀著名',
@@ -17383,8 +17381,8 @@ $zh2HK = array(
 '開著者' => '開著者',
 '開著述' => '開著述',
 '開著錄' => '開著錄',
-'開誠布公' => '開誠佈公',
 '开诚布公' => '開誠佈公',
+'開誠布公' => '開誠佈公',
 '閑著' => '閑着',
 '閑著作' => '閑著作',
 '閑著名' => '閑著名',
@@ -17478,11 +17476,11 @@ $zh2HK = array(
 '雜著述' => '雜著述',
 '雜著錄' => '雜著錄',
 '鸡蛋里挑骨头' => '雞蛋裏挑骨頭',
-'冰激凌' => '雪糕',
 '冰淇淋' => '雪糕',
+'冰激凌' => '雪糕',
 '雪里' => '雪裏',
-'萊特灣' => '雷伊泰灣',
 '莱特湾' => '雷伊泰灣',
+'萊特灣' => '雷伊泰灣',
 '晶体管' => '電晶體',
 '晶體管' => '電晶體',
 '电梯里' => '電梯裏',
@@ -17500,8 +17498,8 @@ $zh2HK = array(
 '靠著稱' => '靠著稱',
 '靠著者' => '靠著者',
 '靠著述' => '靠著述',
-'靠著錄' => '靠著錄',
 '靠著录' => '靠著錄',
+'靠著錄' => '靠著錄',
 '鞋里' => '鞋裏',
 '鞭辟入里' => '鞭辟入裏',
 '朝鲜战争' => '韓戰',
@@ -17529,8 +17527,8 @@ $zh2HK = array(
 '順著者' => '順著者',
 '順著述' => '順著述',
 '順著錄' => '順著錄',
-'颁布' => '頒佈',
 '頒布' => '頒佈',
+'颁布' => '頒佈',
 '領著' => '領着',
 '領著作' => '領著作',
 '領著名' => '領著名',
@@ -17554,8 +17552,8 @@ $zh2HK = array(
 '餐台' => '餐枱',
 '馆里' => '館裏',
 '糊口' => '餬口',
-'马里兰' => '馬利蘭',
 '馬里蘭' => '馬利蘭',
+'马里兰' => '馬利蘭',
 '马拉特·萨芬' => '馬拉特·沙芬',
 '馬斯垂克' => '馬斯特里赫特',
 '馬爾地夫' => '馬爾代夫',
@@ -17602,8 +17600,8 @@ $zh2HK = array(
 '髭著者' => '髭著者',
 '髭著述' => '髭著述',
 '髭著錄' => '髭著錄',
-'鬥著' => '鬥着',
 '斗着' => '鬥着',
+'鬥著' => '鬥着',
 '鬥著作' => '鬥著作',
 '鬥著名' => '鬥著名',
 '鬥著書' => '鬥著書',
@@ -17612,8 +17610,8 @@ $zh2HK = array(
 '鬥著述' => '鬥著述',
 '鬥著錄' => '鬥著錄',
 '鬧著' => '鬧着',
-'牛轧' => '鳥結',
 '牛軋' => '鳥結',
+'牛轧' => '鳥結',
 '鳩占' => '鳩佔',
 '鸠占' => '鳩佔',
 '麗著' => '麗着',
@@ -17625,16 +17623,16 @@ $zh2HK = array(
 '麗著述' => '麗著述',
 '麗著錄' => '麗著錄',
 '麼著' => '麼着',
-'里氏0' => '黎克特制0',
 '芮氏0' => '黎克特制0',
-'里氏1' => '黎克特制1',
+'里氏0' => '黎克特制0',
 '芮氏1' => '黎克特制1',
-'里氏2' => '黎克特制2',
+'里氏1' => '黎克特制1',
 '芮氏2' => '黎克特制2',
-'里氏3' => '黎克特制3',
+'里氏2' => '黎克特制2',
 '芮氏3' => '黎克特制3',
-'里氏4' => '黎克特制4',
+'里氏3' => '黎克特制3',
 '芮氏4' => '黎克特制4',
+'里氏4' => '黎克特制4',
 '芮氏5' => '黎克特制5',
 '里氏5' => '黎克特制5',
 '芮氏6' => '黎克特制6',
@@ -17643,13 +17641,13 @@ $zh2HK = array(
 '里氏7' => '黎克特制7',
 '芮氏8' => '黎克特制8',
 '里氏8' => '黎克特制8',
-'里氏9' => '黎克特制9',
 '芮氏9' => '黎克特制9',
+'里氏9' => '黎克特制9',
 '芮氏地震規模' => '黎克特制地震震級',
 '里氏地震规模' => '黎克特制地震震級',
-'里氏震级' => '黎克特制震級',
 '芮氏規模' => '黎克特制震級',
 '里氏规模' => '黎克特制震級',
+'里氏震级' => '黎克特制震級',
 '黏著' => '黏着',
 '黏著作' => '黏著作',
 '黏著名' => '黏著名',
@@ -17686,8 +17684,8 @@ $zh2CN = array(
 '下著录' => '下著录',
 '下著錄' => '下著录',
 '下著有' => '下著有',
-'下著稱' => '下著称',
 '下著称' => '下著称',
+'下著稱' => '下著称',
 '下著者' => '下著者',
 '下著述' => '下著述',
 '不著' => '不着',
@@ -17715,8 +17713,8 @@ $zh2CN = array(
 '邱吉爾' => '丘吉尔',
 'C型肝炎' => '丙型肝炎',
 'C肝' => '丙肝',
-'東協' => '东盟',
 '亚细安' => '东盟',
+'東協' => '东盟',
 '臨著' => '临着',
 '臨著書' => '临著书',
 '臨著作' => '临著作',
@@ -17793,8 +17791,8 @@ $zh2CN = array(
 '亮著者' => '亮著者',
 '亮著述' => '亮著述',
 '人工智慧' => '人工智能',
-'甚麽' => '什么',
 '甚麼' => '什么',
+'甚麽' => '什么',
 '仗著' => '仗着',
 '仗著書' => '仗著书',
 '仗著作' => '仗著作',
@@ -17814,8 +17812,8 @@ $zh2CN = array(
 '代表著述' => '代表著述',
 '乙太網' => '以太网',
 '伊莉莎白' => '伊丽莎白',
-'伊利諾伊' => '伊利诺伊',
 '伊利諾' => '伊利诺伊',
+'伊利諾伊' => '伊利诺伊',
 '伊斯蘭瑪巴德' => '伊斯兰堡',
 '伊斯坦堡' => '伊斯坦布尔',
 '伏著' => '伏着',
@@ -17991,8 +17989,8 @@ $zh2CN = array(
 '寫著稱' => '写著称',
 '寫著者' => '写著者',
 '寫著述' => '写著述',
-'衝著' => '冲着',
 '沖著' => '冲着',
+'衝著' => '冲着',
 '沖著。' => '冲著。',
 '沖著《' => '冲著《',
 '沖著,' => '冲著,',
@@ -18008,8 +18006,8 @@ $zh2CN = array(
 '湊合著' => '凑合着',
 '畿內亞' => '几内亚',
 '幾內亞比索' => '几内亚比绍',
-'嘉芙蓮' => '凯瑟琳',
 '凱薩琳' => '凯瑟琳',
+'嘉芙蓮' => '凯瑟琳',
 '份內' => '分内',
 '份外' => '分外',
 '解像度' => '分辨率',
@@ -18021,8 +18019,8 @@ $zh2CN = array(
 '列支敦斯登' => '列支敦士登',
 '賴比瑞亞' => '利比里亚',
 '別著' => '别着',
-'颳著' => '刮着',
 '刮著' => '刮着',
+'颳著' => '刮着',
 '到帳' => '到账',
 '制著' => '制着',
 '制著書' => '制著书',
@@ -18085,8 +18083,8 @@ $zh2CN = array(
 '十進位制' => '十进位制',
 '十進位' => '十进制',
 '公升' => '升',
-'單鏡反光機' => '单反相机',
 '單眼相機' => '单反相机',
+'單鏡反光機' => '单反相机',
 '波札那' => '博茨瓦纳',
 '占著' => '占着',
 '占著作' => '占著作',
@@ -18107,12 +18105,12 @@ $zh2CN = array(
 '印著者' => '印著者',
 '印著述' => '印著述',
 '瓜地馬拉' => '危地马拉',
-'厄瓜多尔' => '厄瓜多尔',
 '厄瓜多' => '厄瓜多尔',
+'厄瓜多尔' => '厄瓜多尔',
 '厄瓜多爾' => '厄瓜多尔',
 '厄利垂亚' => '厄立特里亚',
-'厄立特里亞' => '厄立特里亚',
 '厄利垂亞' => '厄立特里亚',
+'厄立特里亞' => '厄立特里亚',
 '壓著' => '压着',
 '壓著書' => '压著书',
 '壓著作' => '压著作',
@@ -18270,8 +18268,8 @@ $zh2CN = array(
 '因著書' => '因著书',
 '因著作' => '因著作',
 '因著名' => '因著名',
-'因著錄' => '因著录',
 '因著录' => '因著录',
+'因著錄' => '因著录',
 '因著稱' => '因著称',
 '因著者' => '因著者',
 '因著述' => '因著述',
@@ -18297,8 +18295,8 @@ $zh2CN = array(
 '吐瓦魯' => '图瓦卢',
 '原子筆' => '圆珠笔',
 '聖露西亞' => '圣卢西亚',
-'聖吉斯納域斯' => '圣基茨和尼维斯',
 '聖克里斯多福及尼維斯' => '圣基茨和尼维斯',
+'聖吉斯納域斯' => '圣基茨和尼维斯',
 '聖文森及格瑞那丁' => '圣文森特和格林纳丁斯',
 '聖馬利諾' => '圣马力诺',
 '在著' => '在着',
@@ -18330,10 +18328,10 @@ $zh2CN = array(
 '坎培拉' => '堪培拉',
 '塞爾維亞與蒙特內哥羅' => '塞尔维亚和黑山',
 '塞拉利昂' => '塞拉利昂',
-'賽普勒斯' => '塞浦路斯',
 '塞普勒斯' => '塞浦路斯',
-'西維ç\88¾' => 'å¡\9eç»´å\88©äº\9a',
+'è³½æ\99®å\8b\92æ\96¯' => 'å¡\9e浦路æ\96¯',
 '塞維亞' => '塞维利亚',
+'西維爾' => '塞维利亚',
 '塞席爾' => '塞舌尔',
 '音效卡' => '声卡',
 '備著' => '备着',
@@ -18414,8 +18412,8 @@ $zh2CN = array(
 '定著述' => '定著述',
 '波里活' => '宝莱坞',
 '寬頻' => '宽带',
-'密西根' => '密歇根',
 '密执安' => '密歇根',
+'密西根' => '密歇根',
 '對著' => '对着',
 '對著書' => '对著书',
 '對著作' => '对著作',
@@ -18447,8 +18445,8 @@ $zh2CN = array(
 '展著稱' => '展著称',
 '展著者' => '展著者',
 '展著述' => '展著述',
-'華倫西亞' => '巴伦西亚',
 '瓦倫西亞' => '巴伦西亚',
+'華倫西亞' => '巴伦西亚',
 '巴塞隆拿' => '巴塞罗那',
 '巴塞隆納' => '巴塞罗那',
 '巴斯拉' => '巴士拉',
@@ -18907,8 +18905,8 @@ $zh2CN = array(
 '放著' => '放着',
 '放著作' => '放著作',
 '放著名' => '放著名',
-'放著稱' => '放著称',
 '放著称' => '放著称',
+'放著稱' => '放著称',
 '放帳' => '放账',
 '敞著' => '敞着',
 '敞著作' => '敞著作',
@@ -18919,8 +18917,8 @@ $zh2CN = array(
 '敞著述' => '敞著述',
 '數位訊號' => '数字信号',
 '數碼訊號' => '数字信号',
-'數碼技術' => '数字技术',
 '數位技術' => '数字技术',
+'數碼技術' => '数字技术',
 '數位電視' => '数字电视',
 '數碼電視' => '数字电视',
 '資料庫' => '数据库',
@@ -18959,8 +18957,8 @@ $zh2CN = array(
 '紐西蘭' => '新西兰',
 '舊帳' => '旧账',
 '三藩市' => '旧金山',
-'翁山蘇姬' => '昂山素季',
 '昂山素姬' => '昂山素季',
+'翁山蘇姬' => '昂山素季',
 '昂著' => '昂着',
 '昂著書' => '昂著书',
 '昂著作' => '昂著作',
@@ -19105,10 +19103,10 @@ $zh2CN = array(
 '庇里牛斯' => '比利牛斯',
 '畢卡索' => '毕加索',
 '茅利塔尼亞' => '毛里塔尼亚',
-'毛里裘斯' => '毛里求斯',
 '模里西斯' => '毛里求斯',
-'公釐' => '毫米',
+'毛里裘斯' => '毛里求斯',
 '公厘' => '毫米',
+'公釐' => '毫米',
 '胺基酸' => '氨基酸',
 '水份' => '水分',
 '水氣' => '水汽',
@@ -19121,8 +19119,8 @@ $zh2CN = array(
 '求著者' => '求著者',
 '求著述' => '求著述',
 '漢諾瓦' => '汉诺威',
-'沉著' => '沉着',
 '沈著' => '沉着',
+'沉著' => '沉着',
 '沉著書' => '沉著书',
 '沉著作' => '沉著作',
 '沉著名' => '沉著名',
@@ -19303,8 +19301,8 @@ $zh2CN = array(
 '玩著' => '玩着',
 '溫納圖' => '瓦努阿图',
 '萬那杜' => '瓦努阿图',
-'華里沙' => '瓦文萨',
 '華勒沙' => '瓦文萨',
+'華里沙' => '瓦文萨',
 '甜著' => '甜着',
 '甜著書' => '甜著书',
 '甜著作' => '甜著作',
@@ -19530,15 +19528,15 @@ $zh2CN = array(
 '瞪著稱' => '瞪著称',
 '瞪著者' => '瞪著者',
 '瞪著述' => '瞪著述',
-'智財權' => '知识产权',
 '智慧財產權' => '知识产权',
+'智財權' => '知识产权',
 '知識份子' => '知识分子',
 '什勒斯維希' => '石勒苏益格',
-'矽尘' => '矽尘',
 '矽塵' => '矽尘',
+'矽尘' => '矽尘',
 '矽肺' => '矽肺',
-'矽钢' => '矽钢',
 '矽鋼' => '矽钢',
+'矽钢' => '矽钢',
 '矽' => '硅',
 '矽片' => '硅片',
 '矽谷' => '硅谷',
@@ -19561,13 +19559,13 @@ $zh2CN = array(
 '積極份子' => '积极分子',
 '流動電話' => '移动电话',
 '行動電話' => '移动电话',
-'行動網路' => '移动网络',
 '流動網絡' => '移动网络',
+'行動網路' => '移动网络',
 '程式設計師' => '程序员',
 '程式控制' => '程控',
 '空中巴士' => '空中客车',
-'空氣質素' => '空气质量',
 '空氣品質' => '空气质量',
+'空氣質素' => '空气质量',
 '空著' => '空着',
 '空著書' => '空著书',
 '空著作' => '空著作',
@@ -19630,9 +19628,9 @@ $zh2CN = array(
 '糖份' => '糖分',
 '動畫影集' => '系列动画片',
 '繫著' => '系着',
+'索忍尼辛' => '索尔仁尼琴',
 '索贊尼辛' => '索尔仁尼琴',
 '蘇辛尼津' => '索尔仁尼琴',
-'索忍尼辛' => '索尔仁尼琴',
 '索馬利亞' => '索马里',
 '索馬利蘭' => '索马里兰',
 '正體中文' => '繁体中文',
@@ -19740,8 +19738,8 @@ $zh2CN = array(
 '藝著者' => '艺著者',
 '藝著述' => '艺著述',
 '愛滋' => '艾滋',
-'晶片' => '芯片',
 '晶元' => '芯片',
+'晶片' => '芯片',
 '蘇利南' => '苏里南',
 '苦著' => '苦着',
 '苦著書' => '苦著书',
@@ -20187,8 +20185,8 @@ $zh2CN = array(
 '鑀' => '锿',
 '鋂' => '镅',
 '錼' => '镎',
-'孟德爾頌' => '门德尔松',
 '孟德爾遜' => '门德尔松',
+'孟德爾頌' => '门德尔松',
 '快閃記憶體' => '闪存',
 '閉著' => '闭着',
 '閉著書' => '闭著书',
@@ -20198,8 +20196,8 @@ $zh2CN = array(
 '閉著稱' => '闭著称',
 '閉著者' => '闭著者',
 '閉著述' => '闭著述',
-'閒著' => '闲着',
 '閑著' => '闲着',
+'閒著' => '闲着',
 '閑著書' => '闲著书',
 '閑著作' => '闲著作',
 '閑著名' => '闲著名',
index 0dee147..6ab8483 100644 (file)
@@ -497,7 +497,7 @@ class ApiEditPage extends ApiBase {
                                $r['result'] = 'Success';
                                $r['pageid'] = intval( $titleObj->getArticleID() );
                                $r['title'] = $titleObj->getPrefixedText();
-                               $r['contentmodel'] = $titleObj->getContentModel();
+                               $r['contentmodel'] = $articleObject->getContentModel();
                                $newRevId = $articleObject->getLatest();
                                if ( $newRevId == $oldRevId ) {
                                        $r['nochange'] = true;
index dd19bf2..87f90c5 100644 (file)
@@ -137,7 +137,7 @@ class ApiQueryPageProps extends ApiQueryBase {
 
        protected function getExamplesMessages() {
                return array(
-                       'action=query&prop=pageprops&titles=Category:Foo'
+                       'action=query&prop=pageprops&titles=Main%20Page|MediaWiki'
                                => 'apihelp-query+pageprops-example-simple',
                );
        }
index 552ca3b..1a65fe3 100644 (file)
@@ -91,10 +91,10 @@ class ApiQueryRevisions extends ApiQueryRevisionsBase {
                // Enum mode can only be used when exactly one page is provided.
                // Enumerating revisions on multiple pages make it extremely
                // difficult to manage continuations and require additional SQL indexes
-               $enumRevMode = ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ||
-                       !is_null( $params['limit'] ) || !is_null( $params['startid'] ) ||
-                       !is_null( $params['endid'] ) || $params['dir'] === 'newer' ||
-                       !is_null( $params['start'] ) || !is_null( $params['end'] ) );
+               $enumRevMode = ( $params['user'] !== null || $params['excludeuser'] !== null ||
+                       $params['limit'] !== null || $params['startid'] !== null ||
+                       $params['endid'] !== null || $params['dir'] === 'newer' ||
+                       $params['start'] !== null || $params['end'] !== null );
 
                $pageSet = $this->getPageSet();
                $pageCount = $pageSet->getGoodTitleCount();
@@ -149,7 +149,7 @@ class ApiQueryRevisions extends ApiQueryRevisionsBase {
                        }
                } else {
                        $this->limit = $this->getParameter( 'limit' ) ?: 10;
-                       $this->addFields( array( 'rev_id', 'rev_page' ) );
+                       $this->addFields( array( 'rev_id', 'rev_timestamp', 'rev_page' ) );
                }
 
                if ( $this->fld_tags ) {
@@ -160,7 +160,7 @@ class ApiQueryRevisions extends ApiQueryRevisionsBase {
                        $this->addFields( 'ts_tags' );
                }
 
-               if ( !is_null( $params['tag'] ) ) {
+               if ( $params['tag'] !== null ) {
                        $this->addTables( 'change_tag' );
                        $this->addJoinConds(
                                array( 'change_tag' => array( 'INNER JOIN', array( 'rev_id=ct_rev_id' ) ) )
@@ -196,58 +196,77 @@ class ApiQueryRevisions extends ApiQueryRevisionsBase {
                }
 
                if ( $enumRevMode ) {
+                       // Indexes targeted:
+                       //  page_timestamp if we don't have rvuser
+                       //  page_user_timestamp if we have a logged-in rvuser
+                       //  page_timestamp or usertext_timestamp if we have an IP rvuser
+
                        // This is mostly to prevent parameter errors (and optimize SQL?)
-                       if ( !is_null( $params['startid'] ) && !is_null( $params['start'] ) ) {
+                       if ( $params['startid'] !== null && $params['start'] !== null ) {
                                $this->dieUsage( 'start and startid cannot be used together', 'badparams' );
                        }
 
-                       if ( !is_null( $params['endid'] ) && !is_null( $params['end'] ) ) {
+                       if ( $params['endid'] !== null && $params['end'] !== null ) {
                                $this->dieUsage( 'end and endid cannot be used together', 'badparams' );
                        }
 
-                       if ( !is_null( $params['user'] ) && !is_null( $params['excludeuser'] ) ) {
+                       if ( $params['user'] !== null && $params['excludeuser'] !== null ) {
                                $this->dieUsage( 'user and excludeuser cannot be used together', 'badparams' );
                        }
 
-                       // Continuing effectively uses startid. But we can't use rvstartid
-                       // directly, because there is no way to tell the client to ''not''
-                       // send rvstart if it sent it in the original query. So instead we
-                       // send the continuation startid as rvcontinue, and ignore both
-                       // rvstart and rvstartid when that is supplied.
-                       if ( !is_null( $params['continue'] ) ) {
-                               $params['startid'] = $params['continue'];
-                               $params['start'] = null;
+                       if ( $params['continue'] !== null ) {
+                               $cont = explode( '|', $params['continue'] );
+                               $this->dieContinueUsageIf( count( $cont ) != 2 );
+                               $op = ( $params['dir'] === 'newer' ? '>' : '<' );
+                               $continueTimestamp = $db->addQuotes( $db->timestamp( $cont[0] ) );
+                               $continueId = (int)$cont[1];
+                               $this->dieContinueUsageIf( $continueId != $cont[1] );
+                               $this->addWhere( "rev_timestamp $op $continueTimestamp OR " .
+                                       "(rev_timestamp = $continueTimestamp AND " .
+                                       "rev_id $op= $continueId)"
+                               );
                        }
 
-                       // This code makes an assumption that sorting by rev_id and rev_timestamp produces
-                       // the same result. This way users may request revisions starting at a given time,
-                       // but to page through results use the rev_id returned after each page.
-                       // Switching to rev_id removes the potential problem of having more than
-                       // one row with the same timestamp for the same page.
-                       // The order needs to be the same as start parameter to avoid SQL filesort.
-                       if ( is_null( $params['startid'] ) && is_null( $params['endid'] ) ) {
-                               $this->addTimestampWhereRange( 'rev_timestamp', $params['dir'],
-                                       $params['start'], $params['end'] );
-                       } else {
-                               $this->addWhereRange( 'rev_id', $params['dir'],
-                                       $params['startid'], $params['endid'] );
-                               // One of start and end can be set
-                               // If neither is set, this does nothing
-                               $this->addTimestampWhereRange( 'rev_timestamp', $params['dir'],
-                                       $params['start'], $params['end'], false );
+                       // Query optimization: since we're targeting ranges of
+                       // rev_timestamp,rev_id, if we're given an id then extract the
+                       // corresponding timestamp from the DB.
+                       // Note we don't use Revision::getTimestampFromId() since we don't
+                       // have a Title to pass it and there's not any real need to create one.
+                       if ( $params['startid'] !== null ) {
+                               $params['start'] = $db->selectField( 'revision', 'rev_timestamp',
+                                       array( 'rev_id' => $params['startid'] ), __METHOD__ );
+                       }
+                       if ( $params['endid'] !== null ) {
+                               $params['end'] = $db->selectField( 'revision', 'rev_timestamp',
+                                       array( 'rev_id' => $params['endid'] ), __METHOD__ );
                        }
 
+                       $this->addTimestampWhereRange( 'rev_timestamp', $params['dir'],
+                               $params['start'], $params['end'] );
+                       $this->addWhereRange( 'rev_id', $params['dir'],
+                               $params['startid'], $params['endid'] );
+
                        // There is only one ID, use it
                        $ids = array_keys( $pageSet->getGoodTitles() );
                        $this->addWhereFld( 'rev_page', reset( $ids ) );
 
-                       if ( !is_null( $params['user'] ) ) {
-                               $this->addWhereFld( 'rev_user_text', $params['user'] );
-                       } elseif ( !is_null( $params['excludeuser'] ) ) {
-                               $this->addWhere( 'rev_user_text != ' .
-                                       $db->addQuotes( $params['excludeuser'] ) );
+                       if ( $params['user'] !== null ) {
+                               $user = User::newFromName( $params['user'] );
+                               if ( $user && $user->getId() > 0 ) {
+                                       $this->addWhereFld( 'rev_user', $user->getId() );
+                               } else {
+                                       $this->addWhereFld( 'rev_user_text', $params['user'] );
+                               }
+                       } elseif ( $params['excludeuser'] !== null ) {
+                               $user = User::newFromName( $params['excludeuser'] );
+                               if ( $user && $user->getId() > 0 ) {
+                                       $this->addWhere( 'rev_user != ' . $user->getId() );
+                               } else {
+                                       $this->addWhere( 'rev_user_text != ' .
+                                               $db->addQuotes( $params['excludeuser'] ) );
+                               }
                        }
-                       if ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ) {
+                       if ( $params['user'] !== null || $params['excludeuser'] !== null ) {
                                // Paranoia: avoid brute force searches (bug 17342)
                                if ( !$this->getUser()->isAllowed( 'deletedhistory' ) ) {
                                        $bitmask = Revision::DELETED_USER;
@@ -261,16 +280,20 @@ class ApiQueryRevisions extends ApiQueryRevisionsBase {
                                }
                        }
                } elseif ( $revCount > 0 ) {
+                       // Always targets the PRIMARY index
+
                        $revs = $pageSet->getLiveRevisionIDs();
 
                        // Get all revision IDs
                        $this->addWhereFld( 'rev_id', array_keys( $revs ) );
 
-                       if ( !is_null( $params['continue'] ) ) {
+                       if ( $params['continue'] !== null ) {
                                $this->addWhere( 'rev_id >= ' . intval( $params['continue'] ) );
                        }
                        $this->addOption( 'ORDER BY', 'rev_id' );
                } elseif ( $pageCount > 0 ) {
+                       // Always targets the rev_page_id index
+
                        $titles = $pageSet->getGoodTitles();
 
                        // When working in multi-page non-enumeration mode,
@@ -282,7 +305,7 @@ class ApiQueryRevisions extends ApiQueryRevisionsBase {
                        // Every time someone relies on equality propagation, god kills a kitten :)
                        $this->addWhereFld( 'rev_page', array_keys( $titles ) );
 
-                       if ( !is_null( $params['continue'] ) ) {
+                       if ( $params['continue'] !== null ) {
                                $cont = explode( '|', $params['continue'] );
                                $this->dieContinueUsageIf( count( $cont ) != 2 );
                                $pageid = intval( $cont[0] );
@@ -312,7 +335,8 @@ class ApiQueryRevisions extends ApiQueryRevisionsBase {
                                // We've reached the one extra which shows that there are
                                // additional pages to be had. Stop here...
                                if ( $enumRevMode ) {
-                                       $this->setContinueEnumParameter( 'continue', intval( $row->rev_id ) );
+                                       $this->setContinueEnumParameter( 'continue',
+                                               $row->rev_timestamp . '|' . intval( $row->rev_id ) );
                                } elseif ( $revCount > 0 ) {
                                        $this->setContinueEnumParameter( 'continue', intval( $row->rev_id ) );
                                } else {
@@ -344,7 +368,8 @@ class ApiQueryRevisions extends ApiQueryRevisionsBase {
                                $fit = $this->addPageSubItem( $row->rev_page, $rev, 'rev' );
                                if ( !$fit ) {
                                        if ( $enumRevMode ) {
-                                               $this->setContinueEnumParameter( 'continue', intval( $row->rev_id ) );
+                                               $this->setContinueEnumParameter( 'continue',
+                                                       $row->rev_timestamp . '|' . intval( $row->rev_id ) );
                                        } elseif ( $revCount > 0 ) {
                                                $this->setContinueEnumParameter( 'continue', intval( $row->rev_id ) );
                                        } else {
diff --git a/includes/api/i18n/ast.json b/includes/api/i18n/ast.json
new file mode 100644 (file)
index 0000000..9494a7c
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Xuacu"
+               ]
+       },
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentación]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Llista d'alderique]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anuncios de la API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Fallos y solicitúes]\n</div>\n<strong>Estau:</strong> Toles carauterístiques qu'apaecen nesta páxina tendríen de funcionar, pero la API inda ta en desendolcu activu, y puede camudar en cualquier momentu. Suscríbete a la [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ llista de corréu mediawiki-api-announce] p'avisos sobro anovamientos.\n\n<strong>Solicitúes incorreutes:</strong> Cuando s'unvíen solicitúes incorreutes a la API, unvíase una cabecera HTTP cola clave \"MediaWiki-API-Error\" y, darréu, tanto'l valor de la cabecera como'l códigu d'error devueltu pondránse al mesmu valor. Pa más información, consulta [[mw:API:Errors_and_warnings|API: Errores y avisos]].",
+       "apihelp-main-param-action": "Qué aición facer.",
+       "apihelp-main-param-format": "El formatu de la salida."
+}
index d6a1fec..0f96f6c 100644 (file)
@@ -5,7 +5,8 @@
                        "YjM",
                        "Juandev",
                        "Aktron",
-                       "Cvanca"
+                       "Cvanca",
+                       "Utar"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Dokumentace]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api E-mailová konference]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Oznámení k API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Chyby a požadavky]\n</div>\n<strong>Stav:</strong> Všechny funkce uvedené na této stránce by měly fungovat, ale API se stále aktivně vyvíjí a může se kdykoli změnit. Upozornění na změny získáte přihlášením se k [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ e-mailové konferenci mediawiki-api-announce].\n\n<strong>Chybné požadavky:</strong> Pokud jsou do API zaslány chybné požadavky, bude vrácena HTTP hlavička s klíčem „MediaWiki-API-Error“ a hodnota této hlavičky a chybový kód budou nastaveny na stejnou hodnotu. Více informací najdete [[mw:API:Errors_and_warnings|v dokumentaci]].",
        "apihelp-help-example-help": "Nápověda k samotnému modulu nápovědy",
        "apihelp-help-example-query": "Nápověda pro dva podmoduly query",
        "apihelp-imagerotate-description": "Otočit jeden nebo více obrázků.",
+       "apihelp-imagerotate-example-generator": "Otočte všechny obrázky v <kbd>Category:Flip</kbd> o <kbd>180</kbd> stupňů.",
        "apihelp-import-param-summary": "Import shrnutí.",
        "apihelp-import-param-xml": "Nahraný XML soubor.",
        "apihelp-import-param-rootpage": "Importovat jako podstránku k této stránce.",
index 37a3b97..760fe53 100644 (file)
        "apihelp-import-param-interwikipage": "Für Interwiki-Importe: zu importierende Seite.",
        "apihelp-import-param-fullhistory": "Für Interwiki-Importe: importiere die komplette Versionsgeschichte, nicht nur die aktuelle Version.",
        "apihelp-import-param-templates": "Für Interwiki-Importe: importiere auch alle eingebundenen Vorlagen.",
-       "apihelp-import-param-namespace": "Für Interwiki-Importe: importiere in diesen Namensraum.",
-       "apihelp-import-param-rootpage": "Als Unterseite dieser Seite importieren.",
+       "apihelp-import-param-namespace": "Importiere in diesen Namensraum. Überschreibt den Parameter <kbd>$1rootpage</kbd>.",
+       "apihelp-import-param-rootpage": "Als Unterseite dieser Seite importieren. Wird ignoriert, falls der Parameter <kbd>$1namespace</kbd> angegeben ist.",
        "apihelp-import-example-import": "Importiere [[meta:Help:Parserfunctions]] mit der kompletten Versionsgeschichte in den Namensraum 100.",
        "apihelp-login-description": "Anmelden und Authentifizierungs-Cookies beziehen.\n\nFalls das Anmelden erfolgreich war, werden die benötigten Cookies im Header der HTTP-Antwort des Servers übermittelt. Bei fehlgeschlagenen Anmeldeversuchen können weitere Versuche gedrosselt werden, um automatische Passwortermittlungsattacken zu verhinden.",
        "apihelp-login-param-name": "Benutzername.",
index b90664e..5b3c076 100644 (file)
 
        "apihelp-query+pageprops-description": "Get various properties defined in the page content.",
        "apihelp-query+pageprops-param-prop": "Only list these props. Useful for checking whether a certain page uses a certain page prop.",
-       "apihelp-query+pageprops-example-simple": "Get properties for <kbd>Category:Foo</kbd>.",
+       "apihelp-query+pageprops-example-simple": "Get properties for the pages <kbd>Main Page</kbd> and <kbd>MediaWiki</kbd>.",
 
        "apihelp-query+pageswithprop-description": "List all pages using a given page property.",
        "apihelp-query+pageswithprop-param-propname": "Page prop for which to enumerate pages.",
index 16c23c8..a872f13 100644 (file)
        "apihelp-import-param-interwikipage": "Para importacións interwiki: páxina a importar.",
        "apihelp-import-param-fullhistory": "Para importacións interwiki: importar o historial completo, non só a versión actual.",
        "apihelp-import-param-templates": "Para importacións interwiki: importar tódolos modelos incluídos.",
-       "apihelp-import-param-namespace": "Para importacións interwiki: importar a este espazo de nomes.",
-       "apihelp-import-param-rootpage": "Importar como subpáxina desta páxina.",
+       "apihelp-import-param-namespace": "Importar a este espazo de nomes. Ignora o parámetro <kbd>$1rootpage</kbd>.",
+       "apihelp-import-param-rootpage": "Importar como subpáxina desta páxina. Ignorado se se proporciona o parámetro <kbd>$1namespace</kbd>.",
        "apihelp-import-example-import": "Importar [[meta:Help:Parserfunctions]] ó espazo de nomes 100 con todo o historial.",
        "apihelp-login-description": "No caso dunha conexión correcta, as cookies necesarias incluiranse nas cabeceiras HTTP de resposta. No caso dunha conexión fallida, os intentos posteriores poden ser reducidos para limitar ataques automaticos de roubo de contrasinais.",
        "apihelp-login-param-name": "Nome de usuario.",
        "apihelp-query+allfileusages-param-to": "Título do ficheiro no que rematar de enumerar.",
        "apihelp-query+allfileusages-param-prefix": "Buscar tódolos títulos de ficheiro que comezan con este valor.",
        "apihelp-query+allfileusages-param-unique": "Mostrar só nomes de ficheiro distintos. Non pode usarse con $1prop=ids.\nCando se usa como xenerador, produce páxinas obxectivo no canto de páxinas fonte.",
-       "apihelp-query+allfileusages-param-prop": "Que partes de información incluír:\n;ids:Engade o ID de páxina usada (non pode usarse con $1unique).\n;title:Engade o nome do ficheiro.",
+       "apihelp-query+allfileusages-param-prop": "Que partes de información incluír:\n;ids:Engade os IDs das páxinas usadas (non pode usarse con $1unique).\n;title:Engade o nome do ficheiro.",
        "apihelp-query+allfileusages-param-limit": "Número total de obxectos a devolver.",
        "apihelp-query+allfileusages-param-dir": "Dirección na cal listar.",
        "apihelp-query+allfileusages-example-B": "Lista títulos de ficheiro, incluíndo os   eliminados, cos IDs de páxina dos que proveñen, comezando en <kbd>B</kbd>.",
        "apihelp-query+blocks-param-users": "Lista de usuarios a buscar (opcional).",
        "apihelp-query+blocks-param-ip": "Obter todos os bloques aplicables a esta IPs ou a este rango CIDR, incluíndo bloques de rangos.\nNon pode usarse xunto con <var>$3users</var>. Os rangos CIDR maiores que IPv4/$1 ou IPv6/$2 non se aceptan.",
        "apihelp-query+blocks-param-limit": "Número máximo de bloques a listar.",
+       "apihelp-query+blocks-param-prop": "Que propiedades obter:\n;id:Engade o identificador do bloqueo.\n;user:Engade o nome de usario do usuario bloqueado.\n;userid:Engade o identificador de usuario do usuario bloqueado.\n;by:Engade o nome de usuario do usuario que fixo o bloqueo.\n;byid:Engade o identificador do usuario que fixo o bloqueo.\n;timestamp:Engade o selo de tempo de cando se realizou o bloqueo.\n;expiry:Engade o selo de tempo de cando remata o bloqueo.\n;reason:Engade a razón dada para o bloqueo.\n;range:Engade o rango de direccións IP afectadas polo bloqueo.\n;flags:Etiqueta o bloqueo con (autoblock, anononly, etc.).",
        "apihelp-query+blocks-param-show": "Só mostrar elementos correspondentes a eses criterios.\nPor exemplo, para ver só bloques indefinidos en direccións IP, ponga <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "Listar bloques.",
        "apihelp-query+blocks-example-users": "Lista de bloques de usuarios <kbd>Alice</kbd> e <kbd>Bob</kbd>.",
index 8d2d616..a9bcf30 100644 (file)
@@ -30,6 +30,7 @@
        "apihelp-block-param-watchuser": "その利用者またはIPアドレスの利用者ページとトークページをウォッチします。",
        "apihelp-block-example-ip-simple": "IPアドレス <kbd>192.0.2.5</kbd> を <kbd>First strike<kbd> という理由で3日ブロックする",
        "apihelp-block-example-user-complex": "利用者 <kbd>Vandal</kbd> を <kbd>Vandalism</kbd> という理由で無期限ブロックし、新たなアカウント作成とメールの送信を禁止する。",
+       "apihelp-checktoken-description": "<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> のトークンの妥当性を確認します。",
        "apihelp-checktoken-param-type": "調べるトークンの種類。",
        "apihelp-checktoken-param-token": "調べるトークン。",
        "apihelp-checktoken-example-simple": "<kbd>csrf</kbd> トークンの妥当性を調べる。",
        "apihelp-edit-param-section": "節番号です。先頭の節の場合は <kbd>0</kbd>、新しい節の場合は <kbd>new</kbd>を指定します。",
        "apihelp-edit-param-sectiontitle": "新しい節の名前です。",
        "apihelp-edit-param-text": "ページの本文。",
+       "apihelp-edit-param-tags": "この版に適用する変更タグ。",
        "apihelp-edit-param-minor": "細部の編集",
        "apihelp-edit-param-notminor": "細部の編集ではない。",
+       "apihelp-edit-param-basetimestamp": "編集前の版のタイムスタンプ。編集競合を検出するために使用されます。\n[[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]] で取得できます。",
+       "apihelp-edit-param-starttimestamp": "編集作業を開始したときのタイムスタンプ。編集競合を検出するために使用されます。適切な値は <var>[[Special:ApiHelp/main|curtimestamp]]</var> を使用して編集作業を開始するとき (たとえば、編集するページの本文を読み込んだとき) に取得できます。",
        "apihelp-edit-param-createonly": "すでにそのページが存在する場合は編集を行いません。",
        "apihelp-edit-param-nocreate": "そのページが存在しない場合にエラーを返します。",
        "apihelp-edit-param-watch": "そのページを現在の利用者のウォッチリストに追加します。",
@@ -74,6 +78,7 @@
        "apihelp-edit-example-undo": "版 13579 から 13585 まで要約を自動入力して取り消す。",
        "apihelp-emailuser-description": "利用者に電子メールを送信します。",
        "apihelp-emailuser-param-target": "送信先の利用者名。",
+       "apihelp-emailuser-param-subject": "題名。",
        "apihelp-emailuser-param-text": "電子メールの本文。",
        "apihelp-emailuser-param-ccme": "電子メールの複製を自分にも送信します。",
        "apihelp-emailuser-example-email": "利用者 <kbd>WikiSysop</kbd> に <kbd>Content</kbd> という本文の電子メールを送信。",
        "apihelp-expandtemplates-example-simple": "ウィキテキスト <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd> を展開する。",
        "apihelp-feedcontributions-description": "利用者の投稿記録フィードを返します。",
        "apihelp-feedcontributions-param-feedformat": "フィードの形式。",
+       "apihelp-feedcontributions-param-user": "投稿記録を取得する利用者。",
        "apihelp-feedcontributions-param-namespace": "この名前空間への投稿記録に絞り込む。",
+       "apihelp-feedcontributions-param-year": "この年以前。",
+       "apihelp-feedcontributions-param-month": "この月以前。",
        "apihelp-feedcontributions-param-tagfilter": "このタグが付与された投稿記録に絞り込む。",
        "apihelp-feedcontributions-param-deletedonly": "削除された投稿記録のみ表示します。",
        "apihelp-feedcontributions-param-toponly": "最新版の編集のみ表示します。",
        "apihelp-help-example-recursive": "すべてのヘルプを1つのページに",
        "apihelp-help-example-help": "ヘルプ モジュール自身のヘルプ",
        "apihelp-help-example-query": "2つの下位モジュールのヘルプ",
+       "apihelp-imagerotate-description": "1つ以上の画像を回転させます。",
        "apihelp-imagerotate-example-simple": "<kbd>File:Example.png</kbd> を <kbd>90</kbd> 度回転させる。",
        "apihelp-imagerotate-example-generator": "<kbd>Category:Flip</kbd> 内のすべての画像を <kbd>180</kbd> 度回転させる。",
        "apihelp-import-param-summary": "ページ取り込みの要約。",
        "apihelp-import-param-xml": "XMLファイルをアップロード",
+       "apihelp-import-param-interwikisource": "ウィキ間の取り込みの場合: 取り込み元のウィキ。",
+       "apihelp-import-param-interwikipage": "ウィキ間の取り込みの場合: 取り込むページ。",
+       "apihelp-import-param-fullhistory": "ウィキ間の取り込みの場合: 現在の版のみではなく完全な履歴を取り込む。",
+       "apihelp-import-param-templates": "ウィキ間の取り込みの場合: 読み込まれているテンプレートも取り込む。",
+       "apihelp-import-param-namespace": "この名前空間に取り込む。<kbd>$1rootpage</kbd>パラメータをオーバーライドします。",
        "apihelp-import-param-rootpage": "このページの下位ページとしてインポートする。",
-       "apihelp-import-example-import": "[[meta:Help:Parserfunctions]] をすべての履歴とともに名前空間100 にインポートする。",
+       "apihelp-import-example-import": "[[meta:Help:Parserfunctions]] をすべての履歴とともに名前空間100に取り込む。",
        "apihelp-login-param-name": "利用者名。",
        "apihelp-login-param-password": "パスワード。",
        "apihelp-login-param-token": "最初のリクエストで取得したログイントークンです。",
        "apihelp-options-example-complex": "すべての個人設定を初期化し、<kbd>skin</kbd> および <kbd> nickname </kbd> を設定する。",
        "apihelp-paraminfo-description": "API モジュールに関する情報を取得します。",
        "apihelp-paraminfo-param-modules": "モジュールの名前のリスト (<var>action</var> および <var>format</var> パラメーターの値, または <kbd>main</kbd>). <kbd>+</kbd> を使用して下位モジュールを指定できます。",
+       "apihelp-paraminfo-example-1": "<kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>, and <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> に関する情報を表示する。",
        "apihelp-patrol-description": "ページまたは版を巡回済みにします。",
        "apihelp-patrol-param-revid": "巡回済みにする版ID。",
        "apihelp-patrol-example-rcid": "最近の更新を巡回",
+       "apihelp-patrol-example-revid": "版を巡回済みにする。",
        "apihelp-protect-description": "ページの保護レベルを変更します。",
        "apihelp-protect-param-title": "保護(解除)するページ名です。$1pageid とは同時に使用できません。",
        "apihelp-protect-param-pageid": "保護(解除)するページIDです。$1title とは同時に使用できません。",
        "apihelp-query+allcategories-param-from": "列挙を開始するカテゴリ。",
        "apihelp-query+allcategories-param-to": "列挙を終了するカテゴリ。",
        "apihelp-query+allcategories-param-prefix": "この値で始まるタイトルのカテゴリを検索します。",
+       "apihelp-query+allcategories-param-limit": "返すカテゴリの数。",
+       "apihelp-query+allcategories-example-generator": "<kbd>List</kbd> で始まるカテゴリページに関する情報を取得する。",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "<var>$3user</var> と同時に使用できません。",
+       "apihelp-query+alldeletedrevisions-param-start": "列挙の始点となるタイムスタンプ。",
+       "apihelp-query+alldeletedrevisions-param-end": "列挙の終点となるタイムスタンプ。",
+       "apihelp-query+alldeletedrevisions-param-from": "列挙の始点となるページ名。",
+       "apihelp-query+alldeletedrevisions-param-to": "列挙の終点となるページ名。",
+       "apihelp-query+alldeletedrevisions-param-prefix": "この値で始まるすべてのページ名を検索する。",
+       "apihelp-query+alldeletedrevisions-param-tag": "このタグが付与された版のみを一覧表示する。",
        "apihelp-query+alldeletedrevisions-param-user": "この利用者による版のみを一覧表示する。",
        "apihelp-query+alldeletedrevisions-param-excludeuser": "この利用者による版を一覧表示しない。",
        "apihelp-query+alldeletedrevisions-param-namespace": "この名前空間に含まれるページのみを一覧表示します。",
+       "apihelp-query+alldeletedrevisions-param-generatetitles": "ジェネレーターとして使用する場合、版IDではなくタイトルを生成します。",
+       "apihelp-query+alldeletedrevisions-example-user": "利用者 <kbd>Example</kbd> による削除された直近の50版を一覧表示する。",
        "apihelp-query+alldeletedrevisions-example-ns-main": "標準名前空間にある削除された最初の50版を一覧表示する。",
+       "apihelp-query+allfileusages-param-from": "列挙を開始するファイルのタイトル。",
+       "apihelp-query+allfileusages-param-to": "列挙を終了するファイルのタイトル。",
+       "apihelp-query+allfileusages-param-prefix": "この値で始まるすべてのファイルのタイトルを検索する。",
+       "apihelp-query+allimages-param-from": "列挙の始点となる画像タイトル。$1sort=name を指定した場合のみ使用できます。",
+       "apihelp-query+allimages-param-to": "列挙の終点となる画像タイトル。$1sort=name を指定した場合のみ使用できます。",
+       "apihelp-query+allimages-param-start": "列挙の始点となるタイムスタンプ。$1sort=timestamp を指定した場合のみ使用できます。",
+       "apihelp-query+allimages-param-end": "列挙の終点となるタイムスタンプ。$1sort=timestamp を指定した場合のみ使用できます。",
+       "apihelp-query+allimages-param-prefix": "この値で始まるすべての画像タイトルを検索する。$1sort=name を指定した場合のみ使用できます。",
+       "apihelp-query+allimages-param-user": "この利用者によりアップロードされたファイルのみを返す。$1sort=timestamp を指定した場合のみ使用できます。 $1filterbots とは同時に使用できません。",
+       "apihelp-query+allimages-param-mime": "検索対象のMIMEタイプ、たとえば <kbd>image/jpeg</kbd>。",
        "apihelp-query+allimages-param-limit": "返す画像の総数。",
+       "apihelp-query+allimages-example-B": "<kbd>B</kbd> で始まるファイルの一覧を表示する。",
+       "apihelp-query+allimages-example-recent": "[[Special:NewFiles]] のように、最近アップロードされたファイルの一覧を表示する。",
        "apihelp-query+allimages-example-mimetypes": "MIMEタイプが <kbd>image/png</kbd> または <kbd>image/gif</kbd> であるファイルの一覧を表示する",
+       "apihelp-query+allimages-example-generator": "<kbd>T</kbd> で始まる4つのファイルに関する情報を表示する。",
        "apihelp-query+alllinks-description": "与えられた名前空間へのすべてのリンクを一覧表示します。",
        "apihelp-query+alllinks-param-from": "列挙を開始するリンクのタイトル。",
        "apihelp-query+alllinks-param-to": "列挙を終了するリンクのタイトル。",
+       "apihelp-query+alllinks-param-prefix": "この値で始まるすべてのリンクされたページを検索する。",
+       "apihelp-query+alllinks-example-B": "<kbd>B</kbd> で始まるリンクされたページ (存在しないページも含む)を、リンク元のページIDとともに表示する。",
        "apihelp-query+allmessages-param-args": "メッセージ中に展開される引数。",
        "apihelp-query+allmessages-param-filter": "この文字列を含んだ名前のメッセージのみを返す。",
        "apihelp-query+allmessages-param-customised": "変更された状態のメッセージのみを返す。",
        "apihelp-query+allpages-param-from": "列挙を開始するページ名。",
        "apihelp-query+allpages-param-to": "列挙を終了するページ名。",
        "apihelp-query+allpages-param-prefix": "この値で始まるすべてのページ名を検索します。",
+       "apihelp-query+allpages-param-prtype": "保護されているページに絞り込む。",
+       "apihelp-query+allpages-param-limit": "返すページの総数。",
        "apihelp-query+allpages-example-B": "<kbd>B</kbd> で始まるページの一覧を表示する。",
        "apihelp-query+allpages-example-generator": "<kbd>T</kbd> で始まる4つのページに関する情報を表示する。",
        "apihelp-query+allpages-example-generator-revisions": "<kbd>Re</kbd> で始まる最初の非リダイレクトの2ページの内容を表示する。",
        "apihelp-query+allredirects-param-from": "列挙を開始するリダイレクトのタイトル。",
        "apihelp-query+allredirects-param-to": "列挙を終了するリダイレクトのタイトル。",
+       "apihelp-query+alltransclusions-param-prefix": "この値で始まるすべてのトランスクルードされているページを検索する。",
+       "apihelp-query+allusers-description": "すべての登録利用者を一覧表示します。",
+       "apihelp-query+allusers-param-from": "列挙を開始する利用者名。",
+       "apihelp-query+allusers-param-to": "列挙を終了する利用者名。",
+       "apihelp-query+allusers-param-prefix": "この値で始まるすべての利用者を検索する。",
+       "apihelp-query+allusers-param-group": "このグループに所属する利用者のみを結果に含める。",
+       "apihelp-query+allusers-param-excludegroup": "このグループに所属する利用者を結果から除外する。",
+       "apihelp-query+allusers-param-limit": "返す利用者名の総数。",
+       "apihelp-query+allusers-param-witheditsonly": "編集履歴のある利用者のみ一覧表示する。",
        "apihelp-query+allusers-param-activeusers": "最近 $1 {{PLURAL:$1|日間}}のアクティブな利用者のみを一覧表示する。",
        "apihelp-query+allusers-example-Y": "<kbd>Y</kbd> で始まる利用者を一覧表示する。",
+       "apihelp-query+backlinks-description": "与えられたページにリンクしているすべてのページを検索します。",
+       "apihelp-query+backlinks-param-title": "検索するページ名。<var>$1pageid</var> とは同時に使用できません。",
+       "apihelp-query+backlinks-param-pageid": "検索するページID。<var>$1title</var>とは同時に使用できません。",
        "apihelp-query+backlinks-example-simple": "<kbd>Main page<kbd> へのリンクを表示する。",
        "apihelp-query+backlinks-example-generator": "<kbd>Main page<kbd> にリンクしているページの情報を取得する。",
        "apihelp-query+blocks-description": "ブロックされた利用者とIPアドレスを一覧表示します。",
+       "apihelp-query+blocks-param-start": "列挙の始点となるタイムスタンプ。",
+       "apihelp-query+blocks-param-end": "列挙の終点となるタイムスタンプ。",
        "apihelp-query+blocks-param-ids": "一覧表示するブロックIDのリスト (任意)。",
+       "apihelp-query+blocks-param-users": "検索対象の利用者のリスト (任意)。",
        "apihelp-query+blocks-param-limit": "一覧表示するブロックの最大数。",
        "apihelp-query+blocks-example-simple": "ブロックを一覧表示する。",
        "apihelp-query+blocks-example-users": "利用者<kbd>Alice</kbd> および <kbd>Bob</kbd> のブロックを一覧表示する。",
+       "apihelp-query+categories-param-limit": "返すカテゴリの数。",
        "apihelp-query+categories-example-simple": "ページ <kbd>Albert Einstein</kbd> が属しているカテゴリの一覧を取得する。",
        "apihelp-query+categories-example-generator": "ページ <kbd>Albert Einstein</kbd> で使われているすべてのカテゴリに関する情報を取得する。",
        "apihelp-query+categoryinfo-description": "与えられたカテゴリに関する情報を返します。",
        "apihelp-query+categoryinfo-example-simple": "<kbd>Category:Foo</kbd> および <kbd>Category:Bar</kbd> に関する情報を取得する。",
+       "apihelp-query+categorymembers-description": "与えられたカテゴリ内のすべてのページを一覧表示します。",
        "apihelp-query+categorymembers-param-title": "一覧表示するカテゴリ (必須)。<kbd>{{ns:category}}:</kbd> 接頭辞を含まなければなりません。<var>$1pageid</var> とは同時に使用できません。",
        "apihelp-query+categorymembers-param-pageid": "一覧表示するカテゴリのページID. <var>$1title</var> とは同時に使用できません。",
        "apihelp-query+categorymembers-param-limit": "返すページの最大数。",
+       "apihelp-query+categorymembers-param-start": "列挙の始点となるタイムスタンプ。<kbd>$1sort=timestamp</kbd>を指定した場合のみ使用できます。",
+       "apihelp-query+categorymembers-param-end": "列挙の終点となるタイムスタンプ。<kbd>$1sort=timestamp</kbd>を指定した場合のみ使用できます。",
+       "apihelp-query+categorymembers-param-startsortkeyprefix": "列挙の始点となるソートキーの接頭辞。<kbd>$1sort=sortkey</kbd>を指定した場合のみ使用できます。<var>$1starthexsortkey</var>をオーバーライドします。",
        "apihelp-query+categorymembers-param-startsortkey": "代わりに $1starthexsortkey を使用してください。",
        "apihelp-query+categorymembers-param-endsortkey": "代わりに $1endhexsortkey を使用してください。",
        "apihelp-query+categorymembers-example-simple": "<kbd>Category:Physics</kbd> に含まれる最初の10ページを取得する。",
        "apihelp-query+categorymembers-example-generator": "<kbd>Category:Physics</kbd> に含まれる最初の10ページのページ情報を取得する。",
+       "apihelp-query+contributors-description": "ページへのログインした投稿者の一覧と匿名投稿者の数を取得します。",
+       "apihelp-query+contributors-param-limit": "返す投稿者の数。",
        "apihelp-query+contributors-example-simple": "<kbd>Main Page</kbd> への投稿者を表示する。",
        "apihelp-query+deletedrevisions-param-tag": "このタグが付与された版のみ表示します。",
        "apihelp-query+deletedrevisions-param-user": "この利用者による版のみを一覧表示。",
        "apihelp-query+deletedrevisions-param-limit": "一覧表示する版の最大数。",
        "apihelp-query+deletedrevisions-example-titles": "ページ <kbd>Main Page</kbd> および <kbd>Talk:Main Page</kbd> の削除された版とその内容を一覧表示する。",
        "apihelp-query+deletedrevisions-example-revids": "削除された版 <kbd>123456</kbd> に関する情報を一覧表示する。",
+       "apihelp-query+disabled-description": "このクエリ モジュールは無効化されています。",
        "apihelp-query+embeddedin-param-title": "検索するページ名。$1pageid とは同時に使用できません。",
        "apihelp-query+embeddedin-param-pageid": "検索するページID. $1titleとは同時に使用できません。",
        "apihelp-query+embeddedin-example-generator": "<kbd>Template:Stub</kbd> をトランスクルードしているページに関する情報を取得する。",
        "apihelp-query+extlinks-param-protocol": "URLのプロトコル。このパラメータが空であり、かつ<var>$1query</var> が設定されている場合, protocol は <kbd>http</kbd> となります。すべての外部リンクを一覧表示するためにはこのパラメータと <var>$1query</var> の両方を空にしてください。",
        "apihelp-query+extlinks-example-simple": "<kbd>Main Page<kbd> の外部リンクの一覧を取得する。",
        "apihelp-query+exturlusage-description": "与えられたURLを含むページを一覧表示します。",
+       "apihelp-query+exturlusage-example-simple": "<kbd>http://www.mediawiki.org</kbd> にリンクしているページを一覧表示する。",
        "apihelp-query+filearchive-example-simple": "削除されたファイルの一覧を表示する。",
        "apihelp-query+fileusage-example-simple": "[[:File:Example.jpg]] を使用しているページの一覧を取得する。",
        "apihelp-query+fileusage-example-generator": "[[:File:Example.jpg]] を使用しているページの情報を取得する。",
+       "apihelp-query+imageinfo-param-start": "一覧表示の始点となるタイムスタンプ。",
+       "apihelp-query+imageinfo-param-end": "一覧表示の終点となるタイムスタンプ。",
        "apihelp-query+images-description": "与えられたページに含まれるすべてのファイルを返します。",
        "apihelp-query+images-param-limit": "返す画像の数。",
        "apihelp-query+images-example-simple": "[[Main Page]] で使用されているファイルの一覧を取得する。",
        "apihelp-query+info-example-simple": "<kbd>Main Page</kbd> に関する情報を取得する。",
        "apihelp-query+iwbacklinks-example-simple": "[[wikibooks:Test]] へリンクしているページを取得する。",
        "apihelp-query+iwbacklinks-example-generator": "[[wikibooks:Test]] へリンクしているページの情報を取得する。",
+       "apihelp-query+iwlinks-param-limit": "返すウィキ間リンクの数。",
+       "apihelp-query+iwlinks-param-prefix": "この接頭辞のウィキ間リンクのみを返す。",
+       "apihelp-query+iwlinks-param-title": "検索するウィキ間リンク。<var>$1</var> と同時に使用しなければなりません。",
+       "apihelp-query+iwlinks-example-simple": "<kbd>Main Page</kbd> にあるウィキ間リンクを取得する。",
+       "apihelp-query+langbacklinks-param-lang": "言語間リンクの言語。",
+       "apihelp-query+langbacklinks-param-title": "検索する言語間リンク。$1lang と同時に使用しなければなりません。",
+       "apihelp-query+langbacklinks-param-limit": "返すページの総数。",
        "apihelp-query+langbacklinks-example-simple": "[[:fr:Test]] へリンクしているページを取得する。",
        "apihelp-query+langbacklinks-example-generator": "[[:fr:Test]] へリンクしているページの情報を取得する。",
+       "apihelp-query+langlinks-param-limit": "返す言語間リンクの数。",
+       "apihelp-query+langlinks-param-url": "完全なURLを取得するかどうか (<var>$1prop</var>とは同時に使用できません).",
+       "apihelp-query+langlinks-param-lang": "この言語コードの言語間リンクのみを返す。",
+       "apihelp-query+langlinks-param-title": "検索するリンク。<var>$1lang</var>と同時に使用しなければなりません。",
+       "apihelp-query+langlinks-example-simple": "<kbd>Main Page</kbd> にある言語間リンクを取得する。",
+       "apihelp-query+links-description": "ページからのすべてのリンクを返します。",
        "apihelp-query+links-param-namespace": "この名前空間へのリンクのみ表示する。",
        "apihelp-query+links-param-limit": "返すリンクの数。",
        "apihelp-query+links-example-simple": "<kbd>Main Page</kbd> からのリンクを取得する。",
        "apihelp-query+links-example-generator": "<kbd>Main Page</kbd> からリンクされているページに関する情報を取得する。",
        "apihelp-query+links-example-namespaces": "<kbd>Main Page</kbd> からの {{ns:user}} および {{ns:template}} 名前空間へのリンクを取得する。",
+       "apihelp-query+linkshere-example-simple": "[[Main Page]] にリンクしているページの一覧を取得する。",
+       "apihelp-query+linkshere-example-generator": "<kbd>[[Main page]]<kbd> にリンクしているページの情報を取得する。",
+       "apihelp-query+logevents-param-start": "列挙の始点となるタイムスタンプ。",
+       "apihelp-query+logevents-param-end": "列挙の終点となるタイムスタンプ。",
        "apihelp-query+logevents-param-user": "与えられた利用者による記録項目に絞り込む。",
        "apihelp-query+logevents-param-title": "そのページに関連する記録項目に絞り込む。",
        "apihelp-query+logevents-param-namespace": "与えられた名前空間内の記録項目に絞り込む。",
        "apihelp-query+pagepropnames-description": "Wiki内で使用されているすべてのページプロパティ名を一覧表示します。",
        "apihelp-query+pagepropnames-param-limit": "返す名前の最大数。",
        "apihelp-query+pagepropnames-example-simple": "最初の10個のプロパティ名を取得する。",
+       "apihelp-query+pageprops-example-simple": "<kbd>Category:Foo</kbd> のプロパティを取得する。",
        "apihelp-query+pageswithprop-description": "与えられたページプロパティが使用されているすべてのページを一覧表示します。",
        "apihelp-query+pageswithprop-param-limit": "返すページの最大数。",
+       "apihelp-query+pageswithprop-example-simple": "<code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code> を使用している最初の10ページを一覧表示する。",
+       "apihelp-query+pageswithprop-example-generator": "Get page info about first 10 pages using <code>_&#95;NOTOC_&#95;</code> を使用している最初の10ページのページ情報を取得する。",
        "apihelp-query+prefixsearch-description": "ページ名の先頭一致検索を行います。",
        "apihelp-query+prefixsearch-param-search": "検索文字列。",
        "apihelp-query+prefixsearch-param-namespace": "検索する名前空間。",
        "apihelp-query+protectedtitles-param-namespace": "この名前空間に含まれるページのみを一覧表示します。",
        "apihelp-query+protectedtitles-param-level": "この保護レベルのページのみを一覧表示します。",
        "apihelp-query+protectedtitles-param-limit": "返すページの総数。",
+       "apihelp-query+protectedtitles-param-start": "一覧表示の始点となる保護タイムスタンプ。",
+       "apihelp-query+protectedtitles-param-end": "一覧表示の終点となる保護タイムスタンプ。",
        "apihelp-query+protectedtitles-example-simple": "保護されているページを一覧表示する。",
        "apihelp-query+protectedtitles-example-generator": "標準名前空間にある保護されたページへのリンクを検索する。",
        "apihelp-query+querypage-param-page": "特別ページの名前です。これは大文字小文字を区別することに注意。",
        "apihelp-query+querypage-example-ancientpages": "[[Special:Ancientpages]] の結果を返す。",
        "apihelp-query+random-param-namespace": "この名前空間にあるページのみを返します。",
        "apihelp-query+random-example-simple": "標準名前空間から2つのページを無作為に返す。",
+       "apihelp-query+random-example-generator": "標準名前空間から無作為に選ばれた2つのページのページ情報を返す。",
        "apihelp-query+recentchanges-description": "最近の更新を一覧表示します。",
-       "apihelp-query+recentchanges-param-start": "一覧表示を開始するタイムスタンプ。",
-       "apihelp-query+recentchanges-param-end": "一覧表示を終了するタイムスタンプ。",
+       "apihelp-query+recentchanges-param-start": "列挙の始点となるタイムスタンプ。",
+       "apihelp-query+recentchanges-param-end": "列挙の終点となるタイムスタンプ。",
        "apihelp-query+recentchanges-param-namespace": "この名前空間の変更のみに絞り込む。",
        "apihelp-query+recentchanges-param-user": "この利用者による変更のみを一覧表示する。",
        "apihelp-query+recentchanges-param-excludeuser": "この利用者による変更を一覧表示しない。",
        "apihelp-query+recentchanges-param-tag": "このタグが付与された版のみ一覧表示する。",
        "apihelp-query+recentchanges-param-limit": "返す変更の総数。",
+       "apihelp-query+recentchanges-param-toponly": "最新の版である変更のみを一覧表示する。",
        "apihelp-query+recentchanges-example-simple": "最近の更新を一覧表示する。",
+       "apihelp-query+redirects-description": "ページへのすべての転送を返します。",
+       "apihelp-query+redirects-param-limit": "返す転送の数。",
        "apihelp-query+redirects-example-simple": "[[Main Page]] への転送の一覧を取得する。",
        "apihelp-query+redirects-example-generator": "[[Main Page]] へのすべての転送ページに関する情報を取得する。",
+       "apihelp-query+revisions-param-user": "この利用者による版のみを結果に含める。",
+       "apihelp-query+revisions-param-excludeuser": "この利用者による版を結果に含めない。",
+       "apihelp-query+revisions-param-tag": "このタグが付与された版のみを一覧表示する。",
+       "apihelp-query+revisions-example-content": "ページ<kbd>API</kbd> および <kbd>Main Page</kbd> の最新の版のデータと本文を取得する。",
+       "apihelp-query+revisions-example-last5": "<kbd>Main Page</kbd> の直近の5版を取得する。",
+       "apihelp-query+revisions-example-first5": "<kbd>Main Page</kbd> の最初の5版を取得する。",
+       "apihelp-query+revisions-example-first5-after": "<kbd>Main Page</kbd> の 2006-05-01 以降の最初の5版を取得する。",
+       "apihelp-query+revisions-example-first5-not-localhost": "<kbd>Main Page</kbd> の匿名利用者 <kbd>127.0.0.1</kbd> 以外による最初の5版を取得する。",
+       "apihelp-query+revisions-example-first5-user": "<kbd>Main Page</kbd> の <kbd>MediaWiki default</kbd> による最初の5版を取得する。",
+       "apihelp-query+search-description": "全文検索を行います。",
+       "apihelp-query+search-param-search": "この値を含むすべてのページ名 (または本文) を検索します。",
+       "apihelp-query+search-param-namespace": "この名前空間内のみを検索します。",
+       "apihelp-query+search-param-what": "実行する検索の種類です。",
+       "apihelp-query+search-param-limit": "返すページの総数です。",
+       "apihelp-query+search-example-simple": "<kbd>meaning</kbd> を検索する。",
+       "apihelp-query+search-example-generator": "<kbd>meaning</kbd> の検索で返されたページのページ情報を取得する。",
        "apihelp-query+tags-description": "変更タグを一覧表示します。",
        "apihelp-query+tags-param-limit": "一覧表示するタグの最大数。",
        "apihelp-query+tags-example-simple": "利用可能なタグを一覧表示する。",
        "apihelp-query+templates-example-simple": "<kbd>Main Page</kbd> で使用されているテンプレートを取得する。",
        "apihelp-query+templates-example-generator": "<kbd>Main Page</kbd> で使用されているテンプレートに関する情報を取得する。",
        "apihelp-query+templates-example-namespaces": "<kbd>Main Page</kbd> でトランスクルードされている {{ns:user}} および {{ns:template}} 名前空間のページを取得する。",
+       "apihelp-query+tokens-description": "データ変更操作用のトークンを取得します。",
        "apihelp-query+tokens-param-type": "リクエストするトークンの種類。",
        "apihelp-query+tokens-example-simple": "csrfトークンを取得する (既定)。",
        "apihelp-query+tokens-example-types": "ウォッチトークンおよび巡回トークンを取得する。",
        "apihelp-query+transcludedin-description": "与えられたページをトランスクルードしているすべてのページを検索します。",
+       "apihelp-query+transcludedin-example-simple": "<kbd>Main Page</kbd> をトランスクルードしているページの一覧を取得する。",
+       "apihelp-query+transcludedin-example-generator": "<kbd>Main Page</kbd> をトランスクルードしているページに関する情報を取得する。",
        "apihelp-query+usercontribs-description": "利用者によるすべての編集を取得します。",
        "apihelp-query+usercontribs-param-limit": "返す投稿記録の最大数。",
        "apihelp-query+usercontribs-param-user": "投稿記録を取得する利用者。",
        "apihelp-query+usercontribs-param-tag": "このタグが付与された版のみを一覧表示する。",
        "apihelp-query+usercontribs-param-toponly": "最新の版である変更のみを一覧表示する。",
        "apihelp-query+usercontribs-example-user": "利用者 <kbd>Example</kbd> の投稿記録を表示する。",
+       "apihelp-query+users-param-token": "代わりに <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> を使用してください。",
        "apihelp-query+users-example-simple": "利用者 <kbd>Example</kbd> の情報を返す。",
        "apihelp-query+watchlist-description": "現在の利用者のウォッチリストにあるページへの最近の更新を取得します。",
+       "apihelp-query+watchlist-param-start": "列挙の始点となるタイムスタンプ。",
+       "apihelp-query+watchlist-param-end": "列挙の終点となるタイムスタンプ。",
        "apihelp-query+watchlist-param-namespace": "この名前空間の変更のみに絞り込む。",
        "apihelp-query+watchlist-param-user": "この利用者による変更のみを一覧表示する。",
        "apihelp-query+watchlist-param-excludeuser": "この利用者による変更を一覧表示しない。",
        "apihelp-rollback-param-title": "巻き戻すページ名です。<var>$1pageid</var> とは同時に使用できません。",
        "apihelp-rollback-param-pageid": "巻き戻すページのページIDです。<var>$1title</var> とは同時に使用できません。",
        "apihelp-rollback-example-simple": "利用者 <kbd>Example</kbd> による <kbd>Main Page</kbd> への最後の一連の編集を巻き戻す。",
+       "apihelp-tag-param-reason": "変更の理由。",
        "apihelp-tag-example-log": "<kbd>Wrongly applied</kbd> という理由で <kbd>spam</kbd> タグを 記録項目ID 123 から取り除く",
        "apihelp-tokens-param-type": "リクエストするトークンの種類。",
        "apihelp-tokens-example-edit": "編集トークンを取得する (既定)。",
        "apihelp-unblock-param-user": "ブロックを解除する利用者名、IPアドレスまたはIPレンジ。<var>$1id</var>とは同時に使用できません。",
        "apihelp-unblock-param-reason": "ブロック解除の理由。",
        "apihelp-unblock-example-id": "ブロックID #<kbd>105</kbd> を解除する。",
+       "apihelp-unblock-example-user": "<kbd>Sorry Bob</kbd> という理由で利用者 <kbd>Bob</kbd> のブロックを解除する。",
        "apihelp-undelete-description": "削除されたページの版を復元します。\n\n削除された版の一覧 (タイムスタンプを含む) は[[Special:ApiHelp/query+deletedrevs|list=deletedrevs]]に、また削除されたファイルのID一覧は[[Special:ApiHelp/query+filearchive|list=filearchive]]で見つけることができます。",
        "apihelp-undelete-param-title": "復元するページ名。",
        "apihelp-undelete-param-reason": "復元の理由。",
        "apihelp-undelete-param-timestamps": "復元する版のタイムスタンプ。<var>$1timestamps</var> と <var>$1fileids</var> の両方が空の場合、すべての版が復元されます。",
        "apihelp-undelete-example-page": "<kbd>Main Page</kbd> を復元する。",
        "apihelp-undelete-example-revisions": "<kbd>Main Page</kbd> の2つの版を復元する。",
+       "apihelp-upload-param-watch": "このページをウォッチする。",
+       "apihelp-upload-param-ignorewarnings": "あらゆる警告を無視する。",
        "apihelp-userrights-param-user": "利用者名。",
        "apihelp-userrights-param-userid": "利用者ID。",
        "apihelp-userrights-param-add": "利用者をこのグループに追加します。",
+       "apihelp-userrights-param-reason": "変更の理由。",
+       "apihelp-watch-example-watch": "<kbd>Main Page</kbd> をウォッチする。",
+       "apihelp-watch-example-unwatch": "<kbd>Main Page</kbd> のウォッチを解除する。",
        "apihelp-format-example-generic": "クエリの結果を $1 形式に整形します",
        "apihelp-dbg-description": "データを PHP の <code>var_export()</code> 形式で出力します。",
        "apihelp-dbgfm-description": "データを PHP の <code>var_export()</code> 形式 (HTML に埋め込んだ形式) で出力します。",
index 7d24c4a..727ac32 100644 (file)
        "apihelp-block-param-anononly": "Bloß de nahmelohse Metmaaacher spärre, alsu donn et nahmelohse Beärbeide vun dä <i lang=\"en\" xml:lang=\"en\" title=\"Internet Protocol\">IP</i>-Addräß uß verhendere.",
        "apihelp-block-param-nocreate": "Et Neu-Aanmelde verbeede",
        "apihelp-block-param-autoblock": "Dun automattesch de läzde <i lang=\"en\" xml:lang=\"en\">IP</i>-Adräß schpärre, di dä Metmaacher jehatt hät, un och all di <i lang=\"en\" xml:lang=\"en\">IP</i>-Adräße, vun wo dä versöhk, jet ze ändere.",
+       "apihelp-block-param-noemail": "Sorresch derför, dat dä Metmaacher \n<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> övver et Wiki verscheck. Bruch et Rääsch „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">blockemail</code>“.",
+       "apihelp-block-param-hidename": "Donn däm Metmaacher singe Nahme em Logbohch vum Metmaacher Schpärre verschteische. Bruch et Rääsch „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">hideuser</code>“.",
+       "apihelp-block-param-allowusertalk": "Lohß dä Metmaacher sing eije Klaafsigg verändere. Dat hängk aan „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>“.",
        "apihelp-block-param-reblock": "Wann dä Metmaacher als jeschpächd es, donn dat övverschrihve.",
        "apihelp-block-param-watchuser": "Donn de Metmaachersigg un de Klaafsigg dohzoh op mig Oppaßleß säze.",
        "apihelp-block-example-ip-simple": "Donn de <i lang=\"en\" xmL:lang=\"en\" title=\"Internet Protocol\">IP</i>-Addräß <kbd>192.0.2.5</kbd> för drei ääsch schpärre mem Jrond: <kbd>Eestschlaach</kbd>.",
+       "apihelp-checktoken-param-type": "De Zoot Makehrong zom Pröhfe.",
        "apihelp-checktoken-param-token": "De Makehrong zom Pröhve.",
+       "apihelp-checktoken-param-maxtokenage": "Et jrühßte zojelohße Allder fun dä Makehrong en Sekonde.",
+       "apihelp-checktoken-example-simple": "Pröhf de Jöltechkeit vun dä Makehrong „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">csrf</kbd>“.",
+       "apihelp-clearhasmsg-description": "Nemmp de Makehrong „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">hasmsg</code>“ fott vum aktoälle Metmaacher.",
+       "apihelp-clearhasmsg-example-1": "Nemm de Makehrong „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">hasmsg</code>“ fott vum aktoälle Metmaacher.",
        "apihelp-compare-description": "Donn de Ongerscheide zwesche zwai Sigge beschtemme.\n\nDo moß derför jeweils en Väsjohn, en Övverschreff för di Sigg, odder ener Sigg iehr Kännong aanjävve, för de beide Sigge.",
        "apihelp-compare-param-fromtitle": "Der Tettel vun dä eezte Sigg zom verjlihsche.",
        "apihelp-compare-param-fromid": "De Kännong vun dä eezte Sigg zom verjlihsche.",
@@ -43,6 +51,9 @@
        "apihelp-createaccount-example-pass": "Lääsch dä Metmaacher <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">testuser</kbd> aan, mem Paßwood <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">test123</kbd>.",
        "apihelp-createaccount-example-mail": "Lääsch dä Metmaacher <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">testmailuser</kbd> aan med emem zohfällesch ußjewörfelte Paßwoot un schegg_em dat övver de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">e-mail</i>.",
        "apihelp-delete-description": "Schmieß en Sigg fott.",
+       "apihelp-delete-param-title": "De Övverschreff vun dä Sigg zom fottschmiiße. Kam_mer nit zersamme met „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1pageid</var>“ bruche.",
+       "apihelp-delete-param-pageid": "De Kännong vun dä Sigg zom fottschmiiße. Kam_mer nit zersamme met „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1title</var>“ bruche.",
+       "apihelp-delete-param-reason": "Der Jrond för et Fottschmiiße. Wann dä nit aanjejovve es, weed ene automattesch usjräschnete Jrond jenumme.",
        "apihelp-delete-param-watch": "Donn di Sigg en däm aktoälle Metmaacher sing Oppaßleß opnämme.",
        "apihelp-delete-param-unwatch": "Schmihß di Sigg us däm aktoälle Metmaacher singe Oppaßless erus.",
        "apihelp-delete-param-oldimage": "Der Nahme vom ahle Beld zom fottschmiiße, wi hä vun [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]] kütt.",
@@ -83,6 +94,7 @@
        "apihelp-expandtemplates-description": "Deiht alle Schablohne en Wikkitäx ömsäze.",
        "apihelp-expandtemplates-param-title": "De Övverschreff vun dä Sigg.",
        "apihelp-expandtemplates-param-text": "Dä Wikitäx zom ömwandelle.",
+       "apihelp-expandtemplates-param-revid": "De Kännong vun dä Väsjohn, för \n„<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\"><nowiki>{{REVISIONID}}</nowiki></code>“ un verwandte Wääte.",
        "apihelp-expandtemplates-param-includecomments": "Ov Aanmärkonge em <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i>-Fommaht med ußjejovve wähde sulle.",
        "apihelp-expandtemplates-param-generatexml": "Donn ene Boum vum <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Extensible Markup Language\">XML</i>-Paaser opboue. Es dorsch „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1prop=parsetree</code>“ ässäz.",
        "apihelp-feedcontributions-description": "Jidd ene Kannahl met de Beidräsch vun enem Metmaacher uß.",
        "apihelp-filerevert-description": "Säz en Dattei obb en ahle Väsohn zerök.",
        "apihelp-filerevert-param-filename": "De Zih_Dattei, der ohne „{{ne:file}}“ derför.",
        "apihelp-filerevert-param-comment": "Aanmärkong huh lahde.",
+       "apihelp-filerevert-param-archivename": "Dä nahme vum Aschihv vun dä Väsjohn för wider drop zerök ze jon.",
        "apihelp-filerevert-example-revert": "Donn <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Wiki.png</kbd> op di Väsohn vum <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">2011-03-05T15:27:40Z</kbd> zerök säze.",
        "apihelp-help-description": "zeisch Hölp för de aanjejovve Moduhle.",
        "apihelp-help-param-submodules": "Donn Hölp för de Ongermoduhle vun dämm aanjejovve Moduhl enschschlehße.",
        "apihelp-import-param-interwikipage": "För et Empottehre us enem andere Wikki: De Sigg zom Empottehre.",
        "apihelp-import-param-fullhistory": "För et Empottehre us enem andere Wikki: Donn de jannze Verjangeheid empottehre, nit blohß de aktoälle Väsjohn.",
        "apihelp-import-param-templates": "För et Empottehre us enem andere Wikki: Donn all de nühdejje Schablohne met empottehre.",
-       "apihelp-import-param-namespace": "För et Empottehre us enem andere Wikki: Donn ene heh dat Appachtemang empottehre.",
-       "apihelp-import-param-rootpage": "Als Ongersiff vun heh dä Sigg empottehre-",
+       "apihelp-import-param-namespace": "En heh dat Appachtemang emmpotehre. Övverjangk der Parramehter „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1rootpage</kbd>“ derbei.",
+       "apihelp-import-param-rootpage": "Als Ongersigg vun heh dä Sigg empottehre. Weed ävver övverjange, wann dä der Parramehter „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1namespace</kbd>“ derbei aanjejovve es.",
        "apihelp-import-example-import": "Donn di Sigg „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">[[meta:Help:Parserfunctions]]</code>“ en et Appachtemang 100 empottehre, met alle älldere Väsjohne.",
        "apihelp-login-param-name": "Metmaacher_Nahme.",
        "apihelp-login-param-password": "Paßwoot.",
        "apihelp-login-param-domain": "De Domaijn (kann fott bliehve)",
        "apihelp-login-example-login": "Enlogge.",
+       "apihelp-logout-description": "Donn ußlogge un maach de Dahte övver de Sezong fott.",
        "apihelp-logout-example-logout": "Donn dä aktoälle Metmaacher ußlogge.",
+       "apihelp-managetags-param-reason": "Ene Jrond för et Aanlähje, Fottschmiiße, Aanschallde un Ußschallde vun dä Makehrong, dä mer ävver nit aanjävve moß.",
        "apihelp-managetags-param-ignorewarnings": "Ov alle Warnonge övverjange wöhde sull, die bei dämm Opdracht opkumme.",
        "apihelp-managetags-example-create": "Donn en Makkehrong aanlähje mem Nahme „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">spam</kbd>“ mem Jrond „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">For use in edit patrolling</kbd>“.",
        "apihelp-managetags-example-delete": "Schmiiß de Makkehrong mem Nahme „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">vandlaism</kbd>“ fott mem Jrond „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Misspelt</kbd>“.",
        "apihelp-opensearch-param-search": "Noh wat söhke?",
        "apihelp-opensearch-param-limit": "De hühßte Aanzahl vun Äjeebnesse för zeröck ze jävve",
        "apihelp-opensearch-param-namespace": "En wällschem Appachtemang söhke.",
+       "apihelp-opensearch-param-suggest": "Don nix wann „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var>“ op „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">false</code>“ jesaz es.",
        "apihelp-opensearch-param-redirects": "Wi met Ömleidonge ömjonn?\n;return:Jivv de Ömleidonge sällver uß.\n;resolve:Jiff de Sigg uß, woh de Ömleidong hen jeiht. Dat künnt winnijer wi „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1limit</code>“ Sigge ußjävve.\nTradizonäll es dä Schtandatt „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">return</code>“ för „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1format=json</code>“ un „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">resolve</code>“ för alle anndere.",
        "apihelp-opensearch-param-format": "Et Fommaht zom Ußjävve.",
        "apihelp-opensearch-example-te": "Fengk Sigge, di met <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Te</kbd> aanfange.",
        "apihelp-query+allcategories-param-to": "De Saachjropp, bes woh hen opzälle.",
        "apihelp-query+allcategories-param-dir": "De Reijefollsch zum Zotehre.",
        "apihelp-query+allcategories-param-limit": "Wi vell Saachjroppe ußjävve?",
-       "apihelp-query+allcategories-param-prop": "Which properties to get:\n;size:Adds number of pages in the category.\n;hidden:Tags categories that are hidden with _&#95;HIDDENCAT_&#95;.\n<!-- \nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-query%2Ballcategories-param-prop/ksh\n-->",
+       "apihelp-query+allcategories-param-prop": "Wat för en Eijeschaffte holle: \n;size:Deiht de Aanzahl Sigge en dä Saachjropp derbei.\n;hidden:Makehrt de veschtoche Sachjroppe met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">_&#95;HIDDENCAT_&#95;</code>“.",
        "apihelp-query+alldeletedrevisions-description": "Donn alle fottjeschmeße Väsjohne vun enem Metmaacher udder en enem Appachemang opleßte.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Kam_mer blohß met <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$3user</var> bruche.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Kam_mer nit met <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$3user</var> bruche.",
        "apihelp-query+allfileusages-param-to": "De Övverschreff vun dä Dattei, woh de Leß medd ophühre sull.",
        "apihelp-query+allfileusages-param-prefix": "Söhk noh alle Övverschreffte, di met heh däm Täx aanfange.",
        "apihelp-query+allfileusages-param-unique": "Donn blohß ongerscheidlijje Övverschreffte vun Datteije aanzeije. Kammer nit zesamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1prop=ids<code>“ bruche.\nWann als ene  Jenerahtor enjesaz, bräng Zihlsigge un kein Kwällsigge.",
-       "apihelp-query+allfileusages-param-prop": "Wat för en Aanjahbe ennschlehße:\n;ids:Deiht de Kännonge vun dä Sigg derbei, di dat bruche. Kam_mer nit zersamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1unique</code>“ bruche.\n;title:Deiht dä Dattei ehr Övverschreff derbei.",
+       "apihelp-query+allfileusages-param-prop": "Wat för en Aanjahbe ennschlehße:\n;ids:Deiht de Kännonge vun dä Sigge derbei, di dat bruche. Kam_mer nit zersamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1unique</code>“ bruche.\n;title:Deiht dä Dattei ehr Övverschreff derbei.",
        "apihelp-query+allfileusages-param-limit": "Wi vill sulle överhoup aanjezeisch wähde?",
        "apihelp-query+allfileusages-param-dir": "En wälsche Reijefollsch?",
        "apihelp-query+allfileusages-example-B": "Donn Övverschreffte vun Datteije aanzeije, och vun Datteije, di (noch) nit doh sin, zesame met dä Kännonge vun dä Sigge, woh se vun sin, aanjevange vun <kbd>B</kbd>.",
        "apihelp-query+blocks-param-start": "Et Dattom un de Zigg vun woh aff opjezallt wähde sull.",
        "apihelp-query+blocks-param-end": "Et Dattom un de Zigg bes woh hen opjezallt wähde sull.",
        "apihelp-query+blocks-param-limit": "De hühßde Aanzahl Spärre zom opleste.",
-       "apihelp-query+blocks-param-prop": "Which properties to get:\n;id:Adds the ID of the block.\n;user:Adds the username of the blocked user.\n;userid:Adds the user ID of the blocked user.\n;by:Adds the username of the blocking user.\n;byid:Adds the user ID of the blocking user.\n;timestamp:Adds the timestamp of when the block was given.\n;expiry:Adds the timestamp of when the block expires.\n;reason:Adds the reason given for the block.\n;range:Adds the range of IP addresses affected by the block.\n;flags:Tags the ban with (autoblock, anononly, etc.).\n<!-- \nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-query%2Bblocks-param-prop/ksh\n-->",
+       "apihelp-query+blocks-param-prop": "Wat för en Eijeschaffte holle:\n;id:Deiht dä Spärr iehr Kännonge derbei.\n;user:Deiht dä Nahme vom jeschpächte Metmaacher derbei.\n;userid:Deiht de Kännong vum jeschpächte Metmaacher derbei.\n;by:Deiht dä Nahme vun däm Metmaacher derbei, dä jeschpächt hät.\n;byid:Deiht de Kännong vun däm Metmaacher derbei, dä jeschpächt hät.\n;timestamp:Deihd et Dattum un de Uhrzigg derbei, wann jeschpächt wood.\n;expiry:Deihd et Dattum un de Uhrzigg derbei, wann di Schparr eröm es.\n;reason:Deiht der Jrond för di Schparr derbei.\n;range:Deiht dä Berätt vun <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße för di Schparr derbei.\n;flags:makkehrt di Spärr met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">autoblock</code>“, „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">anononly</code>“, un esu.",
        "apihelp-query+blocks-example-simple": "Schpärre opleßte.",
        "apihelp-query+blocks-example-users": "Donn de Schpärre vun dä Metmaacher <lang=\"en\" xml:lang=\"en\" dir=\"ltr\" kbd>Alice</kbd> un <lang=\"en\" xml:lang=\"en\" dir=\"ltr\" kbd>Bob</kbd> opleßte.",
        "apihelp-query+categories-description": "Donn alle Saachjroppe epleßte, woh di Sigge dren sin.",
-       "apihelp-query+categories-param-prop": "Which additional properties to get for each category:\n;sortkey:Adds the sortkey (hexadecimal string) and sortkey prefix (human-readable part) for the category.\n;timestamp:Adds timestamp of when the category was added.\n;hidden:Tags categories that are hidden with _&#95;HIDDENCAT_&#95;.\n<!-- \nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-query%2Bcategories-param-prop/ksh\n-->",
+       "apihelp-query+categories-param-prop": "Wat för en zohsäzlejje Eijeschaffte holle för jehde Saachjropp:\n;sortkey:Deiht dä Schlößel zom Zottehre vun dä Saachjropp derbei, en lange häxadezimahle Zahl, un der Schlößelvörsaz, woh ene Minsch jät med aanfange kann.\n;timestamp:Deihd en Dattom un en Zigg derbei, wann di Sachjrobb aanjelaat woode es.\n;hidden:Makehrt de veschtoche Sachjroppe met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">_&#95;HIDDENCAT_&#95;</code>“.",
        "apihelp-query+categories-param-show": "Wat för en Zoot Saachjroppe zeije.",
        "apihelp-query+categories-param-limit": "Wi vell Saachjroppe ußjävve?",
        "apihelp-query+categories-param-dir": "En wälsche Reijefollsch?",
        "apihelp-query+deletedrevisions-param-limit": "De hühßde Aanzahl Väsjohne för opzeleßte.",
        "apihelp-query+deletedrevisions-param-prop": "Wat för en Eijeschaffte holle:\n;revid:Deiht de Kännong vun de fottjeschmeße Väsjohn derbei.\n;parentid:Deiht de Kännong vun de vörrejje Väsjohn vun dä Sigg derbei.\n;user:Deiht dä Metmaacher derbei, dä di Väsjohn jemaat hät.\n;userid:Deiht de Kännong vun däm Metmaacher derbei, dä di Väsjohn jemaat hät.\n;comment:Deiht et Väld „{{int:summary}}“ vun dä Väsjohn derbei.\n;parsedcomment:Deiht et jepaaste Väld „{{int:summary}}“ vun dä Väsjohn derbei.\n;minor:Makehronge, wann di Väsjohn en klein Mini_Änderong es.\n;len:Deiht de Läng (Aanzahl <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Bytes</i>) vun dä Väsjohn derbei.\n;sha1:Deiht dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"secure hash algorithm\">SHA-1 (base 16)</i> vun dä Väsjohn derbei.\n;content:Deiht der Ennhalld vun dä Väsjohn derbei.\n;tags:Makehronge för di Väsjohn.",
        "apihelp-query+deletedrevisions-example-revids": "Donn de Aanjahbe för de fottjeschmeße Väsjohn <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">123456</kbd> holle.",
+       "apihelp-query+deletedrevs-param-start": "Et Dattom un de Zigg vun woh aff opjezallt wähde sull.",
+       "apihelp-query+deletedrevs-param-end": "Et Dattom un de Zigg bes woh hen opjezallt wähde sull.",
+       "apihelp-query+deletedrevs-param-from": "Bejenn de Leß bei heh dä Överschreff.",
+       "apihelp-query+deletedrevs-param-to": "Hühr de Leß bei heh dä Överschreff oop.",
+       "apihelp-query+deletedrevs-param-prefix": "Söhk noh Sigge, woh de Övverschrevv esu aanfängk.",
+       "apihelp-query+deletedrevs-param-unique": "Donn blohß ein Väsjohn för jehde Sigg opleßte.",
+       "apihelp-query+deletedrevs-param-tag": "Donn blohß Väsjohne met heh dä Makehrong opleßte.",
+       "apihelp-query+deletedrevs-param-user": "Donn blohß Väsjohne vun heh däm Metmaacher opleßte.",
+       "apihelp-query+deletedrevs-param-excludeuser": "Donn kein Väsjohne vun heh däm Metmaacher opleßte.",
+       "apihelp-query+deletedrevs-param-namespace": "Donn blohß Sigge en heh däm Appachtemang opleßte.",
+       "apihelp-query+deletedrevs-param-limit": "De hühßde Aanzahl Väsjohne för opzeleßte.",
+       "apihelp-query+disabled-description": "Dat Moduhl för Frohre ze schtälle wohd affjeschalldt.",
+       "apihelp-query+duplicatefiles-description": "Donn alle Datteije opleßte, di desällve Prööfsomm han wi de aanjejovve Datteije.",
+       "apihelp-query+duplicatefiles-param-limit": "Wi vell datteije ußjävve.",
        "apihelp-query+duplicatefiles-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+duplicatefiles-param-localonly": "Lohr blohß noh Datteije heh em Wikki.",
+       "apihelp-query+duplicatefiles-example-simple": "Lohr noh Datteije, di dubbelte vun dä Dattei „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">[[:File:Albert Einstein Head.jpg]]</code>“ sin.",
+       "apihelp-query+duplicatefiles-example-generated": "Lohr noh Dubbelte vun alle Datteije.",
+       "apihelp-query+embeddedin-description": "Fengk alle Sigge, di di aanjejovve Dattei enneschlehße.",
        "apihelp-query+embeddedin-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+filearchive-description": "Donn alle fottjeschmeße Datteije der Reih noh opzälle.",
+       "apihelp-query+filearchive-param-from": "De Övverschreff vun däm Beld, woh de Leß medd aanfange sull.",
+       "apihelp-query+filearchive-param-to": "De Övverschreff vun däm Beld, woh de Leß medd ophühre sull.",
+       "apihelp-query+filearchive-param-prefix": "Söhk noh alle Övverschreffte vun Bellder, di met heh dämm Wäät bejenne.",
+       "apihelp-query+filearchive-param-limit": "Wi vell Bellder ensjesamp zeröckjävve.",
        "apihelp-query+filearchive-param-dir": "En wälsche Reijefollsch opleßte.",
+       "apihelp-query+filearchive-example-simple": "Zeijsch en leß met alle fottjeschmeße Datteije.",
        "apihelp-query+images-param-dir": "En wälsche Reijefollsch opleßte.",
        "apihelp-query+imageusage-param-namespace": "Dat Appachtemang zom opzälle.",
        "apihelp-query+imageusage-param-dir": "En wälsche Reijefollsch opleßte.",
        "apihelp-query+links-param-dir": "En wälsche Reihjefollsch opleßte.",
        "apihelp-query+pagepropnames-param-limit": "De jrüüßte Zahl Nahme för ußzejävve.",
        "apihelp-query+pagepropnames-example-simple": "Holl de eezde zehn Nahme vun Eijeschaffte.",
+       "apihelp-query+pageprops-example-simple": "Holl de Eijeschaffte för di Sigge „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main Page</kbd>“ un „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">MediaWiki</kbd>“.",
        "apihelp-query+pageswithprop-param-limit": "De jrüüßte Zahl Sigge för ußzejävve.",
        "apihelp-query+pageswithprop-param-dir": "En wälsche Reihjefollsch opleßte.",
        "apihelp-query+prefixsearch-param-namespace": "En wällschem Appachtemang söhke.",
index a40e4c1..95c7e86 100644 (file)
@@ -4,6 +4,11 @@
                        "George Animal"
                ]
        },
+       "apihelp-block-param-reason": "Sedemê bo astengkirinê.",
+       "apihelp-createaccount-param-name": "Navê bikarhêner.",
        "apihelp-delete-description": "Rûpelekê jê bibe.",
-       "apihelp-expandtemplates-param-title": "Sernavê rûpelê."
+       "apihelp-edit-param-text": "Naveroka rûpelê.",
+       "apihelp-edit-example-edit": "Rûpelekê biguherîne.",
+       "apihelp-expandtemplates-param-title": "Sernavê rûpelê.",
+       "apihelp-tag-param-reason": "Sedemê bo guherandinê."
 }
index c47d254..04e9a43 100644 (file)
@@ -1,9 +1,12 @@
 {
        "@metadata": {
                "authors": [
-                       "AntanO"
+                       "AntanO",
+                       "கலைவாணன்"
                ]
        },
+       "apihelp-import-param-namespace": "இதனைப் பெயர்வெளிக்கு இறக்குமதி செய்யவும். <kbd>$1rootpage</kbd> அளவுருவை மீறச்செய்யும்.",
+       "apihelp-import-param-rootpage": "இப்பக்கத்தின் துணைப்பக்கமாக இறக்குமதி செய்யவும். <kbd>$1namespace</kbd> அளவுரு வழங்கப்பட்டிருந்தால் இது புறக்கணிக்கப்படும்.",
        "api-help-source": "மூலம்: $1",
        "api-help-license": "அனுமதி: [[$1|$2]]",
        "api-help-license-noname": "அனுமதி: [[$1|இணைப்பைப் பார்]]"
index e548643..f0f3cd8 100644 (file)
        "apihelp-import-param-interwikipage": "用于跨wiki导入:导入的页面。",
        "apihelp-import-param-fullhistory": "用于跨wiki导入:完整导入历史,而不只是最新版本。",
        "apihelp-import-param-templates": "用于跨wiki导入:连带导入所有包含的模板。",
-       "apihelp-import-param-namespace": "用于跨wiki导入:导入到此名字空间。",
-       "apihelp-import-param-rootpage": "导入作为此页面的子页面。",
+       "apihelp-import-param-namespace": "导入至此名字空间。重写<kbd>$1rootpage</kbd>参数。",
+       "apihelp-import-param-rootpage": "作为此页面的子页面导入。如果提供<kbd>$1namespace</kbd>参数则忽略。",
        "apihelp-import-example-import": "将页面[[meta:Help:Parserfunctions]]连带完整历史导入至100名字空间。",
        "apihelp-login-description": "登录并获得身份验证Cookie。\n\n在成功登录的情况下,所需的Cookie将包含在HTTP响应头中。在登录失败的情况下,进一步的尝试可能会被自动密码猜解攻击的限制所遏制。",
        "apihelp-login-param-name": "用户名。",
        "apihelp-query+allimages-example-recent": "显示一个最近上传文件的列表,类似[[Special:NewFiles]]。",
        "apihelp-query+allimages-example-mimetypes": "显示带MIME类型<kbd>image/png</kbd>或<kbd>image/gif</kbd>的文件列表",
        "apihelp-query+allimages-example-generator": "显示有关4个以<kbd>T</kbd>开头的文件的信息。",
+       "apihelp-query+alllinks-param-from": "要列举的起始标题链接。",
+       "apihelp-query+alllinks-param-to": "要列举的最终标题链接。",
        "apihelp-query+alllinks-param-namespace": "要列举的名字空间。",
        "apihelp-query+alllinks-param-limit": "总共要返回多少个项目。",
        "apihelp-query+alllinks-param-dir": "列出方向。",
        "apihelp-query+allmessages-param-prefix": "返回带有该前缀的消息。",
        "apihelp-query+allmessages-example-ipb": "显示以<kbd>ipb-</kbd>开始的消息。",
        "apihelp-query+allmessages-example-de": "显示德语版的<kbd>august</kbd>和<kbd>mainpage</kbd>消息。",
+       "apihelp-query+allpages-param-from": "枚举的起始页面标题。",
+       "apihelp-query+allpages-param-to": "枚举的结束页面标题。",
        "apihelp-query+allpages-param-namespace": "要列举的名字空间。",
        "apihelp-query+allpages-param-filterredir": "要列出哪些页面。",
        "apihelp-query+allpages-param-minsize": "限于至少这么多字节的页面。",
        "apihelp-query+allpages-example-generator": "显示有关4个以字母<kbd>T</kbd>开头的页面的信息。",
        "apihelp-query+allpages-example-generator-revisions": "显示前2个以<kbd>Re</kbd>开头的非重定向页面的内容。",
        "apihelp-query+allredirects-description": "列出至一个名字空间的重定向。",
+       "apihelp-query+allredirects-param-from": "要列举的起始重定向标题。",
+       "apihelp-query+allredirects-param-to": "要列举的最终重定向标题。",
        "apihelp-query+allredirects-param-namespace": "要列举的名字空间。",
        "apihelp-query+allredirects-param-limit": "返回的总计项目数。",
        "apihelp-query+allredirects-param-dir": "罗列所采用的方向。",
        "apihelp-query+imageinfo-param-prop": "要获取的文件信息:",
        "apihelp-query+imageinfo-paramvalue-prop-timestamp": "添加时间戳至上传的版本。",
        "apihelp-query+imageinfo-paramvalue-prop-comment": "此版本的摘要。",
+       "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "添加文件的规范标题。",
+       "apihelp-query+imageinfo-paramvalue-prop-url": "为文件及其描述页面提供URL。",
        "apihelp-query+imageinfo-paramvalue-prop-dimensions": "大小别名。",
        "apihelp-query+imageinfo-paramvalue-prop-sha1": "为文件加入SHA-1哈希值。",
        "apihelp-query+imageinfo-paramvalue-prop-mime": "添加文件的MIME类型。",
        "apihelp-query+pagepropnames-description": "列出wiki中所有使用中的页面属性名称。",
        "apihelp-query+pagepropnames-param-limit": "返回名称的最大数量。",
        "apihelp-query+pagepropnames-example-simple": "获取前10个属性名称。",
-       "apihelp-query+pageprops-example-simple": "è\8e·å¾\97ç\94¨äº\8e<kbd>Category:Foo</kbd>的属性。",
+       "apihelp-query+pageprops-example-simple": "è\8e·å\8f\96ç\94¨äº\8e页é\9d¢<kbd>Main Page</kbd>å\92\8c<kbd>MediaWiki</kbd>的属性。",
        "apihelp-query+pageswithprop-description": "列出所有使用指定页面属性的页面。",
        "apihelp-query+pageswithprop-param-limit": "返回页面的最大数量。",
        "apihelp-query+pageswithprop-param-dir": "排序的方向。",
index 713c5cb..2ca79cd 100644 (file)
@@ -132,7 +132,7 @@ interface IContextSource {
        public function getStats();
 
        /**
-        * Get a Message object with context set
+        * Get a Message object with context set.  See wfMessage for parameters.
         *
         * @return Message
         */
diff --git a/includes/db/DBConnRef.php b/includes/db/DBConnRef.php
new file mode 100644 (file)
index 0000000..7045494
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Helper class to handle automatically marking connections as reusable (via RAII pattern)
+ * as well handling deferring the actual network connection until the handle is used
+ *
+ * @ingroup Database
+ * @since 1.22
+ */
+class DBConnRef implements IDatabase {
+       /** @var LoadBalancer */
+       private $lb;
+
+       /** @var DatabaseBase|null */
+       private $conn;
+
+       /** @var array|null */
+       private $params;
+
+       /**
+        * @param LoadBalancer $lb
+        * @param DatabaseBase|array $conn Connection or (server index, group, wiki ID) array
+        */
+       public function __construct( LoadBalancer $lb, $conn ) {
+               $this->lb = $lb;
+               if ( $conn instanceof DatabaseBase ) {
+                       $this->conn = $conn;
+               } else {
+                       $this->params = $conn;
+               }
+       }
+
+       public function __call( $name, $arguments ) {
+               if ( $this->conn === null ) {
+                       list( $db, $groups, $wiki ) = $this->params;
+                       $this->conn = $this->lb->getConnection( $db, $groups, $wiki );
+               }
+
+               return call_user_func_array( array( $this->conn, $name ), $arguments );
+       }
+
+       public function __destruct() {
+               if ( $this->conn !== null ) {
+                       $this->lb->reuseConnection( $this->conn );
+               }
+       }
+}
index 8c1ebf9..d2cac34 100644 (file)
@@ -69,6 +69,8 @@ abstract class DatabaseBase implements IDatabase {
        protected $mLBInfo = array();
        protected $mDefaultBigSelects = null;
        protected $mSchemaVars = false;
+       /** @var array */
+       protected $mSessionVars = array();
 
        protected $preparedArgs;
 
@@ -813,6 +815,8 @@ abstract class DatabaseBase implements IDatabase {
                        }
                }
 
+               $this->mSessionVars = $params['variables'];
+
                /** Get the default table prefix*/
                if ( $tablePrefix == 'get from global' ) {
                        $this->mTablePrefix = $wgDBprefix;
@@ -926,6 +930,7 @@ abstract class DatabaseBase implements IDatabase {
                        $p['password'] = isset( $p['password'] ) ? $p['password'] : false;
                        $p['dbname'] = isset( $p['dbname'] ) ? $p['dbname'] : false;
                        $p['flags'] = isset( $p['flags'] ) ? $p['flags'] : 0;
+                       $p['variables'] = isset( $p['variables'] ) ? $p['variables'] : array();
                        $p['tablePrefix'] = isset( $p['tablePrefix'] ) ? $p['tablePrefix'] : 'get from global';
                        $p['schema'] = isset( $p['schema'] ) ? $p['schema'] : $defaultSchemas[$dbType];
                        $p['foreign'] = isset( $p['foreign'] ) ? $p['foreign'] : false;
@@ -4235,7 +4240,7 @@ abstract class DatabaseBase implements IDatabase {
        }
 
        /**
-        * Check to see if a named lock is available. This is non-blocking.
+        * Check to see if a named lock is available (non-blocking)
         *
         * @param string $lockName Name of lock to poll
         * @param string $method Name of method calling us
@@ -4249,8 +4254,7 @@ abstract class DatabaseBase implements IDatabase {
        /**
         * Acquire a named lock
         *
-        * Abstracted from Filestore::lock() so child classes can implement for
-        * their own needs.
+        * Named locks are not related to transactions
         *
         * @param string $lockName Name of lock to aquire
         * @param string $method Name of method calling us
@@ -4262,7 +4266,9 @@ abstract class DatabaseBase implements IDatabase {
        }
 
        /**
-        * Release a lock.
+        * Release a lock
+        *
+        * Named locks are not related to transactions
         *
         * @param string $lockName Name of lock to release
         * @param string $method Name of method calling us
@@ -4275,6 +4281,16 @@ abstract class DatabaseBase implements IDatabase {
                return true;
        }
 
+       /**
+        * Check to see if a named lock used by lock() use blocking queues
+        *
+        * @return bool
+        * @since 1.26
+        */
+       public function namedLocksEnqueue() {
+               return false;
+       }
+
        /**
         * Lock specific tables
         *
index aac95a8..561c811 100644 (file)
@@ -132,6 +132,15 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                if ( is_string( $wgSQLMode ) ) {
                        $set[] = 'sql_mode = ' . $this->addQuotes( $wgSQLMode );
                }
+               // Set any custom settings defined by site config
+               // (e.g. https://dev.mysql.com/doc/refman/4.1/en/innodb-parameters.html)
+               foreach ( $this->mSessionVars as $var => $val ) {
+                       // Escape strings but not numbers to avoid MySQL complaining
+                       if ( !is_int( $val ) && !is_float( $val ) ) {
+                               $val = $this->addQuotes( $val );
+                       }
+                       $set[] = $this->addIdentifierQuotes( $var ) . ' = ' . $val;
+               }
 
                if ( $set ) {
                        // Use doQuery() to avoid opening implicit transactions (DBO_TRX)
@@ -873,6 +882,10 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                return ( $row->lockstatus == 1 );
        }
 
+       public function namedLocksEnqueue() {
+               return true;
+       }
+
        /**
         * @param array $read
         * @param array $write
index 624f46b..2ea2487 100644 (file)
@@ -845,8 +845,9 @@ class LoadBalancer {
 
        /**
         * @return int
+        * @since 1.26
         */
-       private function getWriterIndex() {
+       public function getWriterIndex() {
                return 0;
        }
 
@@ -1272,49 +1273,3 @@ class LoadBalancer {
                $this->mProcCache->clear( 'slave_lag' );
        }
 }
-
-/**
- * Helper class to handle automatically marking connections as reusable (via RAII pattern)
- * as well handling deferring the actual network connection until the handle is used
- *
- * @ingroup Database
- * @since 1.22
- */
-class DBConnRef implements IDatabase {
-       /** @var LoadBalancer */
-       private $lb;
-
-       /** @var DatabaseBase|null */
-       private $conn;
-
-       /** @var array|null */
-       private $params;
-
-       /**
-        * @param LoadBalancer $lb
-        * @param DatabaseBase|array $conn Connection or (server index, group, wiki ID) array
-        */
-       public function __construct( LoadBalancer $lb, $conn ) {
-               $this->lb = $lb;
-               if ( $conn instanceof DatabaseBase ) {
-                       $this->conn = $conn;
-               } else {
-                       $this->params = $conn;
-               }
-       }
-
-       public function __call( $name, $arguments ) {
-               if ( $this->conn === null ) {
-                       list( $db, $groups, $wiki ) = $this->params;
-                       $this->conn = $this->lb->getConnection( $db, $groups, $wiki );
-               }
-
-               return call_user_func_array( array( $this->conn, $name ), $arguments );
-       }
-
-       public function __destruct() {
-               if ( $this->conn !== null ) {
-                       $this->lb->reuseConnection( $this->conn );
-               }
-       }
-}
diff --git a/includes/eventrelayer/EventRelayer.php b/includes/eventrelayer/EventRelayer.php
new file mode 100755 (executable)
index 0000000..a3d214f
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Aaron Schulz
+ */
+
+/**
+ * Base class for reliable event relays
+ */
+abstract class EventRelayer {
+       /**
+        * @param array $params
+        */
+       public function __construct( array $params ) {}
+
+       /**
+        * @param string $channel
+        * @param array $event Event data map
+        * @return bool Success
+        */
+       final public function notify( $channel, $event ) {
+               return $this->doNotify( $channel, array( $event ) );
+       }
+
+       /**
+        * @param string $channel
+        * @param array $events List of event data maps
+        * @return bool Success
+        */
+       final public function notifyMulti( $channel, $events ) {
+               return $this->doNotify( $channel, $events );
+       }
+
+       /**
+        * @param string $channel
+        * @param array $events List of event data maps
+        * @return bool Success
+        */
+       abstract protected function doNotify( $channel, array $events );
+}
+
+/**
+ * No-op class for publishing messages into a PubSub system
+ */
+class EventRelayerNull extends EventRelayer {
+       public function doNotify( $channel, array $events ) {
+               return true;
+       }
+}
diff --git a/includes/eventrelayer/EventRelayerMCRD.php b/includes/eventrelayer/EventRelayerMCRD.php
new file mode 100755 (executable)
index 0000000..1e8b2a4
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Aaron Schulz
+ */
+
+/**
+ * Relayed that uses the mcrelaypushd server
+ */
+class EventRelayerMCRD extends EventRelayer {
+       /** @var MultiHttpClient */
+       protected $http;
+       /** @var string */
+       protected $baseUrl;
+
+       /**
+        * Additional params include 'mcrdConfig', which is a map of:
+        *   - url : The base URL of the service (without paths)
+        * @param array $params
+        */
+       public function __construct( array $params ) {
+               parent::__construct( $params );
+
+               $this->baseUrl = $params['mcrdConfig']['url'];
+
+               $httpConfig = isset( $params['httpConfig'] ) ? $params['httpConfig'] : array();
+               if ( !isset( $httpConfig['connTimeout'] ) ) {
+                       $httpConfig['connTimeout'] = 1;
+               }
+               if ( !isset( $httpConfig['reqTimeout'] ) ) {
+                       $httpConfig['reqTimeout'] = .25;
+               }
+
+               $this->http = new MultiHttpClient( $httpConfig );
+       }
+
+       protected function doNotify( $channel, array $events ) {
+               if ( !count( $events ) ) {
+                       return true;
+               }
+
+               $response = $this->http->run( array(
+                       'url'     => "{$this->baseUrl}/relayer/api/v1.0/" . rawurlencode( $channel ),
+                       'method'  => 'POST',
+                       'body'    => json_encode( array( 'events' => $events ) ),
+                       'headers' => array( 'content-type' => 'application/json' )
+               ) );
+
+               return $response['code'] == 201;
+       }
+}
index b9de2cf..802c819 100644 (file)
@@ -4,9 +4,18 @@
                        "Peter Alberti",
                        "Christian List",
                        "Tjernobyl",
-                       "Thomsen"
+                       "Thomsen",
+                       "MGA73"
                ]
        },
+       "config-desc": "Installationsprogrammet til MediaWiki",
+       "config-title": "Installation af MediaWiki $1",
+       "config-information": "Information",
+       "config-localsettings-upgrade": "En <code>LocalSettings.php</code>-fil er blevet fundet.\nFor at opgradere imstallationen, skriv venligst værdien af <code>$wgUpgradeKey</code> i boksen nedenfor.\nDu finder denne i <code>LocalSettings.php</code>.",
+       "config-localsettings-cli-upgrade": "En <code>LocalSettings.php</code>-fil er blevet fundet.\nFor at opgradere installationen skal du køre <code>update.php</code> i stedet for",
+       "config-localsettings-key": "Opgraderingsnøgle:",
+       "config-localsettings-badkey": "Den nøgle du indtastede er forkert.",
+       "config-upgrade-key-missing": "En eksisterende installation af MediaWiki er blevet fundet.\nFor at opgradere denne installation skal du tilføje følgende linje i bunden af din <code>LocalSettings.php</code>:\n\n$1",
        "config-page-language": "Sprog",
        "config-page-welcome": "Velkommen til MediaWiki!",
        "config-page-dbconnect": "Forbind til database",
index a983651..593a303 100644 (file)
        "config-install-database": "Configurando la base de datos",
        "config-install-schema": "Creando el esquema",
        "config-install-pg-schema-not-exist": "El esquema PostgreSQL no existe.",
-       "config-install-pg-schema-failed": "La creación de las tablas ha fallado.\nAsegúrate de que el usuario \"$1\" puede escribir en el esquema \"$2\".",
+       "config-install-pg-schema-failed": "Falló la creación de las tablas.\nAsegúrate de que la cuenta «$1» tiene permiso de escritura para el esquema «$2».",
        "config-install-pg-commit": "Validando los cambios",
        "config-install-pg-plpgsql": "Comprobación de lenguaje PL/pgSQL",
        "config-pg-no-plpgsql": "Necesita instalar el lenguaje PL/pgSQL en la base de datos $1",
index dedc3c2..a1ca9d2 100644 (file)
@@ -59,7 +59,6 @@
        "config-env-bad": "環境を確認しました。\nMediaWiki のインストールはできません。",
        "config-env-php": "PHP $1がインストールされています。",
        "config-env-hhvm": "HHVM $1 がインストールされています。",
-       "config-unicode-using-utf8": "Unicode正規化に、Brion Vibberのutf8_normalize.soを使用。",
        "config-unicode-using-intl": "Unicode正規化に[http://pecl.php.net/intl intl PECL 拡張機能]を使用。",
        "config-unicode-pure-php-warning": "<strong>警告:</strong> Unicode 正規化の処理に [http://pecl.php.net/intl intl PECL 拡張機能]を利用できないため、処理が遅いピュア PHP の実装を代わりに使用しています。\n高トラフィックのサイトを運営する場合は、[//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode 正規化]をお読みください。",
        "config-unicode-update-warning": "<strong>警告:</strong> インストールされているバージョンの Unicode 正規化ラッパーは、[http://site.icu-project.org/ ICU プロジェクト]のライブラリの古いバージョンを使用しています。\nUnicode を少しでも利用する可能性がある場合は、[//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations アップグレード]してください。",
index 9425423..2311ea2 100644 (file)
@@ -35,6 +35,11 @@ class JobRunner implements LoggerAwareInterface {
        /** @var callable|null Debug output handler */
        protected $debug;
 
+       /**
+        * @var LoggerInterface $logger
+        */
+       protected $logger;
+
        /**
         * @param callable $debug Optional debug output handler
         */
@@ -42,13 +47,9 @@ class JobRunner implements LoggerAwareInterface {
                $this->debug = $debug;
        }
 
-       /**
-        * @var LoggerInterface $logger
-        */
-       protected $logger;
-
        /**
         * @param LoggerInterface $logger
+        * @return void
         */
        public function setLogger( LoggerInterface $logger ) {
                $this->logger = $logger;
@@ -183,7 +184,7 @@ class JobRunner implements LoggerAwareInterface {
                                        ++$jobsRun;
                                        $status = $job->run();
                                        $error = $job->getLastError();
-                                       wfGetLBFactory()->commitMasterChanges();
+                                       $this->commitMasterChanges( $job );
                                } catch ( Exception $e ) {
                                        MWExceptionHandler::rollbackMasterChangesAndLog( $e );
                                        $status = false;
@@ -304,7 +305,6 @@ class JobRunner implements LoggerAwareInterface {
         * @return array Map of (job type => backoff expiry timestamp)
         */
        private function loadBackoffs( array $backoffs, $mode = 'wait' ) {
-
                $file = wfTempDir() . '/mw-runJobs-backoffs.json';
                if ( is_file( $file ) ) {
                        $noblock = ( $mode === 'nowait' ) ? LOCK_NB : 0;
@@ -342,7 +342,6 @@ class JobRunner implements LoggerAwareInterface {
         * @return array The new backoffs account for $backoffs and the latest file data
         */
        private function syncBackoffDeltas( array $backoffs, array &$deltas, $mode = 'wait' ) {
-
                if ( !$deltas ) {
                        return $this->loadBackoffs( $backoffs, $mode );
                }
@@ -409,4 +408,64 @@ class JobRunner implements LoggerAwareInterface {
                        call_user_func_array( $this->debug, array( wfTimestamp( TS_DB ) . " $msg\n" ) );
                }
        }
+
+       /**
+        * Commit any DB master changes from a job on all load balancers
+        *
+        * @param Job $job
+        * @throws DBError
+        */
+       private function commitMasterChanges( Job $job ) {
+               global $wgJobSerialCommitThreshold;
+
+               $lb = wfGetLB( wfWikiID() );
+               if ( $wgJobSerialCommitThreshold !== false ) {
+                       // Generally, there is one master connection to the local DB
+                       $dbwSerial = $lb->getAnyOpenConnection( $lb->getWriterIndex() );
+               } else {
+                       $dbwSerial = false;
+               }
+
+               if ( !$dbwSerial
+                       || !$dbwSerial->namedLocksEnqueue()
+                       || $dbwSerial->pendingWriteQueryDuration() < $wgJobSerialCommitThreshold
+               ) {
+                       // Writes are all to foreign DBs, named locks don't form queues,
+                       // or $wgJobSerialCommitThreshold is not reached; commit changes now
+                       wfGetLBFactory()->commitMasterChanges();
+                       return;
+               }
+
+               $ms = intval( 1000 * $dbwSerial->pendingWriteQueryDuration() );
+               $msg = $job->toString() . " COMMIT ENQUEUED [{$ms}ms of writes]";
+               $this->logger->info( $msg );
+               $this->debugCallback( $msg );
+
+               // Wait for an exclusive lock to commit
+               if ( !$dbwSerial->lock( 'jobrunner-serial-commit', __METHOD__, 30 ) ) {
+                       // This will trigger a rollback in the main loop
+                       throw new DBError( $dbwSerial, "Timed out waiting on commit queue." );
+               }
+               // Wait for the generic slave to catch up
+               $pos = $lb->getMasterPos();
+               if ( $pos ) {
+                       $lb->waitForOne( $pos );
+               }
+
+               // Re-ping all masters with transactions. This throws DBError if some
+               // connection died while waiting on locks/slaves, triggering a rollback.
+               wfGetLBFactory()->forEachLB( function( LoadBalancer $lb ) {
+                       $lb->forEachOpenConnection( function( DatabaseBase $conn ) {
+                               if ( $conn->writesOrCallbacksPending() ) {
+                                       $conn->query( "SELECT 1" );
+                               }
+                       } );
+               } );
+
+               // Actually commit the DB master changes
+               wfGetLBFactory()->commitMasterChanges();
+
+               // Release the lock
+               $dbwSerial->unlock( 'jobrunner-serial-commit', __METHOD__ );
+       }
 }
index 150a7ce..5447ee7 100644 (file)
@@ -385,6 +385,24 @@ abstract class BagOStuff implements LoggerAwareInterface {
                $this->lastError = $err;
        }
 
+       /**
+        * Modify a cache update operation array for EventRelayer::notify()
+        *
+        * This is used for relayed writes, e.g. for broadcasting a change
+        * to multiple data-centers. If the array contains a 'val' field
+        * then the command involves setting a key to that value. Note that
+        * for simplicity, 'val' is always a simple scalar value. This method
+        * is used to possibly serialize the value and add any cache-specific
+        * key/values needed for the relayer daemon (e.g. memcached flags).
+        *
+        * @param array $event
+        * @return array
+        * @since 1.26
+        */
+       public function modifySimpleRelayEvent( array $event ) {
+               return $event;
+       }
+
        /**
         * @param string $text
         */
index 1b0eb49..5f6b965 100644 (file)
@@ -137,17 +137,6 @@ class DjVuHandler extends ImageHandler {
        function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 ) {
                global $wgDjvuRenderer, $wgDjvuPostProcessor;
 
-               // Fetch XML and check it, to give a more informative error message than the one which
-               // normaliseParams will inevitably give.
-               $xml = $image->getMetadata();
-               if ( !$xml ) {
-                       $width = isset( $params['width'] ) ? $params['width'] : 0;
-                       $height = isset( $params['height'] ) ? $params['height'] : 0;
-
-                       return new MediaTransformError( 'thumbnail_error', $width, $height,
-                               wfMessage( 'djvu_no_xml' )->text() );
-               }
-
                if ( !$this->normaliseParams( $image, $params ) ) {
                        return new TransformParameterError( $params );
                }
index 7246072..0c6b6c7 100644 (file)
@@ -1003,28 +1003,6 @@ class FormatMetadata extends ContextSource {
                return $obj->flattenArrayReal( $vals, $type, $noHtml );
        }
 
-       /**
-        * Flatten an array, using the user language for any messages.
-        *
-        * @param array $vals Array of values
-        * @param string $type Type of array (either lang, ul, ol).
-        *   lang = language assoc array with keys being the lang code
-        *   ul = unordered list, ol = ordered list
-        *   type can also come from the '_type' member of $vals.
-        * @param bool $noHtml If to avoid returning anything resembling HTML.
-        *   (Ugly hack for backwards compatibility with old MediaWiki).
-        * @param bool|IContextSource $context
-        * @return string Single value (in wiki-syntax).
-        */
-       public static function flattenArray( $vals, $type = 'ul', $noHtml = false, $context = false ) {
-               $obj = new FormatMetadata;
-               if ( $context ) {
-                       $obj->setContext( $context );
-               }
-
-               return $obj->flattenArrayReal( $vals, $type, $noHtml );
-       }
-
        /**
         * A function to collapse multivalued tags into a single value.
         * This turns an array of (for example) authors into a bulleted list.
index 83bee70..eeca9b1 100644 (file)
@@ -183,4 +183,12 @@ class MemcachedBagOStuff extends BagOStuff {
        protected function debugLog( $text ) {
                $this->logger->debug( $text );
        }
+
+       public function modifySimpleRelayEvent( array $event ) {
+               if ( array_key_exists( 'val', $event ) ) {
+                       $event['flg'] = 0; // data is not serialized nor gzipped (for memcached driver)
+               }
+
+               return $event;
+       }
 }
index 2e47e24..301336f 100644 (file)
@@ -29,7 +29,10 @@ use MediaWiki\Logger\LoggerFactory;
  * @ingroup Cache
  */
 class ObjectCache {
+       /** @var Array Map of (id => BagOStuff) */
        public static $instances = array();
+       /** @var Array Map of (id => WANObjectCache) */
+       public static $wanInstances = array();
 
        /**
         * Get a cached instance of the specified type of cache object.
@@ -48,11 +51,29 @@ class ObjectCache {
                return $object;
        }
 
+       /**
+        * Get a cached instance of the specified type of cache object.
+        *
+        * @param string $id
+        *
+        * @return WANObjectCache
+        */
+       static function getWANInstance( $id ) {
+               if ( isset( self::$wanInstances[$id] ) ) {
+                       return self::$wanInstances[$id];
+               }
+
+               $object = self::newWANCacheFromId( $id );
+               self::$wanInstances[$id] = $object;
+               return $object;
+       }
+
        /**
         * Clear all the cached instances.
         */
        static function clear() {
                self::$instances = array();
+               self::$wanInstances = array();
        }
 
        /**
@@ -167,4 +188,29 @@ class ObjectCache {
        static function newMemcached( $params ) {
                return new MemcachedPhpBagOStuff( $params );
        }
+
+       /**
+        * Create a new cache object of the specified type
+        *
+        * @param string $id
+        *
+        * @throws MWException
+        * @return WANObjectCache
+        */
+       static function newWANCacheFromId( $id ) {
+               global $wgWANObjectCaches;
+
+               if ( !isset( $wgWANObjectCaches[$id] ) ) {
+                       throw new MWException( "Invalid object cache type \"$id\" requested. " .
+                               "It is not present in \$wgWANObjectCaches." );
+               }
+
+               $params = $wgWANObjectCaches[$id];
+               $class = $params['relayerConfig']['class'];
+               $params['relayer'] = new $class( $params['relayerConfig'] );
+               $params['cache'] = self::newFromId( $params['cacheId'] );
+               $class = $params['class'];
+
+               return new $class( $params );
+       }
 }
index 23c8b6d..9d5d0ef 100644 (file)
@@ -331,6 +331,14 @@ class RedisBagOStuff extends BagOStuff {
                return $this->mergeViaCas( $key, $callback, $exptime, $attempts );
        }
 
+       public function modifySimpleRelayEvent( array $event ) {
+               if ( array_key_exists( 'val', $event ) ) {
+                       $event['val'] = serialize( $event['val'] ); // this class uses PHP serialization
+               }
+
+               return $event;
+       }
+
        /**
         * @param mixed $data
         * @return string
diff --git a/includes/objectcache/WANObjectCache.php b/includes/objectcache/WANObjectCache.php
new file mode 100755 (executable)
index 0000000..6e5cad6
--- /dev/null
@@ -0,0 +1,600 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ * @author Aaron Schulz
+ */
+
+/**
+ * Multi-datacenter aware caching interface
+ *
+ * All operations go to the local cache, except the delete()
+ * and touchCheckKey(), which broadcast to all clusters.
+ * This class is intended for caching data from primary stores.
+ * If the get() method does not return a value, then the caller
+ * should query the new value and backfill the cache using set().
+ * When the source data changes, the delete() method should be called.
+ * Since delete() is expensive, it should be avoided. One can do so if:
+ *   - a) The object cached is immutable; or
+ *   - b) Validity is checked against the source after get(); or
+ *   - c) Using a modest TTL is reasonably correct and performant
+ * Consider using getWithSetCallback() instead of the get()/set() cycle.
+ *
+ * Instances of this class must be configured to point to a valid
+ * PubSub endpoint, and there must be listeners on the cache servers
+ * that subscribe to the endpoint and update the caches.
+ *
+ * Broadcasted operations like delete() and touchCheckKey() are done
+ * synchronously in the local cluster, but are relayed asynchronously.
+ * This means that callers in other datacenters will see older values
+ * for a however many milliseconds the datacenters are apart. As with
+ * any cache, this should not be relied on for cases where reads are
+ * used to determine writes to source (e.g. non-cache) data stores.
+ *
+ * All values are wrapped in metadata arrays. Keys use a "WANCache:" prefix
+ * to avoid collisions with keys that are not wrapped as metadata arrays. The
+ * prefixes are as follows:
+ *   - a) "WANCache:v" : used for regular value keys
+ *   - b) "WANCache:s" : used for temporarily storing values of tombstoned keys
+ *   - c) "WANCache:t" : used for storing timestamp "check" keys
+ *
+ * @ingroup Cache
+ * @since 1.26
+ */
+class WANObjectCache {
+       /** @var BagOStuff The local cluster cache */
+       protected $cache;
+       /** @var string Cache pool name */
+       protected $pool;
+       /** @var EventRelayer */
+       protected $relayer;
+
+       /** @var int */
+       protected $lastRelayError = self::ERR_NONE;
+
+       /** Seconds to tombstone keys on delete() */
+       const HOLDOFF_TTL = 10;
+       /** Seconds to keep dependency purge keys around */
+       const CHECK_KEY_TTL = 31536000; // 1 year
+       /** Seconds to keep lock keys around */
+       const LOCK_TTL = 5;
+
+       /** Cache format version number */
+       const VERSION = 1;
+
+       /** Fields of value holder arrays */
+       const FLD_VERSION = 0;
+       const FLD_VALUE = 1;
+       const FLD_TTL = 2;
+       const FLD_TIME = 3;
+
+       /** Possible values for getLastError() */
+       const ERR_NONE = 0; // no error
+       const ERR_NO_RESPONSE = 1; // no response
+       const ERR_UNREACHABLE = 2; // can't connect
+       const ERR_UNEXPECTED = 3; // response gave some error
+       const ERR_RELAY = 4; // relay broadcast failed
+
+       const VALUE_KEY_PREFIX = 'WANCache:v:';
+       const STASH_KEY_PREFIX = 'WANCache:s:';
+       const TIME_KEY_PREFIX = 'WANCache:t:';
+
+       const PURGE_VAL_PREFIX = 'PURGED:';
+
+       /**
+        * @param array $params
+        *   - cache   : BagOStuff object
+        *   - pool    : pool name
+        *   - relayer : EventRelayer object
+        */
+       public function __construct( array $params ) {
+               $this->cache = $params['cache'];
+               $this->pool = $params['pool'];
+               $this->relayer = $params['relayer'];
+       }
+
+       /**
+        * Fetch the value of a key from cache
+        *
+        * If passed in, $curTTL is set to the remaining TTL (current time left):
+        *   - a) INF; if the key exists and has no TTL
+        *   - b) float (>=0); if the key exists and has a TTL
+        *   - c) float (<0); if the key is tombstoned or expired by $checkKeys
+        *   - d) null; if the key does not exist and is not tombstoned
+        *
+        * If a key is tombstoned, $curTTL will reflect the time since delete().
+        *
+        * The timestamp of $key will be checked against the last-purge timestamp
+        * of each of $checkKeys. Those $checkKeys not in cache will have the last-purge
+        * initialized to the current timestamp. If any of $checkKeys have a timestamp
+        * greater than that of $key, then $curTTL will reflect how long ago $key
+        * became invalid. Callers can use $curTTL to know when the value is stale.
+        * The $checkKeys parameter allow mass invalidations by updating a single key:
+        *   - a) Each "check" key represents "last purged" of some source data
+        *   - b) Callers pass in relevant "check" keys as $checkKeys in get()
+        *   - c) When the source data that "check" keys represent changes,
+        *        the touchCheckKey() method is called on them
+        *
+        * For keys that are hot/expensive, consider using getWithSetCallback() instead.
+        *
+        * @param string $key Cache key
+        * @param mixed $curTTL Approximate TTL left on the key if present [returned]
+        * @param array $checkKeys List of "check" keys
+        * @return mixed Value of cache key or false on failure
+        */
+       final public function get( $key, &$curTTL = null, array $checkKeys = array() ) {
+               $curTTLs = array();
+               $values = $this->getMulti( array( $key ), $curTTLs, $checkKeys );
+               $curTTL = isset( $curTTLs[$key] ) ? $curTTLs[$key] : null;
+
+               return isset( $values[$key] ) ? $values[$key] : false;
+       }
+
+       /**
+        * Fetch the value of several keys from cache
+        *
+        * @see WANObjectCache::get()
+        *
+        * @param array $keys List of cache keys
+        * @param array $curTTLs Map of (key => approximate TTL left) for existing keys [returned]
+        * @param array $checkKeys List of "check" keys
+        * @return array Map of (key => value) for keys that exist
+        */
+       final public function getMulti(
+               array $keys, &$curTTLs = array(), array $checkKeys = array()
+       ) {
+               $result = array();
+               $curTTLs = array();
+
+               $vPrefixLen = strlen( self::VALUE_KEY_PREFIX );
+               $valueKeys = self::prefixCacheKeys( $keys, self::VALUE_KEY_PREFIX );
+               $checkKeys = self::prefixCacheKeys( $checkKeys, self::TIME_KEY_PREFIX );
+
+               // Fetch all of the raw values
+               $wrappedValues = $this->cache->getMulti( array_merge( $valueKeys, $checkKeys ) );
+               $now = microtime( true );
+
+               // Get/initialize the timestamp of all the "check" keys
+               $checkKeyTimes = array();
+               foreach ( $checkKeys as $checkKey ) {
+                       $timestamp = isset( $wrappedValues[$checkKey] )
+                               ? self::parsePurgeValue( $wrappedValues[$checkKey] )
+                               : false;
+                       if ( !is_float( $timestamp ) ) {
+                               // Key is not set or invalid; regenerate
+                               $this->cache->add( $checkKey,
+                                       self::PURGE_VAL_PREFIX . $now, self::CHECK_KEY_TTL );
+                               $timestamp = $now;
+                       }
+
+                       $checkKeyTimes[] = $timestamp;
+               }
+
+               // Get the main cache value for each key and validate them
+               foreach ( $valueKeys as $vKey ) {
+                       if ( !isset( $wrappedValues[$vKey] ) ) {
+                               continue; // not found
+                       }
+
+                       $key = substr( $vKey, $vPrefixLen ); // unprefix
+
+                       list( $value, $curTTL ) = $this->unwrap( $wrappedValues[$vKey], $now );
+                       if ( $value !== false ) {
+                               $result[$key] = $value;
+                               foreach ( $checkKeyTimes as $checkKeyTime ) {
+                                       // Force dependant keys to be invalid for a while after purging
+                                       // to reduce race conditions involving stale data getting cached
+                                       $safeTimestamp = $checkKeyTime + self::HOLDOFF_TTL;
+                                       if ( $safeTimestamp >= $wrappedValues[$vKey][self::FLD_TIME] ) {
+                                               $curTTL = min( $curTTL, $checkKeyTime - $now );
+                                       }
+                               }
+                       }
+
+                       $curTTLs[$key] = $curTTL;
+               }
+
+               return $result;
+       }
+
+       /**
+        * Set the value of a key from cache
+        *
+        * Simply calling this method when source data changes is not valid because
+        * the changes do not replicate to the other WAN sites. In that case, delete()
+        * should be used instead. This method is intended for use on cache misses.
+        *
+        * @param string $key Cache key
+        * @param mixed $value
+        * @param integer $ttl Seconds to live [0=forever]
+        * @return bool Success
+        */
+       final public function set( $key, $value, $ttl = 0 ) {
+               $key = self::VALUE_KEY_PREFIX . $key;
+               $wrapped = $this->wrap( $value, $ttl );
+
+               $func = function ( $cache, $key, $cWrapped ) use ( $wrapped ) {
+                       return ( is_string( $cWrapped ) )
+                               ? false // key is tombstoned; do nothing
+                               : $wrapped;
+               };
+
+               return $this->cache->merge( $key, $func, $ttl, 1 );
+       }
+
+       /**
+        * Purge a key from all clusters
+        *
+        * This instantiates a hold-off period where the key cannot be
+        * written to avoid race conditions where dependent keys get updated
+        * with a stale value (e.g. from a DB slave).
+        *
+        * This should only be called when the underlying data (being cached)
+        * changes in a significant way. If called twice on the same key, then
+        * the last TTL takes precedence.
+        *
+        * @param string $key Cache key
+        * @param integer $ttl How long to block writes to the key [seconds]
+        * @return bool True if the item was purged or not found, false on failure
+        */
+       final public function delete( $key, $ttl = self::HOLDOFF_TTL ) {
+               $key = self::VALUE_KEY_PREFIX . $key;
+               // Update the local cluster immediately
+               $ok = $this->cache->set( $key, self::PURGE_VAL_PREFIX . microtime( true ), $ttl );
+               // Publish the purge to all clusters
+               return $this->relayPurge( $key, $ttl ) && $ok;
+       }
+
+       /**
+        * Fetch the value of a timestamp "check" key
+        *
+        * @param string $key
+        * @return float|bool TS_UNIX timestamp of the key; false if not present
+        */
+       final public function getCheckKeyTime( $key ) {
+               return self::parsePurgeValue( $this->cache->get( self::TIME_KEY_PREFIX . $key ) );
+       }
+
+       /**
+        * Purge a "check" key from all clusters, invalidating keys that use it
+        *
+        * This should only be called when the underlying data (being cached)
+        * changes in a significant way, and it is impractical to call delete()
+        * on all keys that should be changed. When get() is called on those
+        * keys, the relevant "check" keys must be supplied for this to work.
+        *
+        * The "check" key essentially represents a last-modified field.
+        * It is set in the future a few seconds when this is called, to
+        * avoid race conditions where dependent keys get updated with a
+        * stale value (e.g. from a DB slave).
+        *
+        * @see WANObjectCache::get()
+        *
+        * @param string $key Cache key
+        * @return bool True if the item was purged or not found, false on failure
+        */
+       final public function touchCheckKey( $key ) {
+               $key = self::TIME_KEY_PREFIX . $key;
+               // Update the local cluster immediately
+               $ok = $this->cache->set( $key,
+                       self::PURGE_VAL_PREFIX . microtime( true ), self::CHECK_KEY_TTL );
+               // Publish the purge to all clusters
+               return $this->relayPurge( $key, self::CHECK_KEY_TTL ) && $ok;
+       }
+
+       /**
+        * Method to fetch/regenerate cache keys
+        *
+        * On cache miss, the key will be set to the callback result.
+        * The callback function returns the new value given the current
+        * value (false if not present). If false is returned, then nothing
+        * will be saved to cache.
+        *
+        * Most callers should ignore the current value, but it can be used
+        * to maintain "most recent X" values that come from time or sequence
+        * based source data, provided that the "as of" id/time is tracked.
+        *
+        * Usage of $checkKeys is the same as with get().
+        *
+        * The simplest way to avoid stampedes for hot keys is to use
+        * the 'lockTSE' option in $opts. If cache purges are needed, also:
+        *   a) Pass $key into $checkKeys
+        *   b) Use touchCheckKey( $key ) instead of delete( $key )
+        * Following this pattern lets the old cache be used until a
+        * single thread updates it as needed. Also consider tweaking
+        * the 'lowTTL' parameter.
+        *
+        * Example usage:
+        * <code>
+        *     $key = wfMemcKey( 'cat-recent-actions', $catId );
+        *     // Function that derives the new key value given the old value
+        *     $callback = function( $cValue ) { ... };
+        *     // Get the key value from cache or from source on cache miss;
+        *     // try to only let one cluster thread manage doing cache updates
+        *     $opts = array( 'lockTSE' => 5, 'lowTTL' => 10 );
+        *     $value = $cache->getWithSetCallback( $key, $callback, 60, array(), $opts );
+        * </code>
+        *
+        * Example usage:
+        * <code>
+        *     $key = wfMemcKey( 'cat-state', $catId );
+        *     // The "check" keys that represent things the value depends on;
+        *     // Calling touchCheckKey() on them invalidates "cat-state"
+        *     $checkKeys = array(
+        *         wfMemcKey( 'water-bowls', $houseId ),
+        *         wfMemcKey( 'food-bowls', $houseId ),
+        *         wfMemcKey( 'people-present', $houseId )
+        *     );
+        *     // Function that derives the new key value
+        *     $callback = function() { ... };
+        *     // Get the key value from cache or from source on cache miss;
+        *     // try to only let one cluster thread manage doing cache updates
+        *     $opts = array( 'lockTSE' => 5, 'lowTTL' => 10 );
+        *     $value = $cache->getWithSetCallback( $key, $callback, 60, $checkKeys, $opts );
+        * </code>
+        *
+        * @see WANObjectCache::get()
+        *
+        * @param string $key Cache key
+        * @param callable $callback Value generation function
+        * @param integer $ttl Seconds to live when the key is updated [0=forever]
+        * @param array $checkKeys List of "check" keys
+        * @param array $opts Options map:
+        *   - lowTTL  : consider pre-emptive updates when the current TTL (sec)
+        *               of the key is less than this. It becomes more likely
+        *               over time, becoming a certainty once the key is expired.
+        *   - lockTSE : if the key is tombstoned or expired less (by $checkKeys)
+        *               than this many seconds ago, then try to have a single
+        *               thread handle cache regeneration at any given time.
+        *               Other threads will try to use stale values if possible.
+        *   - tempTTL : when 'lockTSE' is set, this determines the TTL of the temp
+        *               key used to cache values while a key is tombstoned.
+        *               This avoids excessive regeneration of hot keys on delete() but
+        *               may result in stale values.
+        * @return mixed Value to use for the key
+        */
+       final public function getWithSetCallback(
+               $key, $callback, $ttl, array $checkKeys = array(), array $opts = array()
+       ) {
+               $lowTTL = isset( $opts['lowTTL'] ) ? $opts['lowTTL'] : min( 10, $ttl );
+               $lockTSE = isset( $opts['lockTSE'] ) ? $opts['lockTSE'] : -1;
+               $tempTTL = isset( $opts['tempTTL'] ) ? $opts['tempTTL'] : 5;
+
+               // Get the current key value
+               $curTTL = null;
+               $cValue = $this->get( $key, $curTTL, $checkKeys ); // current value
+               $value = $cValue; // return value
+
+               // Determine if a regeneration is desired
+               if ( $value !== false && $curTTL > 0 && !$this->worthRefresh( $curTTL, $lowTTL ) ) {
+                       return $value;
+               }
+
+               if ( !is_callable( $callback ) ) {
+                       throw new InvalidArgumentException( "Invalid cache miss callback provided." );
+               }
+
+               // Assume a key is hot if requested soon after invalidation
+               $isHot = ( $curTTL !== null && $curTTL <= 0 && abs( $curTTL ) <= $lockTSE );
+               $isTombstone = ( $curTTL !== null && $value === false );
+
+               $locked = false;
+               if ( $isHot || $isTombstone ) {
+                       // Acquire a cluster-local non-blocking lock
+                       if ( $this->cache->lock( $key, 0, self::LOCK_TTL ) ) {
+                               // Lock acquired; this thread should update the key
+                               $locked = true;
+                       } elseif ( $value !== false ) {
+                               // If it cannot be acquired; then the stale value can be used
+                               return $value;
+                       } else {
+                               // Either another thread has the lock or the lock failed.
+                               // Use the stash value, which is likely from the prior thread.
+                               $value = $this->cache->get( self::STASH_KEY_PREFIX . $key );
+                               // Regenerate on timeout or if the other thread failed
+                               if ( $value !== false ) {
+                                       return $value;
+                               }
+                       }
+               }
+
+               // Generate the new value from the callback...
+               $value = call_user_func( $callback, $cValue );
+               // When delete() is called, writes are write-holed by the tombstone,
+               // so use a special stash key to pass the new value around threads.
+               if ( $value !== false && ( $isHot || $isTombstone ) ) {
+                       $this->cache->set( self::STASH_KEY_PREFIX . $key, $value, $tempTTL );
+               }
+
+               if ( $locked ) {
+                       $this->cache->unlock( $key );
+               }
+
+               if ( $value !== false ) {
+                       // Update the cache; this will fail if the key is tombstoned
+                       $this->set( $key, $value, $ttl );
+               }
+
+               return $value;
+       }
+
+       /**
+        * Get the "last error" registered; clearLastError() should be called manually
+        * @return int ERR_* constant for the "last error" registry
+        */
+       final public function getLastError() {
+               if ( $this->lastRelayError ) {
+                       // If the cache and the relayer failed, focus on the later.
+                       // An update not making it to the relayer means it won't show up
+                       // in other DCs (nor will consistent re-hashing see up-to-date values).
+                       // On the other hand, if just the cache update failed, then it should
+                       // eventually be applied by the relayer.
+                       return $this->lastRelayError;
+               }
+
+               $code = $this->cache->getLastError();
+               switch ( $code ) {
+                       case BagOStuff::ERR_NONE:
+                               return self::ERR_NONE;
+                       case BagOStuff::ERR_NO_RESPONSE:
+                               return self::ERR_NO_RESPONSE;
+                       case BagOStuff::ERR_UNREACHABLE:
+                               return self::ERR_UNREACHABLE;
+                       default:
+                               return self::ERR_UNEXPECTED;
+               }
+       }
+
+       /**
+        * Clear the "last error" registry
+        */
+       final public function clearLastError() {
+               $this->cache->clearLastError();
+               $this->lastRelayError = self::ERR_NONE;
+       }
+
+       /**
+        * Do the actual async bus purge of a key
+        *
+        * This must set the key to "PURGED:<UNIX timestamp>"
+        *
+        * @param string $key Cache key
+        * @param integer $ttl How long to keep the tombstone [seconds]
+        * @return bool Success
+        */
+       protected function relayPurge( $key, $ttl ) {
+               $event = $this->cache->modifySimpleRelayEvent( array(
+                       'cmd' => 'set',
+                       'key' => $key,
+                       'val' => 'PURGED:$UNIXTIME$',
+                       'ttl' => max( $ttl, 1 ),
+                       'sbt' => true, // substitute $UNIXTIME$ with actual microtime
+               ) );
+
+               $ok = $this->relayer->notify( "{$this->pool}:purge", $event );
+               if ( !$ok ) {
+                       $this->lastRelayError = self::ERR_RELAY;
+               }
+
+               return $ok;
+       }
+
+       /**
+        * Check if a key should be regenerated (using random probability)
+        *
+        * This returns false if $curTTL >= $lowTTL. Otherwise, the chance
+        * of returning true increases steadily from 0% to 100% as the $curTTL
+        * moves from $lowTTL to 0 seconds. This handles widely varying
+        * levels of cache access traffic.
+        *
+        * @param float|INF $curTTL Approximate TTL left on the key if present
+        * @param float $lowTTL Consider a refresh when $curTTL is less than this
+        * @return bool
+        */
+       protected function worthRefresh( $curTTL, $lowTTL ) {
+               if ( $curTTL >= $lowTTL ) {
+                       return false;
+               } elseif ( $curTTL <= 0 ) {
+                       return true;
+               }
+
+               $chance = ( 1 - $curTTL / $lowTTL );
+
+               return mt_rand( 1, 1e9 ) <= 1e9 * $chance;
+       }
+
+       /**
+        * Do not use this method outside WANObjectCache
+        *
+        * @param mixed $value
+        * @param integer $ttl [0=forever]
+        * @return string
+        */
+       protected function wrap( $value, $ttl ) {
+               return array(
+                       self::FLD_VERSION => self::VERSION,
+                       self::FLD_VALUE => $value,
+                       self::FLD_TTL => $ttl,
+                       self::FLD_TIME => microtime( true )
+               );
+       }
+
+       /**
+        * Do not use this method outside WANObjectCache
+        *
+        * @param array|string|bool $wrapped
+        * @param float $now Unix Current timestamp (preferrable pre-query)
+        * @return array (mixed; false if absent/invalid, current time left)
+        */
+       protected function unwrap( $wrapped, $now ) {
+               // Check if the value is a tombstone
+               $purgeTimestamp = self::parsePurgeValue( $wrapped );
+               if ( is_float( $purgeTimestamp ) ) {
+                       // Purged values should always have a negative current $ttl
+                       $curTTL = min( -0.000001, $purgeTimestamp - $now );
+                       return array( false, $curTTL );
+               }
+
+               if ( !is_array( $wrapped ) // not found
+                       || !isset( $wrapped[self::FLD_VERSION] ) // wrong format
+                       || $wrapped[self::FLD_VERSION] !== self::VERSION // wrong version
+               ) {
+                       return array( false, null );
+               }
+
+               if ( $wrapped[self::FLD_TTL] > 0 ) {
+                       // Get the approximate time left on the key
+                       $age = $now - $wrapped[self::FLD_TIME];
+                       $curTTL = max( $wrapped[self::FLD_TTL] - $age, 0.0 );
+               } else {
+                       // Key had no TTL, so the time left is unbounded
+                       $curTTL = INF;
+               }
+
+               return array( $wrapped[self::FLD_VALUE], $curTTL );
+       }
+
+       /**
+        * @param array $keys
+        * @param string $prefix
+        * @return string
+        */
+       protected static function prefixCacheKeys( array $keys, $prefix ) {
+               $res = array();
+               foreach ( $keys as $key ) {
+                       $res[] = $prefix . $key;
+               }
+
+               return $res;
+       }
+
+       /**
+        * @param string $value String like "PURGED:<timestamp>"
+        * @return float|bool UNIX timestamp or false on failure
+        */
+       protected static function parsePurgeValue( $value ) {
+               $m = array();
+               if ( is_string( $value ) &&
+                       preg_match( '/^' . self::PURGE_VAL_PREFIX . '([^:]+)$/', $value, $m )
+               ) {
+                       return (float)$m[1];
+               } else {
+                       return false;
+               }
+       }
+}
old mode 100755 (executable)
new mode 100644 (file)
index ed16521..d1b024f 100644 (file)
@@ -520,6 +520,12 @@ abstract class ResourceLoaderModule {
 
                wfDebugLog( 'resourceloader', __METHOD__ . ": New definition for module "
                        . "{$this->getName()} in context \"{$context->getHash()}\"" );
+               // WMF logging for T94810
+               global $wgRequest;
+               if ( isset( $wgRequest ) && $context->getUser() ) {
+                       wfDebugLog( 'resourceloader', __METHOD__ . ": Request with user parameter in "
+                       . "context \"{$context->getHash()}\" from " . $wgRequest->getRequestURL() );
+               }
 
                $timestamp = time();
                $cache->set( $key, $timestamp );
index 5e2ee1c..047e941 100644 (file)
@@ -267,21 +267,24 @@ class SpecialActiveUsers extends SpecialPage {
                $out->wrapWikiMsg( "<div class='mw-activeusers-intro'>\n$1\n</div>",
                        array( 'activeusers-intro', $this->getLanguage()->formatNum( $days ) ) );
 
-               // Get the timestamp of the last cache update
+               // Mention the level of cache staleness...
                $dbr = wfGetDB( DB_SLAVE, 'recentchanges' );
-               $cTime = $dbr->selectField( 'querycache_info',
-                       'qci_timestamp',
-                       array( 'qci_type' => 'activeusers' )
-               );
-
-               $secondsOld = $cTime
-                       ? time() - wfTimestamp( TS_UNIX, $cTime )
-                       : $days * 86400; // fully stale :)
-
-               if ( $secondsOld > 0 ) {
-                       // Mention the level of staleness
-                       $out->addWikiMsg( 'cachedspecial-viewing-cached-ttl',
+               $rcMax = $dbr->selectField( 'recentchanges', 'MAX(rc_timestamp)' );
+               if ( $rcMax ) {
+                       $cTime = $dbr->selectField( 'querycache_info',
+                               'qci_timestamp',
+                               array( 'qci_type' => 'activeusers' )
+                       );
+                       if ( $cTime ) {
+                               $secondsOld = wfTimestamp( TS_UNIX, $rcMax ) - wfTimestamp( TS_UNIX, $cTime );
+                       } else {
+                               $rcMin = $dbr->selectField( 'recentchanges', 'MIN(rc_timestamp)' );
+                               $secondsOld = time() - wfTimestamp( TS_UNIX, $rcMin );
+                       }
+                       if ( $secondsOld > 0 ) {
+                               $out->addWikiMsg( 'cachedspecial-viewing-cached-ttl',
                                $this->getLanguage()->formatDuration( $secondsOld ) );
+                       }
                }
 
                $up = new ActiveUsersPager( $this->getContext(), null, $par );
index d4df1ab..fb6f0eb 100644 (file)
@@ -41,7 +41,9 @@
        'aa' => 'Qafár af',    # Afar
        'ab' => 'Аҧсшәа', # Abkhaz
        'ace' => 'Acèh',       # Aceh
-       'aeb' => 'تونسي',  # Tunisian Arabic
+       'aeb' => 'تونسي/Tûnsi',   # Tunisian Arabic (multiple scripts - defaults to Arabic)
+       'aeb-arab' => 'تونسي',     # Tunisian Arabic (Arabic Script)
+       'aeb-latn' => 'Tûnsi', # Tunisian Arabic (Latin Script)
        'af' => 'Afrikaans',    # Afrikaans
        'ak' => 'Akan',         # Akan
        'aln' => 'Gegë',       # Gheg Albanian
diff --git a/languages/i18n/aeb-arab.json b/languages/i18n/aeb-arab.json
new file mode 100644 (file)
index 0000000..721b6d6
--- /dev/null
@@ -0,0 +1,652 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Abanima",
+                       "Csisc",
+                       "Kuwaity26",
+                       "Malekbr",
+                       "아라",
+                       "Aħmedbaɛl",
+                       "GeekEmad"
+               ]
+       },
+       "tog-usenewrc": ")جمّع التعديلات حسب الصفحة في أحدث التغييرات وقائمة المراقبة (يتطلب جافاسكربت",
+       "tog-showtoolbar": "أظهر شريط التحرير (يتطلب جافاسكربت)",
+       "tog-editondblclick": "عدل الصفحات عند الضغط المزدوج (جافاسكربت)",
+       "tog-editsectiononrightclick": "فعل تعديل الأقسام بواسطة كبسة الفأرة اليمين على عناوين الأقسام (جافاسكريبت)",
+       "tog-fancysig": "عامل التوقيع كنص ويكي (بدون وصلة أوتوماتيكية)",
+       "tog-uselivepreview": "استخدم الاستعراض السريع (جافاسكريبت) (تجريبي)",
+       "tog-forceeditsummary": "نبهني عند إدخال ملخص تعديل فارغ",
+       "tog-watchlisthideown": "أخف تعديلاتي من قائمة المراقبة",
+       "tog-watchlisthidebots": "أخف تعديلات البوت من قائمة المراقبة",
+       "tog-watchlisthideminor": "أخف التعديلات الطفيفة من قائمة المراقبة",
+       "tog-watchlisthideliu": "أخف تعديلات المستخدمين المسجلين من قائمة المراقبة",
+       "tog-watchlisthideanons": "أخف تعديلات المستخدمين المجهولين من قائمة المراقبة",
+       "tog-watchlisthidepatrolled": "أخف التعديلات المراجعة من قائمة المراقبة",
+       "tog-ccmeonemails": "أرسل لي نسخا من رسائل البريد الإلكتروني التي أرسلها للمستخدمين الآخرين",
+       "tog-diffonly": "لا تعرض محتوى الصفحة أسفل الفروقات",
+       "tog-showhiddencats": "أظهر التصنيفات المخفية",
+       "tog-norollbackdiff": "أزل الفرق بعد القيام باسترجاع",
+       "underline-default": "تبعا لإعدادات المتصفح",
+       "editfont-style": "نمط خط منطقة التحرير:",
+       "editfont-default": "تبعا لإعدادات المتصفح",
+       "editfont-monospace": "خط ثابت العرض",
+       "editfont-sansserif": "خط بلا زوائد",
+       "editfont-serif": "خط بزوائد",
+       "category_header": "صفحات تصنيف \"$1\"",
+       "subcategories": "التصنيفات الفرعية",
+       "category-media-header": "الوسائط في التصنيف \"$1\"",
+       "category-empty": "''هذا التصنيف لا يحتوي حاليا على صفحات أو وسائط.''",
+       "hidden-category-category": "تصنيفات مخفية",
+       "category-subcat-count": "{{PLURAL:$2|لا تصانيف فرعية في هذا التصنيف|هذا التصنيف فيه التصنيف الفرعي التالي فقط.|هذا التصنيف فيه {{PLURAL:$1||هذا التصنيف الفرعي|هذين التصنيفين الفرعيين|هذه ال$1 تصانيف الفرعية|هذه ال$1 تصنيفا فرعيا|هذه ال$1 تصنيف فرعي}}، من إجمالي $2.}}",
+       "category-subcat-count-limited": "هذا التصنيف فيه {{PLURAL:$1||التصنيف الفرعي التالي|التصنيفين الفرعيين التاليين|$1 تصانيف فرعية تالية|$1 تصنيفا فرعيا تاليا|$1 تصنيف فرعي تالي}}.",
+       "category-article-count": "{{PLURAL:$2|لا يحتوي هذا التصنيف أي صفحات.|هذا التصنيف يحتوي على الصفحة التالية فقط.|{{PLURAL:$1||الصفحة التالية|الصفحتان التاليتان|ال$1 صفحات التالية|ال$1 صفحة التالية|ال$1 صفحة التالية}} في هذا التصنيف، من إجمالي $2.}}",
+       "category-article-count-limited": "{{PLURAL:$1||الصفحة التالية|الصفحتان التاليتان|ال$1 صفحات التالية|ال$1 صفحة التالية|ال$1 صفحة التالية}} في التصنيف الحالي.",
+       "category-file-count": "{{PLURAL:$2|لا يحتوي هذا التصنيف أي صفحات.|هذا التصنيف يحتوي على الصفحة التالية فقط.|{{PLURAL:$1||الصفحة التالية|الصفحتان التاليتان|ال$1 صفحات التالية|ال$1 صفحة التالية|ال$1 صفحة التالية}} في هذا التصنيف، من إجمالي $2.}}",
+       "category-file-count-limited": "{{PLURAL:$1|الملف التالي|الملفان التاليان|ال$1 ملفات التالية|ال$1 ملفًا تاليًا|ال$1 ملف تالٍ}} في التصنيف الحالي.",
+       "listingcontinuesabbrev": "متابعة",
+       "index-category": "صفحات مفهرسة",
+       "noindex-category": "صفحات غير مفهرسة",
+       "broken-file-category": "صفحات تحتوي وصلات ملفات معطوبة",
+       "about": "عن",
+       "article": "صفحة محتوى",
+       "newwindow": "(تفتح في نافذة جديدة)",
+       "mypage": "صفحتي",
+       "mytalk": "نقاشي",
+       "copyright": "المحتوى متوفر تحت $1.",
+       "badaccess": "خطأ في السماح",
+       "badaccess-group0": "ليس من المسموح لك تنفيذ الفعل الذي طلبته.",
+       "badaccess-groups": "الفعل الذي طلبته مقصور على المستخدمين في {{PLURAL:$2||مجموعة|واحدة من مجموعتي|واحدة من مجموعات}}: $1.",
+       "versionrequired": "تلزم نسخة $1 من ميدياويكي",
+       "versionrequiredtext": "تلزم النسخة $1 من ميدياويكي لاستعمال هذه الصفحة. انظر [[Special:Version|صفحة النسخة]]",
+       "youhavenewmessages": "توجد لديك $1 ($2).",
+       "youhavenewmessagesmulti": "لديك رسائل جديدة على $1",
+       "restorelink": "{{PLURAL:$1|$1 تعديل محذوف|تعديلا واحدا محذوفا|تعديلين محذوفين|$1 تعديلات محذوفة|$1 تعديلا محذوفا|$1 تعديلا محذوفا}}",
+       "feedlinks": "التغذية:",
+       "feed-invalid": "نوع اشتراك التلقيم غير صحيح.",
+       "feed-unavailable": "التلقيمات غير متوفرة",
+       "site-rss-feed": "$1 تلقيم أر إس إس",
+       "page-rss-feed": "\"$1\" تلقيم أر إس إس",
+       "page-atom-feed": "$1 تلقيم أتوم",
+       "sort-descending": "ترتيب تنازلي",
+       "sort-ascending": "ترتيب تصاعدي",
+       "nstab-user": "صفحة مستخدم",
+       "nstab-media": "صفحة وسيط",
+       "nstab-project": "صفحة مشروع",
+       "nstab-template": "قالب",
+       "nstab-help": "صفحة مساعدة",
+       "nstab-category": "تصنيف",
+       "nosuchaction": "لا يوجد فعل كهذا",
+       "nosuchactiontext": "الفعل المحدد بواسطة المسار غير صحيح.\nربما تكون قد كتبت المسار بطريقة غير صحيحة، أو اتبعت وصلة غير صحيحة.\nهذا ربما يشير أيضا إلى علة في {{SITENAME}}.",
+       "nosuchspecialpage": "لا توجد صفحة خاصة بهذا الاسم",
+       "nospecialpagetext": "<strong>لقد طلبت صفحة خاصة غير صحيحة.</strong>\n\nقائمة بالصفحات الخاصة الصحيحة يمكن إيجادها في [[Special:SpecialPages|{{int:specialpages}}]].",
+       "databaseerror": "خطأ في قاعدة البيانات",
+       "laggedslavemode": "'''تحذير:''' الصفحة قد لا تحتوي على أحدث التحديثات.",
+       "readonly": "قاعدة البيانات مغلقة",
+       "enterlockreason": "أدخل سببا للغلق، متضمنا تقديرا لوقت رفع الغلق",
+       "readonlytext": "قاعدة البيانات مغلقة حاليا أمام المدخلات الجديدة والتعديلات الأخرى، السبب غالبا ما يكون الصيانة، وستعود قاعدة البيانات للوضع الطبيعي قريبا.\n\nالإداري الذي أغلق قاعدة البيانات أعطى التفسير التالي: $1",
+       "missingarticle-rev": "(رقم المراجعة: $1)",
+       "missingarticle-diff": "(فرق: $1، $2)",
+       "readonly_lag": "تم إغلاق قاعدة البيانات تلقائيا حتى تستطيع الخواديم التابعة ملاحقة الخادوم الرئيسي",
+       "internalerror": "خطأ داخلي",
+       "internalerror_info": "خطأ داخلي: $1",
+       "filecopyerror": "لم يمكن نسخ الملف \"$1\" إلى \"$2\".",
+       "filerenameerror": "لم يمكن إعادة تسمية الملف \"$1\" إلى \"$2\".",
+       "filedeleteerror": "لم يمكن حذف الملف \"$1\".",
+       "directorycreateerror": "لم يمكن إنشاء المجلد \"$1\".",
+       "filenotfound": "لم يمكن إيجاد الملف \"$1\".",
+       "unexpected": "قيمة غير متوقعة: \"$1\"=\"$2\".",
+       "formerror": "خطأ: لم يمكن تنفيذ الاستمارة",
+       "badarticleerror": "لا يمكن إجراء هذا الفعل على هذه الصفحة.",
+       "cannotdelete": "تعذر حذف الصفحة أو الملف \"$1\".\nربما حذفها شحص آخر.",
+       "cannotdelete-title": "لا يمكن حذف الصفحة \"$1\"",
+       "badtitle": "عنوان سيء",
+       "badtitletext": "عنوان الصفحة المطلوب إما غير صحيح أو فارغ، وربما الوصلة بين اللغات أو بين المشاريع خاطئة.\nومن الممكن وجود رموز لا تصلح للاستخدام في العناوين.",
+       "perfcached": "البيانات التالية مختزنة وقد لا تكون محدثة. {{PLURAL:$1||نتيجة واحدة|نتيجتان|$1 نتائج|$1 نتيجة}} على الأكثر {{PLURAL:$1||مختزنة|مختزنتان|مختزنة}}.",
+       "perfcachedts": "البيانات التالية مختزنة وكان آخر تحديث لها في $1. {{PLURAL:$4||نتيجة واحدة|نتيجتان|$4 نتائج|$4 نتيجة}} على الأكثر {{PLURAL:$4||مختزنة|مختزنتان|مختزنة}}.",
+       "querypage-no-updates": "التحديثات لهذه الصفحة معطلة حاليا.\nالبيانات هنا لن يتم تحديثها حاليا.",
+       "viewsource": "اعرض المصدر",
+       "viewsource-title": "إظهار مصدر $1",
+       "actionthrottled": "لا يمكن عمل المزيد من هذا الفعل",
+       "actionthrottledtext": "كإجراء ضد السبام، أنت ممنوع من إجراء هذا الفعل عدد كبير من المرات في فترة زمنية قصيرة، ولقد تجاوزت هذا الحد.\nمن فضلك حاول مرة ثانية خلال عدة دقائق.",
+       "protectedpagetext": "هذه الصفحة تمت حمايتها لمنع التعديل.",
+       "viewsourcetext": "يمكنك رؤية ونسخ مصدر هذه الصفحة:",
+       "viewyourtext": "يمكنك رؤية ونسخ مصدر ''' تعديلاتك ''' في هذه الصفحة:",
+       "protectedinterface": "هذه الصفحة توفر نص الواجهة للبرنامج، وهي مقفلة لمنع التخريب.",
+       "editinginterface": "'''تحذير:''' أنت تقوم بتحرير صفحة تستخدم في الواجهة النصية للبرنامج.\nسوف تؤثر التغييرات على هذه الصفحة على مظهر واجهة المستخدم للمستخدمين الآخرين.\nللترجمات، من فضلك استخدم مشروع ترجمة ميدياويكي [//translatewiki.net/wiki/Main_Page?setlang=ar translatewiki.net].",
+       "cascadeprotected": "تمت حماية هذه الصفحة من التعديل لأنها مدمجة في {{PLURAL:$1||الصفحة التالية، والتي|الصفحتين التاليتين، واللتين|الصفحات التالية، والتي}} تم استعمال خاصية \"حماية الصفحات المدمجة\" {{PLURAL:$1||بها|بهما|بها}}:\n$2",
+       "namespaceprotected": "لا تمتلك الصلاحية لتعديل الصفحات في نطاق '''$1'''.",
+       "customcssprotected": "أنت لا تمتلك السماح لتعديل صفحة الCSS هذه، لأنها تحتوي على الإعدادات الشخصية لمستخدم آخر.",
+       "customjsprotected": "أنت لا تمتلك السماح لتعديل صفحة الجافاسكريبت هذه، لأنها تحتوي على الإعدادات الشخصية لمستخدم آخر.",
+       "ns-specialprotected": "الصفحات الخاصة لا يمكن تعديلها.",
+       "titleprotected": "{{GENDER:$1|حمى|حمت}} [[User:$1|$1]] هذا العنوان من الإنشاء.\nالسبب المعطى هو ''$2''.",
+       "filereadonlyerror": "تعذر تعديل الملف \"$1\" لأن مستودع الملف \"$2\" في وضع القراءة فقط. \n\nالمدير الذي قام بغلقه قدم التفسير التالي: \"$3\".",
+       "invalidtitle-knownnamespace": "عنوان غير صالح في النطاق «$2» مع نص «$3»",
+       "invalidtitle-unknownnamespace": "عنوان غير صالح ذو نطاق غير معروف رقم $1 ونص «$2»",
+       "exception-nologin": "غير مسجل الدخول",
+       "virus-badscanner": "ضبط سيء: ماسح فيروسات غير معروف: ''$1''",
+       "virus-scanfailed": "فشل المسح (كود $1)",
+       "virus-unknownscanner": "مضاد فيروسات غير معروف:",
+       "logouttext": "'''أنت الآن غير مسجل الدخول.'''\n\nتستطيع المتابعة باستعمال {{SITENAME}} كمجهول، أو <span class='plainlinks'>[$1 الدخول مرة أخرى]</span> بنفس الاسم أو باسم آخر.\nمن الممكن أن ترى بعض الصفحات كما لو أنك مسجل الدخول، وذلك حتى تقوم بإفراغ الصفحات المختزنة في المتصفح لديك.",
+       "yourname": "اسم المستخدم:",
+       "yourpassword": "كلمة السر:",
+       "yourpasswordagain": "أعد كتابة كلمة السر:",
+       "remembermypassword": "تذكر دخولي على هذا الحاسوب (إلى {{PLURAL:$1||يوم واحد|يومين|$1 أيام|$1 يومًا|$1 يوم}} كحد أقصى)",
+       "yourdomainname": "نطاقك:",
+       "externaldberror": "هناك إما خطأ في دخول قاعدة البيانات الخارجية أو أنه غير مسموح لك بتحديث حسابك الخارجي.",
+       "login": "ادخل",
+       "userlogin": "ادخل / أنشئ حسابا",
+       "userloginnocreate": "دخول",
+       "logout": "اخرج",
+       "userlogout": "خروج",
+       "notloggedin": "غير مسجل الدخول",
+       "nologin": "ألا تمتلك حسابا؟ '''$1'''.",
+       "nologinlink": "أنشئ حسابا",
+       "createaccount": "أنشئ حسابا",
+       "gotaccount": "تمتلك حسابا بالفعل؟ '''$1'''.",
+       "gotaccountlink": "ادخل",
+       "userlogin-resetlink": "أنسيت بيانات الولوج؟",
+       "createaccountmail": "بواسطة البريد الإلكتروني",
+       "createaccountreason": "السبب:",
+       "badretype": "كلمات السر التي أدخلتها لا تتطابق.",
+       "userexists": "اسم المستخدم الذي تم إدخاله مستعمل بالفعل.\nالرجاء اختيار اسم مختلف.",
+       "loginerror": "خطأ في الدخول",
+       "createaccounterror": "تعذر إنشاء حساب المستخدم: $1",
+       "nocookiesnew": "تم إنشاء حساب المستخدم، ولكنك لست مسجل الدخول بعد.\nيستخدم {{SITENAME}} كوكيز لتسجيل الدخول.\nلديك الكوكيز معطلة.\nمن فضلك فعلها، ثم سجل الدخول باسم المستخدم وكلمة السر الجديدين.",
+       "nocookieslogin": "يستخدم {{SITENAME}} الكوكيز لتسجيل الدخول.\nالكوكيز معطلة لديك.\nمن فضلك فعلها ثم حاول مرة أخرى.",
+       "nocookiesfornew": "لم يتم إنشاء حساب المستخدم، لأننا لم نستطع تأكيد مصدره. \nتأكد من أن ملفات تعريف الارتباط (الكوكيز) مفعلة عندك، ثم أعد تحميل الصفحة وحاول مرة أخرى.",
+       "noname": "لم تحدد اسم مستخدم صحيح.",
+       "loginsuccesstitle": "تم الدخول بشكل صحيح",
+       "loginsuccess": "'''لقد قمت بتسجيل الدخول ل{{SITENAME}} باسم \"$1\".'''",
+       "nosuchuser": "لا يوجد مستخدم بالاسم \"$1\".\nأسماء المستخدمين حساسة لحالة الحروف.\nتأكد من إملاء الاسم، أو [[Special:UserLogin/signup|قم بإنشاء حساب جديد]].",
+       "nosuchusershort": "لا يوجد مستخدم باسم $1\".\nتأكد من إملاء الاسم.",
+       "nouserspecified": "يجب عليك تحديد اسم مستخدم.",
+       "login-userblocked": "هذا المستخدم ممنوع. لا يسمح بالولوج.",
+       "wrongpassword": "كلمة السر التي أدخلتها غير صحيحة.\nمن فضلك حاول مرة أخرى.",
+       "wrongpasswordempty": "كلمة السر المدخلة كانت فارغة.\nمن فضلك حاول مرة أخرى.",
+       "passwordtooshort": "يجب أن تتكون كلمة السر على الأقل من {{PLURAL:$1|حرف واحد|حرفين|$1 حروف|$1 حرفا|$1 حرف}}.",
+       "password-name-match": "يجب أن تكون كلمة المرور مختلفة عن اسم المستخدم.",
+       "password-login-forbidden": "تم منع استخدام اسم المستخدم هذا وكلمة السر.",
+       "mailmypassword": "أرسل لي كلمة سر جديدة",
+       "passwordremindertitle": "كلمة سر مؤقتة جديدة ل{{SITENAME}}",
+       "passwordremindertext": "لقد طلب شخص ما (غالبا أنت، من عنوان الآيبي $1) كلمة سر جديدة ل{{SITENAME}} ($4).\nأنشئت كلمة سر مؤقتة للمستخدم \"$2\" وجعلت \"$3\".\nلو أن هذا ما تريده، فعليك أن تقوم بتسجيل الدخول واختيار كلمة سر جديدة الآن.\nسوف تنتهي مدة صلاحية كلمة سرك المؤقتة في غضون {{PLURAL:$5|أقل من يوم واحد|يوم واحد|يومين|$5 أيام|$5 يوما|$5 يوم}}.\n\nإذا كان الذي قام بهذا الطلب شخص آخر أو إذا تذكرت كلمة سرك ولا ترغب  في تغييرها، فبإمكانك أن تتجاهل هذه الرسالة وأن تستمر في استخدام كلمة سرك القديمة.",
+       "noemail": "لا يوجد عنوان بريد إلكتروني مسجل للمستخدم \"$1\".",
+       "noemailcreate": "عليك تقديم عنوان بريد إلكتروني صالح",
+       "passwordsent": "تم إرسال كلمة سر جديدة إلى عنوان البريد الإلكتروني المسجل للمستخدم \"$1\".\nمن فضلك حاول تسجيل الدخول مرة ثانية بعد استلامها.",
+       "blocked-mailpassword": "تم منع عنوان الأيبي الخاص بك من التحرير، ولمنع التخريب لا يمكنك أن تستخدم خاصية استرجاع كلمة السر.",
+       "eauthentsent": "تم إرسال رسالة تأكيد إلكترونية إلى العنوان المسمى.\nحتى ترسل أي رسالة أخرى لذلك الحساب عليك أن تتبع التعليمات الواردة في الرسالة لتأكيد أن هذا الحساب هو لك بالفعل.",
+       "throttled-mailpassword": "تم بالفعل إرسال تذكير بكلمة السر، في ال{{PLURAL:$1||ساعة الماضية|ساعتين الماضيتين|$1 ساعات الماضية|$1 ساعة الماضية}}.\nلمنع التخريب، سيتم إرسال تذكير واحد كل {{PLURAL:$1||ساعة|ساعتين|$1 ساعات|$1 ساعة}}.",
+       "mailerror": "خطأ أثناء إرسال البريد: $1",
+       "acct_creation_throttle_hit": "أنشأ زوار هذه الويكي باستخدام عنوان آيبيك {{PLURAL:$1||حسابا واحدا|حسابين|$1 حسابات|$1 حسابا|$1 حساب}} في اليوم الماضي، وهو الحد الأقصى المسموح به في هذه الفترة الزمنية.\nوكنتيجة لذلك، لن يتمكن الزوار الذين يستخدمون عنوان الأيبي هذا من إنشاء أي حسابات أخرى حاليا.",
+       "emailauthenticated": "تم تأكيد بريدك الإلكتروني في $2 الساعة $3.",
+       "emailnotauthenticated": "لم يتم التحقق من بريدك الإلكتروني.\nلن يتم إرسال رسائل لأي من الميزات التالية.",
+       "noemailprefs": "حدد عنوان بريد إلكتروني في تفضيلاتك لهذه الخصائص لتعمل.",
+       "emailconfirmlink": "أكد عنوان بريدك الإلكتروني",
+       "invalidemailaddress": "لا يمكن قبول عنوان البريد الإلكتروني حيث تبدو صيغته خاطئة.\nضع عنوانا مضبوطا أو أفرغ هذا الحقل.",
+       "cannotchangeemail": "تغيير عنوان البريد الإلكتروني لهذا الحساب غير ممكن على هذا الويكي",
+       "emaildisabled": "لا يمكن إرسال رسائل البريد الإلكتروني من هذا الموقع.",
+       "accountcreated": "تم إنشاء الحساب",
+       "accountcreatedtext": "تم إنشاء الحساب الخاص ب$1.",
+       "createaccount-title": "إنشاء حساب في {{SITENAME}}",
+       "createaccount-text": "شخص ما أنشأ حسابا لعنوان بريدك الإلكتروني في {{SITENAME}} ($4) بالاسم \"$2\"، كلمة السر \"$3\".\nينبغي عليك تسجيل الدخول وتغيير كلمة السر الخاصة بك الآن.\n\nيمكنك تجاهل هذه الرسالة، لو تم إنشاء هذا الحساب بالخطأ.",
+       "login-throttled": "لقد قمت بمحاولات دخول كثيرة جدا مؤخرا.\nمن فضلك انتظر قبل المحاولة مرة أخرى.",
+       "login-abort-generic": "لم ينجح ولوجك - إجهاض",
+       "loginlanguagelabel": "اللغة: $1",
+       "suspicious-userlogout": "رفض طلب خروجك لأنه يبدو كأنه أرسل عن طريق متصفح معطوب أو وسيط تخزين.",
+       "pt-login": "Odkul",
+       "php-mail-error-unknown": "خطأ غير معروف في وظيفة البريد PHP's mail()",
+       "user-mail-no-addy": "لقد حاولت إرسال بريد إلكتروني دون عنوان بريد إلكتروني.",
+       "resetpass_announce": "تم تسجيل دخولك بكلمة سر مؤقتة.\nللدخول بشكل نهائي، يجب عليك ضبط كلمة سر جديدة هنا:",
+       "resetpass_header": "غير كلمة سر الحساب",
+       "oldpassword": "كلمة السر القديمة:",
+       "newpassword": "كلمة السر الجديدة:",
+       "retypenew": "أعد كتابة كلمة السر الجديدة:",
+       "resetpass_submit": "ضبط كلمة السر والدخول",
+       "changepassword-success": "تم تغيير كلمة السر الخاصة بك بنجاح! يتم تسجيل دخولك الآن...",
+       "resetpass_forbidden": "كلمات السر لا يمكن تغييرها",
+       "resetpass-no-info": "يجب أن تكون مسجل الدخول للوصول إلى هذه الصفحة مباشرة.",
+       "resetpass-submit-loggedin": "تغيير كلمة السر",
+       "resetpass-wrong-oldpass": "كلمة سر حالية أو مؤقتة غير صحيحة.\nربما تكون غيرت كلمة السر الخاصة بك بنجاح أو طلبت كلمة سر مؤقتة جديدة.",
+       "resetpass-temp-password": "كلمة سر مؤقتة:",
+       "passwordreset": "إعادة ضبط كلمة السر",
+       "passwordreset-legend": "إعادة تعيين كلمة السر",
+       "passwordreset-disabled": "عُطّلت إعادة تعيين كلمة السر على هذه الويكي.",
+       "passwordreset-username": "اسم المستخدم:",
+       "passwordreset-domain": "النطاق:",
+       "passwordreset-capture": "أأعرض البريد الإلكتروني الناتج؟",
+       "passwordreset-capture-help": "إذا علّمت هذا الصندوق فسيعرض لك البريد الإلكتروني (الذي يحتوي كلمة سر مؤقتة) وسيرسل أيضا للمستخدم.",
+       "passwordreset-email": "عنوان البريد الإلكتروني:",
+       "passwordreset-emailtitle": "تفاصيل حساب {{SITENAME}}",
+       "passwordreset-emailtext-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": "ولّد بريد إلكتروني تذكيري وهو معروض بالأسفل لكن فشل إرساله للمستخدم: $1",
+       "changeemail": "تغيير عنوان البريد الإلكتروني",
+       "changeemail-text": "أكمل هذا النموذج لتغيير عنوان البريد الإلكتروني. سوف تحتاج إلى إدخال كلمة السر الخاصة بك لتأكيد هذا التغيير.",
+       "changeemail-no-info": "يجب تسجيل الدخول للوصول إلى هذه الصفحة مباشرة.",
+       "changeemail-oldemail": "عنوان البريد الإلكتروني الحالي:",
+       "changeemail-newemail": "عنوان البريد الإلكتروني الجديد:",
+       "changeemail-none": "(لا شيء)",
+       "changeemail-submit": "غيّر البريد الإلكتروني",
+       "bold_sample": "نص غليظ",
+       "bold_tip": "نص غليظ",
+       "italic_sample": "نص مائل",
+       "italic_tip": "نص مائل",
+       "link_sample": "عنوان وصلة",
+       "link_tip": "وصلة داخلية",
+       "extlink_sample": "http://www.example.com عنوان الوصلة",
+       "extlink_tip": "وصلة خارجية (تذكر بادئة http://)",
+       "headline_sample": "نص عنوان رئيسي",
+       "headline_tip": "عنوان من المستوى الثاني",
+       "nowiki_sample": "أدخل النص غير المنسق هنا",
+       "nowiki_tip": "أهمل تهيئة الويكي",
+       "image_tip": "ملف مدرج",
+       "media_tip": "وصلة ملف",
+       "sig_tip": "توقيعك مع الساعة والتاريخ",
+       "hr_tip": "خط أفقي (تجنب الاستخدام بكثرة)",
+       "summary": "ملخص:",
+       "subject": "موضوع/عنوان:",
+       "minoredit": "هذا تعديل طفيف",
+       "watchthis": "راقب هذه الصفحة",
+       "savearticle": "احفظ الصفحة",
+       "preview": "معاينة",
+       "showpreview": "أظهر معاينة",
+       "showdiff": "أظهر التغييرات",
+       "anoneditwarning": "'''تحذير:''' لم تقم بالدخول.\nسيسجل عنوان الآيبي خاصتك في تاريخ هذه الصفحة.",
+       "anonpreviewwarning": "''أنت غير مسجل الدخول. الحفظ سيسجل عنوان الأيبي الخاص بك في تاريخ هذه الصفحة.''",
+       "missingsummary": "'''تنبيه:''' لم تقم بكتابة ملخص للتعديل.\nإذا قمت بضغط حفظ الصفحة مرة أخرى، فيتم حفظ تعديلك بدون ملخص.",
+       "missingcommenttext": "من فضلك أدخل تعليقا في الأسفل.",
+       "missingcommentheader": "'''تنبيه:''' لم تقم بوضع موضوع/عنوان لهذا التعليق.\nإذا قمت بالضغط على \"{{int:savearticle}}\" مجددا، سيتم حفظ تعليقك بدون عنوان.",
+       "summary-preview": "معاينة الملخص:",
+       "subject-preview": "معاينة للموضوع/العنوان:",
+       "blockedtitle": "المستخدم ممنوع",
+       "blockedtext": "'''اسم المستخدم أو عنوان الأيبي الخاص بك تم منعه.'''\n\nقام بالمنع $1.\nسبب المنع هو: ''$2''.\n\n* بداية المنع: $8\n* انتهاء المنع: $6\n* الممنوع المقصود: $7\n\nيمكنك الاتصال ب$1 أو مع أحد [[{{MediaWiki:Grouppage-sysop}}|الإداريين]] للنقاش حول المنع.\nلا يمكنك استخدام خاصية 'مراسلة هذا المستخدم' إلا إذا كنت قد وضعت عنوان بريدي صحيح في [[Special:Preferences|تفضيلات حسابك]] ولم يتم منعك من استخدامها.\nعنوان الأيبي الخاص بك حاليا هو $3، ورقم المنع هو #$5.\nمن فضلك اذكر كل التفاصيل بالأعلى في أي استعلامات تقوم بها.",
+       "autoblockedtext": "تم منع عنوان آيبيك تلقائيا لأن مستخدما آخرا ممنوعا بواسطة $1 استخدمه.\nالسبب الممنوح هو التالي:\n\n:''$2''\n\n* بداية المنع: $8\n* انتهاء المنع: $6\n* الممنوع المقصود: $7\n\nيمكنك أن تتصل ب $1 أو أحد [[{{MediaWiki:Grouppage-sysop}}|الإداريين]] الآخرين لمناقشة المنع.\n\nلاحظ أنه لا يمكنك استخدام خاصية \"إرسال رسالة لهذا المستخدم\" إلا لو كان لديك عنوان بريد إلكتروني صحيح مسجل في [[Special:Preferences|تفضيلاتك]] ولم يتم منعك من استخدامه.\n\nعنوان آيبيك الحالي $3، ورقم المنع #$5.\nمن فضلك اذكر كل التفاصيل بالأعلى في أي استعلامات تقوم بها.",
+       "blockednoreason": "لا سبب معطى",
+       "whitelistedittext": "يجب عليك $1 لتتمكن من تعديل الصفحات.",
+       "confirmedittext": "يجب عليك تأكيد بريدك الإلكتروني قبل تعديل الصفحات.\nمن فضلك اكتب وأكد بريدك الإلكتروني من خلال [[Special:Preferences|تفضيلاتك]].",
+       "nosuchsectiontitle": "تعذر إيجاد القسم",
+       "nosuchsectiontext": "لقد حاولت تحرير قسم غير موجود.\nربما يكون قد تم نقله أو حذفه أثناء مشاهدتك للصفحة.",
+       "loginreqtitle": "تسجيل الدخول مطلوب",
+       "loginreqlink": "الولوج",
+       "loginreqpagetext": "يجب عليك $1 لتشاهد صفحات أخرى.",
+       "accmailtitle": "تم إرسال كلمة السر.",
+       "accmailtext": "كلمة سر مولدة عشوائيا ل [[User talk:$1|$1]] تم إرسالها إلى $2.\n\nكلمة السر لهذا الحساب الجديد يمكن تغييرها في صفحة ''[[Special:ChangePassword|تغيير كلمة السر]]'' عند تسجيل الدخول.",
+       "newarticle": "(جديد)",
+       "newarticletext": "لقد تبعت وصلة لصفحة لم يتم إنشائها بعد.\nلإنشاء هذه الصفحة ابدأ الكتابة في الصندوق بالأسفل (انظر في [$1 صفحة المساعدة] للمزيد من المعلومات).\nإذا كانت زيارتك لهذه الصفحة بالخطأ، اضغط على زر ''رجوع'' في متصفح الإنترنت لديك.",
+       "anontalkpagetext": "----''هذه صفحة نقاش لمستخدم مجهول لم يقم بإنشاء حساب بعد أو لا يستعمل ذلك الحساب.\nلذا فيجب علينا استعمال رقم الأيبي للتعرف عليه/عليها.\nمثل هذا العنوان يمكن أن يشترك فيه عدة مستخدمين.\nلو كنت مستخدما مجهولا وتشعر بأن تعليقات لا تخصك تم توجيهها إليك، من فضلك [[Special:UserLogin/signup|أنشئ حسابا]] أو [[Special:UserLogin|سجل الدخول]] لتجنب الارتباك المستقبلي مع مستخدمين مجهولين آخرين.''",
+       "noarticletext-nopermission": "لا يوجد حاليا أي نص في هذه الصفحة.يمكنك [[Special:Search/{{PAGENAME}}|البحث عن عنوان هذه الصفحة]] في الصفحات الأخرى,أو <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} بحث السجلات المتصلة]</span>.",
+       "userpage-userdoesnotexist": "حساب المستخدم \"<nowiki>$1</nowiki>\" غير مسجل.\nمن فضلك تأكد أنك تريد إنشاء/تعديل هذه الصفحة.",
+       "userpage-userdoesnotexist-view": "حساب المستخدم \"$1\" غير مسجل.",
+       "blocked-notice-logextract": "هذا المستخدم ممنوع حاليا.\nآخر مدخلة في سجل المنع موفرة بالأسفل كمرجع:",
+       "clearyourcache": "'''ملاحظة:''' بعد الحفظ, أنت ربما تحتاج إلى إفراغ كاش متصفحك لرؤية التغييرات.\n* '''فيرفكس / سفاري:''' اضغط ''Shift'' أثناء ضغط ''Reload'', أو اضغط أيا من ''Ctrl-F5'' أو ''Ctrl-R'' (''⌘-R'' على ماك)\n* '''جوجل كروم:''' اضغط ''Ctrl-Shift-R'' (''⌘-Shift-R'' على ماك)\n* '''إنترنت إكسبلورر:''' اضغط ''Ctrl'' أثناء ضغط ''Refresh''، أو اضغط ''Ctrl-F5''\n* '''كنكرر:''' اضغط ''Reload'' أو اضغط ''F5''\n* '''أوبرا:''' أفرغ الكاش في ''Tools → Preferences''",
+       "usercssyoucanpreview": "'''ملاحظة:''' استعمل زر \"{{int:showpreview}}\" لتجربة CSS الجديد قبل حفظ الصفحة.",
+       "userjsyoucanpreview": "'''ملاحظة:''' استعمل زر \"{{int:showpreview}}\" لتجربة جافاسكربت الجديدة قبل حفظ الصفحة.",
+       "usercsspreview": "'''تذكر أنك تقوم بعرض الأنماط المتراصة (CSS) الخاصة بك فقط\nلم يتم حفظها بعد!'''",
+       "userjspreview": "'''تذكر أنك فقط تجرب/تعاين جافاسكربت.'''\n'''لم يتم الحفظ بعد!'''",
+       "sitecsspreview": "''' تذكر أنك فقط في وضع المعاينة لهذا CSS ''' \n''' ولم يتم حفظ الصفحة بعد! '''",
+       "sitejspreview": "''' تذكر أنك فقط في وضع المعاينة لكود JavaScript هذا''' \n''' ولم يتم حفظه بعد! '''",
+       "userinvalidcssjstitle": "'''تحذير:''' لا توجد واجهة  \"$1\".\nتذكر أن ملفات ال.css و ال.js تستخدم حروف صغيرة في العنوان ، كمثال {{ns:user}}:Foo/vector.css و ليس {{ns:user}}:Foo/Vector.css.",
+       "updated": "(محدثة)",
+       "note": "'''ملاحظة:'''",
+       "previewnote": "'''تذكر أن هذه مجرد معاينة أولية.'''\nلم تحفظ تغييراتك إلى الآن!",
+       "continue-editing": "أكمل التحرير",
+       "previewconflict": "هذا العرض يوضح النص الموجود في صندوق التحرير العلوي والذي سيظهر إذا اخترت الحفظ.",
+       "session_fail_preview": "'''عذرا! لم نتمكن من حفظ التعديلات التي قمت بها نتيجة لضياع بيانات هذه الجلسة.\nمن فضلك حاول مرة أخرى.\nفي حال استمرار المشكلة حاول أن تقوم [[Special:UserLogout|بالخروج]] ومن ثم الولوج مرة أخرى.'''",
+       "session_fail_preview_html": "'''عذرا! لم نستطع معالجة تعديلك بسبب فقدان بيانات الجلسة.'''\n\n''لأن {{SITENAME}} بها HTML الخام مفعلة، العرض المسبق مخفي كاحتياط ضد هجمات الجافا سكريبت.''\n\n'''إذا كانت هذه محاولة تعديل صادقة، من فضلك حاول مرة أخرى.\nإذا كانت مازالت لا تعمل، حاول [[Special:UserLogout|تسجيل الخروج]] ثم تسجيل الدخول مجددا.'''",
+       "token_suffix_mismatch": "'''تعديلك تم رفضه لأن عميلك أخطأ في علامات الترقيم\nفي نص التعديل. تم رفض التعديل لمنع فساد نص المقالة.\nهذا يحدث أحيانا عندما تستخدم خدمة بروكسي مجهول معيبة مبنية على الوب.'''",
+       "edit_form_incomplete": "'''بعض أجزاء من نموذج التعديل لم تصل إلى الخادم؛ تأكد من أن تعديلاتك لم تمس وحاول مجددا.'''",
+       "editing": "تحرير $1",
+       "creating": "إنشاء «$1»",
+       "editingsection": "تحرير $1 (قسم)",
+       "editingcomment": "تعديل $1 (قسم جديد)",
+       "editconflict": "تضارب في التحرير: $1",
+       "explainconflict": "لقد عدل شخص آخر هذه الصفحة بعد أن بدأت أنت بتحريرها.\nصندوق النصوص العلوي يحتوي على النص الموجود حاليا في الصفحة.\nوالتغييرات التي قمت أنت بها موجودة في الصندوق في أسفل الصفحة.\nيجب أن تقوم بدمج تغييراتك في النص الموجود حاليا.\n'''فقط''' ما هو موجود في الصندوق العلوي هو ما سيتم حفظه عند الضغط على زر \"حفظ الصفحة\".",
+       "yourtext": "نصك",
+       "storedversion": "النسخة المخزنة",
+       "nonunicodebrowser": "'''تحذير: متصفحك لا يتوافق مع الترميز الموحد.\nتمت معالجة هذا لكي تتمكن من تحرير الصفحات بأمان: الحروف التي ليست ASCII سوف تظهر في صندوق التحرير كأكواد سداسي عشرية.'''",
+       "editingold": "''' تحذير: أنت تقوم الآن بتحرير نسخة قديمة من هذه الصفحة.\nإذا قمت بحفظها، ستفقد كافة التغييرات التي حدثت بعد هذه النسخة. '''",
+       "yourdiff": "الفروق",
+       "copyrightwarning": "من فضلك لاحظ أن جميع المساهمات ل {{SITENAME}} خاضعة وصادرة تحت ترخيص $2 (انظر في $1 للمزيد من التفاصيل)\nإذا لم ترد أن تخضع كتابتك للتعديل والتوزيع الحر، لا تضعها هنا<br />.\nكما أنك تتعهد بأنك قمت بكتابة ما هو موجود بنفسك، أو قمت بنسخها من مصدر يخضع ضمن الملكية العامة، أو مصدر حر آخر.\n'''لا ترسل أي عمل ذي حقوق محفوظة بدون الإذن من صاحب الحق'''.",
+       "copyrightwarning2": "من فضلك لاحظ أن جميع المساهمات في {{SITENAME}} يمكن أن تعدل أو تتغير أو تزال من قبل المساهمين الآخرين.\nإذا لم تكن ترغب أن تعدل مشاركاتك بهذا الشكل، لا تضعها هنا.<br />\nأنت تقر أيضا أنك كتبت هذا بنفسك، أو نسخته من مصدر يخضع للملكية العامة، أو مصدر حر آخر (انظر $1 للتفاصيل).\n'''لا تضف أي عمل ذي حقوق محفوظة بدون تصريح!'''",
+       "longpageerror": "'''خطأ: النص الذي قمت بإدخاله {{PLURAL:$1|واحد كيلوبايت|$1 كيلوبيات}} أطول, وهو أطول من الحد الأقصى {{PLURAL:$2|واحد كيلوبايت|$2 كيلوبايت}}.'''\nو يتعذر حفظه.",
+       "readonlywarning": "'''تحذير: لقد أغلقت قاعدة البيانات للصيانة، لذلك لن تتمكن من حفظ التعديلات التي قمت بها حاليا.\nإذا رغبت بإمكانك أن تنسخ النص الذي تعمل عليه وتحفظه في ملف نصي إلى وقت لاحق.'''\n\nالإداري الذي أغلقها أعطى هذا التفسير: $1",
+       "protectedpagewarning": "'''تحذير: تمت حماية هذه الصفحة حتى يمكن للمستخدمين ذوي الصلاحيات الإدارية فقط تعديلها.'''\nآخر مدخلة سجل موفرة بالأسفل كمرجع:",
+       "semiprotectedpagewarning": "'''ملاحظة:''' تمت حماية هذه الصفحة بحيث يمكن للمستخدمين المسجلين فقط تعديلها.\nآخر مدخلة سجل موفرة بالأسفل كمرجع:",
+       "cascadeprotectedwarning": "'''تحذير:''' تمت حماية هذه الصفحة بحيث يستطيع المستخدمون ذوو الصلاحيات الإدارية فقط تعديلها، وذلك لأنها مدمجة في {{PLURAL:$1||الصفحة التالية والتي تمت حمايتها|الصفحتين التاليتين واللتين تمت حمايتها|الصفحات التالية والتي تمت حمايتها}} بخاصية \"حماية الصفحات المدمجة\":",
+       "titleprotectedwarning": "'''تحذير:  هذه الصفحة تمت حمايتها بحيث أن [[Special:ListGroupRights|صلاحيات معينة]] مطلوبة لإنشائها.'''\nآخر مدخلة سجل موفرة بالأسفل كمرجع:",
+       "templatesused": "{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه الصفحة:",
+       "templatesusedpreview": "{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه المعاينة:",
+       "templatesusedsection": "{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذا القسم:",
+       "template-semiprotected": "(حماية جزئية)",
+       "hiddencategories": "{{PLURAL:$1|هذه الصفحة غير موجودة في أي تصنايف مخفية|هذه الصفحة موجودة في تصنيف مخفي واحد|هذه الصفحة موجودة في تصنيفين مخفيين|هذه الصفحة موجودة في $1 تصانيف مخفية|هذه الصفحة موجودة في $1 تصنيفا مخفيا|هذه الصفحة موجودة في $1 تصنيف مخفي}}:",
+       "nocreatetext": "قام {{SITENAME}} بتحديد القدرة على إنشاء صفحات جديدة.\nيمكنك العودة وتحرير صفحة موجودة بالفعل، أو [[Special:UserLogin|الدخول أو تسجيل حساب]].",
+       "nocreate-loggedin": "أنت لا تمتلك الصلاحية لإنشاء صفحات جديدة.",
+       "sectioneditnotsupported-title": "تعديل الأقسام غير مدعوم",
+       "sectioneditnotsupported-text": "تعديل الأقسام غير مدعوم في هذه الصفحة",
+       "permissionserrors": "أخطاء السماحات",
+       "permissionserrorstext": "لا تمتلك الصلاحية لفعل هذا، {{PLURAL:$1||للسبب التالي|للسببين التاليين|للأسباب التالية}}:",
+       "permissionserrorstext-withaction": "لا تملك الصلاحيات ل$2، لل{{PLURAL:$1||سبب التالي|سببين التاليين|أسباب التالية}}:",
+       "recreate-moveddeleted-warn": "'''تحذير: أنت تقوم بإعادة إنشاء صفحة سبق حذفها.'''\n\nيجب عليك التيقن من أن الاستمرار بتحرير هذه الصفحة ملائم.\nسجلا الحذف والنقل لهذه الصفحة معروضان هنا للتيسير:",
+       "moveddeleted-notice": "هذه الصفحة تم حذفها.\nسجلا الحذف والنقل للصفحة معروضان بالأسفل كمرجع.",
+       "log-fulllog": "أظهر السجل الكامل",
+       "edit-hook-aborted": "التعديل تم تركه بواسطة الخطاف.\nلم يعط تفسيرا.",
+       "edit-gone-missing": "لم يمكن تحديث الصفحة.\nيبدو أنه تم حذفها.",
+       "edit-conflict": "تضارب تحريري.",
+       "edit-no-change": "تعديلك تم تجاهله، لأنه لم يحدث أي تعديل للنص.",
+       "edit-already-exists": "لم يمكن إنشاء صفحة جديدة.\nهي موجودة بالفعل.",
+       "defaultmessagetext": "نص الرسالة الافتراضي",
+       "expensive-parserfunction-warning": "'''تحذير:''' هذه الصفحة تحتوي على استدعاءات دالة محلل كثيرة مكلفة.\n\nينبغي أن تكون أقل من {{PLURAL:$2||استدعاء واحد|استدعاءين|$2 استدعاءات|$2 استدعاء}}، يوجد الآن {{PLURAL:$1|استدعاء واحد|استدعاءان|$2 استدعاءات|$2 استدعاء}}.",
+       "expensive-parserfunction-category": "صفحات يوجد بها استدعاءات دوال محلل كثيرة ومكلفة",
+       "post-expand-template-inclusion-warning": "'''تحذير:''' حجم تضمين القالب كبير جدا.\nبعض القوالب لن تضمن.",
+       "post-expand-template-inclusion-category": "الصفحات حيث تم تجاوز حجم تضمين القالب",
+       "post-expand-template-argument-warning": "'''تحذير:''' هذه الصفحة تحتوي على عامل قالب واحد على الأقل له حجم تمدد كبير جدا.\nهذه العوامل تم حذفها.",
+       "post-expand-template-argument-category": "صفحات تحتوي مدخلات القالب المحذوفة",
+       "parser-template-loop-warning": "تم كشف حلقة قالب: [[$1]]",
+       "parser-template-recursion-depth-warning": "تم تجاوز حد عمق فرد القوالب ($1)",
+       "language-converter-depth-warning": "تم تخطي حد عمق محول اللغة ($1)",
+       "node-count-exceeded-category": "الصفحات التي حدث فيها تجاوز تعداد العقد",
+       "node-count-exceeded-warning": "تجاوزت هذه الصفحة تعداد العقد",
+       "expansion-depth-exceeded-category": "الصفحات التي حدث فيها تجاوز عمق التوسيع",
+       "expansion-depth-exceeded-warning": "الصفحة تجاوزت عمق التوسيع",
+       "parser-unstrip-loop-warning": "حلقة معراة تم الكشف عنها",
+       "parser-unstrip-recursion-limit": "تعدى حد العودية Unstrip  ($1)",
+       "undo-success": "يمكن استرجاع التعديل.\nمن فضلك تحقق من المقارنة بالأسفل للتأكد من أن هذا هو ما تريد أن تفعله، وبعد ذلك احفظ التغييرات بالأسفل للانتهاء من استرجاع التعديل.",
+       "undo-failure": "لم يمكن استرجاع التعديل بسبب تعديلات متعارضة تمت على الصفحة.",
+       "undo-norev": "فشل في الرجوع عن التعديل حيث أنه غير موجود أو تم حذفه.",
+       "undo-summary": "الرجوع عن التعديل $1 بواسطة [[Special:Contributions/$2|$2]] ([[User talk:$2|نقاش]])",
+       "cantcreateaccounttitle": "لا يمكن إنشاء حساب",
+       "cantcreateaccount-text": "إنشاء الحسابات من عنوان الأيبي هذا ('''$1''') تم منعه بواسطة [[User:$3|$3]].\n\nالسبب المعطى بواسطة $3 هو ''$2''",
+       "viewpagelogs": "اعرض سجلات هذه الصفحة",
+       "nohistory": "لا يوجد تاريخ للتعديلات لهذه الصفحة.",
+       "currentrev": "المراجعة الحالية",
+       "currentrev-asof": "المراجعة الحالية بتاريخ $1",
+       "revision-info": "مراجعة $1 بواسطة $2",
+       "previousrevision": "→ مراجعة أقدم",
+       "nextrevision": "مراجعة أحدث ←",
+       "currentrevisionlink": "المراجعة الحالية",
+       "cur": "الحالي",
+       "next": "التالي",
+       "last": "السابق",
+       "page_first": "الأولى",
+       "page_last": "الأخيرة",
+       "histlegend": "اختيار الفرق: علم على صناديق النسخ للمقارنة واضغط قارن بين النسخ المختارة أو الزر بالأسفل.<br />\nمفتاح: (الحالي) = الفرق مع النسخة الحالية\n(السابق) = الفرق مع النسخة السابقة، ط = تغيير طفيف",
+       "history-fieldset-title": "تصفح التاريخ",
+       "history-show-deleted": "المحذوفة فقط",
+       "histfirst": "أول",
+       "histlast": "آخر",
+       "historysize": "({{PLURAL:$1|1 بايت|$1 بايت}})",
+       "historyempty": "(فارغ)",
+       "history-feed-title": "تاريخ المراجعة",
+       "history-feed-description": "تاريخ التعديل لهذه الصفحة في الويكي",
+       "history-feed-item-nocomment": "$1 في $2",
+       "history-feed-empty": "الصفحة المطلوبة غير موجودة.\nمن المحتمل أن تكون هذه الصفحة قد حذفت من الويكي، أو نقلت.\nحاول [[Special:Search|البحث في الويكي]] عن صفحات جديدة ذات صلة.",
+       "rev-deleted-comment": "(أزيل ملخص التعديل)",
+       "rev-deleted-user": "(اسم المستخدم تمت إزالته)",
+       "rev-deleted-event": "(فعل السجل تمت إزالته)",
+       "rev-deleted-user-contribs": "[اسم المستخدم أو عنوان الأيبي تمت إزالته - التعديل مخفي من المساهمات]",
+       "rev-deleted-text-permission": "'''حُذِفت''' مراجعة هذه الصفحة.\nيمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
+       "rev-deleted-text-unhide": "'''حُذِفت''' مراجعة الصفحة هذه.\nيمكن العثور على تفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].\nمازال بإمكانك [$1 رؤية هذه المراجعة] إذا أردت المتابعة.",
+       "rev-suppressed-text-unhide": "'''أُخفيت''' مراجعة الصفحة هذه.\nيمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الإخفاء].\nبإمكانك [$1 رؤية هذه المراجعة] إذا أردت المتابعة.",
+       "rev-deleted-text-view": "'''حُذِفت''' مراجعة هذه الصفحة.\nيمكنك رؤيتها؛ ويمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
+       "rev-suppressed-text-view": "'''أُخفيت''' مراجعة الصفحة هذه.\nيمكنك رؤيتها؛ ويمكنك العثور على التفاصيل في  [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الإخفاء].",
+       "rev-deleted-no-diff": "لا يمكنك رؤية هذا الفرق لأن إحدى المراجعات '''حُذِفت'''.\nيمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
+       "rev-suppressed-no-diff": "ليس بإمكانك مشاهدة هذا الفرق لأن إحدى المراجعات '''حذفت'''.",
+       "rev-deleted-unhide-diff": "'''حُذِفت''' إحدى مراجعتي هذا الفرق.\nيمكن العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].\nبإمكانك [$1 رؤية هذا الفرق] إذا أردت المتابعة.",
+       "rev-suppressed-unhide-diff": "'''أُخفيت''' إحدى مراجعتي هذا الفرق.\nيمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الإخفاء].\nبإمكانك [$1 رؤية هذا الفرق] إذا أردت المتابعة.",
+       "rev-deleted-diff-view": "'''حُذِفت''' إحدى مراجعتي هذا الفرق.\nيمكنك رؤية الفرق؛ ويمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
+       "rev-suppressed-diff-view": "'''أُخفيت''' إحدى مراجعتي هذا الفرق.\nيمكنك رؤية هذا الفرق؛ ويمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الإخفاء].",
+       "rev-delundel": "أظهر/أخف",
+       "rev-showdeleted": "أظهر",
+       "revisiondelete": "حذف/استرجاع المراجعات",
+       "revdelete-nooldid-title": "مراجعة هدف غير صحيحة",
+       "revdelete-nooldid-text": "إما أنك لم تحدد مراجعة (أو مراجعات) معينة هدفا لهذه الوظيفة، أو أن المراجعة المحددة غير موجودة، أو أنك تحاول إخفاء المراجعة الحالية.",
+       "revdelete-no-file": "الملف المحدد غير موجود.",
+       "revdelete-show-file-confirm": "هل أنت متأكد أنك تريد رؤية مراجعة محذوفة للملف \"<nowiki>$1</nowiki>\" بتاريخ $2 الساعة $3؟",
+       "revdelete-show-file-submit": "نعم",
+       "logdelete-selected": "{{PLURAL:$1|حدث السجل المختار|أحداث السجل المختارة}}:",
+       "revdelete-confirm": "الإداريون الآخرون في {{SITENAME}} سيظل بإمكانهم رؤية المحتوى المخفي ويمكنهم استرجاعه مجددا من خلال هذه الواجهة نفسها، مالم يتم وضع قيود إضافية.\nمن فضلك أكد أنك تنوي فعل هذا، وأنك تفهم العواقب، وأنك تفعل هذا بالتوافق مع [[{{MediaWiki:Policy-url}}|السياسة]].",
+       "revdelete-suppress-text": "الإخفاء ينبغي أن يتم استخدامه '''فقط''' في الحالات التالية:\n* معلومات شخصية غير ملائمة\n*: ''عناوين المنازل وأرقام التليفونات، أرقام الضمان الاجتماعي، إلى آخره.''",
+       "revdelete-legend": "وضع ضوابط رؤية",
+       "revdelete-hide-text": "أخف نص المراجعة",
+       "revdelete-hide-image": "أخف محتوى الملف",
+       "revdelete-hide-name": "أخف الفعل والهدف",
+       "revdelete-hide-comment": "أخف تعليق التعديل",
+       "revdelete-hide-user": "أخف اسم/آيبي المستخدم",
+       "revdelete-hide-restricted": "أخف البيانات عن الإداريين إضافة إلى الآخرين",
+       "revdelete-radio-same": "(لا تغير)",
+       "revdelete-radio-set": "نعم",
+       "revdelete-radio-unset": "لا",
+       "revdelete-suppress": "أخف البيانات عن مديري النظام والبقية",
+       "revdelete-unsuppress": "إزالة الضوابط من المراجعات المسترجعة",
+       "revdelete-log": "السبب:",
+       "revdelete-submit": "طبق على {{PLURAL:$1||المراجعة المختارة|المراجعتين المختارتين|المراجعات المختارة}}",
+       "revdelete-success": "'''تم تحديث رؤية المراجعات بنجاح.'''",
+       "revdelete-failure": "'''تعذر تحديث رؤية المراجعة:'''\n$1",
+       "logdelete-success": "'''تم ضبط رؤية السجلات بنجاح.'''",
+       "logdelete-failure": "'''تعذر ضبط رؤية السجل:'''\n$1",
+       "revdel-restore": "تغيير الرؤية",
+       "pagehist": "تاريخ صفحة",
+       "deletedhist": "التاريخ المحذوف",
+       "revdelete-hide-current": "خطأ عند إحفاء العنصر المؤرخ في $2 $1: هذه هي المراجعة الحالية.\nلا يمكن إخفاؤها.",
+       "revdelete-show-no-access": "خطأ في إظهار العنصر ذا التاريخ $2 $1: هذا العنصر معلم ك\"مقيد\".\nليس لك صلاحية الوصول إليه.",
+       "revdelete-modify-no-access": "خطأ في تعديل العنصر ذا التاريخ $2 $1: هذا العنصر معلم ك\"مقيد\".\nليس لك صلاحية الوصول إليه.",
+       "revdelete-modify-missing": "خطأ في تعديل العنصر ذا الهوية $1: العنصر مفقود من قاعدة البيانات!",
+       "revdelete-no-change": "'''تحذير:''' العنصر ذو التاريخ $2 $1 لديه أصلا إعدادات الظهور المطلوبة.",
+       "revdelete-concurrent-change": "خطأ في تعديل العنصر ذي التاريخ $2 $1: تظهر حالته أن شخصا آخر عدله أثناء محاولتك تعديله.\nمن فضلك راجع السجلات.",
+       "revdelete-only-restricted": "خطأ إخفاء العنصر المؤرخ $2, $1: لا تستطيع تنحية العناصر من عرض الإداريين بدون أن تحدد أيضا إحدى خيارات التنحية الأخرى.",
+       "revdelete-reason-dropdown": "* أسباب حذف عامة\n** خرق لحقوق النشر\n** معلومات شخصية غير ملائمة\n**معلومات تشهيرية محتملة",
+       "revdelete-otherreason": "سبب آخر/إضافي:",
+       "revdelete-reasonotherlist": "سبب آخر",
+       "revdelete-edit-reasonlist": "عدل أسباب الحذف",
+       "revdelete-offender": "مؤلف المراجعة:",
+       "suppressionlog": "سجل الإخفاء",
+       "suppressionlogtext": "بالأسفل قائمة بعمليات الحذف والمنع التي تتضمن محتوى مخفيا عن الإداريين.\nانظر [[Special:BlockList|قائمة منع الآيبي]] لترى عمليات المنع القائمة الآن.",
+       "mergehistory": "دمج تواريخ الصفحة",
+       "mergehistory-header": "هذه الصفحة تسمح لك بدمج نسخ تاريخ صفحة ما إلى صفحة أخرى.\nتأكد من أن هذا التغيير سيحافظ على استمرار تاريخ الصفحة.",
+       "mergehistory-box": "دمج مراجعات صفحتين:",
+       "mergehistory-from": "الصفحة المصدر:",
+       "mergehistory-into": "الصفحة الهدف:",
+       "mergehistory-list": "تاريخ التعديل القابل للدمج",
+       "mergehistory-merge": "المراجعات التالية من [[:$1]] يمكن دمجها إلى [[:$2]].\nاستخدم عامود الصناديق لدمج المراجعات التي تم إنشاؤها في وقبل الوقت المحدد.\nلاحظ أن استخدام وصلات التصفح سيعيد ضبط هذا العامود.",
+       "mergehistory-go": "عرض التعديلات القابلة للدمج",
+       "mergehistory-submit": "دمج المراجعات",
+       "mergehistory-empty": "لا مراجعات يمكن دمجها.",
+       "mergehistory-success": "$3 {{PLURAL:$3|مراجعة|مراجعة}} من [[:$1]] تم دمجها بنجاح في [[:$2]].",
+       "mergehistory-fail": "غير قادر على عمل دمج التاريخ، من فضلك أعد التحقق من محددات الصفحة والزمن.",
+       "mergehistory-no-source": "الصفحة المصدر $1 غير موجودة.",
+       "mergehistory-no-destination": "الصفحة الهدف $1 غير موجودة.",
+       "mergehistory-invalid-source": "الصفحة المصدر يجب أن تكون عنوانا صحيحا.",
+       "mergehistory-invalid-destination": "الصفحة الهدف يجب أن تكون عنوانا صحيحا.",
+       "mergehistory-autocomment": "دمج [[:$1]] في [[:$2]]",
+       "mergehistory-comment": "دمج [[:$1]] في [[:$2]]: $3",
+       "mergehistory-same-destination": "صفحتا المصدر والهدف لا يمكن أن تكونا نفس الشيء",
+       "mergehistory-reason": "السبب:",
+       "mergelog": "سجل الدمج",
+       "revertmerge": "إلغاء الدمج",
+       "mergelogpagetext": "بالأسفل قائمة بأحدث عمليات الدمج لتاريخ صفحة ما إلى أخرى.",
+       "history-title": " «$1»: تاريخ المراجعة",
+       "difference-title": "«$1»: الفرق بين المراجعتين",
+       "difference-title-multipage": "«$1» و«$2»: الفرق بين الصفحتين",
+       "difference-multipage": "(الفرق بين الصفحتين)",
+       "lineno": "Sţar $1:",
+       "compareselectedversions": "قارن بين النسختين المختارتين",
+       "showhideselectedversions": "أظهر/أخف المراجعات المختارة",
+       "diff-multi-manyusers": "({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتان أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} أكثر من {{PLURAL:$2||مستخدم واحد|مستخدمين|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)",
+       "prevn": "{{PLURAL:$1|$1}} السابقة",
+       "nextn": "{{PLURAL:$1|$1}} التالية",
+       "prevn-title": "$1 {{PLURAL:$1|نتيجة|نتيجة}} سابقة",
+       "nextn-title": "$1 {{PLURAL:$1|نتيجة|نتيجة}} سابقة",
+       "searchmenu-new": "'''أنشئ الصفحة \"[[:$1]]\" في هذا الويكي!'''",
+       "search-result-category-size": "{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوًا|$1 عضو}} ({{PLURAL:$2|لا تصانيف فرعية|تصنيف فرعي واحد|تصنيفان فرعيان|$2 تصنيفات فرعية|$2 تصنيفًا فرعيًا|$2 تصنيف فرعي}} و{{PLURAL:$3|لا ملفات|ملف واحد|ملفان|$3 ملفات|$3 ملفًا|$3 ملف}})",
+       "search-redirect": "(تحويلة $1)",
+       "search-suggest": "هل كنت تقصد: $1",
+       "searchrelated": "مرتبطة",
+       "search-nonefound": "لا توجد نتائج تطابق الاستعلام.",
+       "mypreferences": "تفضيلاتي",
+       "youremail": "البريد:",
+       "yourrealname": "الاسم الحقيقي:",
+       "prefs-help-email": "عنوان البريد الإلكتروني هو أمر اختياري، ولكن ستحتاج لإعادة تعيين كلمة المرور، إن نسيت كلمة المرور الخاصة بك.",
+       "prefs-help-email-others": "يمكنك أيضا اختيار للسماح للآخرين الاتصال بك عن طريق صفحة المستخدم أو نقاش المستخدم الخاص بك دون الحاجة إلى الكشف عن الهوية الخاصة بك.",
+       "newuserlogpage": "سجل إنشاء المستخدمين",
+       "nchanges": "{{PLURAL:$1|لا تغييرات|تغيير واحد|تغييران|$1 تغييرات|$1 تغييرا|$1 تغيير}}",
+       "recentchanges-legend": "خيارات أحدث التغييرات",
+       "recentchanges-summary": "تابع أحدث التغييرات للويكي عبر هذه التلقيمة.",
+       "recentchanges-feed-description": "تابع أحدث التغييرات للويكي عبر هذه التلقيمة.",
+       "recentchanges-label-newpage": "أنشأ هذا التعديل صفحة جديدة",
+       "recentchanges-label-minor": "هذا تعديل طفيف",
+       "recentchanges-label-bot": "أجرى هذا التعديل بوت",
+       "recentchanges-label-unpatrolled": "لم يراجع هذا التعديل إلى الآن",
+       "rcnotefrom": "بالأسفل التغييرات منذ '''$2''' (إلى '''$1''' معروضة).",
+       "rclistfrom": "أظهر التغييرات بدءا من $3 $2",
+       "rcshowhideminor": "$1 التعديلات الطفيفة",
+       "rcshowhidebots": "$1 البوتات",
+       "rcshowhideliu": "$1 المستخدمين المسجلين",
+       "rcshowhideanons": "$1 المستخدمين المجهولين",
+       "rcshowhidepatr": "$1 التعديلات المراجعة",
+       "rcshowhidemine": "$1 تعديلاتي",
+       "rclinks": "أظهر آخر $1 تعديل في آخر $2 يوم<br />$3",
+       "hide": "أخف",
+       "show": "اعرض",
+       "rc-enhanced-expand": "عرض التفاصيل (يتطلب جافاسكريبت)",
+       "rc-enhanced-hide": "أخفِ التفاصيل",
+       "recentchangeslinked": "تغييرات ذات علاقة",
+       "recentchangeslinked-title": "التغييرات المرتبطة ب \"$1\"",
+       "recentchangeslinked-summary": "هذه قائمة بالتغييرات التي تمت حديثا للصفحات الموصولة من صفحة معينة (أو إلى الأعضاء ضمن تصنيف معين).\nالصفحات في [[Special:Watchlist|قائمة مراقبتك]] '''عريضة'''",
+       "recentchangeslinked-page": "اسم الصفحة:",
+       "recentchangeslinked-to": "أظهر التغييرات للصفحات الموصولة للصفحة المعطاة عوضا عن ذلك",
+       "uploadlogpage": "سجل الرفع",
+       "filedesc": "ملخص:",
+       "license": "ترخيص:",
+       "filehist-help": "اضغط على وقت/زمن لرؤية الملف كما بدا في هذا الزمن.",
+       "filehist-revert": "استرجع",
+       "filehist-current": "حالي",
+       "filehist-datetime": "وقت/زمن",
+       "filehist-thumb": "صورة مصغرة",
+       "filehist-thumbtext": "تصغير للنسخة بتاريخ $1",
+       "filehist-user": "مستخدم",
+       "filehist-dimensions": "الأبعاد",
+       "imagelinks": "استخدام الملف",
+       "linkstoimage": "{{PLURAL:$1||الصفحة التالية تصل|الصفحتان التاليتان تصلان|ال$1 صفحات التالية تصل|ال$1 صفحة التالية تصل}} إلى هذا الملف:",
+       "nolinkstoimage": "لا توجد صفحات تصل لهذا الملف.",
+       "sharedupload-desc-here": "هذا الملف من $1 ويمكن استخدامه بواسطة المشاريع الأخرى.\nالوصف على [$2 صفحة وصف الملف] هناك معروض بالأسفل.",
+       "statistics": "إحصاءات",
+       "nmembers": "{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوا|$1 عضو}}",
+       "prefixindex": "كل الصفحات بالبادئة",
+       "usercreated": "{{GENDER:$3|أنشأه|أنشأته}} في $1 الساعة $2",
+       "move": "انقل",
+       "pager-newer-n": "{{PLURAL:$1|أقدم 1|أقدم $1}}",
+       "pager-older-n": "{{PLURAL:$1|أقدم 1|أقدم $1}}",
+       "booksources": "مصادر كتاب",
+       "booksources-search-legend": "البحث عن مصادر الكتب",
+       "log": "سجلات",
+       "allpagessubmit": "اذهب",
+       "categories": "تصنيفات",
+       "linksearch-line": "$1 موصولة من $2",
+       "listgrouprights-members": "(قائمة الأعضاء)",
+       "emailuser": "إرسال رسالة لهذا المستخدم",
+       "watchlist": "قائمة مراقبتي",
+       "mywatchlist": "قائمة مراقبتي",
+       "watchlistfor2": "ل$1 $2",
+       "watch": "راقب",
+       "unwatch": "أوقف المراقبة",
+       "watchlist-details": "{{PLURAL:$1||صفحة واحدة|صفحتان|$1 صفحات|$1 صفحة}} في قائمة مراقبتك، بدون عد صفحات النقاش.",
+       "wlshowlast": "عرض آخر $1 ساعات $2 أيام",
+       "watchlist-options": "خيارات قائمة المراقبة",
+       "actioncomplete": "انتهاء العملية",
+       "actionfailed": "الفعل فشل",
+       "dellogpage": "سجل الحذف",
+       "protectlogpage": "سجل الحماية",
+       "protectedarticle": "حمى \"[[$1]]\"",
+       "undeletelink": "اعرض/استعد",
+       "undeleteviewlink": "اعرض",
+       "namespace": "النطاق",
+       "invert": "اعكس الاختيار",
+       "contributions": "مساهماتي",
+       "contributions-title": "مساهمات المستخدم $1",
+       "mycontris": "مساهماتي",
+       "contribsub2": "ل$1 ($2)",
+       "month": "من سنة (وأقدم):",
+       "year": "من سنة (وأقدم):",
+       "sp-contributions-newbies": "اعرض مساهمات الحسابات الجديدة فقط",
+       "sp-contributions-blocklog": "سجل المنع",
+       "sp-contributions-uploads": "مرفوعات",
+       "sp-contributions-logs": "سجلات",
+       "sp-contributions-talk": "نقاش",
+       "sp-contributions-search": "بحث عن مساهمات",
+       "sp-contributions-username": "عنوان أيبي أو اسم مستخدم:",
+       "sp-contributions-toponly": "أظهر أعلى المراجعات فقط",
+       "whatlinkshere-title": "الصفحات التي تصل إلى \"$1\"",
+       "linkshere": "الصفحات التالية تصل إلى '''[[:$1]]''':",
+       "nolinkshere": "لا توجد صفحات تصل إلى '''[[:$1]]'''.",
+       "isredirect": "صفحة تحويل",
+       "istemplate": "مضمن",
+       "isimage": "وصلة ملف",
+       "whatlinkshere-next": "{{PLURAL:$1|القادمة|ال$1 القادمة}}",
+       "whatlinkshere-links": "← وصلات",
+       "whatlinkshere-hideredirs": "$1 التحويلات",
+       "whatlinkshere-hidetrans": "$1 التضمينات",
+       "whatlinkshere-hidelinks": "$1 الوصلات",
+       "whatlinkshere-hideimages": "$1 وصلة صورة",
+       "whatlinkshere-filters": "مرشحات",
+       "ipboptions": "ساعتين:2 hours,يوم واحد:1 day,3 أيام:3 days,أسبوع واحد:1 week,أسبوعين:2 weeks,شهر واحد:1 month,3 أشهر:3 months,6 أشهر:6 months,سنة واحدة:1 year,دائم:infinite",
+       "ipblocklist": "المستخدمون الممنوعون",
+       "unblocklink": "ارفع المنع",
+       "change-blocklink": "تغيير المنع",
+       "blocklogpage": "سجل المنع",
+       "blocklogentry": "منع \"[[$1]]\" لفترة زمنية مدتها $2 $3",
+       "block-log-flags-nocreate": "إنشاء الحسابات ممنوع",
+       "movelogpage": "سجل النقل",
+       "revertmove": "استرجع",
+       "export": "تصدير صفحات",
+       "allmessagesname": "الاسم",
+       "allmessagesdefault": "النص الافتراضي",
+       "thumbnail_error": "خطأ في إنشاء صورة مصغرة: $1",
+       "tooltip-pt-userpage": "صفحة المستخدم الخاصة بك",
+       "tooltip-pt-mytalk": "صفحة نقاشك",
+       "tooltip-pt-preferences": "تفضيلاتي",
+       "tooltip-pt-watchlist": "قائمة الصفحات التي تراقب التغييرات التي تحدث بها",
+       "tooltip-pt-mycontris": "قائمة مساهماتك",
+       "tooltip-pt-logout": "خروج",
+       "tooltip-ca-addsection": "ابدأ قسما جديدا",
+       "tooltip-ca-protect": "احم هذه الصفحة",
+       "tooltip-ca-delete": "احذف هذه الصفحة",
+       "tooltip-ca-move": "علم هذه الصفحة",
+       "tooltip-ca-watch": "أضف هذه الصفحة إلى قائمة مراقبتك",
+       "tooltip-ca-unwatch": "أزل هذه الصفحة من قائمة مراقبتك",
+       "tooltip-feed-atom": "تلقيم أتوم لهذه الصفحة",
+       "tooltip-t-contributions": "رؤية قائمة مساهمات هذا المستخدم",
+       "tooltip-t-emailuser": "أرسل رسالة لهذا المستخدم",
+       "tooltip-ca-nstab-user": "اعرض صفحة المستخدم",
+       "tooltip-ca-nstab-special": "هذه صفحة خاصة، لا تستطيع أن تعدل الصفحة نفسها",
+       "tooltip-ca-nstab-project": "رؤية صفحة المحتوى",
+       "tooltip-ca-nstab-image": "رؤية صفحة الملف",
+       "tooltip-ca-nstab-template": "رؤية القالب",
+       "tooltip-ca-nstab-category": "رؤية صفحة التصنيف",
+       "tooltip-minoredit": "علم على هذا كتعديل طفيف",
+       "tooltip-save": "احفظ تغييراتك",
+       "tooltip-preview": "اعرض تغييراتك، من فضلك استخدم هذا قبل الحفظ!",
+       "tooltip-diff": "اعرض التغييرات التي قمت بها للنص.",
+       "tooltip-compareselectedversions": "شاهد الفروق بين النسختين المختارتين من هذه الصفحة.",
+       "tooltip-watch": "أضف هذه الصفحة إلى قائمة مراقبتك",
+       "tooltip-undo": "\"رجوع\" تسترجع هذا التعديل وتفتح نافذة التعديل في نمط العرض المسبق. تسمح بإضافة سبب في الملخص.\n\"Annuler\" trajjeε eltabdila lekhra w tħel fenêtre mtaε  el tabdil mtaε elvue el msabqa. Tnajjem tqoul εlech f'ettalkhis.",
+       "tooltip-summary": "أدخل ملخصا قصيرا",
+       "previousdiff": "→ التعديل السابق",
+       "nextdiff": "التعديل اللاحق ←",
+       "file-info-size": "$1 × $2 بكسل حجم الملف: $3، نوع MIME: $4",
+       "file-nohires": "لا توجد دقة أعلى متوفرة.",
+       "svg-long-desc": "ملف SVG، أبعاده $1 × $2 بكسل، حجم الملف: $3",
+       "metadata": "بيانات ميتا",
+       "metadata-help": "هذا الملف يحتوي على معلومات إضافية، غالبا ما تكون أضيفت من قبل الكاميرا الرقمية أو الماسح الضوئي المستخدم في إنشاء الملف.\nإذا كان الملف قد عدل عن حالته الأصلية، فبعض التفاصيل قد لا تعبر عن الملف المعدل.",
+       "metadata-fields": "حقول معطيات الميتا الموجودة في هذه الرسالة سوف تعرض في صفحة الصورة عندما يكون جدول معطيات الميتا مضغوطا.\nالحقول الأخرى ستكون مخفية افتراضيا.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "namespacesall": "الكل",
+       "monthsall": "الكل",
+       "watchlisttools-view": "اعرض التغييرات المرتبطة",
+       "watchlisttools-edit": "اعرض قائمة المراقبة وعدلها",
+       "watchlisttools-raw": "عدل قائمة المراقبة الخام",
+       "duplicate-defaultsort": "'''تحذير:''' مفتاح الترتيب الافتراضي \"$2\" يتجاوز مفتاح الترتيب الافتراضي السابق \"$1\".",
+       "external_image_whitelist": " #<pre>اترك هذا السطر تماما كما هو\n#ضع منثورات التعبيرات المنتظمة (فقط الجزء الذي يذهب بين //) بالأسفل\n#هذه ستتم مطابقتها مع مسارات الصور الخرجية (الموصولة بشكل مباشر)\n#هذه التي تطابق سيتم عرضها كصور، غير ذلك فقط وصلة إلى الصورة سيتم عرضها\n#السطور التي تبدأ ب# تتم معاملتها كتعليقات\n#هذا لا يتأثر بحالة الحروف\n\n#ضع كل منثورات التعبيرات المنتظمة فوق هذا السطر. اترك هذا السطر تماما كما هو</pre>",
+       "tag-filter": "مرشح [[Special:Tags|الوسوم]]:"
+}
diff --git a/languages/i18n/aeb-latn.json b/languages/i18n/aeb-latn.json
new file mode 100644 (file)
index 0000000..23e30d5
--- /dev/null
@@ -0,0 +1,285 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Abanima",
+                       "Csisc",
+                       "Kuwaity26",
+                       "Malekbr",
+                       "아라",
+                       "Aħmedbaɛl",
+                       "GeekEmad"
+               ]
+       },
+       "tog-underline": "Ħotʾ stʾar taħt errabtʾa:",
+       "tog-hideminor": "Khabbi ettabdilàt essʾgħàr m ettabdilàt lekhrànìn",
+       "tog-hidepatrolled": "Khabbi ettabdilàt elmagħsous għlihom m ettabdilàt lekhrànìn",
+       "tog-newpageshidepatrolled": "Khabbi elpàjàt elmagħsous għlihom m ellista mtagħ elpàjàt ejjdida",
+       "tog-extendwatchlist": "Wassegħ ellista mtagħ elgħassa bech twarri ettabdilàt elkoll, w mouch lekhrànìn kahaw",
+       "tog-numberheadings": "Nwàmer otomatik l ettitrouàt mtagħ esseksyon",
+       "tog-watchcreations": "Zid elpàjàt elli għmalt'hom w elfichyéàt elli tʾallagħt'hom l ellista mtagħ elgħassa mtagħi",
+       "tog-watchdefault": "Zid elpàjàt w elfichyéàt elli nbaddelhom l ellista mtagħ elgħassa mtagħi",
+       "tog-watchmoves": "Zid elpàjàt w elfichyéàt elli nhezzhom, l ellista mtagħ elgħassa mtagħi",
+       "tog-watchdeletion": "Zid elpàjàt w elfichyéàt elli nnaħħihom l ellista mtagħ elgħassa mtagħi",
+       "tog-minordefault": "Marki ettabdilàt essʾghàr elkoll par défo",
+       "tog-previewontop": "Warri tʾalla għla chsʾàr qbal ħokket ettabdil",
+       "tog-previewonfirst": "Warri tʾalla għla chsʾàr f ettabdila lawlàniya",
+       "tog-enotifwatchlistpages": "Abgħethli mail waqtelli pàj wella fichyé m ellista mtagħ elgħassa mtagħi tbaddel",
+       "tog-enotifusertalkpages": "Abgħethli mail watelli elpàj mtagħ leħdith mtagħi tetbaddel",
+       "tog-enotifminoredits": "Abgħethli mail zàda għattabdilàt essʾghàr mtagħ elpàjàt w elfichyéàt",
+       "tog-enotifrevealaddr": "Warri ladrisa mail mtagħi f elmailàt mtagħ ennotifikasyon",
+       "tog-shownumberswatching": "Warri għdad lutilizateuràt elgħassàsa",
+       "tog-oldsig": "Ettosʾħàħa elmawjouda:",
+       "underline-always": "Dima",
+       "underline-never": "Jemla",
+       "sunday": "Il-Eḩed",
+       "monday": "Il-Iŧnîn",
+       "tuesday": "Iŧ-Ŧlêŧ",
+       "wednesday": "Il-Irbģe",
+       "thursday": "Il-Xmîs",
+       "friday": "Ij-Jimģe",
+       "saturday": "Is-Sibt",
+       "sun": "Il-Eḩed",
+       "mon": "el ithnaine",
+       "tue": "ethlath",
+       "wed": "elirb3a",
+       "thu": "el5mis",
+       "fri": "ejjom3a",
+       "sat": "essibt",
+       "january": "Jânfi",
+       "february": "Fîvrî",
+       "march": "Mâris",
+       "april": "Avrîl",
+       "may_long": "Mêy",
+       "june": "Jweñ",
+       "july": "Jwîlye",
+       "august": "Ût",
+       "september": "Siptombir",
+       "october": "Uktobir",
+       "november": "Nuvombir",
+       "december": "Disombir",
+       "january-gen": "Janvi",
+       "february-gen": "Fîvrî",
+       "march-gen": "Mars",
+       "april-gen": "Avril",
+       "may-gen": "Mai",
+       "june-gen": "Juin",
+       "july-gen": "Juilia",
+       "august-gen": "Août",
+       "september-gen": "Septembre",
+       "october-gen": "Octobre",
+       "november-gen": "Novembre",
+       "december-gen": "Décembre",
+       "jan": "Jan.",
+       "feb": ".Fiv",
+       "mar": "Mâris",
+       "apr": "Avr.",
+       "may": "Mêy",
+       "jun": "Jweñ",
+       "jul": "Jwi.",
+       "aug": "Ût",
+       "sep": "Sep.",
+       "oct": "Okt.",
+       "nov": ".Nov",
+       "dec": "Des.",
+       "pagecategories": "{{PLURAL:Catégorie weħed|Zouz catégories|$1 catégories|$1 en catégorie}}",
+       "hidden-categories": "{{PLURAL:Catégorie mkhabia waħda|Zouz catégories mkhabbin|$1 catégories mkhabbin|$1 en catégorie mkhabia}}",
+       "cancel": "ifsa5",
+       "moredotdotdot": "Akther...",
+       "anontalk": "Tħaddeth mgħa ladrisa IP hadhi",
+       "navigation": "Ḩawwis",
+       "and": "&#32;w",
+       "qbfind": "Lawwej",
+       "qbbrowse": "Navigi",
+       "qbedit": "Baddel",
+       "qbpageoptions": "Elpàj hadhi",
+       "qbmyoptions": "Pàjàti",
+       "faq": "FAQ",
+       "faqpage": "Project:FAQ",
+       "actions": "Aksyonàt",
+       "namespaces": "Blâyiş il-asêmî",
+       "variants": "Tanwîģât",
+       "navigation-heading": "il-mënü mtêģ in-navigâsyioñ",
+       "errorpagetitle": "Għaltʾa",
+       "returnto": "Arjagħ l $1.",
+       "tagline": "Min {{SITENAME}}",
+       "help": "Mģâwne",
+       "search": "Lawwij",
+       "searchbutton": "Lawwij",
+       "go": "Emchi",
+       "searcharticle": "Imcî",
+       "history": "Listorik mtagħ elpàj",
+       "history_short": "Il-istorîk",
+       "updatedmarker": "tbaddlet melli jit àkher marra",
+       "printableversion": "Kopî bêc tiţbaģhê",
+       "permalink": "lieñ yoqģod dîme dîme",
+       "print": "Atʾbagħ",
+       "view": "Aqra",
+       "edit": "Baddil",
+       "create": "Agħmel",
+       "editthispage": "Baddel f elpàj hadhi",
+       "create-this-page": "Agħmel elpàj hadhi",
+       "delete": "Afsakh",
+       "deletethispage": "Afsakh elpàj hadhi",
+       "undelete_short": "Rajjagħ{{PLURAL:$1|tabdila waħda|$1 tabdila}}",
+       "viewdeleted_short": "Warri {{PLURAL:$1|tabdila waħda mafsoukha|$1 tabdila mafsoukha}}",
+       "protect": "Ħàmi",
+       "protect_change": "baddel",
+       "protectthispage": "Ħàmi għal pàj hadhi",
+       "unprotect": "Baddel elħimàya",
+       "unprotectthispage": "Baddel elħimàya mtagħ elpàj hadhi",
+       "newpage": "Pàj jdida",
+       "talkpage": "Tħaddeth għal pàj hadhi",
+       "talkpagelinktext": "Ḩdîŧ",
+       "specialpage": "Sʾafħa spesyàl",
+       "personaltools": "Mêģûnik",
+       "articlepage": "Warri elpàj mtagħ elkontenu",
+       "talk": "Ḩdiŧ",
+       "views": "Manḑer",
+       "toolbox": "Mêģûn",
+       "userpage": "Chour elpàj mtagħ lutilizateur",
+       "projectpage": "Chouf elpàj mtagħ leprojé",
+       "imagepage": "Chouf elpàj mtagħ elfichyé",
+       "mediawikipage": "Chouf elpàj mtagħ elmessàj",
+       "templatepage": "Chouf elpàj mtagħ elmodàl",
+       "viewhelppage": "Chouf elpàj mtagħ lemgħàwna",
+       "categorypage": "Chouf elpàj mtagħ elkatégori",
+       "viewtalkpage": "Chouf leħdith",
+       "otherlanguages": "B-lûğât okhrîne",
+       "redirectedfrom": "(Tħawwelt men $1)",
+       "redirectpagesub": "Pàj mtagħ taħwil",
+       "lastmodifiedat": "Il-pâj hêđî tbadlit êxir merre nhâr $1, mģa $2.",
+       "viewcount": "Elpàj hadhi dakhloulha {{PLURAL:$1|marra waħda|$1 marra}}.",
+       "protectedpage": "Pàj protéjé",
+       "jumpto": "Imcî l-:",
+       "jumptonavigation": "Ḩawwis",
+       "jumptosearch": "Lawwij",
+       "view-pool-error": "Pardon, esserveuràt tàgħba tawwa.\nBarcha għbàd yħebbou ychoufou nafs elpàj.\nYgħaychek estanna chway qbal ma tjarreb bech todkhel l elpàj hadhi marra okhra.\n\n\n$1",
+       "pool-timeout": "Waqt esstennya wfa",
+       "pool-queuefull": "Essʾaf mgħabbi",
+       "pool-errorunknown": "Ghaltʾa ma nagħrfouhàch",
+       "aboutsite": "Fîme yxoş {{SITENAME}}",
+       "aboutpage": "Project:Fîme yxoş",
+       "copyrightpage": "{{ns:project}}:Copyrights",
+       "currentevents": "Elli sʾàyer tawwa",
+       "currentevents-url": "Project:Elli sʾàyer tawwa",
+       "disclaimers": "Tambîhêt",
+       "disclaimerpage": "Project:Tambîhêt ģâmme",
+       "edithelp": "Mgħàwna f elktiba",
+       "mainpage": "Il-pâj il-ewelêniye",
+       "mainpage-description": "Il-Pâj il-ewelêniye",
+       "policy-url": "Project:Elpolitik",
+       "portal": "Daxlit il-mujtamaģ",
+       "portal-url": "Project:Mujtamaģ",
+       "privacy": "Is-siyêse mteģ il-konfîdonsyalîtê",
+       "privacypage": "Project:Il-polîtîk mtêģ il-konfîdoñsyalîtê",
+       "ok": "ok",
+       "retrievedfrom": "Tixđêt min- \"$1\"",
+       "editsection": "Baddil iş-şafḩa",
+       "editold": "Baddil",
+       "viewsourceold": "Warri essours",
+       "editlink": "baddil",
+       "viewsourcelink": "Warri is-sûrs",
+       "editsectionhint": "Baddil is-sêksyioñ: $1",
+       "toc": "Contenu",
+       "showtoc": "Warri",
+       "hidetoc": "Khabbi",
+       "collapsible-collapse": "Tʾabbes",
+       "collapsible-expand": "Wassegħ",
+       "thisisdeleted": "Warri wella rajjagħ $1؟",
+       "viewdeleted": "Warri $1؟",
+       "site-atom-feed": "Flü Atom mtêģ $1",
+       "red-link-title": "$1 (Iş-Şafḩa mûc mawjûde)",
+       "nstab-main": "Şafḩa",
+       "nstab-special": "Safḩa spêsyâl",
+       "nstab-image": "Fichier",
+       "nstab-mediawiki": "Messàj",
+       "error": "ghalath",
+       "missing-article": "Elbase de données malqatech ettexte mtaε essafħa elli supposée talqaha, welli esmha \"$1\" $2.\n\nHedha elli ysir elεada waqtelli tħel farq qdim walla lien mtaε l'historique mtaε safħa tnaħħat.\n\nIdha ken mouch hedheka li sar, rak momken lqit mochkla fel programme.\nAman qoul elweħeb mel les [[Special:ListUsers/sysop|administrateurs]], waεtih ellien elli ħabit temchilou.",
+       "delete-hook-aborted": "faskhan wa9fou flash.\nmahouwech mobarrar",
+       "exception-nologin-text": "hedhi ess'af7a wa 2ella el action te7tej mennek bech etloginni il hedha el wiki",
+       "nav-login-createaccount": "Connecti / aεmel compte",
+       "pt-login": "Odkul",
+       "pt-createaccount": "Aģmil koñt",
+       "resetpass-submit-cancel": "ifsa5",
+       "template-protected": "(protégé)",
+       "revisionasof": "Version mtaε $1",
+       "lineno": "Sţar $1:",
+       "editundo": "Rajjaģ",
+       "searchresults": "Ir-rêzultâ mtêģ it-talwîj",
+       "searchresults-title": "Ir-rêzultâ mtêģ it-talwîj ģlâ \"$1\"",
+       "shown-title": " Warri{{PLURAL:Résultat weħed|Zouz résultats|$1  résultats|$1 en résultat}} men kol safħa",
+       "viewprevnext": "Chouf ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-exists": "'''famma ss'af7a ismha \"[[:$1]]\" fi hedha el wiki.'''",
+       "searchprofile-articles": "Safħat mtaε contenu",
+       "searchprofile-images": "Multimédia",
+       "searchprofile-everything": "Kol chay",
+       "searchprofile-advanced": "Avancé",
+       "searchprofile-articles-tooltip": "Farkes fi $1",
+       "searchprofile-images-tooltip": "Farkes f'elfichiers",
+       "searchprofile-everything-tooltip": "Farkes kol chay (ħatta safħat leħdith)",
+       "searchprofile-advanced-tooltip": "Ekhtar les espaces de noms elli bech tfarkes εlihom",
+       "search-result-size": "$1 ({{PLURAL:Ħatta kelma|Kelma waħda|Kelmtin|$2 kelmat|$2 en kelma}})",
+       "search-section": "(section $1)",
+       "action-edit": "modifi hal page",
+       "recentchanges": "Ajadd tabdîlêt",
+       "diff": "Farq",
+       "hist": "Hîst",
+       "minoreditletter": "thafif",
+       "newpageletter": "jadid",
+       "boteditletter": "bot",
+       "rc-change-size-new": "$1 {{PLURAL:$1|oktê}} baģd it-tabdîl",
+       "recentchangeslinked-toolbox": "Tabdilet them",
+       "upload": "Abεeth des fichiers l'esserveur",
+       "license-header": "licence",
+       "file-anchor-link": "milaf (Fichier)",
+       "filehist": "Têrîx il-mîlaf",
+       "filehist-comment": "ta3li9at",
+       "randompage": "Şafħa kîmê tjî",
+       "nbytes": "{{PLURAL:Octet weħed|Zouz octets|$1 octets|$1 en octet}}",
+       "newpages": "Safħat jdod",
+       "allpages": "kol ess'afa7at",
+       "allarticles": "kol ess'afa7at",
+       "rollbacklink": "rajjaε",
+       "blanknamespace": "(Ra'îsî)",
+       "uctop": "(top)",
+       "sp-contributions-submit": "lawwej",
+       "whatlinkshere": "Cnûwwe illi ywassil l-hûnî",
+       "whatlinkshere-page": "ss'af7a:",
+       "whatlinkshere-prev": "{{PLURAL:$1|previous|previous $1}}",
+       "blocklink": "Bloqui",
+       "contribslink": "Mûsêhmêt",
+       "thumbnail-more": "Kabbir",
+       "tooltip-pt-login": "Međebîne kên itkoññektî, eme mûc bis-sîf",
+       "tooltip-pt-createaccount": "Međebîne law kên taģmil koñt w todxul, Lêkin mêkc maţlûb bêc taģmil hêđê.",
+       "tooltip-ca-talk": "Disküsyioñ ģal-koñtënü mtêģ il-pâj",
+       "tooltip-ca-edit": "Tnejjem tbaddil iş-şafḩa hêđi. Amân inzil ģal-bûtoñ mtêģ il-vû il-msebqa qbal mê tsijjil.",
+       "tooltip-ca-viewsource": "Essʾafħa protéjé.\nTnajjem tchouf essours mtaħħa.",
+       "tooltip-ca-history": "Copiet qdom mtaε essafħa hedhi",
+       "tooltip-search": "Lawwij fî- {{SITENAME}}",
+       "tooltip-search-go": "Imcî l-pâj b-nafs il-ism îđê lqîthê",
+       "tooltip-search-fulltext": "Farkis fiş-şafḩât ģat-têkst hêđa",
+       "tooltip-p-logo": "Emchi lil-pâj il-ewelêniye",
+       "tooltip-n-mainpage": "Imchi lil-pâj il-ewelêniye",
+       "tooltip-n-mainpage-description": "Imchi lil-pâj il-ewelêniye",
+       "tooltip-n-portal": "Ģal-macrûģ, cnûwwe tnijjim taģmil, wîn tilqâ illi ḩajtik bîh",
+       "tooltip-n-currentevents": " Alqa information εla aham laħdeth mtaε tawa",
+       "tooltip-n-recentchanges": "Lîste mtêģ ajadd it-tabdîlêt fil-wiki",
+       "tooltip-n-randompage": "Ḩil iş-şafḩe illî tjî",
+       "tooltip-n-help": "Il-blâşa bêc tilqâ fîhe",
+       "tooltip-t-whatlinkshere": "Lîste mtêģ iş-şafḩât il-wiki il-kul illi twassil l-hûni",
+       "tooltip-t-recentchangeslinked": "Aham ettabldilet f'essafħat elli ywaslou l'essafħa hedhi",
+       "tooltip-t-upload": "Abεeth des fichiers l'esserveur",
+       "tooltip-t-specialpages": "Lîste mtêģ iş-şafħât is-spêsyal il-kul",
+       "tooltip-t-print": "Vêrsyoñ titiţbaģ min hal-pâj..",
+       "tooltip-t-permalink": "Lien dayem l'elversion hedhi mtaε essafħa",
+       "tooltip-ca-nstab-main": "Chouf elcontenu mtaε essafħa",
+       "tooltip-rollback": "\"Rajjaģ\" yrajjiģ it-tabdîlêt f'hassafħa el'ekher weħed baddel fi nazla waħda.",
+       "pageinfo-toolboxlink": "Maģlûmêt ģalâ hal-pâj",
+       "show-big-image": "il-fîcyê il-aşlî",
+       "bad_image_list": "Elformat kima hakka:\nLes élements mtaε lista (lostra elli yabdew b' *) yetħesbou.\nEllien lowel fi star yelzmou ykoun lien el fichier khayeb.\nAy lien ekher fi nafs estar yetħseb exception, maħneha des pages win elfichier ynajem ykoun fi star.",
+       "watchlistedit-clear-explain": "Elɛanawin lkol bech yetnaħaw mel'lista mteɛek",
+       "watchlistedit-clear-titles": "Elɛanawin",
+       "watchlistedit-too-many": "Famma barcha pajet w'manajmouch nħotouhom lkol lahné",
+       "specialpages": "Safḩât spêsyâl",
+       "searchsuggest-search": "Lawwij"
+}
diff --git a/languages/i18n/aeb.json b/languages/i18n/aeb.json
deleted file mode 100644 (file)
index 2603d59..0000000
+++ /dev/null
@@ -1,924 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Abanima",
-                       "Csisc",
-                       "Kuwaity26",
-                       "Malekbr",
-                       "아라",
-                       "Aħmedbaɛl",
-                       "GeekEmad"
-               ]
-       },
-       "tog-underline": "Ħotʾ stʾar taħt errabtʾa:",
-       "tog-hideminor": "Khabbi ettabdilàt essʾgħàr m ettabdilàt lekhrànìn",
-       "tog-hidepatrolled": "Khabbi ettabdilàt elmagħsous għlihom m ettabdilàt lekhrànìn",
-       "tog-newpageshidepatrolled": "Khabbi elpàjàt elmagħsous għlihom m ellista mtagħ elpàjàt ejjdida",
-       "tog-extendwatchlist": "Wassegħ ellista mtagħ elgħassa bech twarri ettabdilàt elkoll, w mouch lekhrànìn kahaw",
-       "tog-usenewrc": ")جمّع التعديلات حسب الصفحة في أحدث التغييرات وقائمة المراقبة (يتطلب جافاسكربت",
-       "tog-numberheadings": "Nwàmer otomatik l ettitrouàt mtagħ esseksyon",
-       "tog-showtoolbar": "أظهر شريط التحرير (يتطلب جافاسكربت)",
-       "tog-editondblclick": "عدل الصفحات عند الضغط المزدوج (جافاسكربت)",
-       "tog-editsectiononrightclick": "فعل تعديل الأقسام بواسطة كبسة الفأرة اليمين على عناوين الأقسام (جافاسكريبت)",
-       "tog-watchcreations": "Zid elpàjàt elli għmalt'hom w elfichyéàt elli tʾallagħt'hom l ellista mtagħ elgħassa mtagħi",
-       "tog-watchdefault": "Zid elpàjàt w elfichyéàt elli nbaddelhom l ellista mtagħ elgħassa mtagħi",
-       "tog-watchmoves": "Zid elpàjàt w elfichyéàt elli nhezzhom, l ellista mtagħ elgħassa mtagħi",
-       "tog-watchdeletion": "Zid elpàjàt w elfichyéàt elli nnaħħihom l ellista mtagħ elgħassa mtagħi",
-       "tog-minordefault": "Marki ettabdilàt essʾghàr elkoll par défo",
-       "tog-previewontop": "Warri tʾalla għla chsʾàr qbal ħokket ettabdil",
-       "tog-previewonfirst": "Warri tʾalla għla chsʾàr f ettabdila lawlàniya",
-       "tog-enotifwatchlistpages": "Abgħethli mail waqtelli pàj wella fichyé m ellista mtagħ elgħassa mtagħi tbaddel",
-       "tog-enotifusertalkpages": "Abgħethli mail watelli elpàj mtagħ leħdith mtagħi tetbaddel",
-       "tog-enotifminoredits": "Abgħethli mail zàda għattabdilàt essʾghàr mtagħ elpàjàt w elfichyéàt",
-       "tog-enotifrevealaddr": "Warri ladrisa mail mtagħi f elmailàt mtagħ ennotifikasyon",
-       "tog-shownumberswatching": "Warri għdad lutilizateuràt elgħassàsa",
-       "tog-oldsig": "Ettosʾħàħa elmawjouda:",
-       "tog-fancysig": "عامل التوقيع كنص ويكي (بدون وصلة أوتوماتيكية)",
-       "tog-uselivepreview": "استخدم الاستعراض السريع (جافاسكريبت) (تجريبي)",
-       "tog-forceeditsummary": "نبهني عند إدخال ملخص تعديل فارغ",
-       "tog-watchlisthideown": "أخف تعديلاتي من قائمة المراقبة",
-       "tog-watchlisthidebots": "أخف تعديلات البوت من قائمة المراقبة",
-       "tog-watchlisthideminor": "أخف التعديلات الطفيفة من قائمة المراقبة",
-       "tog-watchlisthideliu": "أخف تعديلات المستخدمين المسجلين من قائمة المراقبة",
-       "tog-watchlisthideanons": "أخف تعديلات المستخدمين المجهولين من قائمة المراقبة",
-       "tog-watchlisthidepatrolled": "أخف التعديلات المراجعة من قائمة المراقبة",
-       "tog-ccmeonemails": "أرسل لي نسخا من رسائل البريد الإلكتروني التي أرسلها للمستخدمين الآخرين",
-       "tog-diffonly": "لا تعرض محتوى الصفحة أسفل الفروقات",
-       "tog-showhiddencats": "أظهر التصنيفات المخفية",
-       "tog-norollbackdiff": "أزل الفرق بعد القيام باسترجاع",
-       "underline-always": "Dima",
-       "underline-never": "Jemla",
-       "underline-default": "تبعا لإعدادات المتصفح",
-       "editfont-style": "نمط خط منطقة التحرير:",
-       "editfont-default": "تبعا لإعدادات المتصفح",
-       "editfont-monospace": "خط ثابت العرض",
-       "editfont-sansserif": "خط بلا زوائد",
-       "editfont-serif": "خط بزوائد",
-       "sunday": "Il-Eḩed",
-       "monday": "Il-Iŧnîn",
-       "tuesday": "Iŧ-Ŧlêŧ",
-       "wednesday": "Il-Irbģe",
-       "thursday": "Il-Xmîs",
-       "friday": "Ij-Jimģe",
-       "saturday": "Is-Sibt",
-       "sun": "Il-Eḩed",
-       "mon": "el ithnaine",
-       "tue": "ethlath",
-       "wed": "elirb3a",
-       "thu": "el5mis",
-       "fri": "ejjom3a",
-       "sat": "essibt",
-       "january": "Jânfi",
-       "february": "Fîvrî",
-       "march": "Mâris",
-       "april": "Avrîl",
-       "may_long": "Mêy",
-       "june": "Jweñ",
-       "july": "Jwîlye",
-       "august": "Ût",
-       "september": "Siptombir",
-       "october": "Uktobir",
-       "november": "Nuvombir",
-       "december": "Disombir",
-       "january-gen": "Janvi",
-       "february-gen": "Fîvrî",
-       "march-gen": "Mars",
-       "april-gen": "Avril",
-       "may-gen": "Mai",
-       "june-gen": "Juin",
-       "july-gen": "Juilia",
-       "august-gen": "Août",
-       "september-gen": "Septembre",
-       "october-gen": "Octobre",
-       "november-gen": "Novembre",
-       "december-gen": "Décembre",
-       "jan": "Jan.",
-       "feb": ".Fiv",
-       "mar": "Mâris",
-       "apr": "Avr.",
-       "may": "Mêy",
-       "jun": "Jweñ",
-       "jul": "Jwi.",
-       "aug": "Ût",
-       "sep": "Sep.",
-       "oct": "Okt.",
-       "nov": ".Nov",
-       "dec": "Des.",
-       "pagecategories": "{{PLURAL:Catégorie weħed|Zouz catégories|$1 catégories|$1 en catégorie}}",
-       "category_header": "صفحات تصنيف \"$1\"",
-       "subcategories": "التصنيفات الفرعية",
-       "category-media-header": "الوسائط في التصنيف \"$1\"",
-       "category-empty": "''هذا التصنيف لا يحتوي حاليا على صفحات أو وسائط.''",
-       "hidden-categories": "{{PLURAL:Catégorie mkhabia waħda|Zouz catégories mkhabbin|$1 catégories mkhabbin|$1 en catégorie mkhabia}}",
-       "hidden-category-category": "تصنيفات مخفية",
-       "category-subcat-count": "{{PLURAL:$2|لا تصانيف فرعية في هذا التصنيف|هذا التصنيف فيه التصنيف الفرعي التالي فقط.|هذا التصنيف فيه {{PLURAL:$1||هذا التصنيف الفرعي|هذين التصنيفين الفرعيين|هذه ال$1 تصانيف الفرعية|هذه ال$1 تصنيفا فرعيا|هذه ال$1 تصنيف فرعي}}، من إجمالي $2.}}",
-       "category-subcat-count-limited": "هذا التصنيف فيه {{PLURAL:$1||التصنيف الفرعي التالي|التصنيفين الفرعيين التاليين|$1 تصانيف فرعية تالية|$1 تصنيفا فرعيا تاليا|$1 تصنيف فرعي تالي}}.",
-       "category-article-count": "{{PLURAL:$2|لا يحتوي هذا التصنيف أي صفحات.|هذا التصنيف يحتوي على الصفحة التالية فقط.|{{PLURAL:$1||الصفحة التالية|الصفحتان التاليتان|ال$1 صفحات التالية|ال$1 صفحة التالية|ال$1 صفحة التالية}} في هذا التصنيف، من إجمالي $2.}}",
-       "category-article-count-limited": "{{PLURAL:$1||الصفحة التالية|الصفحتان التاليتان|ال$1 صفحات التالية|ال$1 صفحة التالية|ال$1 صفحة التالية}} في التصنيف الحالي.",
-       "category-file-count": "{{PLURAL:$2|لا يحتوي هذا التصنيف أي صفحات.|هذا التصنيف يحتوي على الصفحة التالية فقط.|{{PLURAL:$1||الصفحة التالية|الصفحتان التاليتان|ال$1 صفحات التالية|ال$1 صفحة التالية|ال$1 صفحة التالية}} في هذا التصنيف، من إجمالي $2.}}",
-       "category-file-count-limited": "{{PLURAL:$1|الملف التالي|الملفان التاليان|ال$1 ملفات التالية|ال$1 ملفًا تاليًا|ال$1 ملف تالٍ}} في التصنيف الحالي.",
-       "listingcontinuesabbrev": "متابعة",
-       "index-category": "صفحات مفهرسة",
-       "noindex-category": "صفحات غير مفهرسة",
-       "broken-file-category": "صفحات تحتوي وصلات ملفات معطوبة",
-       "about": "عن",
-       "article": "صفحة محتوى",
-       "newwindow": "(تفتح في نافذة جديدة)",
-       "cancel": "ifsa5",
-       "moredotdotdot": "Akther...",
-       "mypage": "صفحتي",
-       "mytalk": "نقاشي",
-       "anontalk": "Tħaddeth mgħa ladrisa IP hadhi",
-       "navigation": "Ḩawwis",
-       "and": "&#32;w",
-       "qbfind": "Lawwej",
-       "qbbrowse": "Navigi",
-       "qbedit": "Baddel",
-       "qbpageoptions": "Elpàj hadhi",
-       "qbmyoptions": "Pàjàti",
-       "faq": "FAQ",
-       "faqpage": "Project:FAQ",
-       "actions": "Aksyonàt",
-       "namespaces": "Blâyiş il-asêmî",
-       "variants": "Tanwîģât",
-       "navigation-heading": "il-mënü mtêģ in-navigâsyioñ",
-       "errorpagetitle": "Għaltʾa",
-       "returnto": "Arjagħ l $1.",
-       "tagline": "Min {{SITENAME}}",
-       "help": "Mģâwne",
-       "search": "Lawwij",
-       "searchbutton": "Lawwij",
-       "go": "Emchi",
-       "searcharticle": "Imcî",
-       "history": "Listorik mtagħ elpàj",
-       "history_short": "Il-istorîk",
-       "updatedmarker": "tbaddlet melli jit àkher marra",
-       "printableversion": "Kopî bêc tiţbaģhê",
-       "permalink": "lieñ yoqģod dîme dîme",
-       "print": "Atʾbagħ",
-       "view": "Aqra",
-       "edit": "Baddil",
-       "create": "Agħmel",
-       "editthispage": "Baddel f elpàj hadhi",
-       "create-this-page": "Agħmel elpàj hadhi",
-       "delete": "Afsakh",
-       "deletethispage": "Afsakh elpàj hadhi",
-       "undelete_short": "Rajjagħ{{PLURAL:$1|tabdila waħda|$1 tabdila}}",
-       "viewdeleted_short": "Warri {{PLURAL:$1|tabdila waħda mafsoukha|$1 tabdila mafsoukha}}",
-       "protect": "Ħàmi",
-       "protect_change": "baddel",
-       "protectthispage": "Ħàmi għal pàj hadhi",
-       "unprotect": "Baddel elħimàya",
-       "unprotectthispage": "Baddel elħimàya mtagħ elpàj hadhi",
-       "newpage": "Pàj jdida",
-       "talkpage": "Tħaddeth għal pàj hadhi",
-       "talkpagelinktext": "Ḩdîŧ",
-       "specialpage": "Sʾafħa spesyàl",
-       "personaltools": "Mêģûnik",
-       "articlepage": "Warri elpàj mtagħ elkontenu",
-       "talk": "Ḩdiŧ",
-       "views": "Manḑer",
-       "toolbox": "Mêģûn",
-       "userpage": "Chour elpàj mtagħ lutilizateur",
-       "projectpage": "Chouf elpàj mtagħ leprojé",
-       "imagepage": "Chouf elpàj mtagħ elfichyé",
-       "mediawikipage": "Chouf elpàj mtagħ elmessàj",
-       "templatepage": "Chouf elpàj mtagħ elmodàl",
-       "viewhelppage": "Chouf elpàj mtagħ lemgħàwna",
-       "categorypage": "Chouf elpàj mtagħ elkatégori",
-       "viewtalkpage": "Chouf leħdith",
-       "otherlanguages": "B-lûğât okhrîne",
-       "redirectedfrom": "(Tħawwelt men $1)",
-       "redirectpagesub": "Pàj mtagħ taħwil",
-       "lastmodifiedat": "Il-pâj hêđî tbadlit êxir merre nhâr $1, mģa $2.",
-       "viewcount": "Elpàj hadhi dakhloulha {{PLURAL:$1|marra waħda|$1 marra}}.",
-       "protectedpage": "Pàj protéjé",
-       "jumpto": "Imcî l-:",
-       "jumptonavigation": "Ḩawwis",
-       "jumptosearch": "Lawwij",
-       "view-pool-error": "Pardon, esserveuràt tàgħba tawwa.\nBarcha għbàd yħebbou ychoufou nafs elpàj.\nYgħaychek estanna chway qbal ma tjarreb bech todkhel l elpàj hadhi marra okhra.\n\n\n$1",
-       "pool-timeout": "Waqt esstennya wfa",
-       "pool-queuefull": "Essʾaf mgħabbi",
-       "pool-errorunknown": "Ghaltʾa ma nagħrfouhàch",
-       "aboutsite": "Fîme yxoş {{SITENAME}}",
-       "aboutpage": "Project:Fîme yxoş",
-       "copyright": "المحتوى متوفر تحت $1.",
-       "copyrightpage": "{{ns:project}}:Copyrights",
-       "currentevents": "Elli sʾàyer tawwa",
-       "currentevents-url": "Project:Elli sʾàyer tawwa",
-       "disclaimers": "Tambîhêt",
-       "disclaimerpage": "Project:Tambîhêt ģâmme",
-       "edithelp": "Mgħàwna f elktiba",
-       "mainpage": "Il-pâj il-ewelêniye",
-       "mainpage-description": "Il-Pâj il-ewelêniye",
-       "policy-url": "Project:Elpolitik",
-       "portal": "Daxlit il-mujtamaģ",
-       "portal-url": "Project:Mujtamaģ",
-       "privacy": "Is-siyêse mteģ il-konfîdonsyalîtê",
-       "privacypage": "Project:Il-polîtîk mtêģ il-konfîdoñsyalîtê",
-       "badaccess": "خطأ في السماح",
-       "badaccess-group0": "ليس من المسموح لك تنفيذ الفعل الذي طلبته.",
-       "badaccess-groups": "الفعل الذي طلبته مقصور على المستخدمين في {{PLURAL:$2||مجموعة|واحدة من مجموعتي|واحدة من مجموعات}}: $1.",
-       "versionrequired": "تلزم نسخة $1 من ميدياويكي",
-       "versionrequiredtext": "تلزم النسخة $1 من ميدياويكي لاستعمال هذه الصفحة. انظر [[Special:Version|صفحة النسخة]]",
-       "ok": "ok",
-       "retrievedfrom": "Tixđêt min- \"$1\"",
-       "youhavenewmessages": "توجد لديك $1 ($2).",
-       "youhavenewmessagesmulti": "لديك رسائل جديدة على $1",
-       "editsection": "Baddil iş-şafḩa",
-       "editold": "Baddil",
-       "viewsourceold": "Warri essours",
-       "editlink": "baddil",
-       "viewsourcelink": "Warri is-sûrs",
-       "editsectionhint": "Baddil is-sêksyioñ: $1",
-       "toc": "Contenu",
-       "showtoc": "Warri",
-       "hidetoc": "Khabbi",
-       "collapsible-collapse": "Tʾabbes",
-       "collapsible-expand": "Wassegħ",
-       "thisisdeleted": "Warri wella rajjagħ $1؟",
-       "viewdeleted": "Warri $1؟",
-       "restorelink": "{{PLURAL:$1|$1 تعديل محذوف|تعديلا واحدا محذوفا|تعديلين محذوفين|$1 تعديلات محذوفة|$1 تعديلا محذوفا|$1 تعديلا محذوفا}}",
-       "feedlinks": "التغذية:",
-       "feed-invalid": "نوع اشتراك التلقيم غير صحيح.",
-       "feed-unavailable": "التلقيمات غير متوفرة",
-       "site-rss-feed": "$1 تلقيم أر إس إس",
-       "site-atom-feed": "Flü Atom mtêģ $1",
-       "page-rss-feed": "\"$1\" تلقيم أر إس إس",
-       "page-atom-feed": "$1 تلقيم أتوم",
-       "red-link-title": "$1 (Iş-Şafḩa mûc mawjûde)",
-       "sort-descending": "ترتيب تنازلي",
-       "sort-ascending": "ترتيب تصاعدي",
-       "nstab-main": "Şafḩa",
-       "nstab-user": "صفحة مستخدم",
-       "nstab-media": "صفحة وسيط",
-       "nstab-special": "Safḩa spêsyâl",
-       "nstab-project": "صفحة مشروع",
-       "nstab-image": "Fichier",
-       "nstab-mediawiki": "Messàj",
-       "nstab-template": "قالب",
-       "nstab-help": "صفحة مساعدة",
-       "nstab-category": "تصنيف",
-       "nosuchaction": "لا يوجد فعل كهذا",
-       "nosuchactiontext": "الفعل المحدد بواسطة المسار غير صحيح.\nربما تكون قد كتبت المسار بطريقة غير صحيحة، أو اتبعت وصلة غير صحيحة.\nهذا ربما يشير أيضا إلى علة في {{SITENAME}}.",
-       "nosuchspecialpage": "لا توجد صفحة خاصة بهذا الاسم",
-       "nospecialpagetext": "<strong>لقد طلبت صفحة خاصة غير صحيحة.</strong>\n\nقائمة بالصفحات الخاصة الصحيحة يمكن إيجادها في [[Special:SpecialPages|{{int:specialpages}}]].",
-       "error": "ghalath",
-       "databaseerror": "خطأ في قاعدة البيانات",
-       "laggedslavemode": "'''تحذير:''' الصفحة قد لا تحتوي على أحدث التحديثات.",
-       "readonly": "قاعدة البيانات مغلقة",
-       "enterlockreason": "أدخل سببا للغلق، متضمنا تقديرا لوقت رفع الغلق",
-       "readonlytext": "قاعدة البيانات مغلقة حاليا أمام المدخلات الجديدة والتعديلات الأخرى، السبب غالبا ما يكون الصيانة، وستعود قاعدة البيانات للوضع الطبيعي قريبا.\n\nالإداري الذي أغلق قاعدة البيانات أعطى التفسير التالي: $1",
-       "missing-article": "Elbase de données malqatech ettexte mtaε essafħa elli supposée talqaha, welli esmha \"$1\" $2.\n\nHedha elli ysir elεada waqtelli tħel farq qdim walla lien mtaε l'historique mtaε safħa tnaħħat.\n\nIdha ken mouch hedheka li sar, rak momken lqit mochkla fel programme.\nAman qoul elweħeb mel les [[Special:ListUsers/sysop|administrateurs]], waεtih ellien elli ħabit temchilou.",
-       "missingarticle-rev": "(رقم المراجعة: $1)",
-       "missingarticle-diff": "(فرق: $1، $2)",
-       "readonly_lag": "تم إغلاق قاعدة البيانات تلقائيا حتى تستطيع الخواديم التابعة ملاحقة الخادوم الرئيسي",
-       "internalerror": "خطأ داخلي",
-       "internalerror_info": "خطأ داخلي: $1",
-       "filecopyerror": "لم يمكن نسخ الملف \"$1\" إلى \"$2\".",
-       "filerenameerror": "لم يمكن إعادة تسمية الملف \"$1\" إلى \"$2\".",
-       "filedeleteerror": "لم يمكن حذف الملف \"$1\".",
-       "directorycreateerror": "لم يمكن إنشاء المجلد \"$1\".",
-       "filenotfound": "لم يمكن إيجاد الملف \"$1\".",
-       "unexpected": "قيمة غير متوقعة: \"$1\"=\"$2\".",
-       "formerror": "خطأ: لم يمكن تنفيذ الاستمارة",
-       "badarticleerror": "لا يمكن إجراء هذا الفعل على هذه الصفحة.",
-       "cannotdelete": "تعذر حذف الصفحة أو الملف \"$1\".\nربما حذفها شحص آخر.",
-       "cannotdelete-title": "لا يمكن حذف الصفحة \"$1\"",
-       "delete-hook-aborted": "faskhan wa9fou flash.\nmahouwech mobarrar",
-       "badtitle": "عنوان سيء",
-       "badtitletext": "عنوان الصفحة المطلوب إما غير صحيح أو فارغ، وربما الوصلة بين اللغات أو بين المشاريع خاطئة.\nومن الممكن وجود رموز لا تصلح للاستخدام في العناوين.",
-       "perfcached": "البيانات التالية مختزنة وقد لا تكون محدثة. {{PLURAL:$1||نتيجة واحدة|نتيجتان|$1 نتائج|$1 نتيجة}} على الأكثر {{PLURAL:$1||مختزنة|مختزنتان|مختزنة}}.",
-       "perfcachedts": "البيانات التالية مختزنة وكان آخر تحديث لها في $1. {{PLURAL:$4||نتيجة واحدة|نتيجتان|$4 نتائج|$4 نتيجة}} على الأكثر {{PLURAL:$4||مختزنة|مختزنتان|مختزنة}}.",
-       "querypage-no-updates": "التحديثات لهذه الصفحة معطلة حاليا.\nالبيانات هنا لن يتم تحديثها حاليا.",
-       "viewsource": "اعرض المصدر",
-       "viewsource-title": "إظهار مصدر $1",
-       "actionthrottled": "لا يمكن عمل المزيد من هذا الفعل",
-       "actionthrottledtext": "كإجراء ضد السبام، أنت ممنوع من إجراء هذا الفعل عدد كبير من المرات في فترة زمنية قصيرة، ولقد تجاوزت هذا الحد.\nمن فضلك حاول مرة ثانية خلال عدة دقائق.",
-       "protectedpagetext": "هذه الصفحة تمت حمايتها لمنع التعديل.",
-       "viewsourcetext": "يمكنك رؤية ونسخ مصدر هذه الصفحة:",
-       "viewyourtext": "يمكنك رؤية ونسخ مصدر ''' تعديلاتك ''' في هذه الصفحة:",
-       "protectedinterface": "هذه الصفحة توفر نص الواجهة للبرنامج، وهي مقفلة لمنع التخريب.",
-       "editinginterface": "'''تحذير:''' أنت تقوم بتحرير صفحة تستخدم في الواجهة النصية للبرنامج.\nسوف تؤثر التغييرات على هذه الصفحة على مظهر واجهة المستخدم للمستخدمين الآخرين.\nللترجمات، من فضلك استخدم مشروع ترجمة ميدياويكي [//translatewiki.net/wiki/Main_Page?setlang=ar translatewiki.net].",
-       "cascadeprotected": "تمت حماية هذه الصفحة من التعديل لأنها مدمجة في {{PLURAL:$1||الصفحة التالية، والتي|الصفحتين التاليتين، واللتين|الصفحات التالية، والتي}} تم استعمال خاصية \"حماية الصفحات المدمجة\" {{PLURAL:$1||بها|بهما|بها}}:\n$2",
-       "namespaceprotected": "لا تمتلك الصلاحية لتعديل الصفحات في نطاق '''$1'''.",
-       "customcssprotected": "أنت لا تمتلك السماح لتعديل صفحة الCSS هذه، لأنها تحتوي على الإعدادات الشخصية لمستخدم آخر.",
-       "customjsprotected": "أنت لا تمتلك السماح لتعديل صفحة الجافاسكريبت هذه، لأنها تحتوي على الإعدادات الشخصية لمستخدم آخر.",
-       "ns-specialprotected": "الصفحات الخاصة لا يمكن تعديلها.",
-       "titleprotected": "{{GENDER:$1|حمى|حمت}} [[User:$1|$1]] هذا العنوان من الإنشاء.\nالسبب المعطى هو ''$2''.",
-       "filereadonlyerror": "تعذر تعديل الملف \"$1\" لأن مستودع الملف \"$2\" في وضع القراءة فقط. \n\nالمدير الذي قام بغلقه قدم التفسير التالي: \"$3\".",
-       "invalidtitle-knownnamespace": "عنوان غير صالح في النطاق «$2» مع نص «$3»",
-       "invalidtitle-unknownnamespace": "عنوان غير صالح ذو نطاق غير معروف رقم $1 ونص «$2»",
-       "exception-nologin": "غير مسجل الدخول",
-       "exception-nologin-text": "hedhi ess'af7a wa 2ella el action te7tej mennek bech etloginni il hedha el wiki",
-       "virus-badscanner": "ضبط سيء: ماسح فيروسات غير معروف: ''$1''",
-       "virus-scanfailed": "فشل المسح (كود $1)",
-       "virus-unknownscanner": "مضاد فيروسات غير معروف:",
-       "logouttext": "'''أنت الآن غير مسجل الدخول.'''\n\nتستطيع المتابعة باستعمال {{SITENAME}} كمجهول، أو <span class='plainlinks'>[$1 الدخول مرة أخرى]</span> بنفس الاسم أو باسم آخر.\nمن الممكن أن ترى بعض الصفحات كما لو أنك مسجل الدخول، وذلك حتى تقوم بإفراغ الصفحات المختزنة في المتصفح لديك.",
-       "yourname": "اسم المستخدم:",
-       "yourpassword": "كلمة السر:",
-       "yourpasswordagain": "أعد كتابة كلمة السر:",
-       "remembermypassword": "تذكر دخولي على هذا الحاسوب (إلى {{PLURAL:$1||يوم واحد|يومين|$1 أيام|$1 يومًا|$1 يوم}} كحد أقصى)",
-       "yourdomainname": "نطاقك:",
-       "externaldberror": "هناك إما خطأ في دخول قاعدة البيانات الخارجية أو أنه غير مسموح لك بتحديث حسابك الخارجي.",
-       "login": "ادخل",
-       "nav-login-createaccount": "Connecti / aεmel compte",
-       "userlogin": "ادخل / أنشئ حسابا",
-       "userloginnocreate": "دخول",
-       "logout": "اخرج",
-       "userlogout": "خروج",
-       "notloggedin": "غير مسجل الدخول",
-       "nologin": "ألا تمتلك حسابا؟ '''$1'''.",
-       "nologinlink": "أنشئ حسابا",
-       "createaccount": "أنشئ حسابا",
-       "gotaccount": "تمتلك حسابا بالفعل؟ '''$1'''.",
-       "gotaccountlink": "ادخل",
-       "userlogin-resetlink": "أنسيت بيانات الولوج؟",
-       "createaccountmail": "بواسطة البريد الإلكتروني",
-       "createaccountreason": "السبب:",
-       "badretype": "كلمات السر التي أدخلتها لا تتطابق.",
-       "userexists": "اسم المستخدم الذي تم إدخاله مستعمل بالفعل.\nالرجاء اختيار اسم مختلف.",
-       "loginerror": "خطأ في الدخول",
-       "createaccounterror": "تعذر إنشاء حساب المستخدم: $1",
-       "nocookiesnew": "تم إنشاء حساب المستخدم، ولكنك لست مسجل الدخول بعد.\nيستخدم {{SITENAME}} كوكيز لتسجيل الدخول.\nلديك الكوكيز معطلة.\nمن فضلك فعلها، ثم سجل الدخول باسم المستخدم وكلمة السر الجديدين.",
-       "nocookieslogin": "يستخدم {{SITENAME}} الكوكيز لتسجيل الدخول.\nالكوكيز معطلة لديك.\nمن فضلك فعلها ثم حاول مرة أخرى.",
-       "nocookiesfornew": "لم يتم إنشاء حساب المستخدم، لأننا لم نستطع تأكيد مصدره. \nتأكد من أن ملفات تعريف الارتباط (الكوكيز) مفعلة عندك، ثم أعد تحميل الصفحة وحاول مرة أخرى.",
-       "noname": "لم تحدد اسم مستخدم صحيح.",
-       "loginsuccesstitle": "تم الدخول بشكل صحيح",
-       "loginsuccess": "'''لقد قمت بتسجيل الدخول ل{{SITENAME}} باسم \"$1\".'''",
-       "nosuchuser": "لا يوجد مستخدم بالاسم \"$1\".\nأسماء المستخدمين حساسة لحالة الحروف.\nتأكد من إملاء الاسم، أو [[Special:UserLogin/signup|قم بإنشاء حساب جديد]].",
-       "nosuchusershort": "لا يوجد مستخدم باسم $1\".\nتأكد من إملاء الاسم.",
-       "nouserspecified": "يجب عليك تحديد اسم مستخدم.",
-       "login-userblocked": "هذا المستخدم ممنوع. لا يسمح بالولوج.",
-       "wrongpassword": "كلمة السر التي أدخلتها غير صحيحة.\nمن فضلك حاول مرة أخرى.",
-       "wrongpasswordempty": "كلمة السر المدخلة كانت فارغة.\nمن فضلك حاول مرة أخرى.",
-       "passwordtooshort": "يجب أن تتكون كلمة السر على الأقل من {{PLURAL:$1|حرف واحد|حرفين|$1 حروف|$1 حرفا|$1 حرف}}.",
-       "password-name-match": "يجب أن تكون كلمة المرور مختلفة عن اسم المستخدم.",
-       "password-login-forbidden": "تم منع استخدام اسم المستخدم هذا وكلمة السر.",
-       "mailmypassword": "أرسل لي كلمة سر جديدة",
-       "passwordremindertitle": "كلمة سر مؤقتة جديدة ل{{SITENAME}}",
-       "passwordremindertext": "لقد طلب شخص ما (غالبا أنت، من عنوان الآيبي $1) كلمة سر جديدة ل{{SITENAME}} ($4).\nأنشئت كلمة سر مؤقتة للمستخدم \"$2\" وجعلت \"$3\".\nلو أن هذا ما تريده، فعليك أن تقوم بتسجيل الدخول واختيار كلمة سر جديدة الآن.\nسوف تنتهي مدة صلاحية كلمة سرك المؤقتة في غضون {{PLURAL:$5|أقل من يوم واحد|يوم واحد|يومين|$5 أيام|$5 يوما|$5 يوم}}.\n\nإذا كان الذي قام بهذا الطلب شخص آخر أو إذا تذكرت كلمة سرك ولا ترغب  في تغييرها، فبإمكانك أن تتجاهل هذه الرسالة وأن تستمر في استخدام كلمة سرك القديمة.",
-       "noemail": "لا يوجد عنوان بريد إلكتروني مسجل للمستخدم \"$1\".",
-       "noemailcreate": "عليك تقديم عنوان بريد إلكتروني صالح",
-       "passwordsent": "تم إرسال كلمة سر جديدة إلى عنوان البريد الإلكتروني المسجل للمستخدم \"$1\".\nمن فضلك حاول تسجيل الدخول مرة ثانية بعد استلامها.",
-       "blocked-mailpassword": "تم منع عنوان الأيبي الخاص بك من التحرير، ولمنع التخريب لا يمكنك أن تستخدم خاصية استرجاع كلمة السر.",
-       "eauthentsent": "تم إرسال رسالة تأكيد إلكترونية إلى العنوان المسمى.\nحتى ترسل أي رسالة أخرى لذلك الحساب عليك أن تتبع التعليمات الواردة في الرسالة لتأكيد أن هذا الحساب هو لك بالفعل.",
-       "throttled-mailpassword": "تم بالفعل إرسال تذكير بكلمة السر، في ال{{PLURAL:$1||ساعة الماضية|ساعتين الماضيتين|$1 ساعات الماضية|$1 ساعة الماضية}}.\nلمنع التخريب، سيتم إرسال تذكير واحد كل {{PLURAL:$1||ساعة|ساعتين|$1 ساعات|$1 ساعة}}.",
-       "mailerror": "خطأ أثناء إرسال البريد: $1",
-       "acct_creation_throttle_hit": "أنشأ زوار هذه الويكي باستخدام عنوان آيبيك {{PLURAL:$1||حسابا واحدا|حسابين|$1 حسابات|$1 حسابا|$1 حساب}} في اليوم الماضي، وهو الحد الأقصى المسموح به في هذه الفترة الزمنية.\nوكنتيجة لذلك، لن يتمكن الزوار الذين يستخدمون عنوان الأيبي هذا من إنشاء أي حسابات أخرى حاليا.",
-       "emailauthenticated": "تم تأكيد بريدك الإلكتروني في $2 الساعة $3.",
-       "emailnotauthenticated": "لم يتم التحقق من بريدك الإلكتروني.\nلن يتم إرسال رسائل لأي من الميزات التالية.",
-       "noemailprefs": "حدد عنوان بريد إلكتروني في تفضيلاتك لهذه الخصائص لتعمل.",
-       "emailconfirmlink": "أكد عنوان بريدك الإلكتروني",
-       "invalidemailaddress": "لا يمكن قبول عنوان البريد الإلكتروني حيث تبدو صيغته خاطئة.\nضع عنوانا مضبوطا أو أفرغ هذا الحقل.",
-       "cannotchangeemail": "تغيير عنوان البريد الإلكتروني لهذا الحساب غير ممكن على هذا الويكي",
-       "emaildisabled": "لا يمكن إرسال رسائل البريد الإلكتروني من هذا الموقع.",
-       "accountcreated": "تم إنشاء الحساب",
-       "accountcreatedtext": "تم إنشاء الحساب الخاص ب$1.",
-       "createaccount-title": "إنشاء حساب في {{SITENAME}}",
-       "createaccount-text": "شخص ما أنشأ حسابا لعنوان بريدك الإلكتروني في {{SITENAME}} ($4) بالاسم \"$2\"، كلمة السر \"$3\".\nينبغي عليك تسجيل الدخول وتغيير كلمة السر الخاصة بك الآن.\n\nيمكنك تجاهل هذه الرسالة، لو تم إنشاء هذا الحساب بالخطأ.",
-       "login-throttled": "لقد قمت بمحاولات دخول كثيرة جدا مؤخرا.\nمن فضلك انتظر قبل المحاولة مرة أخرى.",
-       "login-abort-generic": "لم ينجح ولوجك - إجهاض",
-       "loginlanguagelabel": "اللغة: $1",
-       "suspicious-userlogout": "رفض طلب خروجك لأنه يبدو كأنه أرسل عن طريق متصفح معطوب أو وسيط تخزين.",
-       "pt-login": "Odkul",
-       "pt-createaccount": "Aģmil koñt",
-       "php-mail-error-unknown": "خطأ غير معروف في وظيفة البريد PHP's mail()",
-       "user-mail-no-addy": "لقد حاولت إرسال بريد إلكتروني دون عنوان بريد إلكتروني.",
-       "resetpass_announce": "تم تسجيل دخولك بكلمة سر مؤقتة.\nللدخول بشكل نهائي، يجب عليك ضبط كلمة سر جديدة هنا:",
-       "resetpass_header": "غير كلمة سر الحساب",
-       "oldpassword": "كلمة السر القديمة:",
-       "newpassword": "كلمة السر الجديدة:",
-       "retypenew": "أعد كتابة كلمة السر الجديدة:",
-       "resetpass_submit": "ضبط كلمة السر والدخول",
-       "changepassword-success": "تم تغيير كلمة السر الخاصة بك بنجاح! يتم تسجيل دخولك الآن...",
-       "resetpass_forbidden": "كلمات السر لا يمكن تغييرها",
-       "resetpass-no-info": "يجب أن تكون مسجل الدخول للوصول إلى هذه الصفحة مباشرة.",
-       "resetpass-submit-loggedin": "تغيير كلمة السر",
-       "resetpass-submit-cancel": "ifsa5",
-       "resetpass-wrong-oldpass": "كلمة سر حالية أو مؤقتة غير صحيحة.\nربما تكون غيرت كلمة السر الخاصة بك بنجاح أو طلبت كلمة سر مؤقتة جديدة.",
-       "resetpass-temp-password": "كلمة سر مؤقتة:",
-       "passwordreset": "إعادة ضبط كلمة السر",
-       "passwordreset-legend": "إعادة تعيين كلمة السر",
-       "passwordreset-disabled": "عُطّلت إعادة تعيين كلمة السر على هذه الويكي.",
-       "passwordreset-username": "اسم المستخدم:",
-       "passwordreset-domain": "النطاق:",
-       "passwordreset-capture": "أأعرض البريد الإلكتروني الناتج؟",
-       "passwordreset-capture-help": "إذا علّمت هذا الصندوق فسيعرض لك البريد الإلكتروني (الذي يحتوي كلمة سر مؤقتة) وسيرسل أيضا للمستخدم.",
-       "passwordreset-email": "عنوان البريد الإلكتروني:",
-       "passwordreset-emailtitle": "تفاصيل حساب {{SITENAME}}",
-       "passwordreset-emailtext-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": "ولّد بريد إلكتروني تذكيري وهو معروض بالأسفل لكن فشل إرساله للمستخدم: $1",
-       "changeemail": "تغيير عنوان البريد الإلكتروني",
-       "changeemail-text": "أكمل هذا النموذج لتغيير عنوان البريد الإلكتروني. سوف تحتاج إلى إدخال كلمة السر الخاصة بك لتأكيد هذا التغيير.",
-       "changeemail-no-info": "يجب تسجيل الدخول للوصول إلى هذه الصفحة مباشرة.",
-       "changeemail-oldemail": "عنوان البريد الإلكتروني الحالي:",
-       "changeemail-newemail": "عنوان البريد الإلكتروني الجديد:",
-       "changeemail-none": "(لا شيء)",
-       "changeemail-submit": "غيّر البريد الإلكتروني",
-       "bold_sample": "نص غليظ",
-       "bold_tip": "نص غليظ",
-       "italic_sample": "نص مائل",
-       "italic_tip": "نص مائل",
-       "link_sample": "عنوان وصلة",
-       "link_tip": "وصلة داخلية",
-       "extlink_sample": "http://www.example.com عنوان الوصلة",
-       "extlink_tip": "وصلة خارجية (تذكر بادئة http://)",
-       "headline_sample": "نص عنوان رئيسي",
-       "headline_tip": "عنوان من المستوى الثاني",
-       "nowiki_sample": "أدخل النص غير المنسق هنا",
-       "nowiki_tip": "أهمل تهيئة الويكي",
-       "image_tip": "ملف مدرج",
-       "media_tip": "وصلة ملف",
-       "sig_tip": "توقيعك مع الساعة والتاريخ",
-       "hr_tip": "خط أفقي (تجنب الاستخدام بكثرة)",
-       "summary": "ملخص:",
-       "subject": "موضوع/عنوان:",
-       "minoredit": "هذا تعديل طفيف",
-       "watchthis": "راقب هذه الصفحة",
-       "savearticle": "احفظ الصفحة",
-       "preview": "معاينة",
-       "showpreview": "أظهر معاينة",
-       "showdiff": "أظهر التغييرات",
-       "anoneditwarning": "'''تحذير:''' لم تقم بالدخول.\nسيسجل عنوان الآيبي خاصتك في تاريخ هذه الصفحة.",
-       "anonpreviewwarning": "''أنت غير مسجل الدخول. الحفظ سيسجل عنوان الأيبي الخاص بك في تاريخ هذه الصفحة.''",
-       "missingsummary": "'''تنبيه:''' لم تقم بكتابة ملخص للتعديل.\nإذا قمت بضغط حفظ الصفحة مرة أخرى، فيتم حفظ تعديلك بدون ملخص.",
-       "missingcommenttext": "من فضلك أدخل تعليقا في الأسفل.",
-       "missingcommentheader": "'''تنبيه:''' لم تقم بوضع موضوع/عنوان لهذا التعليق.\nإذا قمت بالضغط على \"{{int:savearticle}}\" مجددا، سيتم حفظ تعليقك بدون عنوان.",
-       "summary-preview": "معاينة الملخص:",
-       "subject-preview": "معاينة للموضوع/العنوان:",
-       "blockedtitle": "المستخدم ممنوع",
-       "blockedtext": "'''اسم المستخدم أو عنوان الأيبي الخاص بك تم منعه.'''\n\nقام بالمنع $1.\nسبب المنع هو: ''$2''.\n\n* بداية المنع: $8\n* انتهاء المنع: $6\n* الممنوع المقصود: $7\n\nيمكنك الاتصال ب$1 أو مع أحد [[{{MediaWiki:Grouppage-sysop}}|الإداريين]] للنقاش حول المنع.\nلا يمكنك استخدام خاصية 'مراسلة هذا المستخدم' إلا إذا كنت قد وضعت عنوان بريدي صحيح في [[Special:Preferences|تفضيلات حسابك]] ولم يتم منعك من استخدامها.\nعنوان الأيبي الخاص بك حاليا هو $3، ورقم المنع هو #$5.\nمن فضلك اذكر كل التفاصيل بالأعلى في أي استعلامات تقوم بها.",
-       "autoblockedtext": "تم منع عنوان آيبيك تلقائيا لأن مستخدما آخرا ممنوعا بواسطة $1 استخدمه.\nالسبب الممنوح هو التالي:\n\n:''$2''\n\n* بداية المنع: $8\n* انتهاء المنع: $6\n* الممنوع المقصود: $7\n\nيمكنك أن تتصل ب $1 أو أحد [[{{MediaWiki:Grouppage-sysop}}|الإداريين]] الآخرين لمناقشة المنع.\n\nلاحظ أنه لا يمكنك استخدام خاصية \"إرسال رسالة لهذا المستخدم\" إلا لو كان لديك عنوان بريد إلكتروني صحيح مسجل في [[Special:Preferences|تفضيلاتك]] ولم يتم منعك من استخدامه.\n\nعنوان آيبيك الحالي $3، ورقم المنع #$5.\nمن فضلك اذكر كل التفاصيل بالأعلى في أي استعلامات تقوم بها.",
-       "blockednoreason": "لا سبب معطى",
-       "whitelistedittext": "يجب عليك $1 لتتمكن من تعديل الصفحات.",
-       "confirmedittext": "يجب عليك تأكيد بريدك الإلكتروني قبل تعديل الصفحات.\nمن فضلك اكتب وأكد بريدك الإلكتروني من خلال [[Special:Preferences|تفضيلاتك]].",
-       "nosuchsectiontitle": "تعذر إيجاد القسم",
-       "nosuchsectiontext": "لقد حاولت تحرير قسم غير موجود.\nربما يكون قد تم نقله أو حذفه أثناء مشاهدتك للصفحة.",
-       "loginreqtitle": "تسجيل الدخول مطلوب",
-       "loginreqlink": "الولوج",
-       "loginreqpagetext": "يجب عليك $1 لتشاهد صفحات أخرى.",
-       "accmailtitle": "تم إرسال كلمة السر.",
-       "accmailtext": "كلمة سر مولدة عشوائيا ل [[User talk:$1|$1]] تم إرسالها إلى $2.\n\nكلمة السر لهذا الحساب الجديد يمكن تغييرها في صفحة ''[[Special:ChangePassword|تغيير كلمة السر]]'' عند تسجيل الدخول.",
-       "newarticle": "(جديد)",
-       "newarticletext": "لقد تبعت وصلة لصفحة لم يتم إنشائها بعد.\nلإنشاء هذه الصفحة ابدأ الكتابة في الصندوق بالأسفل (انظر في [$1 صفحة المساعدة] للمزيد من المعلومات).\nإذا كانت زيارتك لهذه الصفحة بالخطأ، اضغط على زر ''رجوع'' في متصفح الإنترنت لديك.",
-       "anontalkpagetext": "----''هذه صفحة نقاش لمستخدم مجهول لم يقم بإنشاء حساب بعد أو لا يستعمل ذلك الحساب.\nلذا فيجب علينا استعمال رقم الأيبي للتعرف عليه/عليها.\nمثل هذا العنوان يمكن أن يشترك فيه عدة مستخدمين.\nلو كنت مستخدما مجهولا وتشعر بأن تعليقات لا تخصك تم توجيهها إليك، من فضلك [[Special:UserLogin/signup|أنشئ حسابا]] أو [[Special:UserLogin|سجل الدخول]] لتجنب الارتباك المستقبلي مع مستخدمين مجهولين آخرين.''",
-       "noarticletext": "Mefamme ḩatte têkst tawwe fiş-şafḩa hêđi.\nTnijjim [[Special:Search/{{PAGENAME}}|tfarkis ģal-tîtr mtêģ iş-şafħa]] fi safḩat okhrîne, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tfarkis fil-istorîk illi ģandhom ģalêqa], \nwallê [{{fullurl:{{FULLPAGENAME}}|action=edit}} tbaddil iş-şafħa hêđi]</span>",
-       "noarticletext-nopermission": "لا يوجد حاليا أي نص في هذه الصفحة.يمكنك [[Special:Search/{{PAGENAME}}|البحث عن عنوان هذه الصفحة]] في الصفحات الأخرى,أو <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} بحث السجلات المتصلة]</span>.",
-       "userpage-userdoesnotexist": "حساب المستخدم \"<nowiki>$1</nowiki>\" غير مسجل.\nمن فضلك تأكد أنك تريد إنشاء/تعديل هذه الصفحة.",
-       "userpage-userdoesnotexist-view": "حساب المستخدم \"$1\" غير مسجل.",
-       "blocked-notice-logextract": "هذا المستخدم ممنوع حاليا.\nآخر مدخلة في سجل المنع موفرة بالأسفل كمرجع:",
-       "clearyourcache": "'''ملاحظة:''' بعد الحفظ, أنت ربما تحتاج إلى إفراغ كاش متصفحك لرؤية التغييرات.\n* '''فيرفكس / سفاري:''' اضغط ''Shift'' أثناء ضغط ''Reload'', أو اضغط أيا من ''Ctrl-F5'' أو ''Ctrl-R'' (''⌘-R'' على ماك)\n* '''جوجل كروم:''' اضغط ''Ctrl-Shift-R'' (''⌘-Shift-R'' على ماك)\n* '''إنترنت إكسبلورر:''' اضغط ''Ctrl'' أثناء ضغط ''Refresh''، أو اضغط ''Ctrl-F5''\n* '''كنكرر:''' اضغط ''Reload'' أو اضغط ''F5''\n* '''أوبرا:''' أفرغ الكاش في ''Tools → Preferences''",
-       "usercssyoucanpreview": "'''ملاحظة:''' استعمل زر \"{{int:showpreview}}\" لتجربة CSS الجديد قبل حفظ الصفحة.",
-       "userjsyoucanpreview": "'''ملاحظة:''' استعمل زر \"{{int:showpreview}}\" لتجربة جافاسكربت الجديدة قبل حفظ الصفحة.",
-       "usercsspreview": "'''تذكر أنك تقوم بعرض الأنماط المتراصة (CSS) الخاصة بك فقط\nلم يتم حفظها بعد!'''",
-       "userjspreview": "'''تذكر أنك فقط تجرب/تعاين جافاسكربت.'''\n'''لم يتم الحفظ بعد!'''",
-       "sitecsspreview": "''' تذكر أنك فقط في وضع المعاينة لهذا CSS ''' \n''' ولم يتم حفظ الصفحة بعد! '''",
-       "sitejspreview": "''' تذكر أنك فقط في وضع المعاينة لكود JavaScript هذا''' \n''' ولم يتم حفظه بعد! '''",
-       "userinvalidcssjstitle": "'''تحذير:''' لا توجد واجهة  \"$1\".\nتذكر أن ملفات ال.css و ال.js تستخدم حروف صغيرة في العنوان ، كمثال {{ns:user}}:Foo/vector.css و ليس {{ns:user}}:Foo/Vector.css.",
-       "updated": "(محدثة)",
-       "note": "'''ملاحظة:'''",
-       "previewnote": "'''تذكر أن هذه مجرد معاينة أولية.'''\nلم تحفظ تغييراتك إلى الآن!",
-       "continue-editing": "أكمل التحرير",
-       "previewconflict": "هذا العرض يوضح النص الموجود في صندوق التحرير العلوي والذي سيظهر إذا اخترت الحفظ.",
-       "session_fail_preview": "'''عذرا! لم نتمكن من حفظ التعديلات التي قمت بها نتيجة لضياع بيانات هذه الجلسة.\nمن فضلك حاول مرة أخرى.\nفي حال استمرار المشكلة حاول أن تقوم [[Special:UserLogout|بالخروج]] ومن ثم الولوج مرة أخرى.'''",
-       "session_fail_preview_html": "'''عذرا! لم نستطع معالجة تعديلك بسبب فقدان بيانات الجلسة.'''\n\n''لأن {{SITENAME}} بها HTML الخام مفعلة، العرض المسبق مخفي كاحتياط ضد هجمات الجافا سكريبت.''\n\n'''إذا كانت هذه محاولة تعديل صادقة، من فضلك حاول مرة أخرى.\nإذا كانت مازالت لا تعمل، حاول [[Special:UserLogout|تسجيل الخروج]] ثم تسجيل الدخول مجددا.'''",
-       "token_suffix_mismatch": "'''تعديلك تم رفضه لأن عميلك أخطأ في علامات الترقيم\nفي نص التعديل. تم رفض التعديل لمنع فساد نص المقالة.\nهذا يحدث أحيانا عندما تستخدم خدمة بروكسي مجهول معيبة مبنية على الوب.'''",
-       "edit_form_incomplete": "'''بعض أجزاء من نموذج التعديل لم تصل إلى الخادم؛ تأكد من أن تعديلاتك لم تمس وحاول مجددا.'''",
-       "editing": "تحرير $1",
-       "creating": "إنشاء «$1»",
-       "editingsection": "تحرير $1 (قسم)",
-       "editingcomment": "تعديل $1 (قسم جديد)",
-       "editconflict": "تضارب في التحرير: $1",
-       "explainconflict": "لقد عدل شخص آخر هذه الصفحة بعد أن بدأت أنت بتحريرها.\nصندوق النصوص العلوي يحتوي على النص الموجود حاليا في الصفحة.\nوالتغييرات التي قمت أنت بها موجودة في الصندوق في أسفل الصفحة.\nيجب أن تقوم بدمج تغييراتك في النص الموجود حاليا.\n'''فقط''' ما هو موجود في الصندوق العلوي هو ما سيتم حفظه عند الضغط على زر \"حفظ الصفحة\".",
-       "yourtext": "نصك",
-       "storedversion": "النسخة المخزنة",
-       "nonunicodebrowser": "'''تحذير: متصفحك لا يتوافق مع الترميز الموحد.\nتمت معالجة هذا لكي تتمكن من تحرير الصفحات بأمان: الحروف التي ليست ASCII سوف تظهر في صندوق التحرير كأكواد سداسي عشرية.'''",
-       "editingold": "''' تحذير: أنت تقوم الآن بتحرير نسخة قديمة من هذه الصفحة.\nإذا قمت بحفظها، ستفقد كافة التغييرات التي حدثت بعد هذه النسخة. '''",
-       "yourdiff": "الفروق",
-       "copyrightwarning": "من فضلك لاحظ أن جميع المساهمات ل {{SITENAME}} خاضعة وصادرة تحت ترخيص $2 (انظر في $1 للمزيد من التفاصيل)\nإذا لم ترد أن تخضع كتابتك للتعديل والتوزيع الحر، لا تضعها هنا<br />.\nكما أنك تتعهد بأنك قمت بكتابة ما هو موجود بنفسك، أو قمت بنسخها من مصدر يخضع ضمن الملكية العامة، أو مصدر حر آخر.\n'''لا ترسل أي عمل ذي حقوق محفوظة بدون الإذن من صاحب الحق'''.",
-       "copyrightwarning2": "من فضلك لاحظ أن جميع المساهمات في {{SITENAME}} يمكن أن تعدل أو تتغير أو تزال من قبل المساهمين الآخرين.\nإذا لم تكن ترغب أن تعدل مشاركاتك بهذا الشكل، لا تضعها هنا.<br />\nأنت تقر أيضا أنك كتبت هذا بنفسك، أو نسخته من مصدر يخضع للملكية العامة، أو مصدر حر آخر (انظر $1 للتفاصيل).\n'''لا تضف أي عمل ذي حقوق محفوظة بدون تصريح!'''",
-       "longpageerror": "'''خطأ: النص الذي قمت بإدخاله {{PLURAL:$1|واحد كيلوبايت|$1 كيلوبيات}} أطول, وهو أطول من الحد الأقصى {{PLURAL:$2|واحد كيلوبايت|$2 كيلوبايت}}.'''\nو يتعذر حفظه.",
-       "readonlywarning": "'''تحذير: لقد أغلقت قاعدة البيانات للصيانة، لذلك لن تتمكن من حفظ التعديلات التي قمت بها حاليا.\nإذا رغبت بإمكانك أن تنسخ النص الذي تعمل عليه وتحفظه في ملف نصي إلى وقت لاحق.'''\n\nالإداري الذي أغلقها أعطى هذا التفسير: $1",
-       "protectedpagewarning": "'''تحذير: تمت حماية هذه الصفحة حتى يمكن للمستخدمين ذوي الصلاحيات الإدارية فقط تعديلها.'''\nآخر مدخلة سجل موفرة بالأسفل كمرجع:",
-       "semiprotectedpagewarning": "'''ملاحظة:''' تمت حماية هذه الصفحة بحيث يمكن للمستخدمين المسجلين فقط تعديلها.\nآخر مدخلة سجل موفرة بالأسفل كمرجع:",
-       "cascadeprotectedwarning": "'''تحذير:''' تمت حماية هذه الصفحة بحيث يستطيع المستخدمون ذوو الصلاحيات الإدارية فقط تعديلها، وذلك لأنها مدمجة في {{PLURAL:$1||الصفحة التالية والتي تمت حمايتها|الصفحتين التاليتين واللتين تمت حمايتها|الصفحات التالية والتي تمت حمايتها}} بخاصية \"حماية الصفحات المدمجة\":",
-       "titleprotectedwarning": "'''تحذير:  هذه الصفحة تمت حمايتها بحيث أن [[Special:ListGroupRights|صلاحيات معينة]] مطلوبة لإنشائها.'''\nآخر مدخلة سجل موفرة بالأسفل كمرجع:",
-       "templatesused": "{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه الصفحة:",
-       "templatesusedpreview": "{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه المعاينة:",
-       "templatesusedsection": "{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذا القسم:",
-       "template-protected": "(protégé)",
-       "template-semiprotected": "(حماية جزئية)",
-       "hiddencategories": "{{PLURAL:$1|هذه الصفحة غير موجودة في أي تصنايف مخفية|هذه الصفحة موجودة في تصنيف مخفي واحد|هذه الصفحة موجودة في تصنيفين مخفيين|هذه الصفحة موجودة في $1 تصانيف مخفية|هذه الصفحة موجودة في $1 تصنيفا مخفيا|هذه الصفحة موجودة في $1 تصنيف مخفي}}:",
-       "nocreatetext": "قام {{SITENAME}} بتحديد القدرة على إنشاء صفحات جديدة.\nيمكنك العودة وتحرير صفحة موجودة بالفعل، أو [[Special:UserLogin|الدخول أو تسجيل حساب]].",
-       "nocreate-loggedin": "أنت لا تمتلك الصلاحية لإنشاء صفحات جديدة.",
-       "sectioneditnotsupported-title": "تعديل الأقسام غير مدعوم",
-       "sectioneditnotsupported-text": "تعديل الأقسام غير مدعوم في هذه الصفحة",
-       "permissionserrors": "أخطاء السماحات",
-       "permissionserrorstext": "لا تمتلك الصلاحية لفعل هذا، {{PLURAL:$1||للسبب التالي|للسببين التاليين|للأسباب التالية}}:",
-       "permissionserrorstext-withaction": "لا تملك الصلاحيات ل$2، لل{{PLURAL:$1||سبب التالي|سببين التاليين|أسباب التالية}}:",
-       "recreate-moveddeleted-warn": "'''تحذير: أنت تقوم بإعادة إنشاء صفحة سبق حذفها.'''\n\nيجب عليك التيقن من أن الاستمرار بتحرير هذه الصفحة ملائم.\nسجلا الحذف والنقل لهذه الصفحة معروضان هنا للتيسير:",
-       "moveddeleted-notice": "هذه الصفحة تم حذفها.\nسجلا الحذف والنقل للصفحة معروضان بالأسفل كمرجع.",
-       "log-fulllog": "أظهر السجل الكامل",
-       "edit-hook-aborted": "التعديل تم تركه بواسطة الخطاف.\nلم يعط تفسيرا.",
-       "edit-gone-missing": "لم يمكن تحديث الصفحة.\nيبدو أنه تم حذفها.",
-       "edit-conflict": "تضارب تحريري.",
-       "edit-no-change": "تعديلك تم تجاهله، لأنه لم يحدث أي تعديل للنص.",
-       "edit-already-exists": "لم يمكن إنشاء صفحة جديدة.\nهي موجودة بالفعل.",
-       "defaultmessagetext": "نص الرسالة الافتراضي",
-       "expensive-parserfunction-warning": "'''تحذير:''' هذه الصفحة تحتوي على استدعاءات دالة محلل كثيرة مكلفة.\n\nينبغي أن تكون أقل من {{PLURAL:$2||استدعاء واحد|استدعاءين|$2 استدعاءات|$2 استدعاء}}، يوجد الآن {{PLURAL:$1|استدعاء واحد|استدعاءان|$2 استدعاءات|$2 استدعاء}}.",
-       "expensive-parserfunction-category": "صفحات يوجد بها استدعاءات دوال محلل كثيرة ومكلفة",
-       "post-expand-template-inclusion-warning": "'''تحذير:''' حجم تضمين القالب كبير جدا.\nبعض القوالب لن تضمن.",
-       "post-expand-template-inclusion-category": "الصفحات حيث تم تجاوز حجم تضمين القالب",
-       "post-expand-template-argument-warning": "'''تحذير:''' هذه الصفحة تحتوي على عامل قالب واحد على الأقل له حجم تمدد كبير جدا.\nهذه العوامل تم حذفها.",
-       "post-expand-template-argument-category": "صفحات تحتوي مدخلات القالب المحذوفة",
-       "parser-template-loop-warning": "تم كشف حلقة قالب: [[$1]]",
-       "parser-template-recursion-depth-warning": "تم تجاوز حد عمق فرد القوالب ($1)",
-       "language-converter-depth-warning": "تم تخطي حد عمق محول اللغة ($1)",
-       "node-count-exceeded-category": "الصفحات التي حدث فيها تجاوز تعداد العقد",
-       "node-count-exceeded-warning": "تجاوزت هذه الصفحة تعداد العقد",
-       "expansion-depth-exceeded-category": "الصفحات التي حدث فيها تجاوز عمق التوسيع",
-       "expansion-depth-exceeded-warning": "الصفحة تجاوزت عمق التوسيع",
-       "parser-unstrip-loop-warning": "حلقة معراة تم الكشف عنها",
-       "parser-unstrip-recursion-limit": "تعدى حد العودية Unstrip  ($1)",
-       "undo-success": "يمكن استرجاع التعديل.\nمن فضلك تحقق من المقارنة بالأسفل للتأكد من أن هذا هو ما تريد أن تفعله، وبعد ذلك احفظ التغييرات بالأسفل للانتهاء من استرجاع التعديل.",
-       "undo-failure": "لم يمكن استرجاع التعديل بسبب تعديلات متعارضة تمت على الصفحة.",
-       "undo-norev": "فشل في الرجوع عن التعديل حيث أنه غير موجود أو تم حذفه.",
-       "undo-summary": "الرجوع عن التعديل $1 بواسطة [[Special:Contributions/$2|$2]] ([[User talk:$2|نقاش]])",
-       "cantcreateaccounttitle": "لا يمكن إنشاء حساب",
-       "cantcreateaccount-text": "إنشاء الحسابات من عنوان الأيبي هذا ('''$1''') تم منعه بواسطة [[User:$3|$3]].\n\nالسبب المعطى بواسطة $3 هو ''$2''",
-       "viewpagelogs": "اعرض سجلات هذه الصفحة",
-       "nohistory": "لا يوجد تاريخ للتعديلات لهذه الصفحة.",
-       "currentrev": "المراجعة الحالية",
-       "currentrev-asof": "المراجعة الحالية بتاريخ $1",
-       "revisionasof": "Version mtaε $1",
-       "revision-info": "مراجعة $1 بواسطة $2",
-       "previousrevision": "→ مراجعة أقدم",
-       "nextrevision": "مراجعة أحدث ←",
-       "currentrevisionlink": "المراجعة الحالية",
-       "cur": "الحالي",
-       "next": "التالي",
-       "last": "السابق",
-       "page_first": "الأولى",
-       "page_last": "الأخيرة",
-       "histlegend": "اختيار الفرق: علم على صناديق النسخ للمقارنة واضغط قارن بين النسخ المختارة أو الزر بالأسفل.<br />\nمفتاح: (الحالي) = الفرق مع النسخة الحالية\n(السابق) = الفرق مع النسخة السابقة، ط = تغيير طفيف",
-       "history-fieldset-title": "تصفح التاريخ",
-       "history-show-deleted": "المحذوفة فقط",
-       "histfirst": "أول",
-       "histlast": "آخر",
-       "historysize": "({{PLURAL:$1|1 بايت|$1 بايت}})",
-       "historyempty": "(فارغ)",
-       "history-feed-title": "تاريخ المراجعة",
-       "history-feed-description": "تاريخ التعديل لهذه الصفحة في الويكي",
-       "history-feed-item-nocomment": "$1 في $2",
-       "history-feed-empty": "الصفحة المطلوبة غير موجودة.\nمن المحتمل أن تكون هذه الصفحة قد حذفت من الويكي، أو نقلت.\nحاول [[Special:Search|البحث في الويكي]] عن صفحات جديدة ذات صلة.",
-       "rev-deleted-comment": "(أزيل ملخص التعديل)",
-       "rev-deleted-user": "(اسم المستخدم تمت إزالته)",
-       "rev-deleted-event": "(فعل السجل تمت إزالته)",
-       "rev-deleted-user-contribs": "[اسم المستخدم أو عنوان الأيبي تمت إزالته - التعديل مخفي من المساهمات]",
-       "rev-deleted-text-permission": "'''حُذِفت''' مراجعة هذه الصفحة.\nيمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
-       "rev-deleted-text-unhide": "'''حُذِفت''' مراجعة الصفحة هذه.\nيمكن العثور على تفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].\nمازال بإمكانك [$1 رؤية هذه المراجعة] إذا أردت المتابعة.",
-       "rev-suppressed-text-unhide": "'''أُخفيت''' مراجعة الصفحة هذه.\nيمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الإخفاء].\nبإمكانك [$1 رؤية هذه المراجعة] إذا أردت المتابعة.",
-       "rev-deleted-text-view": "'''حُذِفت''' مراجعة هذه الصفحة.\nيمكنك رؤيتها؛ ويمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
-       "rev-suppressed-text-view": "'''أُخفيت''' مراجعة الصفحة هذه.\nيمكنك رؤيتها؛ ويمكنك العثور على التفاصيل في  [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الإخفاء].",
-       "rev-deleted-no-diff": "لا يمكنك رؤية هذا الفرق لأن إحدى المراجعات '''حُذِفت'''.\nيمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
-       "rev-suppressed-no-diff": "ليس بإمكانك مشاهدة هذا الفرق لأن إحدى المراجعات '''حذفت'''.",
-       "rev-deleted-unhide-diff": "'''حُذِفت''' إحدى مراجعتي هذا الفرق.\nيمكن العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].\nبإمكانك [$1 رؤية هذا الفرق] إذا أردت المتابعة.",
-       "rev-suppressed-unhide-diff": "'''أُخفيت''' إحدى مراجعتي هذا الفرق.\nيمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الإخفاء].\nبإمكانك [$1 رؤية هذا الفرق] إذا أردت المتابعة.",
-       "rev-deleted-diff-view": "'''حُذِفت''' إحدى مراجعتي هذا الفرق.\nيمكنك رؤية الفرق؛ ويمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
-       "rev-suppressed-diff-view": "'''أُخفيت''' إحدى مراجعتي هذا الفرق.\nيمكنك رؤية هذا الفرق؛ ويمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الإخفاء].",
-       "rev-delundel": "أظهر/أخف",
-       "rev-showdeleted": "أظهر",
-       "revisiondelete": "حذف/استرجاع المراجعات",
-       "revdelete-nooldid-title": "مراجعة هدف غير صحيحة",
-       "revdelete-nooldid-text": "إما أنك لم تحدد مراجعة (أو مراجعات) معينة هدفا لهذه الوظيفة، أو أن المراجعة المحددة غير موجودة، أو أنك تحاول إخفاء المراجعة الحالية.",
-       "revdelete-no-file": "الملف المحدد غير موجود.",
-       "revdelete-show-file-confirm": "هل أنت متأكد أنك تريد رؤية مراجعة محذوفة للملف \"<nowiki>$1</nowiki>\" بتاريخ $2 الساعة $3؟",
-       "revdelete-show-file-submit": "نعم",
-       "logdelete-selected": "{{PLURAL:$1|حدث السجل المختار|أحداث السجل المختارة}}:",
-       "revdelete-confirm": "الإداريون الآخرون في {{SITENAME}} سيظل بإمكانهم رؤية المحتوى المخفي ويمكنهم استرجاعه مجددا من خلال هذه الواجهة نفسها، مالم يتم وضع قيود إضافية.\nمن فضلك أكد أنك تنوي فعل هذا، وأنك تفهم العواقب، وأنك تفعل هذا بالتوافق مع [[{{MediaWiki:Policy-url}}|السياسة]].",
-       "revdelete-suppress-text": "الإخفاء ينبغي أن يتم استخدامه '''فقط''' في الحالات التالية:\n* معلومات شخصية غير ملائمة\n*: ''عناوين المنازل وأرقام التليفونات، أرقام الضمان الاجتماعي، إلى آخره.''",
-       "revdelete-legend": "وضع ضوابط رؤية",
-       "revdelete-hide-text": "أخف نص المراجعة",
-       "revdelete-hide-image": "أخف محتوى الملف",
-       "revdelete-hide-name": "أخف الفعل والهدف",
-       "revdelete-hide-comment": "أخف تعليق التعديل",
-       "revdelete-hide-user": "أخف اسم/آيبي المستخدم",
-       "revdelete-hide-restricted": "أخف البيانات عن الإداريين إضافة إلى الآخرين",
-       "revdelete-radio-same": "(لا تغير)",
-       "revdelete-radio-set": "نعم",
-       "revdelete-radio-unset": "لا",
-       "revdelete-suppress": "أخف البيانات عن مديري النظام والبقية",
-       "revdelete-unsuppress": "إزالة الضوابط من المراجعات المسترجعة",
-       "revdelete-log": "السبب:",
-       "revdelete-submit": "طبق على {{PLURAL:$1||المراجعة المختارة|المراجعتين المختارتين|المراجعات المختارة}}",
-       "revdelete-success": "'''تم تحديث رؤية المراجعات بنجاح.'''",
-       "revdelete-failure": "'''تعذر تحديث رؤية المراجعة:'''\n$1",
-       "logdelete-success": "'''تم ضبط رؤية السجلات بنجاح.'''",
-       "logdelete-failure": "'''تعذر ضبط رؤية السجل:'''\n$1",
-       "revdel-restore": "تغيير الرؤية",
-       "pagehist": "تاريخ صفحة",
-       "deletedhist": "التاريخ المحذوف",
-       "revdelete-hide-current": "خطأ عند إحفاء العنصر المؤرخ في $2 $1: هذه هي المراجعة الحالية.\nلا يمكن إخفاؤها.",
-       "revdelete-show-no-access": "خطأ في إظهار العنصر ذا التاريخ $2 $1: هذا العنصر معلم ك\"مقيد\".\nليس لك صلاحية الوصول إليه.",
-       "revdelete-modify-no-access": "خطأ في تعديل العنصر ذا التاريخ $2 $1: هذا العنصر معلم ك\"مقيد\".\nليس لك صلاحية الوصول إليه.",
-       "revdelete-modify-missing": "خطأ في تعديل العنصر ذا الهوية $1: العنصر مفقود من قاعدة البيانات!",
-       "revdelete-no-change": "'''تحذير:''' العنصر ذو التاريخ $2 $1 لديه أصلا إعدادات الظهور المطلوبة.",
-       "revdelete-concurrent-change": "خطأ في تعديل العنصر ذي التاريخ $2 $1: تظهر حالته أن شخصا آخر عدله أثناء محاولتك تعديله.\nمن فضلك راجع السجلات.",
-       "revdelete-only-restricted": "خطأ إخفاء العنصر المؤرخ $2, $1: لا تستطيع تنحية العناصر من عرض الإداريين بدون أن تحدد أيضا إحدى خيارات التنحية الأخرى.",
-       "revdelete-reason-dropdown": "* أسباب حذف عامة\n** خرق لحقوق النشر\n** معلومات شخصية غير ملائمة\n**معلومات تشهيرية محتملة",
-       "revdelete-otherreason": "سبب آخر/إضافي:",
-       "revdelete-reasonotherlist": "سبب آخر",
-       "revdelete-edit-reasonlist": "عدل أسباب الحذف",
-       "revdelete-offender": "مؤلف المراجعة:",
-       "suppressionlog": "سجل الإخفاء",
-       "suppressionlogtext": "بالأسفل قائمة بعمليات الحذف والمنع التي تتضمن محتوى مخفيا عن الإداريين.\nانظر [[Special:BlockList|قائمة منع الآيبي]] لترى عمليات المنع القائمة الآن.",
-       "mergehistory": "دمج تواريخ الصفحة",
-       "mergehistory-header": "هذه الصفحة تسمح لك بدمج نسخ تاريخ صفحة ما إلى صفحة أخرى.\nتأكد من أن هذا التغيير سيحافظ على استمرار تاريخ الصفحة.",
-       "mergehistory-box": "دمج مراجعات صفحتين:",
-       "mergehistory-from": "الصفحة المصدر:",
-       "mergehistory-into": "الصفحة الهدف:",
-       "mergehistory-list": "تاريخ التعديل القابل للدمج",
-       "mergehistory-merge": "المراجعات التالية من [[:$1]] يمكن دمجها إلى [[:$2]].\nاستخدم عامود الصناديق لدمج المراجعات التي تم إنشاؤها في وقبل الوقت المحدد.\nلاحظ أن استخدام وصلات التصفح سيعيد ضبط هذا العامود.",
-       "mergehistory-go": "عرض التعديلات القابلة للدمج",
-       "mergehistory-submit": "دمج المراجعات",
-       "mergehistory-empty": "لا مراجعات يمكن دمجها.",
-       "mergehistory-success": "$3 {{PLURAL:$3|مراجعة|مراجعة}} من [[:$1]] تم دمجها بنجاح في [[:$2]].",
-       "mergehistory-fail": "غير قادر على عمل دمج التاريخ، من فضلك أعد التحقق من محددات الصفحة والزمن.",
-       "mergehistory-no-source": "الصفحة المصدر $1 غير موجودة.",
-       "mergehistory-no-destination": "الصفحة الهدف $1 غير موجودة.",
-       "mergehistory-invalid-source": "الصفحة المصدر يجب أن تكون عنوانا صحيحا.",
-       "mergehistory-invalid-destination": "الصفحة الهدف يجب أن تكون عنوانا صحيحا.",
-       "mergehistory-autocomment": "دمج [[:$1]] في [[:$2]]",
-       "mergehistory-comment": "دمج [[:$1]] في [[:$2]]: $3",
-       "mergehistory-same-destination": "صفحتا المصدر والهدف لا يمكن أن تكونا نفس الشيء",
-       "mergehistory-reason": "السبب:",
-       "mergelog": "سجل الدمج",
-       "revertmerge": "إلغاء الدمج",
-       "mergelogpagetext": "بالأسفل قائمة بأحدث عمليات الدمج لتاريخ صفحة ما إلى أخرى.",
-       "history-title": " «$1»: تاريخ المراجعة",
-       "difference-title": "«$1»: الفرق بين المراجعتين",
-       "difference-title-multipage": "«$1» و«$2»: الفرق بين الصفحتين",
-       "difference-multipage": "(الفرق بين الصفحتين)",
-       "lineno": "Sţar $1:",
-       "compareselectedversions": "قارن بين النسختين المختارتين",
-       "showhideselectedversions": "أظهر/أخف المراجعات المختارة",
-       "editundo": "Rajjaģ",
-       "diff-multi-manyusers": "({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتان أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} أكثر من {{PLURAL:$2||مستخدم واحد|مستخدمين|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)",
-       "searchresults": "Ir-rêzultâ mtêģ it-talwîj",
-       "searchresults-title": "Ir-rêzultâ mtêģ it-talwîj ģlâ \"$1\"",
-       "prevn": "{{PLURAL:$1|$1}} السابقة",
-       "nextn": "{{PLURAL:$1|$1}} التالية",
-       "prevn-title": "$1 {{PLURAL:$1|نتيجة|نتيجة}} سابقة",
-       "nextn-title": "$1 {{PLURAL:$1|نتيجة|نتيجة}} سابقة",
-       "shown-title": " Warri{{PLURAL:Résultat weħed|Zouz résultats|$1  résultats|$1 en résultat}} men kol safħa",
-       "viewprevnext": "Chouf ($1 {{int:pipe-separator}} $2) ($3)",
-       "searchmenu-exists": "'''famma ss'af7a ismha \"[[:$1]]\" fi hedha el wiki.'''",
-       "searchmenu-new": "'''أنشئ الصفحة \"[[:$1]]\" في هذا الويكي!'''",
-       "searchprofile-articles": "Safħat mtaε contenu",
-       "searchprofile-images": "Multimédia",
-       "searchprofile-everything": "Kol chay",
-       "searchprofile-advanced": "Avancé",
-       "searchprofile-articles-tooltip": "Farkes fi $1",
-       "searchprofile-images-tooltip": "Farkes f'elfichiers",
-       "searchprofile-everything-tooltip": "Farkes kol chay (ħatta safħat leħdith)",
-       "searchprofile-advanced-tooltip": "Ekhtar les espaces de noms elli bech tfarkes εlihom",
-       "search-result-size": "$1 ({{PLURAL:Ħatta kelma|Kelma waħda|Kelmtin|$2 kelmat|$2 en kelma}})",
-       "search-result-category-size": "{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوًا|$1 عضو}} ({{PLURAL:$2|لا تصانيف فرعية|تصنيف فرعي واحد|تصنيفان فرعيان|$2 تصنيفات فرعية|$2 تصنيفًا فرعيًا|$2 تصنيف فرعي}} و{{PLURAL:$3|لا ملفات|ملف واحد|ملفان|$3 ملفات|$3 ملفًا|$3 ملف}})",
-       "search-redirect": "(تحويلة $1)",
-       "search-section": "(section $1)",
-       "search-suggest": "هل كنت تقصد: $1",
-       "searchrelated": "مرتبطة",
-       "searchall": "Elkol",
-       "search-nonefound": "لا توجد نتائج تطابق الاستعلام.",
-       "mypreferences": "تفضيلاتي",
-       "youremail": "البريد:",
-       "yourrealname": "الاسم الحقيقي:",
-       "prefs-help-email": "عنوان البريد الإلكتروني هو أمر اختياري، ولكن ستحتاج لإعادة تعيين كلمة المرور، إن نسيت كلمة المرور الخاصة بك.",
-       "prefs-help-email-others": "يمكنك أيضا اختيار للسماح للآخرين الاتصال بك عن طريق صفحة المستخدم أو نقاش المستخدم الخاص بك دون الحاجة إلى الكشف عن الهوية الخاصة بك.",
-       "newuserlogpage": "سجل إنشاء المستخدمين",
-       "action-edit": "modifi hal page",
-       "nchanges": "{{PLURAL:$1|لا تغييرات|تغيير واحد|تغييران|$1 تغييرات|$1 تغييرا|$1 تغيير}}",
-       "recentchanges": "Ajadd tabdîlêt",
-       "recentchanges-legend": "خيارات أحدث التغييرات",
-       "recentchanges-summary": "تابع أحدث التغييرات للويكي عبر هذه التلقيمة.",
-       "recentchanges-feed-description": "تابع أحدث التغييرات للويكي عبر هذه التلقيمة.",
-       "recentchanges-label-newpage": "أنشأ هذا التعديل صفحة جديدة",
-       "recentchanges-label-minor": "هذا تعديل طفيف",
-       "recentchanges-label-bot": "أجرى هذا التعديل بوت",
-       "recentchanges-label-unpatrolled": "لم يراجع هذا التعديل إلى الآن",
-       "rcnotefrom": "بالأسفل التغييرات منذ '''$2''' (إلى '''$1''' معروضة).",
-       "rclistfrom": "أظهر التغييرات بدءا من $3 $2",
-       "rcshowhideminor": "$1 التعديلات الطفيفة",
-       "rcshowhidebots": "$1 البوتات",
-       "rcshowhideliu": "$1 المستخدمين المسجلين",
-       "rcshowhideanons": "$1 المستخدمين المجهولين",
-       "rcshowhidepatr": "$1 التعديلات المراجعة",
-       "rcshowhidemine": "$1 تعديلاتي",
-       "rclinks": "أظهر آخر $1 تعديل في آخر $2 يوم<br />$3",
-       "diff": "Farq",
-       "hist": "Hîst",
-       "hide": "أخف",
-       "show": "اعرض",
-       "minoreditletter": "thafif",
-       "newpageletter": "jadid",
-       "boteditletter": "bot",
-       "rc-change-size-new": "$1 {{PLURAL:$1|oktê}} baģd it-tabdîl",
-       "rc-enhanced-expand": "عرض التفاصيل (يتطلب جافاسكريبت)",
-       "rc-enhanced-hide": "أخفِ التفاصيل",
-       "recentchangeslinked": "تغييرات ذات علاقة",
-       "recentchangeslinked-toolbox": "Tabdilet them",
-       "recentchangeslinked-title": "التغييرات المرتبطة ب \"$1\"",
-       "recentchangeslinked-summary": "هذه قائمة بالتغييرات التي تمت حديثا للصفحات الموصولة من صفحة معينة (أو إلى الأعضاء ضمن تصنيف معين).\nالصفحات في [[Special:Watchlist|قائمة مراقبتك]] '''عريضة'''",
-       "recentchangeslinked-page": "اسم الصفحة:",
-       "recentchangeslinked-to": "أظهر التغييرات للصفحات الموصولة للصفحة المعطاة عوضا عن ذلك",
-       "upload": "Abεeth des fichiers l'esserveur",
-       "uploadlogpage": "سجل الرفع",
-       "filedesc": "ملخص:",
-       "license": "ترخيص:",
-       "license-header": "licence",
-       "file-anchor-link": "milaf (Fichier)",
-       "filehist": "Têrîx il-mîlaf",
-       "filehist-help": "اضغط على وقت/زمن لرؤية الملف كما بدا في هذا الزمن.",
-       "filehist-revert": "استرجع",
-       "filehist-current": "حالي",
-       "filehist-datetime": "وقت/زمن",
-       "filehist-thumb": "صورة مصغرة",
-       "filehist-thumbtext": "تصغير للنسخة بتاريخ $1",
-       "filehist-user": "مستخدم",
-       "filehist-dimensions": "الأبعاد",
-       "filehist-comment": "ta3li9at",
-       "imagelinks": "استخدام الملف",
-       "linkstoimage": "{{PLURAL:$1||الصفحة التالية تصل|الصفحتان التاليتان تصلان|ال$1 صفحات التالية تصل|ال$1 صفحة التالية تصل}} إلى هذا الملف:",
-       "nolinkstoimage": "لا توجد صفحات تصل لهذا الملف.",
-       "sharedupload-desc-here": "هذا الملف من $1 ويمكن استخدامه بواسطة المشاريع الأخرى.\nالوصف على [$2 صفحة وصف الملف] هناك معروض بالأسفل.",
-       "randompage": "Şafħa kîmê tjî",
-       "statistics": "إحصاءات",
-       "nbytes": "{{PLURAL:Octet weħed|Zouz octets|$1 octets|$1 en octet}}",
-       "nmembers": "{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوا|$1 عضو}}",
-       "prefixindex": "كل الصفحات بالبادئة",
-       "usercreated": "{{GENDER:$3|أنشأه|أنشأته}} في $1 الساعة $2",
-       "newpages": "Safħat jdod",
-       "move": "انقل",
-       "pager-newer-n": "{{PLURAL:$1|أقدم 1|أقدم $1}}",
-       "pager-older-n": "{{PLURAL:$1|أقدم 1|أقدم $1}}",
-       "booksources": "مصادر كتاب",
-       "booksources-search-legend": "البحث عن مصادر الكتب",
-       "log": "سجلات",
-       "allpages": "kol ess'afa7at",
-       "allarticles": "kol ess'afa7at",
-       "allpagessubmit": "اذهب",
-       "categories": "تصنيفات",
-       "linksearch-line": "$1 موصولة من $2",
-       "listgrouprights-members": "(قائمة الأعضاء)",
-       "emailuser": "إرسال رسالة لهذا المستخدم",
-       "watchlist": "قائمة مراقبتي",
-       "mywatchlist": "قائمة مراقبتي",
-       "watchlistfor2": "ل$1 $2",
-       "watch": "راقب",
-       "unwatch": "أوقف المراقبة",
-       "watchlist-details": "{{PLURAL:$1||صفحة واحدة|صفحتان|$1 صفحات|$1 صفحة}} في قائمة مراقبتك، بدون عد صفحات النقاش.",
-       "wlshowlast": "عرض آخر $1 ساعات $2 أيام",
-       "watchlist-options": "خيارات قائمة المراقبة",
-       "actioncomplete": "انتهاء العملية",
-       "actionfailed": "الفعل فشل",
-       "dellogpage": "سجل الحذف",
-       "rollbacklink": "rajjaε",
-       "protectlogpage": "سجل الحماية",
-       "protectedarticle": "حمى \"[[$1]]\"",
-       "undeletelink": "اعرض/استعد",
-       "undeleteviewlink": "اعرض",
-       "namespace": "النطاق",
-       "invert": "اعكس الاختيار",
-       "blanknamespace": "(Ra'îsî)",
-       "contributions": "مساهماتي",
-       "contributions-title": "مساهمات المستخدم $1",
-       "mycontris": "مساهماتي",
-       "contribsub2": "ل$1 ($2)",
-       "uctop": "(top)",
-       "month": "من سنة (وأقدم):",
-       "year": "من سنة (وأقدم):",
-       "sp-contributions-newbies": "اعرض مساهمات الحسابات الجديدة فقط",
-       "sp-contributions-blocklog": "سجل المنع",
-       "sp-contributions-uploads": "مرفوعات",
-       "sp-contributions-logs": "سجلات",
-       "sp-contributions-talk": "نقاش",
-       "sp-contributions-search": "بحث عن مساهمات",
-       "sp-contributions-username": "عنوان أيبي أو اسم مستخدم:",
-       "sp-contributions-toponly": "أظهر أعلى المراجعات فقط",
-       "sp-contributions-submit": "lawwej",
-       "whatlinkshere": "Cnûwwe illi ywassil l-hûnî",
-       "whatlinkshere-title": "الصفحات التي تصل إلى \"$1\"",
-       "whatlinkshere-page": "ss'af7a:",
-       "linkshere": "الصفحات التالية تصل إلى '''[[:$1]]''':",
-       "nolinkshere": "لا توجد صفحات تصل إلى '''[[:$1]]'''.",
-       "isredirect": "صفحة تحويل",
-       "istemplate": "مضمن",
-       "isimage": "وصلة ملف",
-       "whatlinkshere-prev": "{{PLURAL:$1|previous|previous $1}}",
-       "whatlinkshere-next": "{{PLURAL:$1|القادمة|ال$1 القادمة}}",
-       "whatlinkshere-links": "← وصلات",
-       "whatlinkshere-hideredirs": "$1 التحويلات",
-       "whatlinkshere-hidetrans": "$1 التضمينات",
-       "whatlinkshere-hidelinks": "$1 الوصلات",
-       "whatlinkshere-hideimages": "$1 وصلة صورة",
-       "whatlinkshere-filters": "مرشحات",
-       "ipboptions": "ساعتين:2 hours,يوم واحد:1 day,3 أيام:3 days,أسبوع واحد:1 week,أسبوعين:2 weeks,شهر واحد:1 month,3 أشهر:3 months,6 أشهر:6 months,سنة واحدة:1 year,دائم:infinite",
-       "ipblocklist": "المستخدمون الممنوعون",
-       "blocklink": "Bloqui",
-       "unblocklink": "ارفع المنع",
-       "change-blocklink": "تغيير المنع",
-       "contribslink": "Mûsêhmêt",
-       "blocklogpage": "سجل المنع",
-       "blocklogentry": "منع \"[[$1]]\" لفترة زمنية مدتها $2 $3",
-       "block-log-flags-nocreate": "إنشاء الحسابات ممنوع",
-       "movelogpage": "سجل النقل",
-       "revertmove": "استرجع",
-       "export": "تصدير صفحات",
-       "allmessagesname": "الاسم",
-       "allmessagesdefault": "النص الافتراضي",
-       "thumbnail-more": "Kabbir",
-       "thumbnail_error": "خطأ في إنشاء صورة مصغرة: $1",
-       "tooltip-pt-userpage": "صفحة المستخدم الخاصة بك",
-       "tooltip-pt-mytalk": "صفحة نقاشك",
-       "tooltip-pt-preferences": "تفضيلاتي",
-       "tooltip-pt-watchlist": "قائمة الصفحات التي تراقب التغييرات التي تحدث بها",
-       "tooltip-pt-mycontris": "قائمة مساهماتك",
-       "tooltip-pt-login": "Međebîne kên itkoññektî, eme mûc bis-sîf",
-       "tooltip-pt-logout": "خروج",
-       "tooltip-pt-createaccount": "Međebîne law kên taģmil koñt w todxul, Lêkin mêkc maţlûb bêc taģmil hêđê.",
-       "tooltip-ca-talk": "Disküsyioñ ģal-koñtënü mtêģ il-pâj",
-       "tooltip-ca-edit": "Tnejjem tbaddil iş-şafḩa hêđi. Amân inzil ģal-bûtoñ mtêģ il-vû il-msebqa qbal mê tsijjil.",
-       "tooltip-ca-addsection": "ابدأ قسما جديدا",
-       "tooltip-ca-viewsource": "Essʾafħa protéjé.\nTnajjem tchouf essours mtaħħa.",
-       "tooltip-ca-history": "Copiet qdom mtaε essafħa hedhi",
-       "tooltip-ca-protect": "احم هذه الصفحة",
-       "tooltip-ca-delete": "احذف هذه الصفحة",
-       "tooltip-ca-move": "علم هذه الصفحة",
-       "tooltip-ca-watch": "أضف هذه الصفحة إلى قائمة مراقبتك",
-       "tooltip-ca-unwatch": "أزل هذه الصفحة من قائمة مراقبتك",
-       "tooltip-search": "Lawwij fî- {{SITENAME}}",
-       "tooltip-search-go": "Imcî l-pâj b-nafs il-ism îđê lqîthê",
-       "tooltip-search-fulltext": "Farkis fiş-şafḩât ģat-têkst hêđa",
-       "tooltip-p-logo": "Emchi lil-pâj il-ewelêniye",
-       "tooltip-n-mainpage": "Imchi lil-pâj il-ewelêniye",
-       "tooltip-n-mainpage-description": "Imchi lil-pâj il-ewelêniye",
-       "tooltip-n-portal": "Ģal-macrûģ, cnûwwe tnijjim taģmil, wîn tilqâ illi ḩajtik bîh",
-       "tooltip-n-currentevents": " Alqa information εla aham laħdeth mtaε tawa",
-       "tooltip-n-recentchanges": "Lîste mtêģ ajadd it-tabdîlêt fil-wiki",
-       "tooltip-n-randompage": "Ḩil iş-şafḩe illî tjî",
-       "tooltip-n-help": "Il-blâşa bêc tilqâ fîhe",
-       "tooltip-t-whatlinkshere": "Lîste mtêģ iş-şafḩât il-wiki il-kul illi twassil l-hûni",
-       "tooltip-t-recentchangeslinked": "Aham ettabldilet f'essafħat elli ywaslou l'essafħa hedhi",
-       "tooltip-feed-atom": "تلقيم أتوم لهذه الصفحة",
-       "tooltip-t-contributions": "رؤية قائمة مساهمات هذا المستخدم",
-       "tooltip-t-emailuser": "أرسل رسالة لهذا المستخدم",
-       "tooltip-t-upload": "Abεeth des fichiers l'esserveur",
-       "tooltip-t-specialpages": "Lîste mtêģ iş-şafħât is-spêsyal il-kul",
-       "tooltip-t-print": "Vêrsyoñ titiţbaģ min hal-pâj..",
-       "tooltip-t-permalink": "Lien dayem l'elversion hedhi mtaε essafħa",
-       "tooltip-ca-nstab-main": "Chouf elcontenu mtaε essafħa",
-       "tooltip-ca-nstab-user": "اعرض صفحة المستخدم",
-       "tooltip-ca-nstab-special": "هذه صفحة خاصة، لا تستطيع أن تعدل الصفحة نفسها",
-       "tooltip-ca-nstab-project": "رؤية صفحة المحتوى",
-       "tooltip-ca-nstab-image": "رؤية صفحة الملف",
-       "tooltip-ca-nstab-template": "رؤية القالب",
-       "tooltip-ca-nstab-category": "رؤية صفحة التصنيف",
-       "tooltip-minoredit": "علم على هذا كتعديل طفيف",
-       "tooltip-save": "احفظ تغييراتك",
-       "tooltip-preview": "اعرض تغييراتك، من فضلك استخدم هذا قبل الحفظ!",
-       "tooltip-diff": "اعرض التغييرات التي قمت بها للنص.",
-       "tooltip-compareselectedversions": "شاهد الفروق بين النسختين المختارتين من هذه الصفحة.",
-       "tooltip-watch": "أضف هذه الصفحة إلى قائمة مراقبتك",
-       "tooltip-rollback": "\"Rajjaģ\" yrajjiģ it-tabdîlêt f'hassafħa el'ekher weħed baddel fi nazla waħda.",
-       "tooltip-undo": "\"رجوع\" تسترجع هذا التعديل وتفتح نافذة التعديل في نمط العرض المسبق. تسمح بإضافة سبب في الملخص.\n\"Annuler\" trajjeε eltabdila lekhra w tħel fenêtre mtaε  el tabdil mtaε elvue el msabqa. Tnajjem tqoul εlech f'ettalkhis.",
-       "tooltip-summary": "أدخل ملخصا قصيرا",
-       "pageinfo-toolboxlink": "Maģlûmêt ģalâ hal-pâj",
-       "previousdiff": "→ التعديل السابق",
-       "nextdiff": "التعديل اللاحق ←",
-       "file-info-size": "$1 × $2 بكسل حجم الملف: $3، نوع MIME: $4",
-       "file-nohires": "لا توجد دقة أعلى متوفرة.",
-       "svg-long-desc": "ملف SVG، أبعاده $1 × $2 بكسل، حجم الملف: $3",
-       "show-big-image": "il-fîcyê il-aşlî",
-       "bad_image_list": "Elformat kima hakka:\nLes élements mtaε lista (lostra elli yabdew b' *) yetħesbou.\nEllien lowel fi star yelzmou ykoun lien el fichier khayeb.\nAy lien ekher fi nafs estar yetħseb exception, maħneha des pages win elfichier ynajem ykoun fi star.",
-       "metadata": "بيانات ميتا",
-       "metadata-help": "هذا الملف يحتوي على معلومات إضافية، غالبا ما تكون أضيفت من قبل الكاميرا الرقمية أو الماسح الضوئي المستخدم في إنشاء الملف.\nإذا كان الملف قد عدل عن حالته الأصلية، فبعض التفاصيل قد لا تعبر عن الملف المعدل.",
-       "metadata-fields": "حقول معطيات الميتا الموجودة في هذه الرسالة سوف تعرض في صفحة الصورة عندما يكون جدول معطيات الميتا مضغوطا.\nالحقول الأخرى ستكون مخفية افتراضيا.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
-       "namespacesall": "الكل",
-       "monthsall": "الكل",
-       "watchlistedit-clear-explain": "Elɛanawin lkol bech yetnaħaw mel'lista mteɛek",
-       "watchlistedit-clear-titles": "Elɛanawin",
-       "watchlistedit-too-many": "Famma barcha pajet w'manajmouch nħotouhom lkol lahné",
-       "watchlisttools-view": "اعرض التغييرات المرتبطة",
-       "watchlisttools-edit": "اعرض قائمة المراقبة وعدلها",
-       "watchlisttools-raw": "عدل قائمة المراقبة الخام",
-       "duplicate-defaultsort": "'''تحذير:''' مفتاح الترتيب الافتراضي \"$2\" يتجاوز مفتاح الترتيب الافتراضي السابق \"$1\".",
-       "specialpages": "Safḩât spêsyâl",
-       "external_image_whitelist": " #<pre>اترك هذا السطر تماما كما هو\n#ضع منثورات التعبيرات المنتظمة (فقط الجزء الذي يذهب بين //) بالأسفل\n#هذه ستتم مطابقتها مع مسارات الصور الخرجية (الموصولة بشكل مباشر)\n#هذه التي تطابق سيتم عرضها كصور، غير ذلك فقط وصلة إلى الصورة سيتم عرضها\n#السطور التي تبدأ ب# تتم معاملتها كتعليقات\n#هذا لا يتأثر بحالة الحروف\n\n#ضع كل منثورات التعبيرات المنتظمة فوق هذا السطر. اترك هذا السطر تماما كما هو</pre>",
-       "tag-filter": "مرشح [[Special:Tags|الوسوم]]:",
-       "searchsuggest-search": "Lawwij"
-}
index 291c936..78b5e06 100644 (file)
        "pool-queuefull": "Die poel se wagtou is vol",
        "pool-errorunknown": "Onbekende fout",
        "pool-servererror": "Die \"pool counter\"-diens is nie beskikbaar nie ($1).",
+       "poolcounter-usage-error": "Gebruiksfout: $1",
        "aboutsite": "Inligting oor {{SITENAME}}",
        "aboutpage": "Project:Omtrent",
        "copyright": "Inhoud is onderhewig aan $1, tensy anders vermeld",
        "disclaimers": "Voorbehoud",
        "disclaimerpage": "Project:Voorwaardes",
        "edithelp": "Wysigingshulp",
+       "helppage-top-gethelp": "Hulp",
        "mainpage": "Tuisblad",
        "mainpage-description": "Tuisblad",
        "policy-url": "Project:Beleid",
        "readonly_lag": "Die databasis is outomaties gesluit terwyl die slaafdatabasisse met die meester gesinchroniseer word",
        "internalerror": "Interne fout",
        "internalerror_info": "Interne fout: $1",
+       "internalerror-fatal-exception": "Fatale fout van tipe \"$1\"",
        "filecopyerror": "Kon nie lêer van \"$1\" na \"$2\" kopieer nie.",
        "filerenameerror": "Kon nie lêernaam van \"$1\" na \"$2\" wysig nie.",
        "filedeleteerror": "Kon nie lêer \"$1\" skrap nie.",
        "directorycreateerror": "Kon nie gids \"$1\" skep nie.",
+       "directoryreadonlyerror": "Gids \"$1\" is lees-alleen.",
+       "directorynotreadableerror": "Gids \"$1\" is nie leesbaar nie.",
        "filenotfound": "Kon nie lêer \"$1\" vind nie.",
        "unexpected": "Onverwagte waarde: \"$1\"=\"$2\".",
        "formerror": "Fout: kon vorm nie stuur nie",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
        "content-json-empty-object": "Leë objek",
+       "content-json-empty-array": "Leë reeks",
        "duplicate-args-category": "Bladsye met dubbele sjabloonparameters",
        "expensive-parserfunction-warning": "Waarskuwing: Die bladsy gebruik te veel duur ontlederfunksies.\n\nDaar is {{PLURAL:$1|$1 funksie|$1 funksies}}, terwyl die bladsy minder as $2 moet hê.",
        "expensive-parserfunction-category": "Bladsye wat te veel duur ontlederfunkies gebruik",
        "notextmatches": "Geen artikelteks resultate nie",
        "prevn": "vorige {{PLURAL:$1|$1}}",
        "nextn": "volgende {{PLURAL:$1|$1}}",
+       "prev-page": "vorige bladsy",
+       "next-page": "volgende bladsy",
        "prevn-title": "Vorige {{PLURAL:$1|resultaat|$1 resultate}}",
        "nextn-title": "Volgende {{PLURAL:$1|resultaat|$1 resultate}}",
        "shown-title": "$1 {{PLURAL:$1|resultaat|resultate}} per bladsy",
        "prefs-personal": "Gebruikersdata",
        "prefs-rc": "Onlangse wysigings",
        "prefs-watchlist": "Dophoulys",
+       "prefs-editwatchlist": "Wysig dophoulys",
        "prefs-watchlist-days": "Aantal dae om in dophoulys te wys:",
        "prefs-watchlist-days-max": "Maksimum $1 {{PLURAL:$1|dag|dae}}",
        "prefs-watchlist-edits": "Aantal wysigings om in uitgebreide dophoulys te wys:",
        "import-interwiki-history": "Kopieer ook volledige geskiedenis van hierdie bladsy",
        "import-interwiki-templates": "Sluit alle sjablone in",
        "import-interwiki-submit": "Importeer",
-       "import-interwiki-namespace": "Doelnaamruimte:",
-       "import-interwiki-rootpage": "Basisblad van bestemming (opsioneel):",
        "import-upload-filename": "Lêernaam:",
        "import-comment": "Opmerking:",
        "importtext": "Gebruik die [[Special:Export|eksport-funksie]] van die wiki waar die inligting vandaan kom.\nStoor die afvoer op u eie rekenaar, en laai dit hier op.",
index f6b68ae..2d591cb 100644 (file)
        "hidden-category-category": "Categoríes anubríes",
        "category-subcat-count": "{{PLURAL:$2|Esta categoría tien namái la subcategoría siguiente.|Esta categoría tien {{PLURAL:$1|la siguiente subcategoría|les siguientes $1 subcategoríes}}, d'un total de $2.}}",
        "category-subcat-count-limited": "Esta categoría tien {{PLURAL:$1|la subcategoría siguiente|les $1 subcategoríes siguientes}}.",
-       "category-article-count": "{{PLURAL:$2|Esta categoría contién namái la páxina siguiente.|{{PLURAL:$1|La páxina siguiente ta|Les $1 páxines siguientes tán}} nesta categoría, d'un total de $2.}}",
+       "category-article-count": "{{PLURAL:$2|Esta categoría contien namái la páxina siguiente.|{{PLURAL:$1|La páxina siguiente ta|Les $1 páxines siguientes tán}} nesta categoría, d'un total de $2.}}",
        "category-article-count-limited": "{{PLURAL:$1|La páxina siguiente ta|Les $1 páxines siguientes tán}} na categoría actual.",
-       "category-file-count": "{{PLURAL:$2|Esta categoría contién namái'l ficheru siguiente.|{{PLURAL:$1|El ficheru siguiente ta|Los $1 ficheros siguientes tán}} nesta categoría, d'un total de $2.}}",
+       "category-file-count": "{{PLURAL:$2|Esta categoría contien namái el ficheru siguiente.|{{PLURAL:$1|El ficheru siguiente ta|Los $1 ficheros siguientes tán}} nesta categoría, d'un total de $2.}}",
        "category-file-count-limited": "{{PLURAL:$1El ficheru siguiente ta|Los $1 ficheeros siguientes tán}} na categoría actual.",
        "listingcontinuesabbrev": "cont.",
        "index-category": "Páxines indexaes",
        "translateinterface": "P'amestar o camudar les traducciones pa toles wikis, usa [//translatewiki.net/ translatewiki.net], el proyeutu de traducción de MediaWiki.",
        "cascadeprotected": "Esta páxina ta protexida d'ediciones porque ta inxerta {{PLURAL:$1|na siguiente páxina, protexida|nes siguientes páxines, protexíes}} cola opción «en cascada» activada:\n$2",
        "namespaceprotected": "Nun tienes permisu pa editar páxines nel espaciu de nomes '''$1'''.",
-       "customcssprotected": "Nun tienes permisu pa editar esta páxina CSS porque contién preferencies personales d'otru usuariu.",
-       "customjsprotected": "Nun tienes permisu pa editar esta páxina de JavaScript porque contién preferencies personales d'otru usuariu.",
+       "customcssprotected": "Nun tienes permisu pa editar esta páxina CSS porque contien preferencies personales d'otru usuariu.",
+       "customjsprotected": "Nun tienes permisu pa editar esta páxina de JavaScript porque contien preferencies personales d'otru usuariu.",
        "mycustomcssprotected": "Nun tien permisu pa editar esta páxina CSS.",
        "mycustomjsprotected": "Nun tien permisu pa editar esta páxina JavaScript.",
        "myprivateinfoprotected": "Nun tien permisu pa editar la so información privada.",
        "editingsection": "Editando $1 (seición)",
        "editingcomment": "Editando $1 (seición nueva)",
        "editconflict": "Conflictu d'edición: $1",
-       "explainconflict": "Daquién más camudó esta páxina dende qu'empecipiasti a editala.\nL'área de testu d'arriba contién el testu de la páxina como ta nestos momentos.\nLos tos cambios s'amuesen nel área de testu d'abaxo.\nVas tener que fusionar los tos cambios dientro del testu esistente.\n'''Namái''' va guardase'l testu del área d'arriba cuando calques \"{{int:savearticle}}\".",
+       "explainconflict": "Daquién más camudó esta páxina dende qu'empecipiasti a editala.\nL'área de testu d'arriba contien el testu de la páxina como ta nestos momentos.\nLos tos cambios s'amuesen nel área de testu d'abaxo.\nVas tener que fusionar los tos cambios dientro del testu esistente.\n'''Namái''' va guardase'l testu del área d'arriba cuando calques \"{{int:savearticle}}\".",
        "yourtext": "El to testu",
        "storedversion": "Versión almacenada",
        "nonunicodebrowser": "'''Avisu: El to navegador nun cumple la norma Unicode.''' Hai un sistema alternativu que te permite editar páxines de forma segura: los caráuteres non-ASCII apaecerán nel cuadru d'edición como códigos hexadecimales.",
        "content-json-empty-object": "Oxetu baleru",
        "content-json-empty-array": "Matriz balera",
        "duplicate-args-category": "Páxines con argumentos duplicaos nes llamaes a plantíes",
-       "duplicate-args-category-desc": "La páxina contién llamaes a plantíes qu'usen argumentos duplicaos, como <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> o <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
-       "expensive-parserfunction-warning": "'''Avisu:''' Esta páxina contién demasiaes llamaes costoses a funciones d'análisis sintáuticu.\n\nHabría tener menos de $2 {{PLURAL:$2|llamada|llamaes}}, y agora tien $1 {{PLURAL:$1|llamada|llamaes}}.",
+       "duplicate-args-category-desc": "La páxina contien llamaes a plantíes qu'usen argumentos duplicaos, como <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> o <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
+       "expensive-parserfunction-warning": "'''Avisu:''' Esta páxina contien demasiaes llamaes costoses a funciones d'análisis sintácticu.\n\nHabría tener menos de $2 {{PLURAL:$2|llamada|llamaes}}, y agora tien $1 {{PLURAL:$1|llamada|llamaes}}.",
        "expensive-parserfunction-category": "Páxines con demasiaes llamaes costoses a funciones analítiques",
        "post-expand-template-inclusion-warning": "'''Avisu:''' El tamañu de les plantíes incluyíes ye demasiao grande.\nDelles plantíes nun se van incluir.",
        "post-expand-template-inclusion-category": "Páxines con escesu d'inclusiones de plantíes",
-       "post-expand-template-argument-warning": "'''Avisu:''' Esta páxina contién polo menos un parámetru de plantía que tien un tamañu d'espansión demasiao llargu.\nEstos parámetros s'omitieron.",
+       "post-expand-template-argument-warning": "<strong>Avisu:</strong> Esta páxina contien polo menos un parámetru de plantía que tien un tamañu d'espansión demasiao llargu.\nEstos parámetros s'omitieron.",
        "post-expand-template-argument-category": "Páxines con parámetros de plantía omitíos",
        "parser-template-loop-warning": "Deteutóse un bucle de plantíes: [[$1]]",
        "parser-template-recursion-depth-warning": "Se pasó la llende de fondura recursiva de les plantíes ($1)",
        "ignorewarning": "Inorar l'avisu y grabar l'archivu de toes formes",
        "ignorewarnings": "Inorar tolos avisos",
        "minlength1": "Los nomes d'archivu han tener a lo menos una lletra.",
-       "illegalfilename": "El nome d'archivu \"$1\" contién carauteres non permitíos en títulos de páxina. Por favor renoma l'archivu y xúbilu otra vuelta.",
+       "illegalfilename": "El nome del ficheru \"$1\" contien caráuteres non permitíos en títulos de páxina. Por favor renoma l'archivu ya intenta xubilu otra vuelta.",
        "filename-toolong": "Los nomes de ficheru nun puen tener más de 240 bytes.",
        "badfilename": "Nome de la imaxe camudáu a \"$1\".",
        "filetype-mime-mismatch": "La estensión de ficheru \".$1\" nun casa cola triba MIME detectada del ficheru ($2).",
        "copyuploaddisabled": "Xubir por URL ta desactivao.",
        "uploaddisabledtext": "Les xubíes de ficheros tán desactivaes.",
        "php-uploaddisabledtext": "Les xubíes de ficheros tan desactivaes en PHP.\nPor favor, comprueba la configuración de file_uploads.",
-       "uploadscripted": "Esti ficheru contién códigu HTML o scripts que se puen interpretar equivocadamente por un navegador.",
-       "uploadscriptednamespace": "Esti ficheru SVG contién l'espaciu de nomes illegal «$1»",
+       "uploadscripted": "Esti ficheru contien códigu HTML o scripts que pueden interpretase de mou equivocáu por un navegador.",
+       "uploadscriptednamespace": "Esti ficheru SVG contien l'espaciu de nomes illegal «$1»",
        "uploadinvalidxml": "Nun pudo interpretase'l XML del ficheru cargáu.",
        "uploadvirus": "¡El ficheru tien un virus!\nDetalles: $1",
-       "uploadjava": "El ficheru ye un archivu ZIP que contién un ficheru .class de Java.\nXubir ficheros Java nun ta permitío, porque puen facer que se salten les torgues de seguridá.",
+       "uploadjava": "El ficheru ye un archivu ZIP que contien un ficheru .class de Java.\nXubir ficheros Java nun ta permitío, porque puede facer que se salten les torgues de seguridá.",
        "upload-source": "Ficheru orixe",
        "sourcefilename": "Nome d'orixe:",
        "sourceurl": "URL d'orixe:",
        "pageswithprop-prophidden-long": "valor de propiedá de testu llargu tapecíu ($1)",
        "pageswithprop-prophidden-binary": "valor de propiedá binaria tapecíu ($1)",
        "doubleredirects": "Redireiciones dobles",
-       "doubleredirectstext": "Esta páxina llista páxines que redireicionen a otres páxines de redireición.\nCada filera contién enllaces a la primer y segunda redireición, asina como al oxetivu de la segunda redireición, que de vezu ye la páxina oxetivu \"real\", onde tendría d'empobinar la primer redireición.\nLes entraes <del>tachaes</del> tan resueltes.",
+       "doubleredirectstext": "Esta páxina llista páxines que redireicionen a otres páxines de redireición.\nCada filera contien enllaces a la primera y segunda redireición, asina como al oxetivu de la segunda redireición, que de vezu ye la páxina oxetivu \"real\", onde tendría d'empobinar la primera redireición.\nLes entraes <del>tachaes</del> tan resueltes.",
        "double-redirect-fixed-move": "[[$1]] treslladóse.\nAnovóse automáticamente y agora redirixe haza [[$2]].",
        "double-redirect-fixed-maintenance": "Iguando automáticamente la doble redireición de [[$1]] a [[$2]] nuna xera de mantenimientu.",
        "double-redirect-fixer": "Iguador de redireiciones",
        "trackingcategories-msg": "Categoría de siguimientu",
        "trackingcategories-name": "Nome del mensaxe",
        "trackingcategories-desc": "Criterios d'inclusión de categoría",
-       "noindex-category-desc": "La páxina contién una pallabra máxica <code><nowiki>__NOINDEX__</nowiki></code> (y ta nun espaciu de nomes nel que se permite esta marca) y, poro, los robots nun la indexarán.",
-       "index-category-desc": "La páxina contién una pallabra máxica <code><nowiki>__INDEX__</nowiki></code> (y ta nun espaciu de nomes nel que se permite esta marca) y, poro, los robots la indexarán anque normalmente nun lo faigan.",
+       "noindex-category-desc": "La páxina contien una pallabra máxica <code><nowiki>__NOINDEX__</nowiki></code> (y ta nun espaciu de nomes nel que se permite esta marca) y, poro, los robós nun la indexarán.",
+       "index-category-desc": "La páxina contien una pallabra máxica <code><nowiki>__INDEX__</nowiki></code> (y ta nun espaciu de nomes nel que se permite esta marca) y, poro, los robós la indexarán anque normalmente nun lo faigan.",
        "post-expand-template-inclusion-category-desc": "El tamañu de la páxina ye mayor que <code>$wgMaxArticleSize</code> después de espander toles plantíes, de mou qu'algunes plantíes nun s'espandieron.",
        "post-expand-template-argument-category-desc": "La páxina ye mayor que <code>$wgMaxArticleSize</code> después d'espander l'argumentu d'una plantía (daqué ente llaves triples, como <code>{{{Daqué}}}</code>).",
        "expensive-parserfunction-category-desc": "La páxina usa demasiaes funciones analítiques costoses (como <code>#ifexist</code>). Llei [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
        "move-watch": "Vixilar esta páxina",
        "movepagebtn": "Treslladar la páxina",
        "pagemovedsub": "Treslláu correctu",
-       "movepage-moved": "'''\"$1\" treslladóse a \"$2\"'''",
+       "movepage-moved": "<strong>«$1» treslladóse a «$2»</strong>",
        "movepage-moved-redirect": "Creóse una redireición.",
        "movepage-moved-noredirect": "Desaniciose la creación d'una redireición.",
        "articleexists": "Yá hai una páxina con esi nome, o'l nome qu'escoyisti nun ye válidu. Por favor, escueyi otru nome.",
        "import-interwiki-history": "Copiar toles versiones d'historial d'esta páxina",
        "import-interwiki-templates": "Incluyir toles plantíes",
        "import-interwiki-submit": "Importar",
-       "import-interwiki-namespace": "Espaciu de nomes de destín:",
-       "import-interwiki-rootpage": "Páxina raíz de destín (opcional):",
+       "import-mapping-default": "Importar a los llugares predeterminaos",
+       "import-mapping-namespace": "Importar a un espaciu de nomes:",
+       "import-mapping-subpage": "Importar como subpáxines de la páxina siguiente:",
        "import-upload-filename": "Nome del ficheru:",
        "import-comment": "Comentariu:",
        "importtext": "Por favor, esporta'l ficheru dende la wiki d'orixe usando la [[Special:Export|ferramienta d'esportación]].\nGuárdalu nel ordenador y xúbilu equí.",
        "spamprotectiontext": "La páxina que queríes guardar foi bloquiada pol filtru de spam.\nProbablemente tea causao por un enllaz a un sitiu esternu de la llista prieta.",
        "spamprotectionmatch": "El testu siguiente foi'l qu'activó'l nuesu filtru de spam: $1",
        "spambot_username": "Llimpieza de spam de MediaWiki",
-       "spam_reverting": "Revirtiendo a la cabera versión que nun contién enllaces a $1",
+       "spam_reverting": "Revirtiendo a la cabera versión que nun contien enllaces a $1",
        "spam_blanking": "Toles revisiones teníen enllaces a $1; dexando en blanco",
        "spam_deleting": "Toles revisiones teníen enllaces a $1, desaniciando",
        "simpleantispam-label": "Comprobación anti-spam.\n¡'''NUN''' rellenes esto!",
        "feedback-thanks-title": "¡Gracies!",
        "feedback-useragent": "Axente d'usuariu:",
        "searchsuggest-search": "Buscar",
-       "searchsuggest-containing": "que contién...",
+       "searchsuggest-containing": "que contien...",
        "api-error-badaccess-groups": "Nun tienes permisu pa xubir ficheros a esta wiki.",
        "api-error-badtoken": "Fallu internu: token incorreutu.",
        "api-error-copyuploaddisabled": "Xubir d'una URL ta desactivao nesti sirvidor.",
        "api-error-stashfailed": "Fallu internu: el sirvidor nun pudo guardar el ficheru temporal.",
        "api-error-publishfailed": "Fallu internu: el sirvidor nun pudo espublizar el ficheru temporal.",
        "api-error-stasherror": "Hebo un error al xubir el ficheru al almacén.",
+       "api-error-stashedfilenotfound": "Nun s'alcontró'l ficheru na reserva al intentar cargalu dende allí.",
+       "api-error-stashpathinvalid": "El camín onde tenía qu'alcontrase'l ficheru de la reserva ye inválidu.",
        "api-error-stashfilestorage": "Hebo un error al atroxar el ficheru nel depósitu.",
        "api-error-stashzerolength": "El sirvidor nun pudo atroxar el ficheru nel depósitu porque tien tamañu cero.",
        "api-error-stashnotloggedin": "Tienes d'aniciar sesión p'atroxar ficheros nel depósitu de carga.",
        "expand_templates_generate_xml": "Amosar l'árbole d'análisis sintáuticu XML",
        "expand_templates_generate_rawhtml": "Ver el HTML en bruto",
        "expand_templates_preview": "Vista previa",
+       "expand_templates_preview_fail_html": "<em>Como {{SITENAME}} tien activáu el códigu HTML puru y hebo una perda de datos de la sesión, la vista previa ta tapecida como precaución escontra ataques de JavaScript.</em>\n\n<strong>Si esti ye un intentu llexítimu d'accesu a la vista previa, vuelvi a intentalo.</strong>\nSi inda nun funciona, intenta [[Special:UserLogout|salir]] y volver a entrar na to cuenta.",
+       "expand_templates_preview_fail_html_anon": "<em>Como {{SITENAME}} tien activáu el códigu HTML puru y nun aniciasti sesión, la vista previa ta tapecida como precaución escontra ataques de JavaScript.</em>\n\n<strong>Si esti ye un intentu llexítimu d'accesu a la vista previa, intenta [[Special:UserLogin|entrar]] y vuelvi a intentalo.</strong>",
        "pagelanguage": "Selector de llingua de la páxina",
        "pagelang-name": "Páxina",
        "pagelang-language": "Llingua",
index 741e455..e6e4c07 100644 (file)
        "import-interwiki-history": "इस पृष्ठ के सभी इतिहास अवतरण कॉपी करें",
        "import-interwiki-templates": "कुल साँचा शामिल करा जाय",
        "import-interwiki-submit": "आयात",
-       "import-interwiki-namespace": "गंतव्य नामस्थान:",
-       "import-interwiki-rootpage": "गंतव्य पृष्ठ उपसर्ग (वैकल्पिक):",
        "import-upload-filename": "फ़ाइल कय नाँव",
        "import-comment": "टिप्पणी:",
        "importtext": "कृपया स्रोत विकि से संचिका निर्यातित करने के लिए [[Special:Export|निर्यात सुविधा]] का इस्तेमाल करें।\nइसे अपने संगणक पर सँजो के यहाँ चढ़ा दें।",
index 997fed0..10ab963 100644 (file)
        "viewyourtext": "Вы можаце праглядзець і скапіяваць крынічны тэкст <strong>вашых рэдагаваньняў</strong> на гэтай старонцы:",
        "protectedinterface": "Гэтая старонка ўтрымлівае інтэрфэйснае паведамленьне праграмнага забесьпячэньня, і яе зьмена забаронена. Каб дадаць ці зьмяніць пераклад ва ўсіх праектах, зьвярніцеся на [//translatewiki.net/ translatewiki.net], праект для перакладу MediaWiki.",
        "editinginterface": "<strong>Увага:</strong> Вы рэдагуеце старонку, якая ўтрымлівае тэкст інтэрфэйсу праграмнага забесьпячэньня.\nЯе зьмена паўплывае на вонкавы выгляд інтэрфэйсу іншых удзельнікаў у гэтай вікі.",
-       "translateinterface": "Каб дадаць ці зьмяніць пераклады для ўсіх вікі, калі ласка, крыстаецеся [//translatewiki.net/ translatewiki.net], лякалізацыйным праектам MediaWiki.",
+       "translateinterface": "Каб дадаць ці зьмяніць пераклады для ўсіх вікі, калі ласка, карыстайцеся [//translatewiki.net/ translatewiki.net], лякалізацыйным праектам MediaWiki.",
        "cascadeprotected": "Гэтая старонка абароненая ад рэдагаваньня, таму што яна ўключаная ў {{PLURAL:$1|1=наступную старонку, якая была абароненая|наступныя старонкі, якія былі абароненыя}} з актывізаванай опцыяй «каскаднай абароны»:\n$2",
        "namespaceprotected": "Вы ня маеце правоў на рэдагаваньне старонак у прасторы назваў <strong>$1</strong>.",
        "customcssprotected": "Вы ня маеце правоў на рэдагаваньне гэтай CSS-старонкі, таму што яна ўтрымлівае пэрсанальныя налады іншага ўдзельніка.",
        "history-feed-description": "Гісторыя зьменаў гэтай старонкі",
        "history-feed-item-nocomment": "$1 у $2",
        "history-feed-empty": "Запатрабаванай старонкі не існуе.\nМагчыма, яна была выдаленая альбо яе перанесьлі.\nПаспрабуйце [[Special:Search|пашукаць]] падобныя старонкі.",
+       "history-edit-tags": "Рэдагаваць меткі абраных вэрсіяў",
        "rev-deleted-comment": "(апісаньне зьменаў выдаленае)",
        "rev-deleted-user": "(імя ўдзельніка выдаленае)",
        "rev-deleted-event": "(падрабязнасьці выдаленыя з журнала падзеяў)",
        "rev-showdeleted": "паказаць",
        "revisiondelete": "Выдаліць/аднавіць вэрсіі",
        "revdelete-nooldid-title": "Ня выбрана мэтавая вэрсія",
-       "revdelete-nooldid-text": "Вы ня выбралі мэтавую вэрсію (ці вэрсіі) для выкананьня гэтай функцыі, выбранай вэрсіі не існуе альбо Вы спрабуеце схаваць цяперашнюю вэрсію.",
+       "revdelete-nooldid-text": "Вы ня выбралі мэтавую вэрсію для выкананьня гэтай функцыі, выбранай вэрсіі не існуе альбо Вы спрабуеце схаваць цяперашнюю вэрсію.",
        "revdelete-no-file": "Пазначаны файл не існуе.",
        "revdelete-show-file-confirm": "Вы ўпэўненыя, што жадаеце паглядзець выдаленую вэрсію файла «<nowiki>$1</nowiki>» ад $2 $3?",
        "revdelete-show-file-submit": "Так",
        "right-sendemail": "адпраўка электронных лістоў іншым удзельнікам",
        "right-passwordreset": "прагляд электронных лістоў з ачысткай паролю",
        "right-managechangetags": "ствараць і выдаляць [[Special:Tags|меткі]] з базы зьвестак",
+       "right-applychangetags": "дадаваць [[Special:Tags|меткі]] пры рэдагаваньні",
+       "right-changetags": "дадаваць і выдаляць адвольныя [[Special:Tags|меткі]] да асобных вэрсіяў і запісаў у журнале падзеяў",
        "newuserlogpage": "Журнал стварэньня рахункаў",
        "newuserlogpagetext": "Гэта журнал стварэньня рахункаў удзельнікаў і ўдзельніц.",
        "rightslog": "Журнал правоў удзельнікаў",
        "action-editmyprivateinfo": "рэдагаваньне вашых прыватных зьвестак",
        "action-editcontentmodel": "рэдагаваньне мадэлі зьместу старонкі",
        "action-managechangetags": "стварэньне і выдаленьне метак з базы зьвестак",
+       "action-applychangetags": "дадаваньне метак пры рэдагаваньні",
        "nchanges": "$1 {{PLURAL:$1|зьмена|зьмены|зьменаў}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|з апошняга візыту}}",
        "enhancedrc-history": "гісторыя",
        "import-interwiki-history": "Капіяваць гісторыю старонкі цалкам",
        "import-interwiki-templates": "Уключыць усе шаблёны",
        "import-interwiki-submit": "Імпартаваць",
-       "import-interwiki-namespace": "Мэтавая прастора назваў:",
-       "import-interwiki-rootpage": "Мэтавая карнявая старонка (неабавязкова):",
        "import-upload-filename": "Назва файла:",
        "import-comment": "Камэнтар:",
        "importtext": "Калі ласка, экспартуйце файл з крынічнай вікі з дапамогай [[Special:Export|прылады экспарту]].\nЗахавайце яго на свой кампутар, а потым загрузіце сюды.",
        "log-name-pagelang": "Журнал зьменаў мовы",
        "log-description-pagelang": "Гэта журнал зьменаў мовы старонак.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|зьмяніў|зьмяніла}} мову старонкі $3 з $4 на $5.",
-       "default-skin-not-found": "Упс! Тэма афармленьня па змоўчаньні для вашай вікі, вызначаная ў <code dir=\"ltr\">$wgDefaultSkin</code> як <code>$1</code> недаступная.\n\nВашае ўсталяваньне, падобна, уключае наступныя тэмы афармленьня. Глядзіце [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя:Наладка тэмаў афармленьня] дзеля інфармацыі, як падключыць іх і абраць тэму па змоўчаньні.\n\n$2\n\n; Калі вы толькі што ўсталявалі MediaWiki:\n: Напэўна вы ўсталявалі з git або наўпрост з крынічнага коду з ужываньнем іншага мэтаду. Гэта чакана. Паспрабуйце ўсталяваць некалькі тэмаў афармленьня з [https://www.mediawiki.org/wiki/Category:All_skins каталёгу тэмаў mediawiki.org]:\n:* Спампуйце [https://www.mediawiki.org/wiki/Download tarball-усталёўнік], які ўтрымлівае некалькі тэмаў і пашырэньняў. Вы можаце скапіяваць каталёг <code>skins/</code> зь яго.\n:* Спампуйце tarball-усталёўнікі для асобных тэмаў з [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Зрабіце клон аднаго з сховішчаў <code>mediawiki/skins/*</code> праз git у каталёг <code dir=\"ltr\">skins/</code> вашай усталёўкі MediaWiki.\n: Калі вы распрацоўнік MediaWiki, гэта не павінна ўплываць на вашае git-сховішча.\n\n; Калі вы толькі што абнавілі MediaWiki:\n: MediaWiki вэрсіі 1.24 і навейшыя больш не падключаюць тэмы афармленьня аўтаматычна (глядзіце [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Інструкцыя:Аўтаматычнае выяўленьне тэмаў афармленьня]). Вы можаце дадаць наступныя радкі ў <code>LocalSettings.php</code>, каб падключыць усе ўсталяваныя тэмы афармленьня:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Калі вы толькі што зьмянілі <code>LocalSettings.php</code>:\n: Пераправерце назвы тэмаў афармленьня на наяўнасьць памылак.",
+       "default-skin-not-found": "Упс! Тэма афармленьня па змоўчаньні для вашай вікі, вызначаная ў <code dir=\"ltr\">$wgDefaultSkin</code> як <code>$1</code> недаступная.\n\nВашае ўсталяваньне, падобна, уключае {{PLURAL:$4|наступную тэму афармленьне|наступныя тэмы афармленьня}}. Глядзіце старонку [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя:Наладка тэмаў афармленьня] дзеля інфармацыі, як падключыць {{PLURAL:$4|яе|іх і абраць тэму па змоўчаньні}}.\n\n$2\n\n; Калі вы толькі што ўсталявалі MediaWiki:\n: Напэўна вы ўсталявалі з git або наўпрост з крынічнага коду з ужываньнем іншага мэтаду. Гэта чакана. Паспрабуйце ўсталяваць некалькі тэмаў афармленьня з [https://www.mediawiki.org/wiki/Category:All_skins каталёгу тэмаў mediawiki.org]:\n:* Спампуйце [https://www.mediawiki.org/wiki/Download tarball-усталёўнік], які ўтрымлівае некалькі тэмаў і пашырэньняў. Вы можаце скапіяваць каталёг <code>skins/</code> зь яго.\n:* Спампуйце tarball-усталёўнікі для асобных тэмаў з [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Зрабіце клон аднаго з сховішчаў <code>mediawiki/skins/*</code> праз git у каталёг <code dir=\"ltr\">skins/</code> вашай усталёўкі MediaWiki.\n: Калі вы распрацоўнік MediaWiki, гэта не павінна ўплываць на вашае git-сховішча.\n\n; Калі вы толькі што абнавілі MediaWiki:\n: MediaWiki вэрсіі 1.24 і навейшыя больш не падключаюць тэмы афармленьня аўтаматычна (глядзіце [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Інструкцыя:Аўтаматычнае выяўленьне тэмаў афармленьня]). Вы можаце дадаць {{PLURAL:$5|наступны радок у|наступныя радкі ў}} <code>LocalSettings.php</code>, каб падключыць {{PLURAL:$5|усталяваную тэму|усе ўсталяваныя тэмы}} афармленьня:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Калі вы толькі што зьмянілі <code>LocalSettings.php</code>:\n: Пераправерце назвы тэмаў афармленьня на наяўнасьць памылак.",
        "default-skin-not-found-no-skins": "Упс! Тэма афармленьня па змоўчаньні для вашай вікі, вызначаная ў <code>$wgDefaultSkin</code> як <code>$1</code>, недаступная.\n\nВы ня маеце ўсталяваных тэмаў афармленьня.\n\n; Калі вы толькі што ўсталявалі або абнавілі MediaWiki:\n: Напэўна вы ўсталявалі з git або наўпрост з крынічнага коду з ужываньнем іншага мэтаду. Гэта чакана. MediaWiki вэрсіі 1.24 і навейшыя ня ўтрымліваюць тэмы афармленьня ў галоўным сховішчы. Паспрабуйце ўсталяваць некалькі тэмаў афармленьня з [https://www.mediawiki.org/wiki/Category:All_skins каталёгу тэмаў mediawiki.org]:\n:* Спампуйце [https://www.mediawiki.org/wiki/Download tarball-усталёўнік], які ўтрымлівае некалькі тэмаў і пашырэньняў. Вы можаце скапіяваць каталёг <code dir=\"ltr\">skins/</code> зь яго.\n:* Спампуйце tarball-усталёўнікі для асобны тэмаў афармленьня з [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Зрабіце клон аднаго з сховішчаў <code>mediawiki/skins/*</code> праз git у каталёг <code>skins/</code> вашай усталёўкі MediaWiki.\n: Калі вы распрацоўнік MediaWiki, гэта не павінна ўплываць на вашае git-сховішча. Глядзіце [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя:Наладка тэмаў афармленьня] дзеля інфармацыі, як падключыць іх і абраць тэму па змоўчаньні.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (уключана)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''адключана''')",
index 6389670..1583472 100644 (file)
        "import-interwiki-history": "Капіраваць усе гістарычныя версіі гэтай старонкі",
        "import-interwiki-templates": "Разам з усімі шаблонамі",
        "import-interwiki-submit": "Імпартаваць",
-       "import-interwiki-namespace": "У прастору назваў:",
-       "import-interwiki-rootpage": "Мэтавая каранёвая старонка (неабавязкова):",
        "import-upload-filename": "Назва файла:",
        "import-comment": "Каментарый:",
        "importtext": "Калі ласка, экспартуйце файл з крынічнай вікі з дапамогай [[Special:Export|прылады экспарту]].\nЗахавайце яго на свой камп'ютар, а потым загрузіце сюды.",
index b51ddbf..6b1ea42 100644 (file)
        "shown-title": "Показване на $1 {{PLURAL:$1|резултат|резултата}} на страница",
        "viewprevnext": "Преглед ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "'''Съществува страница с името „[[:$1]]“ в това уики.'''",
-       "searchmenu-new": "'''Създаване на страницата „[[:$1]]“ в това уики!'''",
+       "searchmenu-new": "<strong>Създаване на страницата „[[:$1]]“ в това уики!</strong> {{PLURAL:$2|0=|Вижте също страницата, която е резултат от търсенето.|Вижте също резултатите от търсенето.}}",
        "searchprofile-articles": "Съдържателни страници",
        "searchprofile-images": "Мултимедия",
        "searchprofile-everything": "Всичко",
        "searchrelated": "свързани",
        "searchall": "всички",
        "showingresults": "Показване на до {{PLURAL:$1|'''1''' резултат|'''$1''' резултата}}, като се започва от номер '''$2'''.",
+       "search-showingresults": "{{PLURAL:$4|Резултат <strong>$1</strong> от <strong>$3</strong>|Резултати <strong>$1 - $2</strong> от <strong>$3</strong>}}",
        "search-nonefound": "Няма резултати, които да отговарят на заявката.",
        "powersearch-legend": "Разширено търсене",
        "powersearch-ns": "Търсене в именни пространства:",
        "uploadnewversion-linktext": "Качване на нова версия на файла",
        "shared-repo-from": "от $1",
        "shared-repo": "споделено хранилище",
+       "upload-disallowed-here": "Не можете да препокриете файла.",
        "filerevert": "Възвръщане на $1",
        "filerevert-legend": "Възвръщане на файла",
        "filerevert-intro": "Възвръщане на '''[[Media:$1|$1]]''' към [$4 версията от $3, $2].",
        "import-interwiki-history": "Копиране на всички версии на страницата",
        "import-interwiki-templates": "Включване на всички шаблони",
        "import-interwiki-submit": "Внасяне",
-       "import-interwiki-namespace": "Целево именно пространство:",
-       "import-interwiki-rootpage": "Целева основна страница (незадължително):",
        "import-upload-filename": "Име на файл:",
        "import-comment": "Коментар:",
        "importtext": "Изнесете файла от изходното уики чрез „[[Special:Export|инструмента за изнасяне]]“. Съхранете го на твърдия диск на компютъра си и го качете тук.",
        "logentry-rights-rights": "$1 {{GENDER:$2|промени}} потребителската група на $3 от $4 на $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|промени}} потребителската група на $3",
        "logentry-rights-autopromote": "$1 е автоматично {{GENDER:$2|повишен|повишена}} от $4 до $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|качи}} $3",
        "rightsnone": "(никакви)",
        "revdelete-summary": "резюме",
        "feedback-adding": "Добавяне на коментар към страницата...",
index 637a2e5..2ab85d2 100644 (file)
        "notextmatches": "هیچ یک شه مقاله ئانی متن مطابقت ندارنت",
        "prevn": "{{PLURAL:$1|$1}}دیمتیری",
        "nextn": "{{PLURAL:$1|$1}}پدتیری",
+       "prev-page": "دیمتیرین تاکدیم",
+       "next-page": "دیگرین تاکدیم",
        "prevn-title": "$1 {{PLURAL:$1|نتیجهٔ|نتیجهٔ}} دیمی",
        "nextn-title": "$1 {{PLURAL:$1|نتیجهٔ|نتیجهٔ}} پدئ",
        "shown-title": "نشان داتین $1 ئی {{PLURAL:$1|نتیجه|نتیجه}} بی هر تاکدیمی تا",
        "listfiles-delete": "پاک کورتین",
        "listfiles-summary": "ای خاصین تاکدیم موچین بُرز بوته ئین فایلانه نشان ئه دنت.",
        "listfiles_search_for": "گشتین په میڈیا نام ئا:",
+       "listfiles-userdoesnotexist": "\"$1\" ئی کارمرزوکین هیساب راجیستر نه بوته.",
        "imgfile": "فایل",
        "listfiles": "فایل لیست",
        "listfiles_thumb": "ناحُننک",
        "morelinkstoimage": "ای فایلئ [[Special:WhatLinksHere/$1|دیگرین لینکانا]] بگیندیت.",
        "linkstoimage-redirect": "$1 (فایلی تغیرمسیر) $2",
        "duplicatesoffile": "جهلگی{{PLURAL:$1|فایل|فایلان}} تکرارین نخسه شه ای فایلا  {{PLURAL:$1|است|هستنت}} ([[Special:FileDuplicateSearch/$2|گیشتیرین مئلومات]]):",
+       "sharedupload": "ای ورَق بئ $1 تا اینت و مومکن اینت که دیگه پروژه ئانی تا هم ایستیپاده بیت.",
        "sharedupload-desc-here": "ای فایل بئ $1 ئی تا قرار داریت و ممکن اینت که بئ دیگه پروژه‌هانئ تا هم استفاده بیئت.\nموجودین شرح بئ [$2 فایلی دیمی شرح بئ آ جای تا]، جهلگا نشان داته بوته.",
        "filepage-nofile": "فایلی گۆ ای ناما موجود نه اینت.",
        "filepage-nofile-link": "فایلی گۆ ای ناما موجود نه اینت، اما شما ئه توانیت آیرا [$1 بُرز کنیت].",
        "import-interwiki-history": "ای تاکدیمی موچین تاریخچه ئی نخسه انتقال داته بوتنت",
        "import-interwiki-templates": "موچین تراشوانانا شامل بیئت",
        "import-interwiki-submit": "بێ تێ کورتین",
-       "import-interwiki-namespace": "نامی فضای مخصد:",
-       "import-interwiki-rootpage": "مخصدی دیمی ریشگ (اختیاری):",
        "import-upload-filename": "فایلئ نام:",
        "import-comment": "کومنیت:",
        "importstart": "تاکدیمانی بي  تئ ریتینی حالا...",
        "importnopages": "هیچ تاکدیمی په ایمپورت ئا نه اینت.",
        "importfailed": "ایمپورت شکست وارت: <nowiki>$1</nowiki>",
        "importunknownsource": "بُنریچی ئی رقم مئلوم نه اینت",
+       "importcantopen": "تاکدیمانی درون ریچی ئی ورَق پاچ نه بوت",
        "importbadinterwiki": "بدئین انتیرویکی ئی لینک",
        "importsuccess": "بي تی ریتین یا ایمپورت بوت!",
+       "import-parse-failure": "ختا بئ بُرز بوته ئین اکس ام ال ئی تجزیه یی تا",
+       "import-noarticle": "هیچ تاکدیمی په ایمپورت ئا نه اینت.",
        "import-upload": "اکس ام ال ئی دیتای بُرز کورتین",
        "importlogpage": "ایمپورت لوگ",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|نسخه|نسخه}} وارد بوته",
        "exif-ycbcrpositioning-1": "مانجین بوتگ",
        "exif-ycbcrpositioning-2": "اشتراکی",
        "exif-dc-contributor": "شراکت کنۆک ئان",
+       "exif-dc-coverage": "رسانگ ئی زمانین یا مکانین محدوده",
        "exif-dc-date": "تاریخ(ئان)",
        "exif-dc-publisher": "ناشر",
        "exif-dc-relation": "مربوتین میڈیاهان",
index 42acaf6..ebe3c25 100644 (file)
        "right-move-rootuserpages": "root ব্যবহারকারীর পাতাগুলো সরিয়ে ফেলুন",
        "right-move-categorypages": "বিষয়শ্রেণী পাতাসমূহ স্থানান্তর করুন",
        "right-movefile": "ফাইল স্থানান্তর",
-       "right-suppressredirect": "পাতা স্থানান্তরের সময় মূল পাতায় রিডাইরেক্ট তৈরী করছে না",
+       "right-suppressredirect": "পাতা স্থানান্তরের সময় মূল পাতা থেকে পুনর্নির্দেশ তৈরী করছে না",
        "right-upload": "ফাইল আপলোড করুন",
        "right-reupload": "বিদ্যমান ফাইল প্রতিস্থাপন করো",
        "right-reupload-own": "কারও আপলোডকৃত ফাইল ওভাররাইট করুন",
        "pagemovedsub": "সরিয়ে নেওয়া হয়েছে",
        "movepage-moved": "'''\"$1\"-কে \"$2\" শিরোনামে স্থানান্তর করা হয়েছে'''",
        "movepage-moved-redirect": "একটি পুনর্নির্দেশনা তৈরি হয়েছে।",
-       "movepage-moved-noredirect": "রিডাà¦\87রà§\87à¦\95à§\8dà¦\9f তৈরীতে বাধা দেয়া হয়েছে।",
+       "movepage-moved-noredirect": "পà§\81নরà§\8dনিরà§\8dদà§\87শ তৈরীতে বাধা দেয়া হয়েছে।",
        "articleexists": "এই শিরোনামে একটি পাতা ইতোমধ্যে সৃষ্টি হয়ে গেছে, অথবা আপনি যে শিরোনামটি পছন্দ করেছেন তা গ্রহণযোগ্য নয়। দয়া করে অন্য একটি শিরোনাম দিয়ে চেষ্টা করুন।",
        "cantmove-titleprotected": "আপনি এই অবস্থানে পাতাটিকে স্থানান্তর করতে পারেন না, কারণ এই নতুন শিরোনামটি সৃষ্টি করা থেকে সুরক্ষিত।",
        "movetalk": "সংশ্লিষ্ট আলাপের পাতা সরিয়ে নাও",
        "import-interwiki-history": "এই পাতার সমস্ত ইতিহাসের সংস্করণের অনুলিপি করা হোক",
        "import-interwiki-templates": "সকল টেম্পলেট অন্তর্ভুক্ত",
        "import-interwiki-submit": "আমদানি",
-       "import-interwiki-namespace": "গন্তব্য নামস্থান:",
-       "import-interwiki-rootpage": "মূল পাতা (ঐচ্ছিক):",
        "import-upload-filename": "ফাইলনাম:",
        "import-comment": "মন্তব্য:",
        "importtext": "অনুগ্রহ করে ফাইলটি উৎস উইকি থেকে [[Special:Export|এক্সপোর্ট ইউটিলিটি]] ব্যবহার করে এক্সপোর্ট করুন।\nফাইলটি আপনার কম্পিউটারে সংরক্ষণ করুন এবং এখানে আপলোড করুন।",
        "version-license-not-found": "এই এক্সটেনশনের জন্য কোনো বিস্তারিত লাইসেন্স তথ্য পাওয়া যায়নি।",
        "version-credits-title": "$1-এর জন্য কৃতিত্ব",
        "version-credits-not-found": "এই এক্সটেনশনটির জন্য কোনো বিস্তারিত কৃতিত্ব তথ্য পাওয়া যায়নি।",
-       "version-poweredby-credits": "এইক উইকিটি পরিচালিত হচ্ছে '''[https://www.mediawiki.org/ মিডিয়াউইকি]'''-এর মাধ্যমে, কপিরাইট © ২০০১-$1 $2।",
+       "version-poweredby-credits": "এই উইকিটি পরিচালিত হচ্ছে <strong>[https://www.mediawiki.org/ মিডিয়াউইকি]</strong> -এর মাধ্যমে, কপিরাইট © ২০০১-$1 $2।",
        "version-poweredby-others": "অন্যান্য",
        "version-poweredby-translators": "translatewiki.net অনুবাদকগণ",
        "version-credits-summary": "[[Special:Version|মিডিয়াউইকি]] সফটওয়্যারে অবদানের জন্য আমরা এই ব্যক্তিকে স্বীকৃতি দিতে চাই।",
-       "version-license-info": "মিডিয়াউইকি এ++++কটি ফ্রি সফটওয়্যার, আপনি এটি বিতরণ করতে পারবেন এবং/অথবা সম্পদানা করতে পারবেন, এক্ষেত্রে ফ্রি সফটওয়্যার ফাউন্ডেশনের প্রকাশিত গনু জেনারেল পাবলিক লাইসেন্সের ২য় অথবা সাম্প্রতিকতম কোনো সংস্করণ মেনে চলতে হবে। \n\nসকলের উপকারের লক্ষ্যে এটি বিতরণ করা হয়ে থাকে, কিন্তু এক্ষেত্রে কোনো ওয়ারেন্টি দেয়া হয় না, এমনকি বিশেষ কোনো কার্যক্ষেত্রে ব্যবহারের জন্যও তথাকথিত ওয়ারেন্টি দেয়া হয় না। বিস্তারিত জানতে দেখুন গনু জেনারেল পাবলিক লাইসেন্স। \n\nএই সফটওয়্যারের সাথে [{{SERVER}}{{SCRIPTPATH}}/COPYING গনু জেনারেল পাবলিক লাইসেন্সের একটি কপি] থাকার কথা; যদি আপনি না পেয়ে থাকেন তাহলে অনুগ্রহ করে ফ্রি সফটওয়্যার ফাউন্ডেশনকে জানান এই ঠিকানায়, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA অথবা [//www.gnu.org/licenses/old-licenses/gpl-2.0.html অনলাইনে দেখুন]।",
+       "version-license-info": "মিডিয়াউইকি একটি ফ্রি সফটওয়্যার, আপনি এটি বিতরণ করতে পারবেন এবং/অথবা সম্পদানা করতে পারবেন, এক্ষেত্রে ফ্রি সফটওয়্যার ফাউন্ডেশনের প্রকাশিত গনু জেনারেল পাবলিক লাইসেন্সের ২য় অথবা সাম্প্রতিকতম কোনো সংস্করণ মেনে চলতে হবে। \n\nসকলের উপকারের লক্ষ্যে এটি বিতরণ করা হয়ে থাকে, কিন্তু এক্ষেত্রে কোনো ওয়ারেন্টি দেয়া হয় না, এমনকি বিশেষ কোনো কার্যক্ষেত্রে ব্যবহারের জন্যও তথাকথিত ওয়ারেন্টি দেয়া হয় না। বিস্তারিত জানতে দেখুন গনু জেনারেল পাবলিক লাইসেন্স। \n\nএই সফটওয়্যারের সাথে [{{SERVER}}{{SCRIPTPATH}}/COPYING গনু জেনারেল পাবলিক লাইসেন্সের একটি কপি] থাকার কথা; যদি আপনি না পেয়ে থাকেন তাহলে অনুগ্রহ করে ফ্রি সফটওয়্যার ফাউন্ডেশনকে জানান এই ঠিকানায়, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA অথবা [//www.gnu.org/licenses/old-licenses/gpl-2.0.html অনলাইনে দেখুন]।",
        "version-software": "ইনস্টলকৃত সফটওয়্যার",
        "version-software-product": "পণ্য",
        "version-software-version": "সংস্করণ",
index 086f06a..71e0108 100644 (file)
        "import-interwiki-history": "Kopiraj sve verzije historije za ovu stranicu",
        "import-interwiki-templates": "Uključi sve šablone",
        "import-interwiki-submit": "Uvoz",
-       "import-interwiki-namespace": "Odredišni imenski prostor:",
-       "import-interwiki-rootpage": "Odredišna osnovna stranica (opcionalno):",
        "import-upload-filename": "Naziv datoteke:",
        "import-comment": "Komentar:",
        "importtext": "Molimo Vas da izvezete datoteku iz izvornog wikija koristeći [[Special:Export|alat za izvoz]].\nSačuvajte je na Vašem računaru i pošaljite ovdje.",
        "tooltip-pt-mycontris": "Spisak vašeg doprinosa",
        "tooltip-pt-login": "Predlažemo da se prijavite, ali nije obvezno.",
        "tooltip-pt-logout": "Odjava sa projekta {{SITENAME}}",
+       "tooltip-pt-createaccount": "Ohrabrujemo vas da otvorite nalog i prijavite se, međutim to nije obavezno",
        "tooltip-ca-talk": "Razgovor o sadržaju",
        "tooltip-ca-edit": "Možete uređivati ovaj članak. Molimo Vas, koristite dugme \"Prikaži izgled\" prije spašavanja izmjena.",
        "tooltip-ca-addsection": "Započnite novu sekciju.",
        "logentry-rights-rights": "$1 je {{GENDER:$2|promijenio|promijenila|promijenio}} članstvo grupe za $3 iz $4 u $5",
        "logentry-rights-rights-legacy": "$1 je {{GENDER:$2|promijenio|promijenila|promijenio}} članstvo grupe za $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$1|je automatski promijenjeno članstvo|su automatski promijenjena članstva}} iz $4 u $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|uploaded}} $3",
        "rightsnone": "(nema)",
        "revdelete-summary": "sažetak",
        "feedback-adding": "Dodajem povratne informacije na stranicu...",
index 9c7f094..910f0ba 100644 (file)
        "mergelogpagetext": "A sota hi ha una llista de les fusions més recents d'una pàgina d'historial en una altra.",
        "history-title": "«$1»: Historial de revisions",
        "difference-title": "Diferència entre revisions de la pàgina «$1»",
-       "difference-title-multipage": "$1 i $2: Diferència entre les pàgines",
+       "difference-title-multipage": "Diferència entre les pàgines «$1» i «$2»",
        "difference-multipage": "(Diferència entre pàgines)",
        "lineno": "Línia $1:",
        "compareselectedversions": "Compara les versions seleccionades",
        "import-interwiki-history": "Copia totes les versions de l'historial d'aquesta pàgina",
        "import-interwiki-templates": "Inclou totes les plantilles",
        "import-interwiki-submit": "Importa",
-       "import-interwiki-namespace": "Espai de noms de destinació:",
-       "import-interwiki-rootpage": "Pàgina arrel de destí (opcional):",
        "import-upload-filename": "Nom de fitxer:",
        "import-comment": "Comentari:",
        "importtext": "Exporteu el fitxer des del wiki d'origen utilitzant l'[[Special:Export|eina d'exportació]].\nDeseu-lo al vostre ordinador i carregueu-ne una còpia ací.",
        "tags-update-add-not-allowed-one": "No es permet afegir manualment l'etiqueta «$1».",
        "tags-edit-title": "Modifica les etiquetes",
        "tags-edit-manage-link": "Gestiona les etiquetes",
+       "tags-edit-existing-tags": "Etiquetes existents:",
+       "tags-edit-new-tags": "Etiquetes noves:",
        "tags-edit-reason": "Motiu:",
        "comparepages": "Comparar pàgines",
        "compare-page1": "Pàgina 1",
index dc2ee15..af91202 100644 (file)
        "import-interwiki-history": "ХӀокху агӀона ерриг хийцаман истори копи ян",
        "import-interwiki-templates": "Юкъайихка массо кепаш",
        "import-interwiki-submit": "Импорт ян",
-       "import-interwiki-namespace": "Коьрта цӀерийн ана:",
-       "import-interwiki-rootpage": "Коьрта агӀо (тӀехь дац):",
        "import-upload-filename": "Файлан цӀе:",
        "import-comment": "Билгалдаккхар:",
        "importstart": "АгӀонаш импорт яр…",
index 2eecb5c..9087ce4 100644 (file)
        "mycustomjsprotected": "دەسەڵاتی دەستکارییکردنی ئەم پەڕەی JavaScript ـەت نییە.",
        "myprivateinfoprotected": "دەسەڵاتی دەستکارییکردنی زانیارییە تایبەتییەکانی خۆتت نییە.",
        "mypreferencesprotected": "دەسەڵاتی دەستکارییکردنی هەڵبژاردنەکانی خۆتت نییە.",
-       "ns-specialprotected": "تۆ ناتوانی لاپەڕە تایبەتەکان دەستکاریی بکەی.",
+       "ns-specialprotected": "پەڕە تایبەتەکان دەستکاری ناکرێن.",
        "titleprotected": "ئەم سەرناوە پارێزراوە لە دروستکران لە لایەن [[User:$1|$1]].\nھۆکاری ئەمە بریتیە لە \"''$2''\".",
        "invalidtitle-knownnamespace": "سەردێڕی نادروست بە بۆشایی ناوی «$2» و دەقی «$3»",
        "invalidtitle-unknownnamespace": "سەردێڕی هەڵە لەگەڵ ناوەبۆشایی نەناسراوی ژمارە $1 و دەقی \"$2\"",
        "userrights-unchangeable-col": "ئەو گرووپانەی ناتوانی بیگۆڕی",
        "group": "گرووپ:",
        "group-user": "بەکارھێنەران",
-       "group-autoconfirmed": "بەکارھێنەرانی پەسندکراوی خۆگەڕ",
+       "group-autoconfirmed": "بەکارھێنەرە خۆبەخۆ پەسندکراوەکان",
        "group-bot": "بۆتەکان",
        "group-sysop": "بەڕێوەبەران",
        "group-bureaucrat": "بیوروکراتەکان",
        "group-suppress": "چاودێرەکان",
        "group-all": "(ھەموو)",
        "group-user-member": "{{GENDER:$1|بەکارھێنەر}}",
-       "group-autoconfirmed-member": "{{GENDER:$1|بەکارھێنەرانی پەسندکراوی خۆگەڕ}}",
+       "group-autoconfirmed-member": "{{GENDER:$1|بەکارھێنەرە خۆبەخۆ پەسندکراوەکان}}",
        "group-bot-member": "بۆت",
        "group-sysop-member": "{{GENDER:$1|بەڕێوەبەر}}",
        "group-bureaucrat-member": "{{GENDER:$1|بیوروکرات}}",
        "group-suppress-member": "{{GENDER:$1|چاودێر}}",
        "grouppage-user": "{{ns:project}}:بەکارھێنەران",
-       "grouppage-autoconfirmed": "{{ns:project}}:بەکارھێنەرانی پەسندکراوی خۆگەڕ",
+       "grouppage-autoconfirmed": "{{ns:project}}:بەکارھێنەرە خۆبەخۆ پەسندکراوەکان",
        "grouppage-bot": "{{ns:project}}:بۆت",
        "grouppage-sysop": "{{ns:project}}:بەڕێوەبەران",
        "grouppage-bureaucrat": "{{ns:project}}:بیوروکراتەکان",
        "action-deleterevision": "سڕینەوەی ئەم پێداچوونەوەیە",
        "action-deletedhistory": "دیتنی مێژووی سڕاوەی ئەم پەڕەیە",
        "action-browsearchive": "گەران لە نێو لاپەڕە سڕاوەکان",
-       "action-undelete": "گەڕانەوەی ئەم لاپەڕە",
+       "action-undelete": "گەڕاندنەوەی ئەم پەڕەیە",
        "action-suppressrevision": "چاوپێداخشان و هاردنوەی ئەم لاپەڕە شاراوە",
        "action-suppressionlog": "دیتنی ئەم لۆگە ئەهلیە",
        "action-block": "بەربەست کردنی ئەم بەکارهێنەرە بۆ دەستکاری‌کردن",
        "rcshowhideanons": "بەکارھێنەرە نەناسراوەکان $1",
        "rcshowhideanons-show": "نیشان بدە",
        "rcshowhideanons-hide": "بشارەوە",
-       "rcshowhidepatr": "گۆرانکارییە پاس دراوەکان $1",
+       "rcshowhidepatr": "دەستکارییە پشکێنراوەکان $1",
        "rcshowhidepatr-show": "نیشان بدە",
        "rcshowhidepatr-hide": "بیشارەوە",
        "rcshowhidemine": "دەستکارییەکانم $1",
        "hide": "بشارەوە",
        "show": "نیشان بدە",
        "minoreditletter": "ب",
-       "newpageletter": "ن",
-       "boteditletter": "بۆ",
+       "newpageletter": "نوێ",
+       "boteditletter": "بۆت",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|بەکارھێنەر}}ی چاودێر]",
        "rc_categories": "بەرتەسک‌کردنەوە بە هاوپۆلەکان (به «|» جیای بکەوە‌)",
        "rc_categories_any": "هەرکام",
        "protectedpages-page": "پەڕە",
        "protectedpages-params": "پارامەترەکانی پاراستن",
        "protectedpages-reason": "ھۆکار",
-       "protectedtitles": "سەردێڕە پارێزراوەکان",
+       "protectedtitles": "سەرناوە پارێزراوەکان",
        "protectedtitlesempty": "ھیچ سەرناوێک بەم سنوورانەوە ئێستا نەپارێزراوە.",
        "listusers": "پێرستی بەکارھێنەران",
        "listusers-editsonly": "تەنیا ئەو بەکارھێنەرانە نیشان بدە کە دەستکارییان کردووە",
        "suppress": "چاودێری",
        "booksources": "سەرچاوەکانی کتێب",
        "booksources-search-legend": "بۆ سەرچاوەی کتێب بگەڕێ",
+       "booksources-search": "بگەڕێ",
        "booksources-text": "لە خوارەوە لیستێک لە بەستەر بۆ ماڵپەڕهایەک کە کتێبی نوێ و بەکارهێنراو دەفرۆشێت و لەوانەیە لەوێ زانیاریی زیاترت دەست‌کەوێت سەبارەت بەو کتێبانەی لە دووی دەگەڕیت:",
        "booksources-invalid-isbn": "ISBN دراو لەوە ناچی بەکار بێت، سەرنج بدە لە کاتی کۆپی کردن لە سەرچاوە تووشی هەڵە نوبوبێت.",
        "specialloguserlabel": "بەجێھێنەر:",
        "listusers-submit": "نیشانیبدە",
        "listusers-noresult": "ھیچ بەکارھێنەرێک نەدۆزرایەوە.",
        "listusers-blocked": "(بەربەست کراوە)",
-       "activeusers": "پێرستی بەکارھێنەرانی چالاک",
+       "activeusers": "پێرستی بەکارھێنەرە چالاکەکان",
        "activeusers-intro": "ئەمە لیستێکی ئەو بەکارھێنەرانەیە کە لە  $1 {{PLURAL:$1|ڕۆژ|ڕۆژ}}ی ڕابردوودا بە جۆرێک چالاکییەکیان ھەبووە.",
        "activeusers-count": "$1 {{PLURAL:$1|کردەوە}} لە دوایین {{PLURAL:$3|ڕۆژ|$3 ڕۆژ}}دا",
        "activeusers-from": "نیشاندانی بەکارھێنەران بە دەستپێکردن لە:",
        "ipusubmit": "لابردنی ئەم بەربەستە",
        "unblocked": "[[User:$1|$1]] لە بەربەست دەرهێنرا",
        "unblocked-id": "بەربەستی $1 لابرا",
-       "blocklist": "بەکارھێنەرانی بەربەسراو",
+       "blocklist": "بەکارھێنەرە بەربەستکراوەکان",
        "ipblocklist": "بەکارھێنەرە بەربەستکراوەکان",
        "ipblocklist-legend": "دۆزینەوەی بەکارهێنەرێکی بەربەست‌کراو",
        "blocklist-userblocks": "ھەژمارە بەربەستکراوەکان بشارەوە",
        "proxyblockreason": "ناونیشانی ئای‌پی تۆ بەربەست‌کراوە لەبەر ئەوەی پرۆکسیەکی کراوەیە.\nتکایە پەیوەندی بکە بە دابینکەری خزمەتی ئینتەرنەتی خۆت یان پاڵپشتی تەکنیکی و ئاگادریان کەوە لەو کێشە ئەمنیە گرینگە.",
        "sorbsreason": "ناونیشانی ئای‌پی تۆ لە DNSBLدا کە {{SITENAME}} کەڵکی لێ‌وەر دەگرێ، وەک پرۆکسیەکی کراوە لیست کراوە.",
        "sorbs_create_account_reason": "ناونیشانی ئای‌پی تۆ لە DNSBLدا کە {{SITENAME}} کەڵکی لێ‌وەر دەگرێ، وەک پرۆکسیەکی کراوە لیست کراوە.\nبۆیە ناتوانی هەژمارە درووست‌بکەی.",
-       "ipbblocked": "ناتوانی بەکارھێنەرانی تر بەربەست بکەی یان بکەیەوە، چون خۆت بەربەست کراوی.",
+       "ipbblocked": "ناتوانی بەکارھێنەرانی تر بەربەست بکەیت یان بکەیتەوە، چونکوو خۆت بەربەست کراوی.",
        "lockdb": "داخستنی بنکەدراوە",
        "unlockdb": "کردنەوەی بنکەدراوە",
        "lockdbtext": "داخستنی بنکەدراوە ئەبێتە هۆی ڕاگرتنی توانای هەموو بەکارهێنەران بۆ دەستکاری لاپەڕەکان، گۆڕانی هەڵبژاردەکانیان، دەستکاری لیستی چاودێرییەکانیان و هەموو ئەموو ئەو شتانە وا پێویستی بە گۆرانکاری لە بنکەدراوە هەیە.\nتکایە ئەرخەیان بە ئەمە هەر ئەوەیە کە دەتەوێ بیکەی و دوای چاکسازیەکەت لەیادت بێ کە بنکەدراوەکە بکەیتەوە.",
        "delete_and_move_confirm": "بەڵێ، پەڕەکە بسڕەوه",
        "delete_and_move_reason": "سڕایەوە بۆ کردنەوەی ڕیگە بۆ گواستنەوە لە «[[$1]]»ەوە",
        "selfmove": "سەردێڕەکانی سەرچاوە و مەبەست یەکێکن؛\nناکرێ لاپەڕەیەک بۆ سەر خۆی‌ بگوازرێتەوە.",
-       "immobile-source-namespace": "گواستنەوەی لاپەڕە لە بۆشایی‌ناو \"$1\" ناکرێت.",
+       "immobile-source-namespace": "پەڕەکان لە بۆشاییی ناوی \"$1\"دا ناگوێزرێنەوە.",
        "immobile-target-namespace": "گواستنەوەی لاپەڕە بۆناو بۆشایی‌ناو \"$1\" ناکرێت.",
        "immobile-target-namespace-iw": "بەستەرێکی نێوان‌ویکی ئامانجێکی گونجاو نیە بۆ گواستنەوەی لاپەڕە.",
        "immobile-source-page": "ئەمە لاپەڕە بۆ گواستنەوە نابێت.",
        "import-interwiki-history": "هەموو مێژووی پێداچوونەوەکانی ئەم پەڕەیە کۆپی بکە",
        "import-interwiki-templates": "ھەموو داڕێژەکان لەخۆبگرێتەوە",
        "import-interwiki-submit": "هاوردە بکە",
-       "import-interwiki-namespace": "بۆشاییی ناوی مەبەست:",
-       "import-interwiki-rootpage": "پەڕەی بنەڕەتیی مەبەست (دڵخوازانە):",
        "import-upload-filename": "ناوی پەڕگە‌:",
        "import-comment": "بۆچوون:",
        "importtext": "تکایە پەڕگەکە لە ویکی سەرچاوەوە بە کەڵک وەرگرتن لە [[Special:Export|ئامێری ھەناردن]] ھەناردە بکە.\nلەسەر کۆمپیۆتەرەکەت پاشەکەوتی بکە و لێرە باری بكە.",
        "metadata-fields": "کێڵگەکانی میتاداتای وێنە کە لەم پەیامەدا بەڕیزکراون کاتێک خشتەی میتاداتا کۆکراوەش بێت لە پەڕەی وێنەدا نیشان دەدرێن.\nکێڵگەکانی تر لە حاڵەتی بنەڕەتیدا شاراوەن.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "پانی",
        "exif-imagelength": "بەرزی",
+       "exif-orientation": "ئاڕاستە",
        "exif-ycbcrpositioning": "شوێنی Y و C",
        "exif-datetime": "ڕێکەوتی و کاتی گۆڕانی پەڕگە",
        "exif-imagedescription": "ناونیشانی وێنە",
+       "exif-make": "بەرھەمھێنەری کامێرا",
        "exif-model": "جۆری کامێرا",
        "exif-software": "نەرمەواڵەی بەکارهاتوو",
        "exif-artist": "نووسەر",
        "tag-filter-submit": "پاڵاوتن",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|تاگ|تاگەکان}}]]: $2)",
        "tags-title": "تاگەکان",
-       "tags-intro": "ئÛ\95Ù\85 Ù\84اپÛ\95Ú\95Û\95 Ø¦Û\95Ù\88 ØªØ§Ú¯Ø§Ù\86Û\95Û\8c Ù\84Û\8cست Ø¯Û\95کات Ú©Û\95 Ù\84Û\95Ù\88اÙ\86Û\95Û\8cÛ\95 Ù\86Û\95رÙ\85اÙ\85Û\8eر Ø¯Û\95ستکارÛ\8cÛ\95Ú©Û\8c Ø¨Û\86 Ù\86Û\8cشاÙ\86 Ø¨Ú©Ø§Øª Ù\88 Ù\85Û\95بÛ\95ستÛ\8c Ù\86Û\8cشاÙ\86 Ø¨Ø¯ات.",
+       "tags-intro": "ئÛ\95Ù\85 Ù¾Û\95Ú\95Û\95Û\8cÛ\95 Ù¾Û\8eرستÛ\8c Ù\86اÙ\88 Ù\88 Ù\85اÙ\86اÛ\8c Ø¦Û\95Ù\88 ØªØ§Ú¯Ø§Ù\86Û\95Û\8cÛ\95 Ú©Û\95 Ù\86Û\95رÙ\85اÙ\85Û\8eر Ù\84Û\95Ù\88اÙ\86Û\95Û\8cÛ\95 Ø¯Û\95ستکارÛ\8cÛ\8cÛ\95Ú©Û\8c Ù¾Û\8eÙ\88Û\95 Ø¯Û\8cارÛ\8c Ø¨Ú©ات.",
        "tags-tag": "ناوی تاگ",
-       "tags-display-header": "دÛ\8cÙ\85Û\95Ù\86 Ù\84Û\95سÛ\95ر Ù\84Û\8cستÛ\95کاÙ\86Û\8c Ú¯Û\86Ú\95اÙ\86",
-       "tags-description-header": "Ù¾Û\8eÙ\86اسÛ\95Û\8c ØªÛ\95Ù\88اÙ\88Û\8c Ù\85Û\95بÛ\95ست",
+       "tags-display-header": "دÛ\95رکÛ\95Ù\88تÙ\86Û\8c Ù\84Û\95 Ù¾Û\8eرستÛ\95کاÙ\86Û\8c Ú¯Û\86Ú\95اÙ\86کارÛ\8c",
+       "tags-description-header": "Ù\88Û\95سÙ\81Û\8c Ù\85اÙ\86اکÛ\95Û\8c Ø¨Û\95 ØªÛ\95Ù\88اÙ\88Û\8c",
        "tags-hitcount-header": "گۆڕانکاریە تاگ‌کراوەکان",
        "tags-active-yes": "بەڵێ",
        "tags-active-no": "نا",
index 1901c2f..60aa4c9 100644 (file)
        "import-interwiki-history": "Zkopírovat všechny historické verze této stránky",
        "import-interwiki-templates": "Zahrnout všechny šablony",
        "import-interwiki-submit": "Importovat",
-       "import-interwiki-namespace": "Cílový jmenný prostor:",
-       "import-interwiki-rootpage": "Cílová kořenová stránka (nepovinné):",
+       "import-mapping-default": "Importovat do implicitních umístění",
+       "import-mapping-namespace": "Importovat do jmenného prostoru:",
+       "import-mapping-subpage": "Importovat jako podstránky následující stránky:",
        "import-upload-filename": "Jméno souboru:",
        "import-comment": "Zdůvodnění:",
        "importtext": "Prosím exportujte soubor ze zdrojové wiki pomocí [[Special:Export|exportního nástroje]].\nUložte jej na svůj disk a nahrajte ho sem.",
index 6513c61..7280b9c 100644 (file)
        "faqpage": "Project:ЫйХу",
        "variants": "Вариантсем",
        "errorpagetitle": "Йăнăш",
-       "returnto": "$1 Ñ\81Ñ\82Ñ\80аниÑ\86Ä\83на Ñ\82авÑ\80Ä\83н.",
+       "returnto": "$1 таврăн.",
        "tagline": "{{GRAMMAR:genitive|{{SITENAME}}}}ри материал",
        "help": "Пулăшу",
        "search": "Шырамалли",
        "createacct-realname": "Чăн-чăн ят (пулсан)",
        "createacct-submit": "Аккаунт ту",
        "createacct-benefit-body1": "{{PLURAL:$1|тӳрлетни|тӳрлетнисем}}",
-       "createacct-benefit-body2": "{{PLURAL:$1|страница|страницасем}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|страницă|страницăсем}}",
        "badretype": "Эсир кăтартнă парольсем пĕр пек мар.",
        "userexists": "Эсир усă курас теекен ята йышăннă. Тархасшăн, урăх ят суйласа илĕр.",
        "loginerror": "Хутшăнакана палласа илеймерĕмĕр",
        "recentchanges": "Улшăнусем",
        "recentchanges-legend": "Çĕнĕ улшăнусен ĕнерлевĕ",
        "recentchanges-label-bot": "Ку улшăнăва бот тунă",
-       "recentchanges-legend-newpage": "$1 — çĕнĕ страница",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (пăхăр [[Special:NewPages|çĕнĕ страницăсен списокĕ]])",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "rclistfrom": "Юлашки улшăнусене $3 $2 вăхăтран пуçласа кăтартнă",
        "rcshowhideminor": "пĕчĕк тӳрлетнисене $1",
+       "rcshowhideminor-show": "кăтартмалла",
+       "rcshowhideminor-hide": "кăтартмалла мар",
        "rcshowhidebots": "ботсене $1",
-       "rcshowhidebots-show": "Кăтарт",
+       "rcshowhidebots-show": "кăтартмалла",
+       "rcshowhidebots-hide": "кăтартмалла мар",
        "rcshowhideliu": "сайта кĕнисене $1",
-       "rcshowhideanons": "ячĕсене палăртманскерсене $1",
+       "rcshowhideliu-show": "кăтартмалла",
+       "rcshowhideliu-hide": "кăтартмалла мар",
+       "rcshowhideanons": "Паллă маррисене $1",
+       "rcshowhideanons-show": "кăтартмалла",
+       "rcshowhideanons-hide": "кăтартмалла мар",
        "rcshowhidepatr": "тĕрĕсленĕ тӳрлетӳсене $1",
+       "rcshowhidepatr-show": "кăтартмалла",
+       "rcshowhidepatr-hide": "кăтартмалла мар",
        "rcshowhidemine": "хăвăн тӳрлетнисене $1",
+       "rcshowhidemine-show": "кăтартмалла",
+       "rcshowhidemine-hide": "кăтартмалла мар",
        "rclinks": "Юлашки $2 кун хушшинче тунă $1 улшăнусене кăтартмалла<br />$3",
        "diff": "танл.",
        "hist": "ист",
        "show": "Кăтартмалла",
        "minoreditletter": "п",
        "newpageletter": "Ç",
+       "boteditletter": "б",
+       "unpatrolledletter": "!",
        "rc_categories_any": "Кашни",
        "newsectionsummary": "/* $1 */ Çĕнĕ тема",
        "recentchangeslinked": "Çыхăннă улшăнусем",
        "nbytes": "$1 {{PLURAL:$1|байт|байтсем}}",
        "ncategories": "$1 {{PLURAL:$1|категори|категорисем}}",
        "nlinks": "$1 {{PLURAL:$1|1=каçă|каçă}}",
+       "nmembers": "$1 {{PLURAL:$1|тĕл|тĕлте}}",
        "nviews": "$1 {{PLURAL:$1|пăхни|пăхнисем}}",
        "specialpage-empty": "Ку страница пушă",
        "lonelypages": "Тăлăх страницăсем",
        "import": "Страницăсене импортласси",
        "importinterwiki": "Вики хушшинчи импорт",
        "import-interwiki-submit": "Импортирла",
-       "import-interwiki-namespace": "Страницăсене çак ят уçлăхне вырнаçтар:",
        "import-upload-filename": "Файл ячĕ:",
        "importnopages": "Импортламалли страницăсем çук.",
        "importnofile": "Импортламалли файла тиемен",
index 6f3ab07..c0c8788 100644 (file)
        "searcharticle": "Gå til",
        "history": "Historik",
        "history_short": "Historik",
-       "updatedmarker": "opdateret siden sidste besøg",
+       "updatedmarker": "opdateret siden seneste besøg",
        "printableversion": "Udskriftsvenlig udgave",
        "permalink": "Permanent henvisning",
        "print": "Udskriv",
        "toolbox": "Værktøjer",
        "userpage": "Se brugersiden",
        "projectpage": "Se projektsiden",
-       "imagepage": "Se filsiden",
+       "imagepage": "Se filside",
        "mediawikipage": "Vise indholdsside",
        "templatepage": "Vise skabelonside",
        "viewhelppage": "Vise hjælpeside",
        "jumptonavigation": "Navigation",
        "jumptosearch": "Søgning",
        "view-pool-error": "Beklager, men serverne er i øjeblikket overbelastede.\nFor mange brugere prøver at se denne side.\nVent et øjeblik, før du prøver at besøge denne side igen.\n\n$1",
+       "generic-pool-error": "Beklager, men serverne er i øjeblikket overbelastede.\nFor mange brugere prøver at se denne side.\nVent et øjeblik før du prøver at besøge denne side igen.",
        "pool-timeout": "Timeout mens man venter på låsningen",
        "pool-queuefull": "Pool køen er fuld",
        "pool-errorunknown": "Ukendt fejl",
+       "poolcounter-usage-error": "Brugsfejl: $1",
        "aboutsite": "Om {{SITENAME}}",
        "aboutpage": "Project:Om",
        "copyright": "Indholdet er udgivet under $1 medmindre andet er angivet.",
        "readonly_lag": "Databasen er automatisk blevet låst mens slave database serverne synkronisere med master databasen",
        "internalerror": "Intern fejl",
        "internalerror_info": "Intern fejl: $1",
+       "internalerror-fatal-exception": "Alvorlig undtagelse af typen \"$1\"",
        "filecopyerror": "Kunne ikke kopiere filen \"$1\" til \"$2\".",
        "filerenameerror": "Kunne ikke omdøbe filen \"$1\" til \"$2\".",
        "filedeleteerror": "Kunne ikke slette filen \"$1\".",
        "badtitletext": "Den ønskede sides titel var ikke tilladt, tom eller siden er forkert henvist fra {{SITENAME}} på et andet sprog.\nDen kan indeholde et eller flere tegn, som ikke må anvendes i titler.",
        "perfcached": "Følgende data er gemt i cachen, der muligvis ikke er helt opdateret. Der gemmes højst {{PLURAL:$1|ét resultat|$1 resultater}} i cachen.",
        "perfcachedts": "Disse data stammer fra cachen, som senest blev opdateret $1. Der gemmes højst {{PLURAL:$4|ét resultat|$4 resultater}} i cachen.",
-       "querypage-no-updates": "'''Opdateringer til denne side er deaktiveret for øjeblikket. Dataene bliver indtil videre ikke fornyet.'''",
+       "querypage-no-updates": "Opdateringer til denne side er deaktiveret for øjeblikket. Dataene bliver indtil videre ikke fornyet.",
        "viewsource": "Vis kildetekst",
        "viewsource-title": "Se kildekoden til $1",
        "actionthrottled": "Begrænsning af handling",
        "viewsourcetext": "Du kan se og kopiere kildekoden til siden:",
        "viewyourtext": "Du kan se og kopiere kildekoden for '''dine redigeringer''' til denne side:",
        "protectedinterface": "Denne side indeholder teksten i brugergrænsefladen til softwaren på denne wiki, og er beskyttet for at forhindre misbrug.\nHvis du vil tilføje eller ændre oversættelser for alle wiki-websteder, så brug venligst [//translatewiki.net/ translatewiki.net], projektet for oversættelse af MediaWiki.",
-       "editinginterface": "'''Advarsel:''' Du redigerer en side som bruges i programmets grænseflade. Ændringer på denne side vil påvirke udseendet af grænsefladen for andre brugere af denne wiki.\nFor at tilføje eller ændre oversættelser på alle wikier bedes du benytte [//translatewiki.net/ translatewiki.net], projektet for oversættelse af MediaWiki.",
+       "editinginterface": "<strong>Advarsel:</strong> Du redigerer en side, som bruges til at give interface-tekst til softwaren.\nÆndringer på denne side vil påvirke udseendet af brugergrænsefladen for andre brugere på denne wiki.",
+       "translateinterface": "For at tilføje eller ændre oversættelser for alle wikier, skal du bruge [//translatewiki.net/ translatewiki.net], der er MediaWikis lokaliseringsprojekt.",
        "cascadeprotected": "Denne side er skrivebeskyttet, da den er indeholdt i nedenstående {{PLURAL:$1|side|sider}}, som er skrivebeskyttet med tilvalg af \"nedarvende sidebeskyttelse\":\n$2",
        "namespaceprotected": "Du har ikke rettigheder til at redigere sider i $1-navnerummet.",
        "customcssprotected": "Du har ikke tilladelse til at redigere denne CSS-side, da den indeholder en anden brugers personlige indstillinger.",
        "invalidtitle-knownnamespace": "Ugyldig titel med navnerummet \"$2\" og teksten \"$3\"",
        "invalidtitle-unknownnamespace": "Ugyldig titel med ukendt navnerum nummer $1 og tekst \"$2\"",
        "exception-nologin": "Ikke logget på",
-       "exception-nologin-text": "Du skal [[Special:Userlogin|logge på]] for at få adgang til denne side eller handling.",
+       "exception-nologin-text": "Du skal logge på for at få adgang til denne side eller handling.",
        "exception-nologin-text-manual": "Du skal $1 for at få adgang til denne side eller handling.",
        "virus-badscanner": "Konfigurationsfejl: ukendt virus-scanner: ''$1''",
        "virus-scanfailed": "virus-scan fejlede med fejlkode $1",
        "loginerror": "Logon mislykket",
        "createacct-error": "Fejl ved kontooprettelse",
        "createaccounterror": "Kunne ikke oprette brugerkonto: $1",
-       "nocookiesnew": "Din brugerkonto er nu oprettet, men du er ikke logget på. {{SITENAME}} bruger cookies til at logge brugere på. Du har slået cookies fra. Vær venlig at slå cookies til, og derefter kan du logge på med dit nye brugernavn og adgangskode.",
+       "nocookiesnew": "Din brugerkonto er nu oprettet, men du er ikke logget på. {{SITENAME}} bruger cookies til at logge brugere på.\nDu har slået cookies fra. \nVær venlig at slå cookies til og log derefter på med dit nye brugernavn og adgangskode.",
        "nocookieslogin": "{{SITENAME}} bruger cookies til at logge brugere på. Du har slået cookies fra. Slå dem venligst til og prøv igen.",
        "nocookiesfornew": "Denne brugerkonto er ikke oprettet, da vi ikke kunne bekræfte dens kilde.\nSørg for, at du har aktivereret cookies, genindlæs siden og prøv igen.",
        "noname": "Du har ikke angivet et gyldigt brugernavn.",
        "createaccount-text": "Nogen har oprettet en konto for din e-mailadresse på {{SITENAME}} ($4) med navnet \"$2\". Adgangskoden er \"$3\".\nDu opfordres til at logge på og ændre adgangskoden med det samme.\n\nDu kan ignorere denne besked hvis kontoen blev oprettet ved en fejl.",
        "login-throttled": "Du har forsøgt at logge på for mange gange.\nVent venligst $1, før du prøver igen.",
        "login-abort-generic": "Det lykkedes dig ikke at logge på - afbrudt",
+       "login-migrated-generic": "Din konto er blevet globaliseret, og dit brugernavn eksisterer ikke længere på denne wiki.",
        "loginlanguagelabel": "Sprog: $1",
        "suspicious-userlogout": "Din anmodning om at logge af blev nægtet, fordi det ser ud som den blev sendt af en ødelagt browser eller caching proxy.",
        "createacct-another-realname-tip": "Angivelse af rigtigt navn er valgfrit.\nHvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit arbejde.",
        "resetpass-submit-cancel": "Annuller",
        "resetpass-wrong-oldpass": "Ugyldig midlertidig eller gældende adgangskode.\nDu har muligvis allerede skiftet din adgangskode eller anmodet om en ny midlertidig kode.",
        "resetpass-recycled": "Vær venlig at ændre din adgangskode til noget andet end din nuværende adgangskode.",
-       "resetpass-temp-emailed": "Du loggede på med en midlertidig kode tilsendt på e-mail.\nFor at afslutte indlogning, skal du oprette en nyt adgangskode:",
+       "resetpass-temp-emailed": "Du loggede på med en midlertidig kode tilsendt på e-mail.\nFor at afslutte indlogning skal du angive en ny adgangskode her:",
        "resetpass-temp-password": "Midlertidig adgangskode",
        "resetpass-abort-generic": "Ændring af adgangskode er blevet afbrudt af en udvidelse",
        "resetpass-expired": "Din adgangskode er udløbet. Angiv en ny adgangskode for at logge på.",
        "showpreview": "Forhåndsvisning",
        "showdiff": "Vis ændringer",
        "blankarticle": "<strong>Advarsel:</strong> Siden du opretter er tom.\nHvis du klikker på \"{{int:savearticle}}\" igen, vil siden blive oprettet uden indhold.",
-       "anoneditwarning": "'''Advarsel:''' Du er ikke logget på. I stedet for brugernavn vises din IP-adresse i versionshistorikken.",
+       "anoneditwarning": "<strong>Advarsel:</strong> Du er ikke logget ind. Din IP-adresse vil blive offentligt tilgængelig, hvis du foretager nogen ændringer. Hvis du <strong>[$1 logger ind]</strong> eller <strong>[$2 opretter en konto]</strong> vil dine redigeringer vil blive tilskrevet dit brugernavn, og du vil få flere andre fordele.",
        "anonpreviewwarning": "''Du er ikke logget på. Hvis du gemmer, registreres din IP-adresse i versionshistorikken.''",
        "missingsummary": "'''Bemærk:''' Du har ikke angivet en redigeringsbeskrivelse. Hvis du igen trykker på \"{{int:savearticle}}\", gemmes ændringerne uden en beskrivelse.",
+       "selfredirect": "<strong>Advarsel:</strong> Du er ved at omdirigere denne side til sig selv.\nDu kan have angivet det forkerte mål for omdirigeringen, eller du kan være ved at redigere den forkerte side.\nHvis du klikker på \"{{int:savearticle}}\" igen, vil omdirigeringen blive oprettet uanset dette.",
        "missingcommenttext": "Skriv venligst en kommentar nedenfor.",
        "missingcommentheader": "'''Bemærk:''' Du har ikke angivet en overskrift/emne for denne kommentar. Hvis du trykker \"{{int:savearticle}}\" én gang til, gemmes dine ændringer uden overskrift/emne.",
        "summary-preview": "Forhåndsvisning af beskrivelsen:",
        "subject-preview": "Forhåndsvisning af emnet:",
+       "previewerrortext": "Der opstod en fejl under forsøget på at lave en forhåndsvisning af dine ændringer.",
        "blockedtitle": "Du eller din IP-adresse er blokeret",
        "blockedtext": "'''Dit brugernavn eller din IP-adresse er blevet blokeret.'''\n\nBlokeringen er foretaget af $1.\nDen anførte grund er ''$2''.\n\nBlokeringen starter: $8\nBlokeringen udløber: $6\nBlokeringen er rettet mod: $7\n\nDu kan kontakte $1 eller en af de andre [[{{MediaWiki:Grouppage-sysop}}|administratorer]] for at diskutere blokeringen.\nDu kan ikke bruge funktionen 'e-mail til denne bruger' medmindre der er angivet en gyldig e-mailadresse i dine\n[[Special:Preferences|kontoindstillinger]], og du ikke er blevet blokeret fra at bruge den.\n\nDin nuværende IP-adresse er $3, og blokerings-id er #$5.\nAngiv venligst alle ovenstående detaljer ved henvendelser om blokeringen.",
        "autoblockedtext": "Din IP-adresse er blevet blokeret automatisk fordi den blev brugt af en anden bruger som er blevet blokeret af $1.\nBegrundelsen for det er:\n\n:''$2''\n\n* Blokeringsperiodens start: $8\n* Blokeringen udløber: $6\n* Blokeringen er ment for: $7\n\nDu kan kontakte $1 eller en af de andre [[{{MediaWiki:Grouppage-sysop}}|administratorer]] for at diskutere blokeringen.\n\nBemærk at du ikke kan bruge funktionen \"e-mail til denne bruger\" medmindre du har en gyldig e-mailadresse registreret i din [[Special:Preferences|brugerindstilling]], og du ikke er blevet blokeret fra at bruge den.\n\nDin nuværende IP-adresse er $3, og blokerings-id'et er #$5.\nAngiv venligst alle de ovenstående detaljer ved eventuelle henvendelser.",
        "import-interwiki-history": "Importer alle versioner af denne side",
        "import-interwiki-templates": "Inkluder alle skabeloner",
        "import-interwiki-submit": "Importer",
-       "import-interwiki-namespace": "Importer til navnerum:",
-       "import-interwiki-rootpage": "Destinationens stamside (valgfri):",
        "import-upload-filename": "Filnavn:",
        "import-comment": "Kommentar:",
        "importtext": "Eksportér filen fra kilde-wiki'en ved hjælp af [[Special:Export|eksporterings værktøjet]], gem den på din harddisk og upload den her.",
index c1991a3..e21e5e7 100644 (file)
@@ -75,7 +75,8 @@
                        "לערי ריינהארט",
                        "✓",
                        "XenonX3",
-                       "Brackenheim"
+                       "Brackenheim",
+                       "Robby"
                ]
        },
        "tog-underline": "Links unterstreichen:",
        "import-interwiki-history": "Alle Versionen dieser Seite importieren",
        "import-interwiki-templates": "Alle Vorlagen einschließen",
        "import-interwiki-submit": "Importieren",
-       "import-interwiki-namespace": "Zielnamensraum:",
-       "import-interwiki-rootpage": "Zielstammseite (optional):",
+       "import-mapping-default": "Zu den Standard-Speicherorten importieren",
+       "import-mapping-namespace": "In einen Namensraum importieren:",
+       "import-mapping-subpage": "Als Unterseiten der folgenden Seite importieren:",
        "import-upload-filename": "Dateiname:",
        "import-comment": "Grund:",
        "importtext": "Bitte die Datei über die Spezialseite [[Special:Export|Exportfunktion]] aus dem Quellwiki exportieren.\nDiese auf dem lokalen Rechner speichern und danach hier hochladen.",
index e4f40e8..889fbc0 100644 (file)
        "otherlanguages": "Zıwananê binan de",
        "redirectedfrom": "(Pele da $1 ra heteneyê)",
        "redirectpagesub": "Pela berdışi",
+       "redirectto": "Beno hetê:",
        "lastmodifiedat": "Ena pele tewr peyên roca $2, $1 de biya rocaniye.",
        "viewcount": "Ena pele {{PLURAL:$1|rae|$1 rey}} vêniya.",
        "protectedpage": "Pela pawıtiye",
        "preview": "Verqayt",
        "showpreview": "Verqayti bımocne",
        "showdiff": "Vurnayışan bımocne",
-       "anoneditwarning": "İqaz!: Şıma be hesabê xo nêkewtê cı. \nAdresê şımaê IP tarixê vırnayışê na pele de do qeyd bo.",
+       "anoneditwarning": "<strong>İqaz:</strong> Şıma be hesabê xo nêkewtê cı. \nAdresê şımaê IP tarixê vırnayışê na pele de do qeyd bo.",
        "anonpreviewwarning": "\"Şıma be hesabê xo nêkewtê cı. Eke qeyd kerê, adresê şımaê IP tarixê vırnayışê na pele de do qeyd bo.\"",
        "missingsummary": "'''DİQET:''' Şıma jû xulasa nênuşte.\nEke şıma \"{{int:savearticle}}\" reyna bıtıknê, vırnayışê şıma bê xulasa qeyd beno.",
        "missingcommenttext": "Cêr de jû fıkır bınusên, şıma rê zehmet.",
        "searchall": "pêro",
        "showingresults": "#<strong>$2</strong> netican ra {{PLURAL:$1|<strong>1</strong> netice cêr dero|<strong>$1</strong> neticey cêr derê}}.",
        "showingresultsinrange": "{{PLURAL:$1|<strong>1</strong> netice|<strong>$1</strong> neticey}} be mabeynê #<strong>$2</strong> ra be #<strong>$3</strong> cêr asenê.",
+       "search-showingresults": "{{PLURAL:$4|Netice <strong>$1</strong> be <strong>$3</strong>|Neticeyi <strong>$1 - $2</strong> be <strong>$3</strong>}}",
        "search-nonefound": "Zey perskerdışê şıma netice nêvêniya.",
        "powersearch-legend": "Cıgeyrayışo hera",
        "powersearch-ns": "Cayanê nameyan de cıgeyrayış:",
        "import-interwiki-history": "Qeydanê pele pêrune kopya ke",
        "import-interwiki-templates": "Şablonan pêro zerre ke",
        "import-interwiki-submit": "Zerre ke",
-       "import-interwiki-namespace": "Hedefê cayê nameyi:",
-       "import-interwiki-rootpage": "Hedef pelaya reçi (opsiyonel):",
        "import-upload-filename": "Nameyê dosyayi:",
        "import-comment": "Mışewre:",
        "importtext": "Kerem ke dosyay, çımeyê wiki ra pê [[Special:Export|kırıştışê teberdayişi]] bıdê teber, Komputerê xo de qeyd kerê u bar kerê tiya.",
        "logentry-rights-rights": "$1 qandê $3 rê ezayiya grube $4 ra $5 {{GENDER:$2|vuriye}}",
        "logentry-rights-rights-legacy": "$1 qandê $3 rê ezayiya grube {{GENDER:$2|vuriye}}",
        "logentry-rights-autopromote": "$1 otomatikmen $4 ra $5 {{GENDER:$2|terfi bi}}",
+       "logentry-upload-upload": "$1 {{GENDER:$2|bar kerd}} $3",
        "rightsnone": "(çıniyo)",
        "revdelete-summary": "kılmvatışê vuriyayişi",
        "feedback-adding": "Pela rê peyxeberdar defêno...",
index 81a622b..41587f4 100644 (file)
        "right-sendemail": "Spidés pôsta eletrônica a êter utèint",
        "right-passwordreset": "A vèd i mesâg 'd arnōv ed la cêva 'ed ingrès",
        "right-managechangetags": "Fà e tó via i [[Special:Tags|tag]] dal databêş",
+       "right-applychangetags": "Tâca dal [[Special:Tags|tichèti]] al tō mudéfichi",
+       "right-changetags": "Zûta e tó via [[Special:Tags|tichèti]] precîşi só versiòun ónichi o vōş ed regéster",
        "newuserlogpage": "Utèint nōv",
        "newuserlogpagetext": "Ché sòt a gh' é la lésta di nōv utèint.",
        "rightslog": "Diré ed j utèint",
        "action-editmyprivateinfo": "mudéfica al tō infurmasiòun personêli",
        "action-editcontentmodel": "câmbia al mudèl dèinter a 'na pàgina",
        "action-managechangetags": "fà e tó via i tag dal databêş",
+       "action-applychangetags": "tachêr dal tichèti al tō mudéfichi",
+       "action-changetags": "zuntêr o tōr via tichèti precîşi só versiòun ónichi o vōş ed regéster",
        "nchanges": "$1\n{{PLURAL:$1|mudéfica|mudéfichi}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|da l'ûltma vîşita}}",
        "enhancedrc-history": "stòria",
        "backend-fail-backup": "An n'é mìa pusébil fêr 'na côpia 'd sicurèsa dal file $1.",
        "backend-fail-notexists": "Al file $1 al gh'é mìa.",
        "backend-fail-hashes": "An n'é mìa pusébil utgnîr la divisiòun di file per cunfrûnt.",
+       "backend-fail-notsame": "A gh'é bèle un file mìa cumpâgn a \"$1\"",
+       "backend-fail-invalidpath": "\"$1\" an n'é mìa un percōrs vâlid per archiviêr.",
+       "backend-fail-delete": "An n'é mìa pusébil scanşlêr al file \"$1\".",
+       "backend-fail-describe": "Imposébil mudifichêr al j infurmasiòun dal file \"$1\".",
+       "backend-fail-alreadyexists": "Al file \"$1\" al gh'é bèle.",
+       "backend-fail-store": "Impusébil mèter in memôria al file \"$1\" in \"$2\".",
+       "backend-fail-copy": "An n'é mìa pusébil cupiêr al file \"$1\" in \"$2\".",
+       "backend-fail-move": "An n'é mìa pusébil spustêr al file \"$1\" in \"$2\".",
+       "backend-fail-opentemp": "L'é impusébil arvîr un file pruvişôri.",
+       "backend-fail-writetemp": "L'é impusébil fêr al file pruvişôri.",
+       "backend-fail-closetemp": "L'é impusébil sarêr un file pruvişôri.",
+       "backend-fail-read": "An n'é mìa pusébil lēzer al file \"$1\".",
+       "backend-fail-create": "An n'é mìa pusébil fêr al file \"$1\".",
+       "backend-fail-maxsize": "L'é impusébil fêr al file \"$1\" perché l'é pió grôs ed {{PLURAL:$2|un|$2}} byte.",
+       "backend-fail-readonly": "Al prugrâma 'd memôria \"$1\" adèsa a 's pōl sōl lēzer. La ragiòun dêda l'é: \"$2\".",
        "license": "Licèinsa:",
        "license-header": "Licèinsa",
        "nolicense": "Nisóna licèinsa sgnêda",
index f02869f..a09c0f6 100644 (file)
        "import-interwiki-history": "Kopiu ĉiujn historiajn versiojn por ĉi tiu pago.",
        "import-interwiki-templates": "Inkluzivi ĉiujn ŝablonojn",
        "import-interwiki-submit": "Importi",
-       "import-interwiki-namespace": "Cela nomspaco:",
-       "import-interwiki-rootpage": "Ircela radikopaĝo (laŭvola):",
        "import-upload-filename": "Dosiernomo:",
        "import-comment": "Komento:",
        "importtext": "Bonvolu eksporti la dosieron el la fonta vikio per la [[Special:Export|eksportilo]]. Konservu ĝin sur via persona komputilo kaj poste alŝutu ĝin tien ĉi.",
index 95087cf..256f0a1 100644 (file)
        "noarticletext": "En este momento no hay texto en esta página.\nPuedes [[Special:Search/{{PAGENAME}}|buscar el título de esta página]] en otras páginas,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar en los registros relacionados],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta página]</span>.",
        "noarticletext-nopermission": "Actualmente no hay texto en esta página.\nPuedes [[Special:Search/{{PAGENAME}}|buscar este título de página]] en otras páginas, o <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar en los registros relacionados]</span>, pero no tienes permiso para crear esta página.",
        "missing-revision": "La revisión n.º $1 de la página «{{FULLPAGENAME}}» no existe.\n\nEsto suele ocurrir cuando se sigue un enlace de historial obsoleto que apunta a una página ya borrada.\nPuedes encontrar detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
-       "userpage-userdoesnotexist": "El usuario «$1» no está registrado. Por favor, asegúrate de que realmente quieres crear o editar esta página.",
+       "userpage-userdoesnotexist": "El usuario «$1» no está registrado. Asegúrate de que realmente quieres crear o editar esta página.",
        "userpage-userdoesnotexist-view": "El usuario «$1» no está registrado.",
        "blocked-notice-logextract": "Este usuario se encuentra actualmente bloqueado.\nA continuación se muestra la última entrada del registro de bloqueos para más información:",
        "clearyourcache": "<strong>Nota:</strong> tras guardar, quizás necesites actualizar la caché de tu navegador para ver los cambios.\n* <strong>Firefox/Safari:</strong> Mantén presionada la tecla <em>Mayús</em> mientras pulsas el botón <em>Actualizar</em>, o presiona <em>Ctrl+F5</em> o <em>Ctrl+R</em> (<em>⌘+R</em> en Mac)\n* <strong>Google Chrome:</strong> presiona <em>Ctrl+Shift+R</em> (<em>⌘+Mayús+R</em> en Mac)\n* <strong>Internet Explorer:</strong> mantén presionada <em>Ctrl</em> mientras pulsas <em>Actualizar</em>, o presiona <em>Ctrl+F5</em>\n* <strong>Opera:</strong> vacía la caché en <em>Herramientas → Preferencias</em>",
        "revdelete-success": "Se ha cambiado con éxito la visibilidad de las revisiones.",
        "revdelete-failure": "No se ha podido cambiar la visibilidad de las revisiones:\n$1",
        "logdelete-success": "Se ha cambiado con éxito la visibilidad de los eventos.",
-       "logdelete-failure": "No se ha podido cambiar la visibilidad de los eventos:'''\n$1",
+       "logdelete-failure": "No se pudo cambiar la visibilidad de los eventos:\n$1",
        "revdel-restore": "mostrar/ocultar",
        "pagehist": "Historial de la página",
        "deletedhist": "Historial borrado",
        "allmessagesname": "Nombre",
        "allmessagesdefault": "Texto predeterminado",
        "allmessagescurrent": "Texto actual",
-       "allmessagestext": "Esta es una lista de mensajes del sistema disponibles en el espacio de nombres MediaWiki.\nPor favor, visita [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation Localización MediaWiki] y [//translatewiki.net translatewiki.net] si deseas contribuir a la localización genérica de MediaWiki.",
+       "allmessagestext": "Esta es una lista de mensajes del sistema disponibles en el espacio de nombres MediaWiki.\nVisita [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation Localización MediaWiki] y [//translatewiki.net translatewiki.net] si deseas contribuir a la localización genérica de MediaWiki.",
        "allmessagesnotsupportedDB": "Esta página no está disponible porque '''$wgUseDatabaseMessages''' está deshabilitado.",
        "allmessages-filter-legend": "Filtro",
        "allmessages-filter": "Filtrar por estado de personalización:",
        "import-interwiki-history": "Copiar todas las versiones históricas para esta página",
        "import-interwiki-templates": "Incluir todas las plantillas",
        "import-interwiki-submit": "Importar",
-       "import-interwiki-namespace": "Espacio de nombres de destino:",
-       "import-interwiki-rootpage": "Página raíz del destino (opcional):",
        "import-upload-filename": "Nombre de archivo:",
        "import-comment": "Comentario:",
        "importtext": "Por favor, exporta el archivo desde el wiki de origen usando la [[Special:Export|herramienta de exportación]], guárdalo en tu disco y súbelo aquí.",
index cd7475f..935795c 100644 (file)
        "revdelete-unsuppress": "Eemalda taastatud redaktsioonidelt piirangud",
        "revdelete-log": "Põhjus:",
        "revdelete-submit": "Rakenda valitud {{PLURAL:$1|redaktsiooni|redaktsioonide}} suhtes",
-       "revdelete-success": "Redaktsiooni nähtavus edukalt värskendatud.'''",
+       "revdelete-success": "Redaktsiooni nähtavus edukalt värskendatud.",
        "revdelete-failure": "'''Redaktsiooni nähtavust ei saanud värskendada:'''\n$1",
        "logdelete-success": "'''Logi nähtavus edukalt muudetud.'''",
        "logdelete-failure": "'''Logi nähtavust ei saanud paika:'''\n$1",
        "import-interwiki-history": "Kopeeri selle lehekülje kogu ajalugu",
        "import-interwiki-templates": "Liida kõik mallid",
        "import-interwiki-submit": "Impordi",
-       "import-interwiki-namespace": "Sihtkoha nimeruum:",
-       "import-interwiki-rootpage": "Sihtkoha juurlehekülg (valikuline):",
+       "import-mapping-default": "Impordi vaikeasukohta",
+       "import-mapping-namespace": "Impordi järgmisesse nimeruumi:",
+       "import-mapping-subpage": "Impordi järgmise lehekülje alamlehekülgedeks:",
        "import-upload-filename": "Failinimi:",
        "import-comment": "Kommentaar:",
        "importtext": "Palun kasuta faili allikvikist eksportimiseks [[Special:Export|ekspordivahendit]].\nSalvesta see oma arvutisse ja laadi siia üles.",
index 98f3bf2..d30230a 100644 (file)
        "import-interwiki-history": "Orrialde honen historiako bertsio guztiak kopiatu",
        "import-interwiki-templates": "Txantiloi guztiak sartu",
        "import-interwiki-submit": "Inportatu",
-       "import-interwiki-namespace": "Helburuko izen-tartea:",
-       "import-interwiki-rootpage": "Helburuko oinarri orrialdea (aukerazkoa):",
        "import-upload-filename": "Fitxategiaren izena:",
        "import-comment": "Iruzkina:",
        "importtext": "Mesedez, jatorrizko wikitik orrialdea esportatzeko [[Special:Export|esportazio tresna]] erabil ezazu, zure diskoan gorde eta jarraian hona igo.",
        "tooltip-pt-mycontris": "Nire ekarpenen zerrenda",
        "tooltip-pt-login": "Izen ematera gonbidatzen zaitugu.",
        "tooltip-pt-logout": "Saioa itxi",
+       "tooltip-pt-createaccount": "Kontu bat sortu eta horrekin saioa hastea eskatu nahi genizuke; ez da ezinbestekoa, ordea.",
        "tooltip-ca-talk": "Artikuluari buruzko eztabaida",
        "tooltip-ca-edit": "Artikulu hau aldatu dezakezu. Mesedez, aurrebista botoia erabil ezazu gorde baino lehen.",
        "tooltip-ca-addsection": "Iruzkin berria erantsi",
        "revdelete-uname-unhid": "lankide ezkutua erakutsi",
        "revdelete-restricted": "administratzaileentzako mugak ezarri dira",
        "revdelete-unrestricted": "administratzaileentzako mugak kendu dira",
-       "logentry-block-block": "administratzaileak $1 {{GENDER:$2|blocked}} {{GENDER:$4|$3}} blokeatu du. Iraupena: $5 $6",
+       "logentry-block-block": "$1 {{GENDER:$2|administratzaileak}} {{GENDER:$4|$3}} blokeatu du. Iraupena: $5 $6",
        "logentry-block-reblock": "$1 administratzaileak {{GENDER:$4|$3}} wikilariaren blokeoa {{GENDER:$2|aldatu du}}. Blokeoaldia: $5 $6",
-       "logentry-suppress-block": "administratzaileak $1 {{GENDER:$2|blocked}} {{GENDER:$4|$3}} blokeatu du. Iraupena: $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|administratzaileak}} {{GENDER:$4|$3}} blokeatu du. Iraupena: $5 $6",
        "logentry-suppress-reblock": "$1 administratzaileak {{GENDER:$4|$3}} wikilariaren blokeoa {{GENDER:$2|aldatu du}}. Blokeoaldia: $5 $6",
        "logentry-move-move": "$1 {{GENDER:$2|wikilariak}} «$3» orria «$4» izenera aldatu du",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|wikilariak}} «$3» orria «$4» izenera aldatu du, birzuzenketarik utzi gabe",
        "logentry-newusers-newusers": "$1 erabiltzaile kontua sortu da",
        "logentry-newusers-create": "$1 erabiltzaile kontua sortu da",
        "logentry-newusers-create2": "$1 wikilariak $3 erabiltzaile kontua sortu du",
+       "logentry-upload-upload": "$1(e)k $3 {{GENDER:$2|igo du}}",
        "rightsnone": "(bat ere ez)",
        "revdelete-summary": "aldaketaren laburpena",
        "feedback-adding": "Orriari feedbacka gehitzen...",
index 4ad8846..d011fe2 100644 (file)
        "import-interwiki-history": "تمام نسخه‌های تاریخچهٔ این صفحه انتقال داده شود",
        "import-interwiki-templates": "تمام الگوها را شامل شود",
        "import-interwiki-submit": "درون‌ریزی شود",
-       "import-interwiki-namespace": "فضای نام مقصد:",
-       "import-interwiki-rootpage": "ریشهٔ صفحهٔ مقصد (اختیاری):",
        "import-upload-filename": "نام پرونده:",
        "import-comment": "توضیح:",
        "importtext": "لطفاً پرونده را از ویکی منبع با کمک [[Special:Export|ابزار برون‌بری]] دریافت کنید.\nسپس آن را روی دستگاه‌تان ذخیره کنید و اینجا بارگذاری نمایید.",
        "patrol-log-page": "سیاههٔ گشت",
        "patrol-log-header": "این سیاهه‌ای از ویرایش‌های گشت‌خورده است.",
        "log-show-hide-patrol": "$1 سیاههٔ گشت‌زنی",
+       "log-show-hide-tag": "$1 سیاهه برچسب",
        "deletedrevision": "$1 نسخهٔ حذف شدهٔ قدیمی",
        "filedeleteerror-short": "خطا در حذف پرونده: $1",
        "filedeleteerror-long": "در زمان حذف پرونده خطا رخ داد:\n\n$1",
        "tags-deactivate-reason": "دلیل:",
        "tags-deactivate-not-allowed": "غیرفعال‌سازی تگ «$1» ممکن نیست.",
        "tags-deactivate-submit": "غیرفعال‌سازی",
+       "tags-edit-title": "ویرایش برچسب‌ها",
+       "tags-edit-manage-link": "مدیریت برچسب‌ها",
+       "tags-edit-existing-tags": "برچسب‌های موجود:",
+       "tags-edit-existing-tags-none": "\"هیچکدام\"",
+       "tags-edit-new-tags": "برچسب جدید:",
+       "tags-edit-add": "افزودن این برچسب‌ها:",
+       "tags-edit-remove": "حذف این برچسب‌ها:",
+       "tags-edit-remove-all-tags": "(حذف همهٔ برچسب‌ها)",
+       "tags-edit-chosen-placeholder": "انتخاب تعدادی برچسب",
+       "tags-edit-chosen-no-results": "برچسبی برای انتخاب یافت نشد",
+       "tags-edit-reason": "دلیل:",
        "comparepages": "مقایسهٔ صفحات",
        "compare-page1": "صفحهٔ ۱",
        "compare-page2": "صفحهٔ ۲",
        "logentry-managetags-delete": "$1 برچسب را از \"$4\" {{GENDER:$2|حذف کرد}} (حذف شده از $5 {{PLURAL:$5|نسخه یا ورودی سیاهه|نسخه یا/و ورودی سیاهه}})",
        "logentry-managetags-activate": "$1 {{GENDER:$2|برچسب}} فعال شده \"$4\" برای کاربران و ربات‌ها",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|برچسب}} غیرفعال شده \"$4\" برای کاربران و ربات‌ها",
+       "log-name-tag": "سیاهه برچسب",
        "rightsnone": "(هیچ)",
        "revdelete-summary": "خلاصه ویرایش",
        "feedback-adding": "افزودن بازخورد به صفحه...",
index cc3107f..c6c3fc2 100644 (file)
        "import-interwiki-history": "Kopioi sivun koko historia ja kaikki versiot",
        "import-interwiki-templates": "Ota mukaan kaikki mallineet",
        "import-interwiki-submit": "Tuo",
-       "import-interwiki-namespace": "Kohdenimiavaruus:",
-       "import-interwiki-rootpage": "Kohteessa oleva perussivu (valinnainen):",
+       "import-mapping-default": "Tuonti vakiokohteisiin",
+       "import-mapping-namespace": "Tuonti nimiavaruuteen:",
+       "import-mapping-subpage": "Tuonti seuraavan sivun alasivuiksi:",
        "import-upload-filename": "Tiedostonimi:",
        "import-comment": "Kommentti:",
        "importtext": "Vie sivuja lähdewikistä käyttäen [[Special:Export|vientityökalua]].\nTallenna tiedot koneellesi ja tuo ne tällä sivulla.",
index 953d696..ab28352 100644 (file)
        "history-feed-description": "Historique pour cette page sur le wiki",
        "history-feed-item-nocomment": "$1 le $2",
        "history-feed-empty": "La page demandée n'existe pas.\nElle a peut-être été effacée ou renommée.\nEssayez de [[Special:Search|rechercher sur le wiki]] pour trouver des pages en rapport.",
+       "history-edit-tags": "Modifier les balises des révisions sélectionnées",
        "rev-deleted-comment": "(résumé de modification retiré)",
        "rev-deleted-user": "(nom d'utilisateur retiré)",
        "rev-deleted-event": "(détails de l’entrée retirée)",
        "import-interwiki-history": "Copier toutes les versions de l’historique de cette page",
        "import-interwiki-templates": "Inclure tous les modèles",
        "import-interwiki-submit": "Importer",
-       "import-interwiki-namespace": "Espace de noms de destination :",
-       "import-interwiki-rootpage": "Page racine de destination (optionnelle) :",
+       "import-mapping-default": "Importer aux emplacements par défaut",
+       "import-mapping-namespace": "Importer vers un espace de noms :",
+       "import-mapping-subpage": "Importer comme sous-pages de la page suivante :",
        "import-upload-filename": "Nom du fichier :",
        "import-comment": "Commentaire :",
        "importtext": "Veuillez exporter le fichier depuis le wiki d'origine en utilisant son [[Special:Export|outil d'exportation]].\nSauvegardez-le sur votre disque dur puis importez-le ici.",
        "tags-apply-no-permission": "Vous n’avez pas le droit d’appliquer des balises de changement avec vos modifications.",
        "tags-apply-not-allowed-one": "La balise « $1 » n’est pas autorisée à être appliquée manuellement.",
        "tags-apply-not-allowed-multi": "{{PLURAL:$2|La balise suivante n’est pas autorisée à être appliquée|Les balises suivantes ne sont pas autorisées à être appliquées}} manuellement : $1",
+       "tags-update-no-permission": "Vous n’avez pas le droit d’ajouter ou de supprimer des balises de modification des révisions individuelles ou des entrées de journal.",
        "tags-edit-existing-tags-none": "\"Aucun\"",
        "tags-edit-reason": "Motif :",
        "tags-edit-success": "Les modifications ont été appliquées avec succès.",
index 8f68f90..366ace0 100644 (file)
        "import-interwiki-history": "Aal a werjuunen faan det sidj importiare",
        "import-interwiki-templates": "Mä aal a föörlaagen",
        "import-interwiki-submit": "Import",
-       "import-interwiki-namespace": "Tu hün nöömrüm:",
-       "import-interwiki-rootpage": "Tu hün sidj (optional):",
        "import-upload-filename": "Dateinööm:",
        "import-comment": "Komentaar:",
        "importtext": "Wees so gud an eksportiare det datei mä det spezial-sidj [[Special:Export|Eksport]] ütj det ööder Wiki. Det seekerst dü üüb dan reegner an schüürst det do heer huuch.",
index c13e35d..e82593c 100644 (file)
        "import-interwiki-history": "Dèan lethbhreac de dh'eachdraidh nam mùthaidhean slàna airson na duilleige seo",
        "import-interwiki-templates": "Gabh a-steach na teamplaidean uile",
        "import-interwiki-submit": "Ion-phortaich",
-       "import-interwiki-namespace": "Ainm-spàs-uidhe:",
-       "import-interwiki-rootpage": "Duilleag freumha a' chinn-uidhe (roghainneil):",
        "import-upload-filename": "Ainm an fhaidhle:",
        "import-comment": "Beachd:",
        "importtext": "Às-phortaich am faidhle on uicidh tùsail le [[Special:Export|goireas an às-phortachaidh]].\nSàbhail e air a' choimpiutair agad is luchdaich suas e an-seo.",
        "tooltip-pt-mycontris": "Liosta na h-obrach a rinn thu",
        "tooltip-pt-login": "Mholamaidh dhut logadh a-steach; ge-tà, cha leig thu leas seo a dhèanamh",
        "tooltip-pt-logout": "Log a-mach",
+       "tooltip-pt-createaccount": "Ged nach eil e riatanach, tha e nas fhearr ma chruthaicheas tu cunntas agus ma logas tu air.",
        "tooltip-ca-talk": "Deasbad mu dhuilleag na susbainte",
        "tooltip-ca-edit": "'S urrainn dhut an duilleag seo a dheasachadh. Saoil an cleachd thu an ro-shealladh mus sàbhail thu?",
        "tooltip-ca-addsection": "Tòisich air earrann ùr",
index 83b38df..b9e018d 100644 (file)
        "revertmerge": "Desfacer a fusión",
        "mergelogpagetext": "A continuación hai unha lista coas fusións máis recentes do historial dunha páxina co doutra.",
        "history-title": "Historial de revisións de \"$1\"",
-       "difference-title": "Diferenzas entre revisións de «$1»",
-       "difference-title-multipage": "Diferenzas entre as páxinas «$1» e «$2»",
+       "difference-title": "Diferenzas entre revisións de \"$1\"",
+       "difference-title-multipage": "Diferenzas entre as páxinas \"$1\" e \"$2\"",
        "difference-multipage": "(Diferenzas entre páxinas)",
        "lineno": "Liña $1:",
        "compareselectedversions": "Comparar as versións seleccionadas",
        "import-interwiki-history": "Copiar todas as versións que hai no historial desta páxina",
        "import-interwiki-templates": "Incluír todos os modelos",
        "import-interwiki-submit": "Importar",
-       "import-interwiki-namespace": "Espazo de nomes de destino:",
-       "import-interwiki-rootpage": "Páxina raíz de destino (opcional):",
+       "import-mapping-default": "Importar aos lugares predeterminados",
+       "import-mapping-namespace": "Importar a un espazo de nomes:",
+       "import-mapping-subpage": "Importar como subpáxinas da seguinte páxina:",
        "import-upload-filename": "Nome do ficheiro:",
        "import-comment": "Comentario:",
        "importtext": "Por favor, exporte o ficheiro do wiki de orixe usando a [[Special:Export|ferramenta de exportación]].\nGárdeo no seu disco duro e cárgueo aquí.",
        "tags-source-manual": "Aplicado manualmente por usuarios e bots",
        "tags-source-none": "Xa non está en uso",
        "tags-edit": "editar",
-       "tags-delete": "Borrar",
+       "tags-delete": "borrar",
        "tags-activate": "activar",
-       "tags-deactivate": "Reactivar",
+       "tags-deactivate": "desactivar",
        "tags-hitcount": "$1 {{PLURAL:$1|modificación|modificacións}}",
        "tags-manage-no-permission": "Non ten os permisos necesarios para modificar etiquetas.",
        "tags-create-heading": "Crear unha nova etiqueta",
        "tags-create-explanation": "Por defecto, as etiquetas creadas recentemente poderán ser empregadas polos usuarios e os bots.",
-       "tags-create-tag-name": "Nome da páxina:",
+       "tags-create-tag-name": "Nome da etiqueta:",
        "tags-create-reason": "Motivo:",
        "tags-create-submit": "Crear",
        "tags-create-no-name": "Debe especificar unha páxina.",
        "tags-create-already-exists": "A páxina \"$1\" xa existe.",
        "tags-create-warnings-above": "{{PLURAL:$2|Atopouse o seguinte erro|Atopáronse os seguintes erros}} ao intentar crear a etiqueta \"$1\":",
        "tags-create-warnings-below": "Desexa continuar creando a etiqueta?",
-       "tags-delete-title": "Borrar etiqueta",
+       "tags-delete-title": "Borrar unha etiqueta",
        "tags-delete-explanation-initial": "Está a piques de borrar a etiqueta \"$1\" da base de datos.",
        "tags-delete-explanation-in-use": "Ha eliminarse {{PLURAL:$2|dunha revisión ou entrada|das $2 revisións e/ou entradas}} de rexistro {{PLURAL:$2|á|ás}} que actualmente se aplica.",
        "tags-delete-explanation-warning": "Esta acción é <strong>irreversible</strong> e nin sequera os administradores da base de datos poderán desfacela. Asegúrese de que é esta a etiqueta que desexa borrar.",
        "tags-delete-not-found": "A páxina \"$1\" non existe.",
        "tags-delete-too-many-uses": "A etiqueta \"$1\" aplícase a máis de $2 {{PLURAL:$2|revisión|revisións}}; isto significa que non se pode borrar.",
        "tags-delete-warnings-after-delete": "A etiqueta \"$1\" borrouse correctamente; con todo, {{PLURAL:$2|atopouse o seguinte erro|atopáronse os seguintes erros}}:",
-       "tags-activate-title": "Activar etiqueta",
+       "tags-activate-title": "Activar unha etiqueta",
        "tags-activate-question": "Está a piques de activar a etiqueta\"$1\".",
        "tags-activate-reason": "Motivo:",
        "tags-activate-not-allowed": "Non é posible activar a páxina \"$1\".",
        "tags-activate-not-found": "A páxina \"$1\" non existe.",
        "tags-activate-submit": "Activar",
-       "tags-deactivate-title": "Desactivar etiqueta",
+       "tags-deactivate-title": "Desactivar unha etiqueta",
        "tags-deactivate-question": "Está a piques de desactivar a etiqueta \"$1\".",
        "tags-deactivate-reason": "Motivo:",
        "tags-deactivate-not-allowed": "Non é posible reactivar a páxina \"$1\".",
-       "tags-deactivate-submit": "Reactivar",
+       "tags-deactivate-submit": "Desactivar",
        "tags-apply-no-permission": "Non ten permisos para aplicar etiquetas de cambios xunto cos seus tus cambios.",
        "tags-apply-not-allowed-one": "A etiqueta \"$1\" non se puede aplicar manualmente.",
        "tags-apply-not-allowed-multi": "{{PLURAL:$2|A seguinte etiqueta non se pode|As seguintes etiquetas non se poden}} aplicar manualmente: $1",
index 535cec2..981caf4 100644 (file)
@@ -23,7 +23,8 @@
                        "לערי ריינהארט",
                        "아라",
                        "Vyom",
-                       "Macofe"
+                       "Macofe",
+                       "Arbhatt"
                ]
        },
        "tog-underline": "કડીઓની નીચે લીટી (અંડરલાઇન):",
        "personaltools": "વ્યક્તિગત સાધનો",
        "articlepage": "લેખનું પાનું જુઓ",
        "talk": "ચર્ચા",
-       "views": "દેખાવ",
+       "views": "દેખાવ",
        "toolbox": "સાધનો",
        "userpage": "સભ્યનું પાનું જુઓ",
        "projectpage": "પ્રકલ્પનું પાનું જુઓ",
        "pool-errorunknown": "અજ્ઞાત ત્રુટિ",
        "poolcounter-usage-error": "વપરાશ ક્ષતિ: $1",
        "aboutsite": "{{SITENAME}} વિષે",
-       "aboutpage": "Project:વિષે",
+       "aboutpage": "પ્રોજેક્ટ:વિષે",
        "copyright": "અલગથી ઉલ્લેખ ન કરાયો હોય ત્યાં સુધી માહિતી $1 હેઠળ ઉપલબ્ધ છે.",
        "copyrightpage": "{{ns:project}}:પ્રકાશનાધિકાર",
        "currentevents": "વર્તમાન ઘટનાઓ",
        "currentevents-url": "Project:વર્તમાન ઘટનાઓ",
-       "disclaimers": "àª\9cાહà«\87ર ઇનકાર",
-       "disclaimerpage": "Project:સામાન્ય જાહેર ઇનકાર",
+       "disclaimers": "દાવà«\87દારà«\80 ઇનકાર",
+       "disclaimerpage": "પ્રોજેક્ટ:સામાન્ય દાવેદારી ઇનકાર",
        "edithelp": "ફેરફારો માટે મદદ",
        "mainpage": "મુખપૃષ્ઠ",
        "mainpage-description": "મુખપૃષ્ઠ",
        "policy-url": "Project:નીતિ",
        "portal": "સમાજ મુખપૃષ્ઠ",
-       "portal-url": "Project:સમાજ મુખપૃષ્ઠ",
+       "portal-url": "પ્રોજેક્ટ:સમાજ મુખપૃષ્ઠ",
        "privacy": "ગોપનિયતા નીતિ",
        "privacypage": "Project:ગોપનિયતા નીતિ",
        "badaccess": "પરવાનગીની ખામી",
        "viewsourceold": "સ્રોત જુઓ",
        "editlink": "ફેરફાર",
        "viewsourcelink": "સ્રોત જુઓ",
-       "editsectionhint": "પરિચ્છેદ ફેરફાર કરો: $1",
+       "editsectionhint": "પરિચ્છેદમાં ફેરફાર કરો: $1",
        "toc": "અનુક્રમણિકા",
        "showtoc": "બતાવો",
        "hidetoc": "છુપાવો",
        "gotaccount": "પહેલેથી ખાતું ખોલેલું છે? '''$1'''.",
        "gotaccountlink": "પ્રવેશ કરો",
        "userlogin-resetlink": "પોતાની પ્રવેશ માહિતી ભૂલી ગયા છો?",
-       "userlogin-resetpassword-link": "તમારà«\8b àªªàª¾àª¸àªµàª°à«\8dડ ભૂલી ગયા છો?",
+       "userlogin-resetpassword-link": "તમારà«\8b àª\97à«\81પà«\8dત àª¸àª\82àª\9cà«\8dàª\9eા (પાસવરà«\8dડ) ભૂલી ગયા છો?",
        "userlogin-helplink2": "પ્રવેશ કરવા માટે મદદ",
        "userlogin-loggedin": "તમે પહેલેથી {{GENDER:$1|$1}} તરીકે પ્રવેશ કરેલો જ છે.\nબીજા સભ્ય તરીકે પ્રવેશ કરવા માટે નીચેનું ફોર્મ વાપરો.",
        "userlogin-createanother": "બીજું ખાતું બનાવો",
        "createacct-imgcaptcha-ph": "તમે જે લખાણ જુઓ છો તે દાખલ કરો",
        "createacct-submit": "તમારું ખાતું બનાવો",
        "createacct-another-submit": "બીજું ખાતું બનાવો",
-       "createacct-benefit-heading": "{{SITENAME}} એ તમારા જેવા લોકો વડે બનાવેલ છે.",
+       "createacct-benefit-heading": "{{SITENAME}} એ તમારા જેવા લોકો બનાવેલ છે.",
        "createacct-benefit-body1": "{{PLURAL:$1|ફેરફાર|ફેરફારો}}",
        "createacct-benefit-body2": "{{PLURAL:$1|પાનું|પાનાં}}",
        "createacct-benefit-body3": "તાજેતરના {{PLURAL:$1|યોગદાનકર્તા|યોગદાનકર્તાઓ}}",
        "watchthis": "આ પાનાને ધ્યાનમાં રાખો",
        "savearticle": "પાનું સાચવો",
        "preview": "પૂર્વાવલોકન",
-       "showpreview": "àª\9dલàª\95 àª¦àª°à«\8dશાવો",
+       "showpreview": "àª\9dલàª\95 àª\9cà«\81વો",
        "showdiff": "ફેરફારો દર્શાવો",
        "anoneditwarning": "<strong>ચેતવણી:</strong> તમે તમારા સભ્ય નામથી પ્રવેશ કર્યો નથી.\nઆ પાનાનાં ઇતિહાસમાં તમારૂં આઇ.પી. (IP) એડ્રેસ નોંધવામાં આવશે અને તમારૂં આઈ.પી. લોકો જાહેર રીતે જોઈ શકશે. માટે <strong>[$1 પ્રવેશ કરો]</strong> અથવા તમે <strong>[$2 ખાતું બનાવો]</strong> તો ફેરફારો તમારા સભ્યનામ હેઠળ થશે અને અન્ય ફાયદાઓ પણ મળશે.",
        "anonpreviewwarning": "તમે સભ્યનામથી પ્રવેશ કર્યો નથી,આ પાનું ઈતિહાસમાંતમારા IP સરનામાના નામે  સાચવવામાં આવશે",
        "showhideselectedversions": "પસંદ કરેલા બતાવો / સંતાડો",
        "editundo": "રદ કરો",
        "diff-empty": "(કોઇ ભેદ નહી)",
+       "diff-multi-sameuser": "(સમાન સભ્ય દ્વારા {{PLURAL:$1|કરાયેલ એક પુનરાવર્તન| કરાયેલા $1 પુનરાવર્તનો}} દર્શાવેલ નથી)",
        "diff-multi-manyusers": "{{PLURAL:$2|એક સભ્યએ કરેલું|$2 સભ્યોએ કરેલા}} ({{PLURAL:$1|વચગાળાનું એક પુનરાવર્તન દર્શાવ્યં|વચગાળાનાં $1 પુનરાવર્તનો દર્શાવ્યાં}} નથી.)",
        "searchresults": "પરિણામોમાં શોધો",
        "searchresults-title": "પરિણામોમાં \"$1\" શોધો",
        "sp-contributions-toponly": "માત્ર છેલ્લી આવૃત્તિના ફેરફારો જ દર્શાવો",
        "sp-contributions-submit": "શોધો",
        "whatlinkshere": "અહી શું જોડાય છે",
-       "whatlinkshere-title": "\"$1\" àª¸àª¾àª¥à«\87 àª\9cà«\8bડાયà«\87લાàª\82 પાનાં",
+       "whatlinkshere-title": "\"$1\" àª¨à«\87 àª\9cà«\8bડતા પાનાં",
        "whatlinkshere-page": "પાનું:",
        "linkshere": "નીચેના પાનાઓ '''[[:$1]]''' સાથે જોડાય છે:",
        "nolinkshere": "'''[[:$1]]'''ની સાથે કોઇ પાના જોડાતા નથી.",
        "import-interwiki-history": "આ પાનું બધા ફેરફારોના ઇતિહાસ સાથે આયાત કરો",
        "import-interwiki-templates": "બધા ઢાંચા શામિલ કરો",
        "import-interwiki-submit": "આયાત કરો",
-       "import-interwiki-namespace": "લક્ષ્ય નામ સ્થળ",
        "import-upload-filename": "ફાઇલ નામ",
        "import-comment": "ટિપ્પણી:",
        "importtext": "કૃપયા [[Special:Export|export utility]] વાપરી વિકિ સ્રોત પરથી ફાઇલ નિકાસ કરો.\nતેને તમારા કૉમ્પ્યુટર પર સાચવો અને અહીં ચડાવો.",
        "tooltip-pt-watchlist": "તમે દેખરેખ રાખી રહ્યાં હોવ તેવા પાનાઓની યાદી",
        "tooltip-pt-mycontris": "તમારા યોગદાનની યાદી",
        "tooltip-pt-login": "આપને પ્રવેશ કરવા ભલામણ કરવામાં આવે છે, જોકે તે આવશ્યક નથી",
-       "tooltip-pt-logout": "બહાર નીકળો/લૉગ આઉટ કરો",
+       "tooltip-pt-logout": "બહાર નીકળો",
        "tooltip-pt-createaccount": "તમને ખાતું બનાવીને પ્રવેશ કરવા માટે આમંત્રણ છે; તેમ કરવું જોકે, જરૂરી નથી.",
        "tooltip-ca-talk": "અનુક્રમણિકાનાં પાના વિષે ચર્ચા",
        "tooltip-ca-edit": "આપ આ પાનામાં ફેરફાર કરી શકો છો, કાર્ય સુરક્ષિત કરતાં પહેલાં 'ઝલક' બટન ઉપર ક્લિક કરીને જોઇ લેશો",
        "tooltip-t-recentchangeslinked": "આ પાના પરની કડીઓ વાળા લેખોમાં તાજેતરમાં થયેલા ફેરફારો",
        "tooltip-feed-rss": "આ પાના માટે આર.એસ.એસ. ફીડ",
        "tooltip-feed-atom": "આ પાના માટે એટોમ ફીડ",
-       "tooltip-t-contributions": "આ સભ્યનાં યોગદાનોની યાદી જુઓ",
+       "tooltip-t-contributions": "આ સભ્યનાં યોગદાનોની યાદી",
        "tooltip-t-emailuser": "આ સભ્યને ઇ-મેલ મોકલો",
        "tooltip-t-upload": "ફાઇલ ચડાવો",
        "tooltip-t-specialpages": "બધા ખાસ પાનાંઓની યાદી",
        "tooltip-ca-nstab-user": "સભ્યનું પાનું જુઓ",
        "tooltip-ca-nstab-media": "મિડિયાનું પાનું જુઓ",
        "tooltip-ca-nstab-special": "આ ખાસ પાનું છે, તમે તેમાં ફેરફાર ના કરી શકો",
-       "tooltip-ca-nstab-project": "પરિયોજનાનું પાનું",
+       "tooltip-ca-nstab-project": "પરિયોજનાનું પાનું જુવો",
        "tooltip-ca-nstab-image": "ફાઇલ વિષેનું પાનું જુઓ",
        "tooltip-ca-nstab-mediawiki": "તંત્ર સંદેશ જુઓ",
        "tooltip-ca-nstab-template": "ઢાંચો જુઓ",
        "filedelete-current-unregistered": "જણાવેલ ફાઇલ  \"$1\" માહિતીસંચમાં નથી",
        "filedelete-archive-read-only": "ઐતિહાસિક ડાયરેક્ટરી ($1) એ વેબ બ્રાઉઝર દ્વારા લેખન યોગ્ય નથી.",
        "previousdiff": "← પહેલાનો ફેરફાર",
-       "nextdiff": "પàª\9bà«\80નà«\8b ફેરફાર →",
+       "nextdiff": "નવા ફેરફાર →",
        "mediawarning": "'''ચેતવણી''': આ ફાઇલમાં દુષ્ટ સોચનાઓ હોઇ શકે.\nતેને ચલવતા, તમારા સંગણકને ભય છે.",
        "imagemaxsize": "ચિત્રના કદની મર્યાદા:<br />''(for file description pages)''",
        "thumbsize": "લઘુચિત્ર કદ",
        "file-info": "ફાઇલ કદ : $1, MIME પ્રકાર: $2",
        "file-info-size": "$1 × $2 પીક્સલ, ફાઇલનું કદ: $3, MIME પ્રકાર: $4",
        "file-info-size-pages": "$1 × $2 પીક્સલ, ફાઈલ કદ: $3, MIME પ્રકાર: $4, $5 {{PLURAL:$5|પાનું|પાના}}",
-       "file-nohires": "àª\86થà«\80 àªµàª§à«\81 àª\86વરà«\8dતન ઉપલબ્ધ નથી.",
+       "file-nohires": "àª\86થà«\80 àªµàª§à«\81 àª\98નતà«\8dવ ઉપલબ્ધ નથી.",
        "svg-long-desc": "SVG ફાઇલ, માત્ર $1 × $2 પીક્સલ, ફાઇલનું કદ: $3",
        "svg-long-error": "અયોગ્ય SVG ફાઇલ: $1",
        "show-big-image": "મૂળભુત ફાઇલ",
        "metadata-help": "આ માધ્યમ સાથે વધુ માહિતિ સંકળાયેલી છે, જે સંભવતઃ માધ્યમ (ફાઇલ) બનાવવા માટે ઉપયોગમાં લેવાયેલા ડિજીટલ કેમેરા કે સ્કેનર દ્વારા ઉમેરવામાં આવી હશે.\n<br />જો માધ્યમને તેના મુળ રૂપમાંથી ફેરફાર કરવામાં આવશે તો શક્ય છે કે અમુક માહિતિ પુરેપુરી હાલમાં છે તેવી રીતે ના જળવાઇ રહે.",
        "metadata-expand": "વિસ્તૃત કરેલી વિગતો બતાવો",
        "metadata-collapse": "વિસ્તૃત કરેલી વિગતો છુપાવો",
-       "metadata-fields": "જ્યારે મૅટાડેટાનો કોઠો વિલિન થઇ જતો હશે ત્યારે આ સંદેશામાં સુચવેલી મૅટાડેટા માહિતી ચિત્રના પાનાની દૃશ્ય આવૃત્તિમાં ઉમેરવામાં આવશે.\nઅન્ય આપોઆપ જ છુપાઇ જશે.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "જ્યારે મૅટાડેટાનો કોઠો વિલિન થઇ જતો હશે ત્યારે આ સંદેશામાં સુચવેલી મૅટાડેટા માહિતી ચિત્રના પાનાની દૃશ્ય આવૃત્તિમાં ઉમેરવામાં આવશે.\nઅન્ય આપોઆપ જ છુપાઇ જશે.\n* બનાવટ\n* મોડલ\n* મુળતારીખ\n* એક્ષપોઝરસમય\n* એફનંબર\n* એઇએસઓસ્પીડસેટિંગ્સ\n* ફોકલલેંથ\n* કલાકાર\n* કોપીરાઇટ\n* ચિત્રનું વર્ણન\n* જીપીએસરેખાંશ\n* જીપીએસઅક્ષાંશ\n* જીપીએસઉંચાઈ",
        "exif-imagewidth": "પહોળાઈ",
        "exif-imagelength": "ઊંચાઈ",
        "exif-bitspersample": "બીટ્સ પ્રતિ ભાગ",
        "logentry-newusers-create": "સભ્ય ખાતું $1 {{GENDER:$2|બનાવવામાં આવ્યું}}",
        "logentry-newusers-create2": "સભ્ય ખાતું $3 $1 વડે {{GENDER:$2|બનાવવામાં આવ્યું હતું}}",
        "logentry-newusers-autocreate": "વપરાશકર્તા ખાતું $1 આપમેળે {{GENDER:$2|બનાવવામાં આવ્યું હતું}}",
+       "logentry-upload-upload": "$1 {{GENDER:$2|દ્વારા ચડાવેલ}} $3",
        "rightsnone": "(કંઈ નહી)",
        "revdelete-summary": "સંપાદનનો સંક્ષિપ્ત અહેવાલ",
        "feedback-adding": "પ્રતિભાવ આ પાના પર ઉમેરાઈ રહ્યો છે.",
index d468d32..e7d2d68 100644 (file)
        "import-interwiki-history": "העתקת כל היסטוריית העריכות של דף זה",
        "import-interwiki-templates": "ייבוא גם של כל התבניות המוכללות בדף",
        "import-interwiki-submit": "ייבוא",
-       "import-interwiki-namespace": "העתקה למרחב השם:",
-       "import-interwiki-rootpage": "דף הבסיס של היעד (לא חובה):",
+       "import-mapping-default": "ייבוא למקומות ברירת המחדל",
+       "import-mapping-namespace": "ייבוא למרחב השם:",
+       "import-mapping-subpage": "ייבוא כדפי משנה של הדף הבא:",
        "import-upload-filename": "שם הקובץ:",
        "import-comment": "הערה:",
        "importtext": "נא לייצא את הקובץ מאתר המקור באמצעות ב[[Special:Export|כלי הייצוא]].\nשמרו אותו למחשב שלכם והעלו אותו לכאן.",
index 7e86a58..48f709b 100644 (file)
        "import-interwiki-history": "इस पृष्ठ के सभी इतिहास अवतरण कॉपी करें",
        "import-interwiki-templates": "सभी साँचे शामिल करें",
        "import-interwiki-submit": "आयात",
-       "import-interwiki-namespace": "गंतव्य नामस्थान:",
-       "import-interwiki-rootpage": "गंतव्य पृष्ठ उपसर्ग (वैकल्पिक):",
        "import-upload-filename": "संचिका नाम:",
        "import-comment": "टिप्पणी:",
        "importtext": "कृपया स्रोत विकि से संचिका निर्यातित करने के लिए [[Special:Export|निर्यात सुविधा]] का इस्तेमाल करें।\nइसे अपने संगणक पर सँजो के यहाँ चढ़ा दें।",
index 78103cf..012a86f 100644 (file)
        "import-interwiki-history": "Wšě wersije ze stawiznow tuteje strony kopěrować",
        "import-interwiki-templates": "Wšě předłohi zapřijeć",
        "import-interwiki-submit": "Importować",
-       "import-interwiki-namespace": "Cilowy mjenowy rum:",
-       "import-interwiki-rootpage": "Cilowa korjenjowa strona (opcionalna):",
        "import-upload-filename": "Datajowe mjeno:",
        "import-comment": "Přičina:",
        "importtext": "Prošu eksportuj dataju ze žórłoweho wikija z pomocu funkcije [[Special:Export|Strony eksportować]]. Składuj ju na swojim ličaku a nahraj ju tu.",
index 59a7930..a2f6cc7 100644 (file)
        "import-interwiki-history": "A lap összes előzményváltozatainak másolása",
        "import-interwiki-templates": "Az összes sablon hozzáadása",
        "import-interwiki-submit": "Importálás",
-       "import-interwiki-namespace": "Célnévtér:",
-       "import-interwiki-rootpage": "Cél gyökér lap (opcionális):",
        "import-upload-filename": "Fájlnév:",
        "import-comment": "Megjegyzés:",
        "importtext": "Exportáld a fájlt a forráswikiből az [[Special:Export|exportáló eszköz]] segítségével.\nMentsd el a számítógépedre, majd töltsd fel ide.",
index 30d972b..7f532c9 100644 (file)
        "import-interwiki-text": "Նշեք վիքի և ներմուծվող էջի անվանումը։\nՓոփոխումների ժամանակները և խմբագրողների անունները կպահպանվեն։\nԲոլոր միջվիքի ներմուծման գործողությունները գրանցվում են [[Special:Log/import|ներմուծման տեղեկամատյանում]]։",
        "import-interwiki-history": "Պատճենել այս էջի փոփոխումների լրիվ պատմությունը",
        "import-interwiki-submit": "Ներմուծել",
-       "import-interwiki-namespace": "Տեղադրել էջերը անվանատարածքում.",
        "import-upload-filename": "Նիշքի անուն․",
        "import-comment": "Մեկնաբանություն.",
        "importtext": "Խնդրում ենք արտածեք էջը ելակետային վիքիից օգտագործելով [[Special:Export|արտածման գործիք]], հիշեք այն նիշքի տեսքով ձեր համակարգչի վրա և այնուհետև, բեռնեք այն այստեղ։",
index d8bb042..8754712 100644 (file)
        "import-interwiki-history": "Copiar tote le versiones del historia de iste pagina",
        "import-interwiki-templates": "Includer tote le patronos",
        "import-interwiki-submit": "Importar",
-       "import-interwiki-namespace": "Spatio de nomines de destination:",
-       "import-interwiki-rootpage": "Pagina radice de destination (optional):",
        "import-upload-filename": "Nomine del file:",
        "import-comment": "Commento:",
        "importtext": "Per favor exporta le file del wiki de origine con le [[Special:Export|facilitate de exportation]].\nSalveguarda lo in tu computator e incarga lo hic.",
index 044c4af..b95a058 100644 (file)
        "import-interwiki-history": "Kopiaen amin dagiti rebision ti pakasaritaan daytoy a panid",
        "import-interwiki-templates": "Iraman amin dagiti plantilia",
        "import-interwiki-submit": "Agala",
-       "import-interwiki-namespace": "Pangipanan a nagan ti espasio:",
-       "import-interwiki-rootpage": "Papanan a ramut ti panid (pagpilian):",
        "import-upload-filename": "Nagan ti papeles:",
        "import-comment": "Komentario:",
        "importtext": "Pangngaasi nga ipanmo ti papeles manipud ti nagtaudan a wiki nga agusar ti [[Special:Export|ramit ti panagipan]].\nIdulinmo iti bukodmo a kompiuter ken ikarga ditoy.",
index cdaaeb1..a6b8a8f 100644 (file)
        "import-interwiki-history": "Afrita allar breytingar þessarar síðu",
        "import-interwiki-templates": "Innifala öll snið með",
        "import-interwiki-submit": "Flytja inn",
-       "import-interwiki-namespace": "Ákvörðunarnafnrými:",
-       "import-interwiki-rootpage": "Markmóðursíða (valfrjáls):",
        "import-upload-filename": "Skráarnafn:",
        "import-comment": "Athugasemdir:",
        "importtext": "Vinsamlegast fluttu út skránna frá upprunalegum wiki með því að nota [[Special:Export|Flytja út síður]].\nVistaðu skránna á tölvunni þinni og hladdu henni inn hér.",
        "revdelete-uname-unhid": "notandanafn birt",
        "revdelete-restricted": "hömlur settar á stjórnendur",
        "revdelete-unrestricted": "fjarlægja hömlur á stjórnendur",
+       "logentry-block-block": "$1 {{GENDER:$2|bannaði}} {{GENDER:$4|$3}}, rennur út eftir $5 $6",
        "logentry-suppress-block": "$1 {{GENDER:$2|bannaði}} {{GENDER:$4|$3}}, rennur út eftir $5 $6",
        "logentry-move-move": "$1 {{GENDER:$2|færði}} $3 á $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|færði}} $3 á $4 án þess að skilja eftir tilvísun",
index 096a490..a5e6ae5 100644 (file)
        "import-interwiki-history": "Copia l'intera cronologia di questa pagina",
        "import-interwiki-templates": "Includi tutti i template",
        "import-interwiki-submit": "Importa",
-       "import-interwiki-namespace": "Namespace di destinazione:",
-       "import-interwiki-rootpage": "Pagina principale di destinazione (opzionale):",
        "import-upload-filename": "Nome file:",
        "import-comment": "Oggetto:",
        "importtext": "Si prega di esportare il file dal sito wiki di origine con la [[Special:Export|funzione di esportazione]], salvarlo sul proprio disco e poi caricarlo qui.",
index 2be4063..a1ed80d 100644 (file)
        "history-feed-description": "このウィキのこのページに関する変更履歴",
        "history-feed-item-nocomment": "$2に$1による",
        "history-feed-empty": "要求されたページは存在しません。\nこのウィキから既に削除されたか、名前が変更された可能性があります。\n[[Special:Search|このウィキの検索]]で関連する新しいページを探してみてください。",
+       "history-edit-tags": "選択した版のタグを編集",
        "rev-deleted-comment": "(要約は除去されています)",
        "rev-deleted-user": "(利用者名は除去されています)",
        "rev-deleted-event": "(記録の詳細は除去されています)",
        "logempty": "該当する記録はありません。",
        "log-title-wildcard": "この文字列で始まるページ名を検索",
        "showhideselectedlogentries": "選択した記録項目を表示/非表示",
+       "log-edit-tags": "選択した記録項目のタグを編集",
        "allpages": "全ページ",
        "nextpage": "次のページ ($1)",
        "prevpage": "前のページ ($1)",
        "import-interwiki-history": "このページのすべての版を複製する",
        "import-interwiki-templates": "すべてのテンプレートを含める",
        "import-interwiki-submit": "取り込み",
-       "import-interwiki-namespace": "取り込み先の名前空間:",
-       "import-interwiki-rootpage": "取り込み先のルートページ (省略可能):",
        "import-upload-filename": "ファイル名:",
        "import-comment": "コメント:",
        "importtext": "元のウィキで[[Special:Export|書き出し機能]]を使用してファイルに書き出してください。\nそれをコンピューターに保存した後、こちらへアップロードしてください。",
        "tags-deactivate-reason": "理由:",
        "tags-deactivate-not-allowed": "タグ「$1」は無効化できません。",
        "tags-deactivate-submit": "無効化",
+       "tags-edit-title": "タグの編集",
        "tags-edit-reason": "理由:",
        "comparepages": "ページの比較",
        "compare-page1": "ページ 1",
index e509ee2..edd544b 100644 (file)
@@ -22,7 +22,8 @@
                        "לערי ריינהארט",
                        "გიორგიმელა",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "SHOTHA"
                ]
        },
        "tog-underline": "ბმულების ხაზგასმა:",
        "preview": "წინასწარი გადახედვა",
        "showpreview": "წინასწარი გადახედვა",
        "showdiff": "ცვლილებების ჩვენება",
-       "anoneditwarning": "'''გაფრთხილება:''' თქვენ არ ხართ რეგისტრირებული. თქვენი IP მისამართი ჩაიწერება ამ გვერდის რედაქტირების ისტორიაში.",
+       "anoneditwarning": "<strong>გაფრთხილება:</strong> თქვენ არ ხართ ავტორიზირებული. თქვენი IP მისამართი საჯაროდ ხილული იქნება, თუკი განახორციელებთ რედაქტირებას. თუ თქვენ გაივლით <strong>[$1 ავტორიზაციას]</strong> ან <strong>[$2 შექმნით ანგარიშს]</strong>, სხვა უპირატესობებთან ერთად, თქვენი რედაქტირებები დაუკავშირდება თქვენს მომხმარებლის სახელს.",
        "anonpreviewwarning": "''თქვენ არ შესულხართ სისტემაში. თქვენი IP მისამართი შეინახება გვერდის ისტორიაში. ''",
        "missingsummary": "'''შეხსენება:''' თქვენ არ მიგითითებიათ რედაქტირების რეზიუმე.\nთუ ისევ დააწკაპუნებთ შენახვაზე, თქვენი რედაქტირება რეზიუმეს გარეშე დამახსოვრდება.",
        "missingcommenttext": "გთხოვთ კომენტარი შეიყვანოთ ქვემოთ.",
        "import-interwiki-history": "ამ გვერდის ცვლილებათა ისტორიის კოპირება.",
        "import-interwiki-templates": "ყველა თარგის ჩართვა",
        "import-interwiki-submit": "იმპორტირება",
-       "import-interwiki-namespace": "სამიზნე სახელთა სივრცე",
-       "import-interwiki-rootpage": "ძირეული გვერდი (არასავალდებულო):",
        "import-upload-filename": "ფაილის სახელი:",
        "import-comment": "კომენტარი:",
        "importtext": "გთხოვთ, მოახდინოთ გვერდის ექსპორტი თავდაპირველი ვიკიდან, [[Special:Export|შესაბამისი ხელსაწყოს]] გამოყენებით. ფაილი შეინახეთ დისკზე, ხოლო შემდეგ ატვირთეთ აქ.",
        "tooltip-pt-mycontris": "თქვენი წვლილის სია",
        "tooltip-pt-login": "სასურველია დარეგისტრირდეთ, თუმცა აუცილებელია არაა.",
        "tooltip-pt-logout": "გასვლა",
+       "tooltip-pt-createaccount": "ჩვენ გთავაზობთ, შექმნათ ანგარიში და შეხვიდეთ სისტემაში; თუმცა ეს არ არის აუცილებელი",
        "tooltip-ca-talk": "შიგთავსის გვერდის განხილვა",
        "tooltip-ca-edit": "თქვენ შეგიძლიათ ამ გვერდის რედაქტირება. გთხოვთ გამოიყენოთ  წინასწარი ხედვის ღილაკი სანამ გვერდს შეინახავთ.",
        "tooltip-ca-addsection": "ახალი სექციის შექმნა",
        "tags": "ცვლილებათა მოქმედი მონიშვნები",
        "tag-filter": "[[Special:Tags|მონიშვნათა]] ფილტრი",
        "tag-filter-submit": "გაფილტვრა",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|იარლიყი|იარლიყები}}]]: $2)",
        "tags-title": "მონიშვნები",
        "tags-intro": "ამ გვერდზე წარმოდგენილია მონიშვნათა სია, რომლითაც პროგრამული უზრუნველყოფა მონიშნავს შესწორებებს, ასევე ამ მონიშვნათა მნიშვნელობა.",
        "tags-tag": "ტეგის სახელი",
index 8ff679e..caf8107 100644 (file)
        "querypage-disabled": "Бұл арнайы бет өнімділік себептері үшін өшірілген",
        "booksources": "Кітап қайнарлары",
        "booksources-search-legend": "Кітап қайнарларын іздеу",
+       "booksources-search": "Іздеу",
        "booksources-text": "Төменде жаңа және қолданған кітаптар сататын тораптарының сілтемелері тізімделген және ізделген кітаптар туралы қосымша ақпарат болуы мүмкін:",
        "specialloguserlabel": "Орындаушы:",
        "speciallogtitlelabel": "Нысана (атауы немесе қатысушы):",
        "import-interwiki-history": "Бұл беттің барлық тарихи нұсқаларын көшіру",
        "import-interwiki-templates": "Кірістірілген барлық үлгілер",
        "import-interwiki-submit": "Сырттан алу",
-       "import-interwiki-namespace": "Беттерді мына есім кеңістігіне апару:",
        "import-upload-filename": "Файл атауы:",
        "import-comment": "Пікірі:",
        "importtext": "Қайнар уикиден [[Special:Export|export utility]]  қолданып файлды сыртқа беріңіз.\nКомьпютеріңізге сақтаңыз да мында жүктеп беріңіз.",
index cbd155a..1f5bc29 100644 (file)
        "broken-file-category": "ಕಡತ ಕೊಂಡಿಗಳು ಮುರಿದಿರುವ ಪುಟಗಳು",
        "about": "ನಮ್ಮ ಬಗ್ಗೆ",
        "article": "ಲೇಖನ ಪುಟ",
-       "newwindow": "(ಹà³\8aಸ à²\95ಿà²\9fà²\95ಿಯನà³\8dನà³\81 ತೆರೆಯುತ್ತದೆ)",
+       "newwindow": "(ಹà³\8aಸ à²\95ಿà²\9fà²\95ಿಯಲà³\8dಲಿ ತೆರೆಯುತ್ತದೆ)",
        "cancel": "ವಜಾ ಮಾಡಿ",
        "moredotdotdot": "ಇನ್ನಷ್ಟು...",
        "morenotlisted": "ಈ ಪಟ್ಟಿ ಪೂರ ಇಲ್ಲ.",
        "viewhelppage": "ಸಹಾಯ ಪುಟ ತೋರು",
        "categorypage": "ವರ್ಗ ಪುಟ ತೋರು",
        "viewtalkpage": "ಚರ್ಚೆಯನ್ನು ವೀಕ್ಷಿಸಿ",
-       "otherlanguages": "à²\87ತರ à²­à²¾à²·à³\86à²\97ಳà³\81",
+       "otherlanguages": "à²\87ತರ à²­à²¾à²·à³\86à²\97ಳಲà³\8dಲಿ",
        "redirectedfrom": "($1 ಇಂದ ಪುನರ್ನಿರ್ದೇಶಿತ)",
        "redirectpagesub": "ಪುನರ್ನಿರ್ದೇಶನ ಪುಟ",
        "redirectto": "ಪುನರ್ನಿರ್ದೇಶನ ಇದಕ್ಕೆ:",
        "newmessageslinkplural": "{{PLURAL:$1|ಒಂದು ಹೊಸ ಸಂದೇಶ|999=ಹೊಸ ಸಂದೇಶಗಳು}}",
        "newmessagesdifflinkplural": "ಇತ್ತೀಚಿನ {{PLURAL:$1|ಬದಲಾವಣೆ|999=ಬದಲಾವಣೆಗಳು}}",
        "youhavenewmessagesmulti": "$1 ಅಲ್ಲಿ ನಿಮಗೆ ಹೊಸ ಸಂದೇಶಗಳಿವೆ",
-       "editsection": "ಬದಲಾಯಿಸಿ",
+       "editsection": "ಸà²\82ಪಾದಿಸಿ",
        "editold": "ಬದಲಾಯಿಸಿ",
        "viewsourceold": "ಮೂಲವನ್ನು ನೋಡು",
        "editlink": "ಸಂಪಾದಿಸಿ",
        "viewsourcelink": "ಮೂಲವನ್ನು ವೀಕ್ಷಿಸಿ",
-       "editsectionhint": "$1 ವಿಭಾಗ ಸಂಪಾದಿಸಿ",
+       "editsectionhint": "ವಿಭಾಗ ಸಂಪಾದಿಸಿ: $1",
        "toc": "ಪರಿವಿಡಿ",
        "showtoc": "ತೋರಿಸು",
        "hidetoc": "ಅಡಗಿಸು",
        "thumbnail_error": "ಮುನ್ನೋಟ ಚಿತ್ರವನ್ನು ಸೃಷ್ಟಿಸುವಲ್ಲಿ ದೋಷ: $1",
        "import": "ಪುಟಗಳನ್ನು ಅಮದು ಮಾಡಿ",
        "import-interwiki-submit": "ಆಮದು",
-       "import-interwiki-namespace": "ಪುಟಗಳನ್ನು ಈ ಪುಟಪ್ರಬೇಧಕ್ಕೆ ವರ್ಗಾಯಿಸು:",
        "import-comment": "ಟಿಪ್ಪಣಿ :",
        "importstart": "ಪುಟಗಳು ಆಮದಾಗುತ್ತಿದೆ...",
        "import-revision-count": "$1 {{PLURAL:$1|ಬದಲಾವಣೆ|ಬದಲಾವಣೆಗಳು}}",
        "tooltip-upload": "ಅಪ್ಲೋಡ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸು",
        "tooltip-rollback": "ಕೊನೆ ಸಂಪಾದಕರ ಎಲ್ಲಾ ಸಂಪಾದನೆಗಳನ್ನು ಅಳಿಸುಹಾಕುತ್ತದೆ",
        "tooltip-undo": "\"ವಜಾ ಮಾಡಿ\" ಈ ಸಂಪಾದನೆಯನ್ನು ನಿಷ್ಕ್ರಿಯ ಗೊಳಿಸಿ ಸಂಪಾದನಾ ಪುಟವನ್ನು ಮುನ್ನೋಟದೊಂದಿಗೆ ತೆರೆಯುತ್ತದೆ.\nಇಲ್ಲಿ ಸಾರಾಂಶದಲ್ಲಿ ಕಾರಣವನ್ನು ಸೇರಿಸುವ ಅನುಮತಿ ಇದೆ.",
-       "tooltip-summary": "ಸನà³\8dನ à²\92ಪà³\8dಪಿà²\97à³\86 à²\87ಲà³\8dಲಿ à²¹à²\95ಿ",
+       "tooltip-summary": "à²\9aಿà²\95à³\8dà²\95 à²¸à²¾à²°à²¾à²\82ಶ à²\92à²\82ದನà³\8dನà³\81 à²¸à³\87ರಿಸಿ",
        "anonymous": "{{SITENAME}} ತಾಣದ ಅನಾಮಧೇಯ {{PLURAL:$1|ಬಳಕೆದಾರ|ಬಳಕೆದಾರರು}}",
        "siteuser": "{{SITENAME}} ಬಳಕೆದಾರ $1",
        "othercontribs": "$1 ರ ಕೆಲಸವನ್ನು ಆಧರಿಸಿ.",
index 04ac009..203c6e2 100644 (file)
        "import-interwiki-history": "이 문서의 모든 역사를 가져오기",
        "import-interwiki-templates": "모든 틀을 포함하기",
        "import-interwiki-submit": "가져오기",
-       "import-interwiki-namespace": "새 이름공간:",
-       "import-interwiki-rootpage": "대상 루트 문서 (선택 사항):",
        "import-upload-filename": "파일 이름:",
        "import-comment": "요약:",
        "importtext": "원본 위키에서 [[Special:Export|내보내기]] 기능을 사용해 파일을 내려받으세요.\n그리고 당신의 컴퓨터에 저장해 둔 후 여기에 올려주세요.",
index 2c3b40c..50bd507 100644 (file)
        "showhideselectedversions": "Сайланнган версияланы кёргюз/джашыр",
        "editundo": "ызына алыу",
        "diff-empty": "(башхалыкъ джокъ)",
+       "diff-multi-sameuser": "(бу къошулуучу этген {{PLURAL:$1|бир аралы версия|$1 аралы версия}} кёргюзюлмегенди)",
        "diff-multi-manyusers": "($2 {{PLURAL:$2|къошулуучудан}} кёб этген {{PLURAL:$1|бир аралыкъ тюрлениу|$1 аралыкъ тюрлениу}} кёргюзюлмегенди)",
        "difference-missing-revision": "Бу тенглешдириу ($1) ючюн {{PLURAL:$2|бир версия|$2 версия}} {{PLURAL:$2|табылмады}}.\n\n\nБу, эскирген джибериу бла кетерилген бетни версияларын тенглешдириуге кёчген сагъатда кёбюсюне болады.\nТолуракъ информация [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} кетериулени журналында] болургъа боллукъду.",
        "searchresults": "Излеуню эсеби",
        "uploadnewversion-linktext": "Бу файлны джангы версиясын джюклеу",
        "shared-repo-from": "$1-дан",
        "shared-repo": "Ортакъ сакълау джер",
+       "upload-disallowed-here": "Бу файлны юсюню джазаргъа болмайды.",
        "filerevert": "$1 файлны эски халына къайтыу",
        "filerevert-legend": "Файлны эски халына къайтар",
        "filerevert-intro": "'''[[Media:$1|$1]]''' медиясыны [$4 $3, $2 замандагъы версиясы]ны ызына къайтарыгъыз.",
        "undelete-show-file-submit": "Хоу",
        "namespace": "Атла алам:",
        "invert": "Сайланнганны айландыр",
+       "tooltip-invert": "Батледе тюрлениулени джашырыр ючюн: сайланнган ат аламда (неда, белгиленнген эсе, байланнган ат аламлада) бу энни салыгъыз",
        "namespace_association": "Байламлы ат алам",
+       "tooltip-namespace_association": "Сайланнган ат алам бла байламлы сюзюу атланы аламын да къошар ючюн бу энни салыгъын",
        "blanknamespace": "(Баш)",
        "contributions": "{{GENDER:$1|Къошулуучуну}} къошуму",
        "contributions-title": "$1 къошулуучуну къошагъы",
        "import-interwiki-history": "Бу бетни бютеу тюрлениу тарихин копия эт",
        "import-interwiki-templates": "Бютеу шаблонланы ичине сал",
        "import-interwiki-submit": "Импорт",
-       "import-interwiki-namespace": "Нюзюр ат алам:",
        "import-upload-filename": "Файлны аты:",
        "import-comment": "Эсгериу:",
        "importtext": "Бетни къайнакъ викиден [[Special:Export|адырны хайырландырыб]] эскпорт этигиз. Файлны дискде сакълагъыз эм былайгъа джюклегиз.",
index ae07379..43e3837 100644 (file)
        "import-interwiki-history": "All de Versione vun dä Sigg heh kopeere",
        "import-interwiki-templates": "All Schablone metnämme",
        "import-interwiki-submit": "Huhlade!",
-       "import-interwiki-namespace": "Dun de Sigge emporteere en dat Appachtemeng:",
-       "import-interwiki-rootpage": "De Aanfangssigg (kann läddesch bliive):",
+       "import-mapping-default": "Aan de schtanndattmähßeje Pläz emmpottehre:",
+       "import-mapping-namespace": "En heh dat Appachtemang emmpotehre:",
+       "import-mapping-subpage": "Als Ongersigge vun heh dä emmpottehre:",
        "import-upload-filename": "Dä Name fun dä Dattei:",
        "import-comment": "Jrond:",
        "importtext": "Dun de Daate met däm „[[Special:Export|Export]]“ vun doh vun enem Wiki Exporteere un - etwa bei Dir om Rechner - avspeichere, un dann heh wider huhlade.",
index 3551085..685597b 100644 (file)
@@ -14,7 +14,8 @@
                        "The Evil IP address",
                        "Welathêja",
                        "아라",
-                       "Bikarhêner"
+                       "Bikarhêner",
+                       "Uygar"
                ]
        },
        "tog-underline": "Xetekê di bin girêdanê de çêke:",
@@ -24,7 +25,7 @@
        "tog-extendwatchlist": "Lîsteya şopandinê berfireh bike ji bo dîtina hemû guherandinan, ne tenê yên nû",
        "tog-usenewrc": "Weşandina zêdetir (JavaScript pêwîst e)",
        "tog-numberheadings": "Sernavan otomatîk bihejmêre",
-       "tog-showtoolbar": "Tiştên guherandinê bibîne (JavaScript bibîne)",
+       "tog-showtoolbar": "Çoyê sererastkirinê nîşan bide",
        "tog-editondblclick": "Rûpelan bi du klîkan biguherîne (Java Script gireke)",
        "tog-editsectiononrightclick": "Beşekê bi rast-klîkekê biguherîne (JavaScript gireke)",
        "tog-watchcreations": "Rûpelên min çêkirin, têxe nav lîsteya min a şopandinê",
        "jumptosearch": "lêgerîn",
        "view-pool-error": "Bibore, server niha zêde barkirî ne. Gelek bikarhêner niha hewl didin ku vê rûpelê bibînin. Ji kerema xwe kêlîkekê bisekine, berî ku tu dîsa hewl bidî rûpelê bibînî.",
        "pool-errorunknown": "Çewtiyeke nenas",
+       "poolcounter-usage-error": "Çewtîyê bikaranînê: $1",
        "aboutsite": "Der barê {{SITENAME}} de",
        "aboutpage": "Project:Der barê",
        "copyright": "Naverok di $1 de derbasdar e.",
        "blockednoreason": "sedem nehatiye gotin",
        "whitelistedittext": "Ji bo guherandina rûpelan, $1 pêwîst e.",
        "confirmedittext": "Tu gireke adrêsa e-nameya xwe nasbikê berî tu rûpelan diguherînê. Xêra xwe adrêsa e-nameya ya xwe di [[Special:Preferences|tercihên xwe]] da binivisîne û nasbike.",
-       "nosuchsectiontitle": "Beşekî wisa tune ye",
+       "nosuchsectiontitle": "Beşek wisa tune ye",
        "nosuchsectiontext": "Te dixast beşekê biguherînê yê tune ye.",
        "loginreqtitle": "Têketin pêwîst e",
        "loginreqlink": "têkeve",
        "semiprotectedpagewarning": "'''Hişyarî:''' Ev rûpel tê parastin, lewma tenê bikarhênerên tomarkirî dikarin vê biguherînin.\nGuhertina herî dawî bi referansa li jêr hatiye piştrastkirin:",
        "templatesused": "{{PLURAL:$1|Şablona|Şablonên}} ku li ser vê rûpelê {{PLURAL:$1|tê|tên}} bikaranîn:",
        "templatesusedpreview": "{{PLURAL:$1|Şablona|Şablonên}} di vê pêşdîtinê de {{PLURAL:$1|tê|tên}} bikaranîn:",
-       "templatesusedsection": "Şablonên ku di vê parçeyê de tên bikaranîn:",
+       "templatesusedsection": "{{PLURAL:$1|Şablona ku di vê beşê de tê bikaranîn|Şablonên ku di vê beşê de tên bikaranîn}}:",
        "template-protected": "(tê parastin)",
        "template-semiprotected": "(nîv-parastî)",
        "hiddencategories": "Ev rûpel endamê {{PLURAL:$1|1 kategoriya veşartî|$1 kategoriyên veşartî}} ye:",
        "badsiglength": "Navê te zêde dirêj e; pêwîst e di bin {{PLURAL:$1|nîşanekê|nîşanan}} de be.",
        "yourgender": "Zayend:",
        "gender-unknown": "Veşartî",
-       "gender-male": "Nêr",
+       "gender-male": "Ew rûpelên wîkiyê diguherîne",
        "gender-female": "Mê",
        "email": "E-name",
        "prefs-help-realname": "Navê rastî ne pêwîst e. Heke tu navê xwe binivisî, ewê ji bo karê te were bikaranîn.",
        "group-sysop": "Rêveber",
        "group-bureaucrat": "Burokrat",
        "group-all": "(hemû)",
-       "group-user-member": "Bikarhêner",
+       "group-user-member": "{{GENDER:$1|bikarhêner}}",
        "group-bot-member": "{{GENDER:$1|bot}}",
        "group-sysop-member": "{{GENDER:$1|rêveber}}",
        "group-bureaucrat-member": "{{GENDER:$1|burokrat}}",
        "rcshowhidebots": "Bot'an $1",
        "rcshowhidebots-show": "nîşan bide",
        "rcshowhidebots-hide": "veşêre",
-       "rcshowhideliu": "Bikarhênerên tomarkirî $1",
+       "rcshowhideliu": "$1 bikarhênerên tomarkirî",
        "rcshowhideliu-show": "nîşan bide",
        "rcshowhideliu-hide": "veşêre",
        "rcshowhideanons": "Bikarhênerên netomarkirî (IP) $1",
        "filedelete-reason-otherlist": "Sedemên din",
        "filedelete-reason-dropdown": "*Sedemên jêbirina wêneyan\n** wêneyekî nebaş e\n** kopiyek e",
        "filedelete-edit-reasonlist": "Sedemên jêbirinê biguherîne",
-       "mimesearch": "Gerrîna li MIME",
+       "mimesearch": "Lêgerîna li MIME",
        "download": "daxistin",
        "unwatchedpages": "Rûpelên nayên şopandin",
        "listredirects": "Lîsteya beralîkirinan",
        "mostlinked": "Rûpelên bi bêhtirîn girêdan",
        "mostlinkedcategories": "Kategoriyên bi bêhtirîn girêdan",
        "mostcategories": "Rûpelên bi pir kategorî",
+       "mostinterwikis": "Rûpelên bi bêhtirîn girêdanên înterwîkiyê",
        "prefixindex": "Hemû rûpelên bi pêşbendik",
        "shortpages": "Rûpelên kurt",
        "longpages": "Rûpelên dirêj",
        "deadendpages": "Rûpelên bê dergeh",
        "protectedpages": "Rûpelên parastî",
+       "protectedpages-noredirect": "Beralîkirinan veşêre",
+       "protectedpagesempty": "Niha ti rûpelên ku bi vê parametreyê parastî ne, tine ne.",
        "protectedpages-page": "Rûpel",
        "protectedtitles": "Sernavên parastî",
        "listusers": "Lîsteya bikarhêneran",
        "all-logs-page": "Hemû têketin",
        "alllogstext": "Hemû têketinên {{SITENAME}} li jêr tên nîşandan.\nTu dikarî ji xwe re têketinekê hilbijêrî, navê bikarhêneriyê an navê rûpelekê binivîse û agahiyan li ser wê bibîne.",
        "logempty": "Tiştek di vir de nîne.",
-       "log-title-wildcard": "Li sernavan bigere, yê bi vê destpêdikin",
+       "log-title-wildcard": "Li sernavên bi vê dest pê dikin bigere",
        "allpages": "Hemû rûpel",
        "nextpage": "Rûpela pêşî ($1)",
        "prevpage": "Rûpelê berî vê ($1)",
        "unblockip": "IP'yekê dîsa veke",
        "unblockiptext": "Nivîsara jêr bikarwîne ji bo qebûlkirina nivîsandinê bikarhênerekî ya IP'yeka berê astengkirî.",
        "ipusubmit": "Vê astengkirinê rake",
-       "unblocked": "[[User:$1|$1]] niha vê astengkirinê ye",
+       "unblocked": "[[User:$1|$1]] hatiye astengkirin.",
        "unblocked-range": "$1 hat astengkirin.",
        "unblocked-id": "$1 dîsa vê astengkirinê ye",
        "blocklist": "Bikarhênerên astengkirî",
        "importlogpage": "Têketina tevlîkirinê",
        "javascripttest": "JavaScript tê testkirin",
        "tooltip-pt-userpage": "Rûpela min",
-       "tooltip-pt-anonuserpage": "The user page for the ip you",
+       "tooltip-pt-anonuserpage": "Rûpela bikarhênerê ji bo navnîşana ÎP ku tu sererast dikî wekî",
        "tooltip-pt-mytalk": "Gotûbêja min",
        "tooltip-pt-preferences": "Tercîhên min",
        "tooltip-pt-watchlist": "The list of pages you",
        "tooltip-feed-atom": "Atom feed'ên ji bo vê rûpelê",
        "tooltip-t-contributions": "Lîsteya beşdariyên bikarhêner bibîne",
        "tooltip-t-emailuser": "Jê re name bişîne",
+       "tooltip-t-info": "Bêhtir agahî di derbarê vê rûpelê de",
        "tooltip-t-upload": "Wêneyan bar bike",
        "tooltip-t-specialpages": "Lîsteya hemû rûpelên taybetî",
        "tooltip-t-print": "Versiyona çapkirinê ya vê rûpelê",
        "spamprotectiontitle": "Parastina spam",
        "spamprotectiontext": "Rûpela ku tu dixwazî tomar bikî ji ber parastina spamê hate astengkirin.\nJi ber ku girêdaneke derve di wê rûpelê de heye ev pirsgirêk pêk hat.",
        "spamprotectionmatch": "Ev nivîsa parastinê spam vêxist: $1",
-       "pageinfo-header-edits": "Guherandin",
+       "pageinfo-header-basic": "Agahiyên sereke",
+       "pageinfo-header-edits": "Dîrokê biguherîne",
        "pageinfo-header-restrictions": "Parastina rûpelê",
+       "pageinfo-header-properties": "Taybetmendiyên rûpelê",
        "pageinfo-watchers": "Hejmara kesên dişopînin",
        "pageinfo-subpages-name": "Binrûpelên vê rûpelê",
        "pageinfo-edits": "Hejmara guherandinan",
        "pageinfo-redirectsto-info": "agahî",
        "pageinfo-contentpage-yes": "Erê",
        "pageinfo-protect-cascading-yes": "Erê",
+       "pageinfo-category-info": "Agahiyên kategoriyê",
        "pageinfo-category-pages": "hejmara rûpelan",
        "pageinfo-category-subcats": "Hejmara binkategoriyan",
        "markaspatrolleddiff": "Wek serrastkirî nîşan bide",
        "file-info-size": "$1 × $2 pixel, mezinbûnê data: $3, MIME-typ: $4",
        "file-nohires": "Versyonekî jê mezintir tune.",
        "svg-long-desc": "Daneya SVG, mezinbûna rast: $1 × $2 pixel; mezinbûna daneyê: $3",
-       "show-big-image": "Mezînbûn",
+       "show-big-image": "Dosyeya orjînal",
        "newimages": "Pêşangeha wêneyên nû",
        "imagelisttext": "Jêr lîsteyek ji $1 file'an heye, duxrekirin $2.",
        "newimages-summary": "Ev rûpela taybet dosyeyên ku herî dawî hatine barkirin, nîşan dide.",
index 77734a2..9d887ec 100644 (file)
@@ -29,7 +29,7 @@
        "tog-hideminor": "Celare recensiones minores in indice nuper mutatorum",
        "tog-hidepatrolled": "Redactiones censae inter nuper mutatas celandae",
        "tog-newpageshidepatrolled": "Paginae censae inter nouissime creatas celandae",
-       "tog-extendwatchlist": "Indicem paginarum obseruandarum cunctas mutatas praeter nouissimas includere decet",
+       "tog-extendwatchlist": "Extendere indicem paginarum observatarum ut omnes emendationes monstrentur, non solum emendationes recentissimae",
        "tog-usenewrc": "Indice nuper mutatarum excelsa uti",
        "tog-numberheadings": "Subtituli numeris adornandi",
        "tog-showtoolbar": "Affigere trabem redigentem",
        "actions": "Actiones",
        "namespaces": "Spatia nominalia",
        "variants": "Variantes",
+       "navigation-heading": "Tabula navigationis",
        "errorpagetitle": "Erratum",
        "returnto": "Redire ad $1.",
        "tagline": "E {{grammar:ablative|{{SITENAME}}}}",
        "mimesearch": "Quaerere per MIME",
        "mimetype": "Typus MIME:",
        "download": "depromere",
-       "unwatchedpages": "Paginae incustoditae",
+       "unwatchedpages": "Paginae non observatae",
        "listredirects": "Redirectiones",
        "unusedtemplates": "Formulae non in usu",
        "unusedtemplateswlh": "nexus alii",
        "import": "Paginas importare",
        "importinterwiki": "Adportatio transvici",
        "import-interwiki-submit": "Importare",
-       "import-interwiki-namespace": "Spatium nominale destinatum:",
        "import-upload-filename": "Nomen fasciculi:",
        "import-comment": "Sententia:",
        "importstart": "Adportare paginas...",
        "tooltip-pt-mycontris": "Index conlationum tuarum",
        "tooltip-pt-login": "Te conventum aperire hortamur, non autem requisitum",
        "tooltip-pt-logout": "Conventum concludere",
+       "tooltip-pt-createaccount": "Hortamur ut conventum crees, sed non est necesse.",
        "tooltip-ca-talk": "Disputatio de hac pagina",
        "tooltip-ca-edit": "Hanc paginam recensere potes. Quaesumus praevisum inspice antequam servas.",
        "tooltip-ca-addsection": "Novam partem creare",
index 5b7c081..ba2a8a3 100644 (file)
        "import-interwiki-history": "Importéier all d'Versioune vun dëser Säit",
        "import-interwiki-templates": "Mat alle Schablounen",
        "import-interwiki-submit": "Import",
-       "import-interwiki-namespace": "Zil-Nummraum:",
-       "import-interwiki-rootpage": "Zil-Stamm-Säit (fakultativ):",
        "import-upload-filename": "Numm vum Fichier:",
        "import-comment": "Bemierkung:",
        "importtext": "Exportéiert de Fichier w.e.g. vun der Source-Wiki mat der [[Special:Export|Export-Funktioun]].\nSpäichert en op Ärem Computer of a luet en hei nees erop.",
        "special-characters-group-arabic": "Arabesch",
        "special-characters-group-arabicextended": "Arabesch, erweidert",
        "special-characters-group-persian": "Persesch",
-       "special-characters-group-hebrew": "Hebräisch",
+       "special-characters-group-hebrew": "Hebräesch",
        "special-characters-group-bangla": "Bangalesch",
        "special-characters-group-tamil": "Tamilesch",
        "special-characters-group-telugu": "Telugu",
index e2cb656..66a5e66 100644 (file)
        "import-interwiki-history": "ؤرداشتن ویرگار همه وانئریا سی ای بلگه",
        "import-interwiki-templates": "همه چوئه یا",
        "import-interwiki-submit": "وامین اوردن",
-       "import-interwiki-namespace": "نومجا مقصد:",
-       "import-interwiki-rootpage": "ریشه بلگه مقصد(دل به حایی):",
        "import-upload-filename": "نوم جانیا:",
        "import-comment": "ویر و باور:",
        "importtext": "لطف بکیت  جانیا نه د ویکی سرچشمه وا هومیاری [[Special:Export|اوزار وه در دئن]] بئریت.\nاوسه ونه د دسگایا خوتو اماییه کاری بکیت و ایچه ونه سوار بکیت.",
index f552593..3d7cb68 100644 (file)
        "import-interwiki-history": "Kopijuoti visas istorijos versijas šiam puslapiui",
        "import-interwiki-templates": "Įtraukti visus šablonus",
        "import-interwiki-submit": "Importuoti",
-       "import-interwiki-namespace": "Paskirties vardų sritis:",
-       "import-interwiki-rootpage": "Paskirties namų puslapis (pasirinktinai):",
        "import-upload-filename": "Failo pavadinimas:",
        "import-comment": "Paaiškinimas:",
        "importtext": "Prašome eksportuoti iš projekto-šaltinio failo, naudojant [[Special:Export|eksportavimo pagalbininką.]]\nIšsaugokite jį savo kompiuteryje ir įkelkite jį čia.",
index cafbea4..fc58f02 100644 (file)
        "thu": "Ce",
        "fri": "Pk",
        "sat": "Se",
-       "january": "Janvāris",
-       "february": "Februāris",
-       "march": "Marts",
-       "april": "Aprīlis",
-       "may_long": "Maijs",
-       "june": "Jūnijs",
-       "july": "Jūlijs",
-       "august": "Augusts",
-       "september": "Septembris",
-       "october": "Oktobris",
-       "november": "Novembris",
-       "december": "Decembris",
+       "january": "janvārī,",
+       "february": "februārī,",
+       "march": "martā,",
+       "april": "aprīlī,",
+       "may_long": "maijā,",
+       "june": "jūnijā,",
+       "july": "jūlijā,",
+       "august": "augustā,",
+       "september": "septembrī,",
+       "october": "oktobrī,",
+       "november": "novembrī,",
+       "december": "decembrī,",
        "january-gen": "Janvāra",
        "february-gen": "Februāra",
        "march-gen": "Marta",
        "querypage-disabled": "Šī īpašā lapā ir atspējota veiktspējas iemeslu dēļ.",
        "booksources": "Grāmatu avoti",
        "booksources-search-legend": "Meklēt grāmatu avotus",
+       "booksources-search": "Meklēt",
        "specialloguserlabel": "Izpildītājs:",
        "speciallogtitlelabel": "Mērķis (nosaukums vai lietotājs):",
        "log": "Reģistri",
        "import-interwiki-history": "Nokopēt visas šīs lapas hronoloģijā atrodamās versijas",
        "import-interwiki-templates": "Iekļaut visas veidnes",
        "import-interwiki-submit": "Importēt",
-       "import-interwiki-namespace": "Mērķa vārdtelpa:",
        "import-upload-filename": "Faila nosaukums:",
        "import-comment": "Komentārs:",
        "importstart": "Importē lapas...",
index f02af70..0072654 100644 (file)
        "import-interwiki-history": "Handika ny santiônan'ny tantaran'ity pejy ity",
        "import-interwiki-templates": "Ataovy ao ny endrika rehetra",
        "import-interwiki-submit": "Hampiditra",
-       "import-interwiki-namespace": "Anaran-tsehatra tanjona :",
-       "import-interwiki-rootpage": "Foto-pejy tanjona (azo tsy fenoina):",
        "import-upload-filename": "Anaran-drakitra :",
        "import-comment": "Resaka :",
        "importstart": "Am-pampidirana ny pejy…",
index 3179cbe..933cb0c 100644 (file)
        "import-interwiki-history": "Копирај ги сите постари верзии за оваа страница",
        "import-interwiki-templates": "Вклучи ги сите шаблони",
        "import-interwiki-submit": "Увези",
-       "import-interwiki-namespace": "Целен именски простор:",
-       "import-interwiki-rootpage": "Целна основна страница (незадолжително):",
+       "import-mapping-default": "Увези во стандардните места",
+       "import-mapping-namespace": "Увези во именскиот простор:",
+       "import-mapping-subpage": "Увези како потстраници на следнава страница:",
        "import-upload-filename": "Податотека:",
        "import-comment": "Коментар:",
        "importtext": "Извезете ја податотеката од изворното вики користејќи ја [[Special:Export|алатката за извоз]].\nЗачувајте ја на вашиот сметач и подигнете ја овде.",
index be60e36..9c892db 100644 (file)
        "import-interwiki-history": "ഈ താളിന്റെ എല്ലാ പൂർവ്വചരിത്രവും പകർത്തുക",
        "import-interwiki-templates": "എല്ലാ ഫലകങ്ങളും ഉൾപ്പെടുത്തുക",
        "import-interwiki-submit": "ഇറക്കുമതി",
-       "import-interwiki-namespace": "ഉദ്ദിഷ്ട നാമമേഖല:",
-       "import-interwiki-rootpage": "ലക്ഷ്യമിട്ട മൂലതാൾ (ഐച്ഛികം):",
        "import-upload-filename": "പ്രമാണത്തിന്റെ പേര്‌",
        "import-comment": "കുറിപ്പ്:",
        "importtext": "ദയവായി സ്രോതസ്സ് വിക്കിയിൽ നിന്ന് [[Special:Export|കയറ്റുമതി ഉപകരണം]] ഉപയോഗിച്ച് പ്രമാണം കയറ്റുമതി ചെയ്യുക.\nഅത് താങ്കളുടെ കമ്പ്യൂട്ടറിൽ ശേഖരിച്ച് ഇവിടെ അപ്‌‌ലോഡ് ചെയ്യുക.",
index 696438b..291d243 100644 (file)
        "import-interwiki-history": "Copia tutt' 'a storia d' 'e verziune 'e sta paggena",
        "import-interwiki-templates": "Include tutt' 'e template",
        "import-interwiki-submit": "Mpurta",
-       "import-interwiki-namespace": "Namespace 'e destinazione:",
-       "import-interwiki-rootpage": "Paggena princepale 'e destinazione (opzionale):",
+       "import-mapping-default": "Importa a pizze prescigliute",
+       "import-mapping-namespace": "Importa a nu namespace:",
+       "import-mapping-subpage": "Importa comme fossero subpaggene d' 'a paggena ccà:",
        "import-upload-filename": "Nomme d' 'o file",
        "import-comment": "Commento:",
        "importtext": "Pe' piacere spurtate 'o file d' 'a wiki surgente ausanno l'[[Special:Export|utilità 'e sportazione]].\nScarrecatevella dint' 'o computer d' 'o vuosto e carrecate n'ata vota ccà.",
index 2e761fc..d971226 100644 (file)
        "import-interwiki-history": "Kopier all historikk for denne siden",
        "import-interwiki-templates": "Inkluder alle maler",
        "import-interwiki-submit": "Importer",
-       "import-interwiki-namespace": "Målnavnerom:",
-       "import-interwiki-rootpage": "Destinasjonens grunnside (valgfri):",
        "import-upload-filename": "Filnavn:",
        "import-comment": "Kommentar:",
        "importtext": "Importer filen fra kildewikien med [[Special:Export|eksporteringsverktøyet]].\nLagre den på din egen datamaskin og last den opp her.",
index 3d6735d..1f9af94 100644 (file)
        "import-interwiki-history": "Volledige geschiedenis van deze pagina ook kopiëren",
        "import-interwiki-templates": "Alle sjablonen opnemen",
        "import-interwiki-submit": "Importeren",
-       "import-interwiki-namespace": "Doelnaamruimte:",
-       "import-interwiki-rootpage": "Basispagina voor doel (optioneel):",
        "import-upload-filename": "Bestandsnaam:",
        "import-comment": "Opmerking:",
        "importtext": "Gebruik de [[Special:Export|exportfunctie]] in de wiki waar de informatie vandaan komt.\nSla de uitvoer op uw eigen computer op, en voeg die daarna hier toe.",
index b9aa6fb..41c11ff 100644 (file)
        "preview": "Førehandsvising",
        "showpreview": "Førehandsvis",
        "showdiff": "Sjå skilnader",
-       "anoneditwarning": "'''Åtvaring:''' Du er ikkje innlogga.\nIP-adressa di vert lagra i endringshistorikken til sida.",
+       "anoneditwarning": "'''Åtvaring:''' Du er ikkje innlogga.\nIP-adressa di vil verta lagra i den offentlege endringshistorikken til sida. Om du <strong>[$1 loggar inn]</strong> eller <strong>[$2 lager ein konto]</strong>, vil endringane dine knyttast til brukarnamnet ditt, saman med andre fordelar.",
        "anonpreviewwarning": "''Du er ikkje innlogga. Lagrar du vil IP-adressa di verta ført opp i endringshistorikken til denne sida.''",
        "missingsummary": "'''Påminning:''' Du har ikkje skrive noko endringssamandrag. Dersom du trykkjer «Lagre» ein gong til, vert endringa di lagra utan.",
        "missingcommenttext": "Ver venleg og skriv ein kommentar nedanfor.",
        "shown-title": "Syn $1 {{PLURAL:$1|resultat|resultat}} for kvar side",
        "viewprevnext": "Vis ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "* Sida '''[[$1]]'''",
-       "searchmenu-new": "'''Opprett sida «[[:$1|$1]]» på denne wikien.'''",
+       "searchmenu-new": "'''Opprett sida «[[:$1|$1]]» på denne wikien.''' {{PLURAL:$2|0=|Sjå også sida som vart funnen med søket ditt.|Sjå også søkeresultata som blei funne.}}",
        "searchprofile-articles": "Innhaldssider",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Alt",
        "searchrelated": "relatert",
        "searchall": "alle",
        "showingresults": "Nedanfor er opp til {{PLURAL:$1|'''eitt'''|'''$1'''}} resultat som byrjar med nummer '''$2''' vist{{PLURAL:$1||e}}.",
+       "search-showingresults": "Resultat <strong>{{PLURAL:$4|$1|$1–$2}}</strong> av <strong>$3</strong>",
        "search-nonefound": "Ingen resultat svarte til førespurnaden.",
        "powersearch-legend": "Avansert søk",
        "powersearch-ns": "Søk i namnerom:",
        "import-interwiki-history": "Kopier all historikken for denne sida",
        "import-interwiki-templates": "Inkluder alle malar",
        "import-interwiki-submit": "Importer",
-       "import-interwiki-namespace": "Målnamnerom:",
-       "import-interwiki-rootpage": "Målrotside (valfri):",
        "import-upload-filename": "Filnamn:",
        "import-comment": "Kommentar:",
        "importtext": "Lagre fila frå kjeldewikien med [[Special:Export|eksporteringsverktøyet]] på din eigen datamaskin, og last henne så opp her.",
        "tooltip-pt-mycontris": "Liste over bidraga dine",
        "tooltip-pt-login": "Det er ikkje obligatorisk å logga inn, men medfører mange fordelar.",
        "tooltip-pt-logout": "Logg ut",
+       "tooltip-pt-createaccount": "Me oppfordrar til at du oppretter ein konto og loggar inn, men det er ikkje påkravd.",
        "tooltip-ca-talk": "Diskusjon om innhaldssida",
        "tooltip-ca-edit": "Du kan endre denne sida. Bruk førehandsvisings-knappen før du lagrar.",
        "tooltip-ca-addsection": "Start ein ny bolk",
index 6a6098b..cad960e 100644 (file)
        "import-interwiki-history": "Copiar totas las versions de l'istoric d'aquesta pagina",
        "import-interwiki-templates": "Enclure totes los modèls",
        "import-interwiki-submit": "Importar",
-       "import-interwiki-namespace": "Espaci de noms de destinacion :",
-       "import-interwiki-rootpage": "Pagina raiç de destinacion (opcionala):",
        "import-upload-filename": "Nom del fichièr :",
        "import-comment": "Comentari :",
        "importtext": "Exportatz lo fichièr dempuèi lo wiki d’origina en utilizant [[Special:Export|aisina d'exportacion]].\nSalvatz-lo sus vòstre disc dur puèi importatz-lo aicí.",
index a89a229..996451b 100644 (file)
@@ -15,9 +15,9 @@
                        "Macofe"
                ]
        },
-       "tog-underline": "ତଳà­\87 à¬¥à¬¿à¬¬à¬¾ à¬²à¬¿à¬\99à­\8dà¬\95:",
+       "tog-underline": "ଲିà¬\99à­\8dà¬\95ତଳà­\87à¬\97ାର à¬\9fାଣିବା:",
        "tog-hideminor": "ନିକଟରେ ହୋଇଥିବା ଛୋଟ ବଦଳସବୁକୁ ଲୁଚାଇବେ",
-       "tog-hidepatrolled": "ନà¬\97ଦ à¬¬à¬¦à¬³à¬°à­\87 à¬¥à¬¿à¬¬à¬¾ à¬\9cà¬\97ାହà­\8bଇଥିବା ବଦଳ ସବୁକୁ ଲୁଚାଇବେ",
+       "tog-hidepatrolled": "ନà¬\97ଦ à¬¬à¬¦à¬³à¬°à­\87 à¬¨à¬¿à¬°à¬¿à¬\95à­\8dଷଣ à¬\95ରାଯାଇଥିବା ବଦଳ ସବୁକୁ ଲୁଚାଇବେ",
        "tog-newpageshidepatrolled": "ନୂଆ ପୃଷ୍ଠାତାଲିକାରୁ ଜଗାହୋଇଥିବା ବଦଳସବୁକୁ ଲୁଚାଇବେ",
        "tog-extendwatchlist": "କେବଳ ନଗଦ ହିଁ ନୁହେଁ, ସବୁଯାକ ବଦଳକୁ ଦେଖାଇବା ପାଇଁ ଦେଖଣାତାଲିକାକୁ ପୂରା ଦେଖାଇବେ",
        "tog-usenewrc": "ନଗଦ ବଦଳରେ ପୃଷ୍ଠା ଅନୁଯାୟୀ ଗୋଷ୍ଠୀ ବଦଳ ଏବଂ ଦେଖଣା",
@@ -40,7 +40,7 @@
        "tog-shownumberswatching": "ଦେଖୁଥିବା ବ୍ୟବହାରକାରୀଙ୍କ ସଂଖ୍ୟା ଦେଖାନ୍ତୁ",
        "tog-oldsig": "ଏବେକାର ଦସ୍ତଖତ:",
        "tog-fancysig": "ଦସ୍ତଖତକୁ ଉଇକିଟେକ୍ସଟ ଭାବରେ ଗଣିବେ (ଆପେଆପେ ଥିବା ଲିଙ୍କ ବିନା)",
-       "tog-uselivepreview": "ସାଥେ ସାଥେ ଚାଲିଥିବା ଦେଖଣା ବ୍ୟବହାର କରିବେ (ପରୀକ୍ଷାରେ ଅଛି)",
+       "tog-uselivepreview": "ସାଥେ ସାଥେ ଚାଲିଥିବା ଦେଖଣା ବ୍ୟବହାର କରିବେ",
        "tog-forceeditsummary": "ଖାଲି ସମ୍ପାଦନା ସାରକଥାକୁ ଯିବା ବେଳେ ମୋତେ ଜଣାଇବେ",
        "tog-watchlisthideown": "ମୋ ଦେଖଣା ତାଲିକାରେ ମୋ ନିଜର ସମ୍ପାଦନାଗୁଡ଼ିକ ଲୁଚାଇବେ",
        "tog-watchlisthidebots": "ଦେଖଣା ତାଲିକାରେ ସ୍ୱୟଂଚାଳକ (Bot)ର ସମ୍ପାଦନାମାନ ଲୁଚାଇବେ",
        "lastmodifiedat": "ଏହି ପୃଷ୍ଠାଟି $1 ତାରିଖ $2 ବେଳେ ବଦଳାଯାଇଥିଲା ।",
        "viewcount": "ଏହି ପୃଷ୍ଠାଟି {{PLURAL:$1|ଥରେ|$1 ଥର}} ଖୋଲାଯାଇଛି ।",
        "protectedpage": "କିଳାଯାଇଥିବା ପୃଷ୍ଠା",
-       "jumpto": "ଡà­\87à¬\87à¬\81ଯିବେ",
+       "jumpto": "ସିଧାସଳà¬\96 ଯିବେ",
        "jumptonavigation": "ଦିଗବାରେଣିକୁ",
        "jumptosearch": "ଖୋଜିବେ",
        "view-pool-error": "କ୍ଷମା କରିବେ, ସର୍ଭରସବୁ ଏବେ ମନ୍ଦ ହୋଇଯାଇଅଛନ୍ତି ।\nଅନେକ ସଭ୍ୟ ଏହି ଏକା ପୃଷ୍ଠାଟି ଦେଖିବାକୁ ଚେଷ୍ଟାକରୁଅଛନ୍ତି ।\nଏହି ପୃଷ୍ଠାକୁ ଆଉଥରେ ଖୋଲିବା ଆଗରୁ ଦୟାକରି କିଛି କ୍ଷଣ ଅପେକ୍ଷା କରନ୍ତୁ ।\n$1",
        "pool-queuefull": "ପୁଲ ଧାଡ଼ିଟି ଭରିଯାଇଅଛି",
        "pool-errorunknown": "ଅଜଣା ଅସୁବିଧା",
        "pool-servererror": "ଏହି ପୁଲ କାଉଣ୍ଟର ସର୍ଭିସ ଉପଲବ୍ଧ ($1) ନାହିଁ ।",
+       "poolcounter-usage-error": "ବ୍ୟବହାରିକ ତ୍ରୁଟି: $1",
        "aboutsite": "{{SITENAME}} ବାବଦରେ",
        "aboutpage": "Project:ବାବଦରେ",
        "copyright": "ଯଦି ଉଲ୍ଲେଖ ହୋଇନାହିଁ ଏହା $1 ଅଧୀନରେ ବିତରିତ ।",
        "disclaimers": "ଆମେ ଦାୟୀ ନୋହୁଁ",
        "disclaimerpage": "Project:ଆମେ ଦାୟୀ ନୋହୁଁ",
        "edithelp": "ଲେଖା ସାହାଯ୍ୟ",
+       "helppage-top-gethelp": "ସାହାଯ୍ୟ",
        "mainpage": "ପ୍ରଧାନ ପୃଷ୍ଠା",
        "mainpage-description": "ପ୍ରଧାନ ପୃଷ୍ଠା",
        "policy-url": "Project:ନୀତି",
        "site-rss-feed": "$1 ଆରଏସଏସ ଫିଡ଼",
        "site-atom-feed": "$1 ଆଟମ ଫିଡ଼",
        "page-rss-feed": "$1 ଟି ଆରେସେସ ଫିଡ଼",
-       "page-atom-feed": "$1 ଟି ଆଟମ ଫିଡ଼",
+       "page-atom-feed": "\"$1\" ଆଟମ ଫିଡ଼",
        "red-link-title": "$1 (ପୃଷ୍ଠାଟି ନାହିଁ)",
        "sort-descending": "ବଡ଼ରୁ ସାନ କ୍ରମେ ସଜାନ୍ତୁ",
        "sort-ascending": "ସାନରୁ ବଡ଼ କ୍ରମେ ସଜାନ୍ତୁ",
        "readonly_lag": "ଏହି ଡାଟାବେସଟିରେ ଆପେ ଆପେ ତାଲା ପଡ଼ିଯାଇଅଛି, ଇତିମଧ୍ୟରେ ସାନ ଡାଟାବେସଟି ମୁଖ୍ୟ ଡାଟାବେସ ସହିତ ଯୋଗାଯୋଗ କରୁଅଛି",
        "internalerror": "ଭିତରର ଭୁଲ",
        "internalerror_info": "ଭିତରର ଭୁଲ : $1",
+       "internalerror-fatal-exception": "\"$1\" ପ୍ରକାରର ତ୍ରୁଟି ।",
        "filecopyerror": "\"$1\" ରୁ \"$2\" କୁ ନକଲ କରିପାରିଲୁଁ ନାହିଁ ।",
        "filerenameerror": "\"$1\" ରୁ \"$2\" କୁ ନାମ ବଦଳ କରିପାରିଲୁଁ ନାହିଁ ।",
        "filedeleteerror": "\"$1\" ଫାଇଲଟି ଲିଭାଇ ପାରିଲୁଁ ନାହିଁ ।",
        "directorycreateerror": "\"$1\" ସୂଚିଟି ତିଆରି କରିପାରିଲୁଁ ନାହିଁ ।",
+       "directoryreadonlyerror": "\"$1\" ଖାଲି ପଢି ହେଉଥିବା ଡିରୋକ୍ଟୋରୀ ।",
+       "directorynotreadableerror": "\"$1\" ଡିରୋକ୍ଟୋରୀଟି ପଢି ହେବ ନାହିଁ ।",
        "filenotfound": "\"$1\" ଫାଇଲଟି ପାଇଲୁ ନାହିଁ ।",
        "unexpected": "ଅଜଣା ନାମ ମିଳିଲା: \"$1\"=\"$2\" ।",
        "formerror": "ଭୁଲ: ଫର୍ମଟି ପଠାଇ ପାରିଲୁଁ ନାହିଁ",
        "viewsourcetext": "ଆପଣ ଏହି ପୃଷ୍ଠାର ଲେଖା ଦେଖିପାରିବେ ଓ ନକଲ କରିପାରିବେ:",
        "viewyourtext": "ଆପଣ '''ଆପଣଙ୍କ ସମ୍ପାଦିତ ''' ଅଧରଟିକୁ ଦେଖିପାରିବେ ଓ ଏହି ପୃଷ୍ଠାକୁ ନକଲ କରି ପାରିବେ",
        "protectedinterface": "ଏହି ପୃଷ୍ଠାଟି ଏହି ଉଇକିରେ ଥିବା ସଫ୍ଟୱେର ନିମନ୍ତେ ଇଣ୍ଟରଫେସ ଲେଖା ଯୋଗାଇଥାଏ ଓ ଏହା ଅପବ୍ୟବହାରକୁ ରୋକିବା ନିମନ୍ତେ କିଳାଯାଇଅଛି । ସମସ୍ତ ଉଇକିର ଅନୁବାଦକୁ ଯୋଡ଼ିବା ଏବଂ ବଦଳାଇବା ପାଇଁ ମେଡ଼ିଆଉଇକିର ସ୍ଥାନୀୟ ପ୍ରକଳ୍ପରେ ଥିବା [//translatewiki.net/ translatewiki.net]କୁ ବ୍ୟବହାର କରନ୍ତୁ ।",
-       "editinginterface": "'''ଚେତାବନୀ:''' ଆପଣ ସଫ୍ଟୱେରର ଇଣ୍ଟରଫେସ ଲେଖା ଯୋଗାଇବା ନିମନ୍ତେ ବ୍ୟବହାର କରାଯାଉଥିବା ଏକ ପୃଷ୍ଠାର ସମ୍ପାଦନା କରୁଅଛନ୍ତି ।\nଏହି ଉଇକିପୃଷ୍ଠାର କିଛି ବି ବଦଳ ବାକି ସଭ୍ୟମାନଙ୍କ ଇଣ୍ଟରଫେସର ଦେଖଣାକୁ ପ୍ରଭାବିତ କରିବ ।\nସମସ୍ତ ଉଇକିର ଅନୁବାଦ ନିମନ୍ତେ, ଦୟାକରି ମିଡ଼ିଆଉଇକିର ସ୍ଥାନୀୟକରଣ ପ୍ରକଳ୍ପ [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] ବ୍ୟବହାର କରନ୍ତୁ ।",
+       "editinginterface": "'''ଚେତାବନୀ:''' ଆପଣ ସଫ୍ଟୱେରର ଇଣ୍ଟରଫେସ ଲେଖା ଯୋଗାଇବା ନିମନ୍ତେ ବ୍ୟବହାର କରାଯାଉଥିବା ଏକ ପୃଷ୍ଠାର ସମ୍ପାଦନା କରୁଅଛନ୍ତି ।\nଏହି ଉଇକିପୃଷ୍ଠାର କିଛି ବି ବଦଳ ବାକି ସଭ୍ୟମାନଙ୍କ ଇଣ୍ଟରଫେସର ଦେଖଣାକୁ ପ୍ରଭାବିତ କରିବ ।",
+       "translateinterface": "ସମସ୍ତ ଉଇକିରେ ଅନୁବାଦ ଯୋଡିବା ପାଇଁ କିମ୍ବା ବଦଳାଇବା ପାଇଁ ମେଡିଆଉଇକିର ଅଞ୍ଚଳିକୀକରଣ ପ୍ରକଳ୍ପ  [//translatewiki.net/ translatewiki.net] ବ୍ୟବହାର କରନ୍ତୁ ।",
        "cascadeprotected": "ଏହି ପୃଷ୍ଠା ସମ୍ପାଦନା କରିବାରୁ କିଳାଯାଇଅଛି, କାରଣ ଏଥିରେ ତଳଲିଖିତ {{PLURAL:$1|ପୃଷ୍ଠାଟିଏ ଅଛି|ଟି ପୃଷ୍ଠା ଅଛି}} ଯାହା \"କ୍ୟାସକେଡ଼ କରା\" ସୁବିଧା ଦେଇ କିଳାଯାଇଅଛି ।:\n$2",
        "namespaceprotected": "ଆପଣଙ୍କୁ ଏହି '''$1''' ନେମସ୍ପେସ ଥିବା ପୃଷ୍ଠାରେ ସମ୍ପାଦନା କରିବା ନିମନ୍ତେ ଅନୁମତି ମିଳିନାହିଁ ।",
        "customcssprotected": "ଆପଣଙ୍କୁ ଏହି CSS ପୃଷ୍ଠାର ସମ୍ପାଦନା ନିମନ୍ତେ ଅନୁମତି ମିଳିନାହିଁ, କାରଣ ଏଥିରେ ଆଉଜଣେ ସଭ୍ୟଙ୍କର ବ୍ୟକ୍ତିଗତ ସଜାଣି ରହିଅଛି ।",
        "createacct-another-username-ph": "ଆପଣଙ୍କ ଇଉଜର ନାମ ଟାଇପ କରନ୍ତୁ",
        "yourpassword": "ପାସୱାର୍ଡ଼",
        "userlogin-yourpassword": "ପାସୱାର୍ଡ଼",
-       "userlogin-yourpassword-ph": "à¬\86ପଣà¬\99à­\8dà¬\95 à¬ªà¬¾à¬¸à­±à¬¾à¬°à­\8dଡ଼ à¬¨à¬¿à¬¬à­\87ଶ à¬\95ରନ୍ତୁ",
-       "createacct-yourpassword-ph": "ପାସୱରà­\8dଡ଼ à¬¨à¬¿à¬¬à­\87ଶ à¬\95ରନ୍ତୁ",
+       "userlogin-yourpassword-ph": "à¬\86ପଣà¬\99à­\8dà¬\95 à¬ªà¬¾à¬¸à­±à¬¾à¬°à­\8dଡ଼ à¬¦à¬¿à¬\85ନ୍ତୁ",
+       "createacct-yourpassword-ph": "ପାସୱରà­\8dଡ଼ à¬¦à¬¿à¬\85ନ୍ତୁ",
        "yourpasswordagain": "ପାସୱାର୍ଡ଼ ଆଉଥରେ:",
        "createacct-yourpasswordagain": "ପାସୱର୍ଡ଼ ନିଶ୍ଚିତ କରିବେ",
-       "createacct-yourpasswordagain-ph": "ପà­\81ଣି à¬ªà¬¾à¬¸à­±à¬°à­\8dଡ଼ à¬¨à¬¿à¬¬à­\87ଶ à¬\95ରନ୍ତୁ",
+       "createacct-yourpasswordagain-ph": "à¬\86à¬\89ଥରà­\87 à¬ªà¬¾à¬¸à­±à¬°à­\8dଡ଼ à¬¦à¬¿à¬\85ନ୍ତୁ",
        "remembermypassword": "ଏହି ବ୍ରାଉଜରରେ (ସବୁଠୁ ଅଧିକ ହେଲେ $1 {{PLURAL:$1|day|ଦିନ}}) ପାଇଁ ମୋ ଲଗଇନ ମନେ ରଖିଥିବେ",
        "userlogin-remembermypassword": "ମୋତେ ଲଗ-ଇନ କରି ରଖିଥାନ୍ତୁ",
        "userlogin-signwithsecure": "ନିରାପଦ କନେକସନ ବ୍ୟବ‌ହାର କରନ୍ତୁ",
        "userlogin-createanother": "ଆଉ ଏକ ଖାତା ତିଆରି କରନ୍ତୁ",
        "createacct-emailrequired": "ଇମେଲ ଠିକଣା",
        "createacct-emailoptional": "ଇମେଲ ଠିକଣା (ଇଚ୍ଛାଧୀନ)",
-       "createacct-email-ph": "à¬\86ପଣà¬\99à­\8dà¬\95 à¬\87ମà­\87ଲ à¬ à¬¿à¬\95ଣା à¬¨à¬¿à¬¬à­\87ଶ à¬\95ରନ୍ତୁ",
+       "createacct-email-ph": "à¬\86ପଣà¬\99à­\8dà¬\95 à¬\87ମà­\87ଲ à¬ à¬¿à¬\95ଣା à¬¦à¬¿à¬\85ନ୍ତୁ",
        "createacct-another-email-ph": "ଆପଣଙ୍କ ଇ-ମେଲ ଠିକଣା ଦିଅନ୍ତୁ",
        "createaccountmail": "ଏକ ଅସ୍ଥାୟୀ ପାସୱାର୍ଡ଼ ବ୍ୟବହାର କରନ୍ତୁ ଏବଂ ଏହାକୁ ତଳେ ଦିଆଯାଇଥିବା ଇ-ମେଲ ଠିକଣାକୁ ପଠେଇ ଦିଅନ୍ତୁ",
        "createacct-realname": "ପ୍ରକୃତ ନାମ (ଇଚ୍ଛାଧୀନ)",
        "createacct-reason": "କାରଣ",
        "createacct-reason-ph": "ଆପଣ ଅନ୍ୟଏକ ଖାତା କାହିଁକି ତିଆରି କରୁଛନ୍ତି",
        "createacct-captcha": "ନିରାପତ୍ତା ଯାଞ୍ଚ",
-       "createacct-imgcaptcha-ph": "à¬\89ପରà­\87 à¬²à­\87à¬\96ାଥିବା à¬²à­\87à¬\96ାà¬\9fି ଲେଖନ୍ତୁ",
+       "createacct-imgcaptcha-ph": "à¬\89ପରà­\87 à¬²à­\87à¬\96ାଥିବା à¬\85à¬\95à­\8dଷରà¬\95à­\81 ଲେଖନ୍ତୁ",
        "createacct-submit": "ନିଜର ନୂଆ ଖାତାଟିଏ ଖୋଲନ୍ତୁ",
        "createacct-another-submit": "ଆଉ ଏକ ଖାତା ଖୋଲନ୍ତୁ",
        "createacct-benefit-heading": "{{SITENAME}} ଆପଣଙ୍କ ଭଳି ଲୋକମାନଙ୍କ ଦ୍ୱାରା ଗଢ଼ା ।",
        "wrongpassword": "ଦିଆଯାଇଥିବା ପାସୱାର୍ଡ଼ଟି ଭୁଲ ଅଟେ  ।\nଦୟାକରି ଆଉଥରେ ଚେଷ୍ଟା କରନ୍ତୁ ।",
        "wrongpasswordempty": "ଦିଆଯାଇଥିବା ପାସବାର୍ଡ଼ଟି ଖାଲି ଛଡ଼ାଯାଇଛି ।\nଦୟାକରି ଆଉଥରେ ଚେଷ୍ଟା କରନ୍ତୁ ।",
        "passwordtooshort": "ପାସୱାର୍ଡ଼ଟି ଅତି କମରେ {{PLURAL:$1|ଗୋଟିଏ ଅକ୍ଷର|$1ଟି ଅକ୍ଷର}}ର ହୋଇଥିବା ଲୋଡ଼ା ।",
+       "passwordtoolong": "ପସସ୍ୱାର୍ଡଟି {{PLURAL:$1|1 ଅକ୍ଷର|$1 ଅକ୍ଷରଗୁଡିକ}}ଠାରୁ ଅଧିକ ହୋଇ ପାରିବ ନାହିଁ ।",
        "password-name-match": "ଆପଣଙ୍କ ପାସୱାର୍ଡ଼ଟି ଆପଣଙ୍କ ଇଉଜର ନାମ ଠାରୁ ଅଲଗା ହେବା ଉଚିତ ।",
        "password-login-forbidden": "ଏହି ଇଉଜର ନାମ ଓ ପାସୱାର୍ଡ଼ର ବ୍ୟବହାରକୁ ବାରଣ କରାଯାଇଅଛି ।",
        "mailmypassword": "ପାସୱାର୍ଡ଼ଟି ରିସେଟ କରିବେ",
        "rcshowhideminor": "ଛୋଟମୋଟ ବଦଳ $1",
        "rcshowhideminor-show": "ଦେଖାଇବେ",
        "rcshowhideminor-hide": "ଲୁଚାଇବେ",
-       "rcshowhidebots": "ସ୍ୱୟଂଚାଳକ&nbsp;(Bot)&nbsp;ର&nbsp;ସମ୍ପାଦନା $1",
+       "rcshowhidebots": "$1 ବଟଗୁଡିକ",
        "rcshowhidebots-show": "ଦେଖାଇବେ",
        "rcshowhidebots-hide": "ଲୁଚାଇବେ",
        "rcshowhideliu": "ପଞ୍ଜୀକୃତ ସଭ୍ୟ $1",
        "rc-enhanced-expand": "ସବିଶେଷ ଦେଖାନ୍ତୁ",
        "rc-enhanced-hide": "ବେଶି କଥାସବୁ ଲୁଚାଇଦିଅ",
        "rc-old-title": "ପ୍ରକୃତରେ \"$1\" ଭାବେ ତିଆରି କରାଯାଇକଥିଲା",
-       "recentchangeslinked": "à¬\8fà¬\87ମାତà­\8dର à¬¬à¬¦à¬³à¬¾à¬¯à¬¾à¬\87ଥିବା à¬ªà­\83ଷà­\8dଠାର à¬²à¬¿à¬\99à­\8dà¬\95",
+       "recentchangeslinked": "ସମà­\8dପରà­\8dà¬\95ିତ à¬¬à¬¦à¬³",
        "recentchangeslinked-feed": "ସମ୍ପର୍କିତ ବଦଳ",
        "recentchangeslinked-toolbox": "ସମ୍ପର୍କିତ ବଦଳ",
        "recentchangeslinked-title": "\"$1\" ସହ ସମ୍ବନ୍ଧିତ ବଦଳ",
        "whatlinkshere": "ଏଠାରେ ଥିବା ଲିଙ୍କ",
        "whatlinkshere-title": "\"$1\" କୁ ପୃଷ୍ଠା ଲିଙ୍କ",
        "whatlinkshere-page": "ପୃଷ୍ଠା:",
-       "linkshere": "ଏହି ପୃଷ୍ଠା ସବୁ  '''[[:$1]]''' ସହ ଯୋଡା ଯାଇଅଛି:",
+       "linkshere": "ଏହି ପୃଷ୍ଠା ସବୁ  <strong>[[:$1]]</strong> ସହ ଯୋଡା ଯାଇଅଛି:",
        "nolinkshere": "'''[[:$1]]''' ସହିତ କୌଣସିଟି ପୃଷ୍ଠା ଯୋଡ଼ାଯାଇନାହିଁ ।",
        "nolinkshere-ns": "ବଛା ଯାଇଥିବା ନେମସ୍ପେସରେ '''[[:$1]]''' ନାଆଁ ସହ କୌଣସି ବି ପୃଷ୍ଠା ଯୋଡ଼ାଯାଇନାହିଁ ।",
        "isredirect": "ଆଉଥରେ ଫେରିବା ପୃଷ୍ଠା",
        "import-interwiki-history": "ଏହି ପୃଷ୍ଠା ନିମନ୍ତେ ସବୁଯାକ ସଂସ୍କରଣ ଇତିହାସ ନକଲ କରିନିଅନ୍ତୁ",
        "import-interwiki-templates": "ସବୁଯାକ ଛାଞ୍ଚ ଏହା ଭିତରେ ରଖିବେ",
        "import-interwiki-submit": "ଆମଦାନୀ",
-       "import-interwiki-namespace": "ଲକ୍ଷ ନେମସ୍ପେସ:",
-       "import-interwiki-rootpage": "ଲକ୍ଷସ୍ଥଳୀର ମୂଳ ପୃଷ୍ଠା(ଇଛାଧୀନ):",
        "import-upload-filename": "ଫାଇଲ ନାମ:",
        "import-comment": "ମତାମତ:",
        "importtext": "[[Special:Export|ରପ୍ତାନି ସୁବିଧା]] ବ୍ୟବହାର କରି ମୂଳ ଉଇକିରୁ ଫାଇଲଟି ରପ୍ତାନି କରନ୍ତୁ ।\nତାହାକୁ ଆପଣା କମ୍ପୁଟରରେ ସାଇତି ଏଠାରେ ଅପଲୋଡ଼ କରନ୍ତୁ ।",
        "tooltip-pt-mycontris": "ଆପଣଙ୍କ ଅବଦାନ",
        "tooltip-pt-login": "ଆପଣଙ୍କୁ ଲଗ-ଇନ କରିବାକୁ କୁହାଯାଉଅଛି ସିନା, ବାଧ୍ୟ କରାଯାଉନାହିଁ",
        "tooltip-pt-logout": "ଲଗଆଉଟ",
+       "tooltip-pt-createaccount": "ଆପଣଙ୍କୁ ଗୋଟେ ଖାତା ଖୋଲି ଲଗ ଇନ କରିବା ପାଇଁ ପ୍ରୋତ୍ସାହିତ କରାଯାଉଛି, ଏମିତିବି ଏହା କରିବା ନିତାନ୍ତ ଆବଶ୍ୟକ ନୁହେଁ ।",
        "tooltip-ca-talk": "ଏହି ପୃଷ୍ଠାଟି ଉପରେ ଆଲୋଚନା",
        "tooltip-ca-edit": "ଆପଣ ଏହି ପୃଷ୍ଠାଟିରେ ଅଦଳ ବଦଳ କରିପାରିବେ, ତେବେ ସାଇତିବା ଆଗରୁ ଦେଖଣା ଦେଖନ୍ତୁ ।",
        "tooltip-ca-addsection": "ନୂଆ ବିଭାଗଟିଏ ଆରମ୍ଭ କରିବେ",
        "tooltip-t-recentchangeslinked": "ଏହି ପୃଷ୍ଠା ସଙ୍ଗେ ଯୋଡ଼ା ଫରଦଗୁଡ଼ିକରେ ଏବେ ଏବେ କରାଯାଇଥିବା ଅଦଳବଦଳ",
        "tooltip-feed-rss": "ଏହି ପୃଷ୍ଠାଟି ପାଇଁ RSS ଫିଡ଼",
        "tooltip-feed-atom": "ଏହି ପୃଷ୍ଠାଟି ପାଇଁ ଆଟମ ଫିଡ଼",
-       "tooltip-t-contributions": "à¬\8fହି à¬\87à¬\89à¬\9cରà¬\99à­\8dà¬\95ର à¬¦à­\87à¬\87 à¬\95ରାଯାà¬\87ଥିବା à¬¸à¬¬à­\81ଯାà¬\95 à¬¦à¬¾à¬¨ à¬¦à­\87à¬\96ାà¬\87ବା",
+       "tooltip-t-contributions": "à¬\8fହି à¬\87à¬\89à¬\9cରà¬\99à­\8dà¬\95ର à¬¦à­\8dଵାରା à¬¹à­\8bà¬\87ଥିବା à¬¬à¬¦à¬³ à¬¤à¬¾à¬²à¬¿à¬\95ା",
        "tooltip-t-emailuser": "ଏହି ସଭ୍ୟଙ୍କୁ ଇ-ମେଲଟିଏ ପଠାଇବେ",
        "tooltip-t-upload": "ଫାଇଲ ଅପଲୋଡ଼ କରିବେ",
        "tooltip-t-specialpages": "ବିଶେଷ ପୃଷ୍ଠାମାନଙ୍କର ଏକ ତାଲିକା",
        "tooltip-ca-nstab-category": "ଶ୍ରେଣୀ ପୃଷ୍ଠାଟିକୁ ଦେଖାଇବେ",
        "tooltip-minoredit": "ଏହାକୁ ଏକ ସାମାନ୍ୟ ସମ୍ପାଦନା ଭାବେ ଗଣିବେ",
        "tooltip-save": "ବଦଳଗୁଡ଼ିକ ସାଇତିବେ",
-       "tooltip-preview": "ସାଇତିବା ଆଗରୁ ନିଜର ସମ୍ପାଦନା ପରଖିନିଅନ୍ତୁ!",
+       "tooltip-preview": "ଦà­\9fାà¬\95ରି à¬¸à¬¾à¬\87ତିବା à¬\86à¬\97ରà­\81 à¬¨à¬¿à¬\9cର à¬¸à¬®à­\8dପାଦନା à¬ªà¬°à¬\96ିନିà¬\85ନà­\8dତà­\81!",
        "tooltip-diff": "ଏହି ଲେଖାରେ ଆପଣ କରିଥିବା ବଦଳଗୁଡିକୁ ଦେଖନ୍ତୁ ।",
        "tooltip-compareselectedversions": "ଏହି ଫରଦର ଦୁଇଟି ବଛାଯାଇଥିବା ସଁକଳନକୁ ତଉଲିବା",
        "tooltip-watch": "ଆପଣଙ୍କ ଦେଖାତାଲିକାରେ ଏଇ ପୃଷ୍ଠାଟି ମିଶାଇବେ",
index a630011..b3b6c91 100644 (file)
        "import-interwiki-history": "Kopiuj całą historię edycji tej strony",
        "import-interwiki-templates": "Załącz wszystkie szablony",
        "import-interwiki-submit": "Importuj",
-       "import-interwiki-namespace": "Docelowa przestrzeń nazw:",
-       "import-interwiki-rootpage": "Docelowa strona główna (opcjonalna):",
        "import-upload-filename": "Nazwa pliku",
        "import-comment": "Komentarz:",
        "importtext": "Korzystając na źródłowej wiki z narzędzia [[Special:Export|eksportu]] wyeksportuj plik.\nZapisz go na swoim dysku, a następnie prześlij go tutaj.",
index 90a9efa..7c78c03 100644 (file)
        "import-interwiki-history": "د دې مخ د پېښليک ټولې بڼې لمېسل",
        "import-interwiki-templates": "ټولې کينډۍ نغاړل",
        "import-interwiki-submit": "رالېږدول",
-       "import-interwiki-namespace": "د موخې نوم-تشيال:",
        "import-upload-filename": "د دوتنې نوم:",
        "import-comment": "تبصره:",
        "import-revision-count": "$1 {{PLURAL:$1|بڼه|بڼې}}",
index 6fbc172..401f403 100644 (file)
        "import-interwiki-history": "Copiar todas as edições para esta página",
        "import-interwiki-templates": "Incluir todas as predefinições",
        "import-interwiki-submit": "Importar",
-       "import-interwiki-namespace": "Domínio de destino:",
-       "import-interwiki-rootpage": "Página raiz de destino (opcional):",
        "import-upload-filename": "Nome do arquivo:",
        "import-comment": "Comentário:",
        "importtext": "Por favor, exporte o arquivo do wiki de origem utilizando a página especial [[Special:Export|exportação de páginas]].\nSalve o arquivo no seu computador e importe-o aqui.",
index 2c28c8c..5d64a78 100644 (file)
        "import-interwiki-history": "Copiar todo o histórico de revisões desta página",
        "import-interwiki-templates": "Incluir todas as predefinições",
        "import-interwiki-submit": "Importar",
-       "import-interwiki-namespace": "Domínio de destino:",
-       "import-interwiki-rootpage": "Raiz da página de destino (opcional):",
        "import-upload-filename": "Nome do ficheiro:",
        "import-comment": "Comentário:",
        "importtext": "Exporte o ficheiro da wiki de origem utilizando a página especial [[Special:Export|exportação de páginas]].\nGrave o ficheiro no seu computador e importe-o aqui.",
index f4d1e40..a7b5524 100644 (file)
        "redirect-text": "Inside fieldset for [[Special:Redirect]]",
        "redirect-summary": "Shown at top of [[Special:Redirect]]",
        "redirect-submit": "Button label in [[Special:Redirect]].\n{{Identical|Go}}",
-       "redirect-lookup": "First field label in [[Special:Redirect]].\n\nFollowed by the select box which has the following options:\n* {{msg-mw|Redirect-user}}\n* {{msg-mw|Redirect-page}}\n* {{msg-mw|Redirect-revision}}\n* {{msg-mw|Redirect-file}}",
+       "redirect-lookup": "First field label in [[Special:Redirect]].\n\nFollowed by the select box which has the following options:\n* {{msg-mw|Redirect-user}}\n* {{msg-mw|Redirect-page}}\n* {{msg-mw|Redirect-revision}}\n* {{msg-mw|Redirect-file}}\n{{Identical|Lookup}}",
        "redirect-value": "Second field label in [[Special:Redirect]]\n{{Identical|Value}}",
        "redirect-user": "Description of lookup type for [[Special:Redirect]].\n{{Identical|User ID}}",
        "redirect-page": "Description of lookup type for [[Special:Redirect]].\n{{Identical|Page ID}}",
index 0295c66..8ce5c62 100644 (file)
        "import-interwiki-history": "Copiază toate versiunile istoricului acestei pagini",
        "import-interwiki-templates": "Includeți toate formatele",
        "import-interwiki-submit": "Importă",
-       "import-interwiki-namespace": "Transferă către spațiul de nume:",
-       "import-interwiki-rootpage": "Pagina rădăcină de destinație (opțional):",
        "import-upload-filename": "Nume fișier:",
        "import-comment": "Comentariu:",
        "importtext": "Vă rugăm să exportați fișierul din wikiul sursă folosind [[Special:Export|utilitarul de exportare]].\nSalvați-l pe calculatorul dumneavoastră și încărcați-l aici.",
index 71f0c18..ca615f0 100644 (file)
        "searchrelated": "colleghete",
        "searchall": "tutte",
        "showingresults": "Stoche a fazze vedè aqquà sotte {{PLURAL:$1|'''1''' resultete|'''$1''' resultete}} ca accumenzene cu #'''$2'''.",
+       "search-showingresults": "{{PLURAL:$4|Resultate <strong>$1</strong> de <strong>$3</strong>|Resultate <strong>$1 - $2</strong> de <strong>$3</strong>}}",
        "search-nonefound": "Non ge stonne resultete ca soddisfecene l'inderrogazione.",
        "powersearch-legend": "Ricerche avanzete",
        "powersearch-ns": "Cirche jndr'à le namespace:",
        "rcnotefrom": "Sotte {{PLURAL:$5|ste 'u cangiamende|stonne le cangiaminde}} da <strong>$3, $4</strong> ('nzigne a <strong>$1</strong> fatte vedè).",
        "rclistfrom": "Fà vedè le urteme cangiaminde partenne da $3 $2",
        "rcshowhideminor": "$1 cangiaminde stuèdeche",
+       "rcshowhideminor-hide": "Scunne",
        "rcshowhidebots": "$1 bot",
+       "rcshowhidebots-show": "Fà vedè",
        "rcshowhideliu": "$1 utinde reggistrate",
+       "rcshowhideliu-hide": "Scunne",
        "rcshowhideanons": "$1 utende scanusciute",
+       "rcshowhideanons-hide": "Scunne",
        "rcshowhidepatr": "$1 cangiaminde condrollete",
        "rcshowhidemine": "$1 cangiaminde mie",
+       "rcshowhidemine-hide": "Scunne",
        "rclinks": "Vide l'urteme $1 cangiaminde jndr'à l'urteme $2 sciurne<br />$3",
        "diff": "diff",
        "hist": "cunde",
        "import-interwiki-history": "Copie tutte 'a sotrie de le versiune de sta pàgene",
        "import-interwiki-templates": "Inglude tutte le template",
        "import-interwiki-submit": "'Mborte",
-       "import-interwiki-namespace": "Namespace de destinazione:",
-       "import-interwiki-rootpage": "Pàgena prengepàale de destinazione (opzionale):",
        "import-upload-filename": "Nome d'u file:",
        "import-comment": "Commende:",
        "importtext": "Pe piacere esporte 'u file da 'a Uicchi sorgende ausanne l'[[Special:Export|utilità de esportazione]].\nReggistrele sus a 'u combiuter tune e carechele aqquà.",
index 67e9d27..168125d 100644 (file)
        "protect-othertime": "Другое время:",
        "protect-othertime-op": "другое время",
        "protect-existing-expiry": "Текущее время окончания: $2, $3",
-       "protect-existing-expiry-infinity": "Текущее время окончания: бесконечно",
+       "protect-existing-expiry-infinity": "Текущее время окончания: бессрочно",
        "protect-otherreason": "Другая причина/дополнение:",
        "protect-otherreason-op": "Другая причина",
        "protect-dropdown": "* Типовые причины защиты\n** частый вандализм\n** чрезмерный спам\n** непродуктивная война правок\n** популярная страница",
        "import-interwiki-history": "Копировать всю историю изменений этой страницы",
        "import-interwiki-templates": "Включить все шаблоны",
        "import-interwiki-submit": "Импортировать",
-       "import-interwiki-namespace": "Целевое пространство имён:",
-       "import-interwiki-rootpage": "Корневая страница (необязательно):",
        "import-upload-filename": "Имя файла:",
        "import-comment": "Примечание:",
        "importtext": "Пожалуйста, экспортируйте страницу из исходной вики, используя [[Special:Export|соответствующий инструмент]]. Сохраните файл на диск, а затем загрузите его сюда.",
        "pageinfo-protect-cascading-yes": "Да",
        "pageinfo-protect-cascading-from": "Каскадная защита от",
        "pageinfo-category-info": "Информация о категории",
+       "pageinfo-category-total": "Общее число членов",
        "pageinfo-category-pages": "Количество страниц",
        "pageinfo-category-subcats": "Количество подкатегорий",
        "pageinfo-category-files": "Количество файлов",
index 9cdc9f0..d89cf62 100644 (file)
        "import-interwiki-history": "एतत्पुटार्थं सर्वेतिहासान् पुनरावृत्तीः च प्रकृतीः करोतु ।",
        "import-interwiki-templates": "प्राकृतीः अनर्भावयतु ।",
        "import-interwiki-submit": "आयातं करोतु ।",
-       "import-interwiki-namespace": "लक्षितनामस्थानानि ।",
-       "import-interwiki-rootpage": "लक्षितमूलपुटम् । (ऐच्छिकम्)",
        "import-upload-filename": "सञ्चिकानाम",
        "import-comment": "टिप्पणी:",
        "importtext": "[[Special:Export|export utility]] एतेनानुबन्धेन स्रोतविकितः सञ्चिकानां निर्यातं करोतु । भवदीयसङ्गणके सुरक्ष्य अत्र उत्तारयतु ।",
        "logentry-rights-rights": "$1 इत्ययं $3 इत्यस्य समूहसदस्यतां $4 इत्यतः परिवर्त्य $5 इत्यकरोत्",
        "logentry-rights-rights-legacy": "$1, $3 इत्यस्मै समूहसदस्यतां पर्यवर्तयत्",
        "logentry-rights-autopromote": "$1 इत्ययं स्वचालितरूपेण $4 इत्यतः $5 इति यावत् पदोन्नतः",
+       "logentry-upload-upload": "$1 इत्यनेन $3 इत्येषा सञ्चिका उपारोहता ।",
        "rightsnone": "(कतम)",
        "revdelete-summary": "सम्पादनसांक्षेपिक",
        "feedback-adding": "पृष्ठे प्रतिस्पन्दः योजनीयः ...",
index 9b286de..86f7d25 100644 (file)
        "import-interwiki-history": "Сирэй туох баар историятын көһөрөргө",
        "import-interwiki-templates": "Бары халыыптары киллэр",
        "import-interwiki-submit": "Импортаа",
-       "import-interwiki-namespace": "Бу аат далыгар көһөрөргө:",
-       "import-interwiki-rootpage": "Тирэх сирэйэ (булгуччута суох)",
        "import-upload-filename": "Билэ аата:",
        "import-comment": "Хос быһаарыы:",
        "importtext": "Сирэйи [[Special:Export|экспорт үнүстүрүмүөнүн]] көмөтүнэн бастакы биикиттэн экспортаа. \nБилэни бастаан бэйэҥ көмпүүтэргэр суруй, онтон манна көһөр.",
index 11d3f2f..4a7696d 100644 (file)
        "import-interwiki-history": "Copia la ntera cronoluggìa di sta pàggina",
        "import-interwiki-templates": "Includi tutti li template",
        "import-interwiki-submit": "Mporta",
-       "import-interwiki-namespace": "Trasfirisci li pàggini ntô namespace:",
-       "import-interwiki-rootpage": "Pàggina ràdica di distinazzioni (facultativu):",
        "import-upload-filename": "Nomu file:",
        "import-comment": "Oggettu:",
        "importtext": "Pi favuri, esporta lu file dâ wiki surgenti adupirannu [[Special:Export|a funziunalità d'espurtazzioni]].\nSàrvalu supra a' lu tò computer e carrìcalu ccà.",
index 6056a1d..c337c98 100644 (file)
        "import-interwiki-history": "Copie aw histerie reveesions fer this page",
        "import-interwiki-templates": "Incluid aw templates",
        "import-interwiki-submit": "Import",
-       "import-interwiki-namespace": "Desteenation namespace:",
-       "import-interwiki-rootpage": "Desteenation ruit page (aen optie):",
        "import-upload-filename": "Filename:",
        "import-comment": "Comment:",
        "importtext": "Please export the file fae the soorce wiki uising the [[Special:Export|export utilitie]].\nHain it til yer computer n uplaid it here.",
index cae219a..abe5406 100644 (file)
        "import-interwiki-history": "Taariki fillawey kul bere moɲoo woo se",
        "import-interwiki-templates": "Leetey kul dam",
        "import-interwiki-submit": "Dam",
-       "import-interwiki-namespace": "Toodoo maafarru:",
-       "import-interwiki-rootpage": "Toodoo linji moo (suuba-haya):",
        "import-upload-filename": "Tukumaa:",
        "import-comment": "Daara:",
        "importtext": "Tukoo fattandi ka hum aššil wiki ga nda [[Special:Export|fattandi goyjinaa]].\nA gaabu war ordinateroo ga nd'a zijandi ne.",
index b1eeec0..44ea089 100644 (file)
@@ -29,7 +29,8 @@
                        "아라",
                        "Matthew Greg",
                        "Ата",
-                       "Macofe"
+                       "Macofe",
+                       "TomášPolonec"
                ]
        },
        "tog-underline": "Podčiarkovať odkazy:",
        "october-date": "$1. októbra",
        "november-date": "$1. novembra",
        "december-date": "$1. decembra",
-       "pagecategories": "{{PLURAL:$1|Kategória|Kategórie|Kategórie}}",
+       "pagecategories": "{{PLURAL:$1|Kategória|Kategórie|Kategórií}}",
        "category_header": "Stránky v kategórii „$1“",
        "subcategories": "Podkategórie",
        "category-media-header": "Multimediálne súbory v kategórii „$1“",
        "personaltools": "Osobné nástroje",
        "articlepage": "Zobraziť stránku",
        "talk": "Diskusia",
-       "views": "Zobrazení",
+       "views": "Zobrazenia",
        "toolbox": "Nástroje",
        "userpage": "Zobraziť stránku používateľa",
        "projectpage": "Zobraziť projektovú stránku",
        "currentrev": "Aktuálna verzia",
        "currentrev-asof": "Aktuálna revízia z $1",
        "revisionasof": "Verzia zo dňa a času $1",
-       "revision-info": "Revízia z $1; $2",
+       "revision-info": "Verzia z $1, ktorú {{GENDER:$6|vytvoril|vytvorila}} $2$7",
        "previousrevision": "← Staršia verzia",
        "nextrevision": "Novšia verzia →",
        "currentrevisionlink": "Aktuálna úprava",
        "showhideselectedversions": "Zobraziť/skryť vybrané revízie",
        "editundo": "vrátiť",
        "diff-empty": "(Žiaden rozdiel)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Jedna medziľahlá úprava|$1 medziľahlé úpravy|$1 medziľahlých úprav}} od rovnakého používateľa.)",
        "diff-multi-manyusers": "({{PLURAL:$1|$1 medziľahlá revízia|$1 medziľahlé revízie|$1 medziľahlých revízií}} od viac ako {{PLURAL:$2|$2 používateľa|$2 používateľov}} {{PLURAL:$1|nie je zobrazená|nie sú zobrazené|nie je zobrazených}})",
        "difference-missing-revision": "{{PLURAL:$2|$2 revízia|$2 revízie|$2 revízií}} pre požadovaný rozdiel ($1) {{PLURAL:$2|neexistuje|neexistujú|neexistuje}}.\n\nPravdepodobne ste nasledovali zastaraný odkaz na rozdiel revízií, z ktorých niektorá bola medzičasom odstránená.\nPodrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname zmazaní].",
        "searchresults": "Výsledky vyhľadávania",
        "searchrelated": "súvisiace",
        "searchall": "všetko",
        "showingresults": "Nižšie {{PLURAL:$1|je zobrazený jeden výsledok|sú zobrazené '''1''' výsledky|je zobrazených '''$1''' výsledkov}}, počnúc od  #<b>$2</b>.",
+       "search-showingresults": "{{PLURAL:$4|Výsledok <strong>$1</strong> z <strong>$3</strong>|Výsledky <strong>$1 - $2</strong> z <strong>$3</strong>}}",
        "search-nonefound": "Vyhľadávanie nenašlo žiadne výsledky.",
        "powersearch-legend": "Pokročilé hľadanie",
        "powersearch-ns": "Hľadať v menných priestoroch:",
        "import-interwiki-history": "Skopírovať všetky historické revízie tejto stránky",
        "import-interwiki-templates": "Vložiť všetky šablóny",
        "import-interwiki-submit": "Importovať",
-       "import-interwiki-namespace": "Cieľový menný priestor:",
-       "import-interwiki-rootpage": "Koreňová stránka cieľa (nepovinné):",
        "import-upload-filename": "Názov súboru:",
        "import-comment": "komentár:",
        "importtext": "Prosím, exportujte súbor zo zdrojovej wiki použitím [[Special:Export|nástroja na export]].\nUložte ho na svoj disk a nahrajte sem.",
        "tooltip-pt-mycontris": "Zoznam vašich príspevkov",
        "tooltip-pt-login": "Odporúčame vám prihlásiť sa, nie je to však povinné.",
        "tooltip-pt-logout": "Odhlásiť",
+       "tooltip-pt-createaccount": "Odporúčame vytvoriť si vlastný účet a prihlásiť sa, nie je to však povinné.",
        "tooltip-ca-talk": "Diskusia o obsahu stránky",
        "tooltip-ca-edit": "Môžete upravovať túto stránku. Prosím, pred uložením použite tlačidlo Zobraziť náhľad.",
        "tooltip-ca-addsection": "Začať novú sekciu",
        "tooltip-search": "Vyhľadávanie na {{GRAMMAR:datív|{{SITENAME}}}}",
        "tooltip-search-go": "Prejsť na stránku s presne takýmto názvom, ak existuje",
        "tooltip-search-fulltext": "Hľadať tento text na stránkach",
-       "tooltip-p-logo": "Navštívte Hlavnú stránku",
+       "tooltip-p-logo": "Navštív Hlavnú stránku",
        "tooltip-n-mainpage": "Navštíviť Hlavnú stránku",
        "tooltip-n-mainpage-description": "Navštíviť hlavnú stránku",
        "tooltip-n-portal": "O projekte, ako môžete prispieť, kde čo nájsť",
        "tooltip-n-currentevents": "Aktuálne udalosti a ich pozadie",
-       "tooltip-n-recentchanges": "Zoznam posledných úprav na wiki.",
+       "tooltip-n-recentchanges": "Zoznam posledných úprav na wiki",
        "tooltip-n-randompage": "Zobraziť náhodnú stránku",
        "tooltip-n-help": "Miesto, kde sa môžete dozvedieť",
        "tooltip-t-whatlinkshere": "Zoznam všetkých wiki stránok, ktoré sem odkazujú",
        "metadata-help": "Tento súbor obsahuje ďalšie informácie, pravdepodobne pochádzajúce z digitálneho fotoaparátu či skenera, ktorý ho vytvoril alebo digitalizoval. Ak bol súbor zmenený, niektoré podrobnosti sa nemusia plne zhodovať so zmeneným súborom.",
        "metadata-expand": "Zobraziť detaily EXIF",
        "metadata-collapse": "Skryť detaily EXIF",
-       "metadata-fields": "Metadáta obrázka uvedené v tejto správe budú zahrnuté na stránke obrázka, keď je tabuľka metadát zbalená.\nOstatné budú predvolene skryté.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "Metadáta obrázka uvedené v tejto správe budú zahrnuté na stránke obrázka, keď bude tabuľka metadát zbalená.\nOstatné budú predvolene skryté.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "Šírka",
        "exif-imagelength": "Výška",
        "exif-bitspersample": "Bitov na zložku",
        "logentry-rights-rights": "$1 zmenil členstvo $3 v skupinách z $4 na $5",
        "logentry-rights-rights-legacy": "$1 zmenil členstvo $3 v skupinách",
        "logentry-rights-autopromote": "$1 bol automaticky povýšený z $4 na $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|pridal|pridala}} $3",
        "rightsnone": "(žiadne)",
        "revdelete-summary": "zhrnutie úprav",
        "feedback-adding": "Pridáva sa komentár na stránku...",
index 1f7efc7..c8e3716 100644 (file)
        "import-interwiki-history": "Kopiraj vse dosedanje redakcije te strani",
        "import-interwiki-templates": "Vključi vse predloge",
        "import-interwiki-submit": "Uvozi",
-       "import-interwiki-namespace": "Prenesi strani v imenski prostor:",
-       "import-interwiki-rootpage": "Ciljna korenska stran (neobvezno):",
+       "import-mapping-default": "Uvozi na privzeta nahajališča",
+       "import-mapping-namespace": "Uvozi v imenski prostor:",
+       "import-mapping-subpage": "Uvozi kot podstrani naslednje strani:",
        "import-upload-filename": "Ime datoteke:",
        "import-comment": "Komentar:",
        "importtext": "Prosimo, izvozite datoteko z izvornega wikija s pomočjo [[Special:Export|orodja za izvoz]].\nShranite jo na vaš računalnik in naložite tukaj.",
index 79b7d88..0f4a682 100644 (file)
        "notextmatches": "Ниједан текст странице не одговара",
        "prevn": "претходних {{PLURAL:$1|$1}}",
        "nextn": "следећих {{PLURAL:$1|$1}}",
+       "prev-page": "претходна страница",
+       "next-page": "следећа страница",
        "prevn-title": "$1 {{PLURAL:$1|претходни  резултат|претходна резултата|претходних резултата}}",
        "nextn-title": "$1 {{PLURAL:$1|следећи резултат|следећа резултата|следећих резултата}}",
        "shown-title": "Прикажи $1 {{PLURAL:$1|резултат|резултата|резултата}} по страници",
        "import-interwiki-history": "Копирај све верзије историје за ову страницу",
        "import-interwiki-templates": "Укључи све шаблоне",
        "import-interwiki-submit": "Увези",
-       "import-interwiki-namespace": "Одредишни именски простор:",
-       "import-interwiki-rootpage": "Одредишна основна страница (необавезно):",
        "import-upload-filename": "Назив датотеке:",
        "import-comment": "Коментар:",
        "importtext": "Извезите датотеку с изворног викија користећи [[Special:Export|извоз]].\nСачувајте је на рачунар и пошаљите овде.",
index db56461..17bdc05 100644 (file)
        "import-interwiki-history": "Salin sakabéh vérsi jujutan pikeun ieu kaca",
        "import-interwiki-templates": "Kaasup sakabéh citakan",
        "import-interwiki-submit": "Impor",
-       "import-interwiki-namespace": "Spasi ngaran tujuan:",
        "import-upload-filename": "Ngaran berkas:",
        "import-comment": "Ringkesan:",
        "importtext": "Mangga ékspor koropakna ti sumber nu dipaké ku wiki migunakeun fungsi Special:Export, simpen na piringan anjeun, teras muatkeun di dieu.",
index ab0b0da..8f229b0 100644 (file)
        "import-interwiki-history": "Kopiera hela versionshistoriken för denna sida",
        "import-interwiki-templates": "Inkludera alla mallar",
        "import-interwiki-submit": "Importera",
-       "import-interwiki-namespace": "Målnamnrymd:",
-       "import-interwiki-rootpage": "Destinationens grundsida (valfri):",
        "import-upload-filename": "Filnamn:",
        "import-comment": "Kommentar:",
        "importtext": "Var god exportera filen från ursprungs-wikin med hjälp av [[Special:Export|exporteringsverktyget]].\nSpara den på din dator och ladda upp den här.",
        "tooltip-pt-preferences": "Dina inställningar",
        "tooltip-pt-watchlist": "Listan över sidor du bevakar för ändringar",
        "tooltip-pt-mycontris": "Lista över dina bidrag",
-       "tooltip-pt-login": "Du uppmuntras att logga in, men det är inte nödvändigt",
+       "tooltip-pt-login": "Inloggning ger tillgång till fler funktioner, och kan vara nödvändigt, för den som vill redigera sidor.",
        "tooltip-pt-logout": "Logga ut",
        "tooltip-pt-createaccount": "Du uppmuntras att skapa ett konto och logga in, men det är inte obligatoriskt",
        "tooltip-ca-talk": "Diskussion om innehållssidan",
index c4be101..812277b 100644 (file)
        "import-interwiki-text": "Wybjer wiki i nmjano zajty do importowańo.\nDaty a tyž mjana autorůw bydům zachowane.\nWšyjstke uoperacyje importu transwiki sům uodnotowywane w [[Special:Log/import|rejeře importu]].",
        "import-interwiki-history": "Kopjuj couko historja sprowjyń tyi zajty",
        "import-interwiki-submit": "Importuj",
-       "import-interwiki-namespace": "Docelowo przestrzyń mjan:",
        "import-upload-filename": "Mjano plika:",
        "import-comment": "Kůmyntorz:",
        "importtext": "Używajůnc werkcojga [[Special:Export|eksportuj]] wyeksportuj plik ze zdrzůdłowyj wiki, naszkryflej go na swojym dysku, a potym wćepńij go tukej.",
index 2cfe460..6e015f6 100644 (file)
@@ -37,7 +37,8 @@
                        "Kalyanasundar",
                        "தமிழ்த்தம்பி",
                        "Macofe",
-                       "AntanO"
+                       "AntanO",
+                       "கலைவாணன்"
                ]
        },
        "tog-underline": "இணைப்புகளுக்கு அடிக்கோடிடு",
        "action-editmywatchlist": "உங்கள் கவனிப்பு பட்டியலை தொகு",
        "action-viewmywatchlist": "உங்கள் கவனிப்பு பட்டியலை பார்",
        "nchanges": "{{PLURAL:$1|ஓர் மாற்றம்|$1 மாற்றங்கள்}}",
+       "enhancedrc-history": "வரலாறு",
        "recentchanges": "அண்மைய மாற்றங்கள்",
        "recentchanges-legend": "அண்மைய மாற்றங்களின் தேர்வுகள்",
        "recentchanges-summary": "இந்த விக்கிக்கு மிக அண்மையில் செய்யப்பட்ட மாற்றங்களை, இந்தப் பக்கத்தில் காணலாம்.",
        "recentchanges-label-minor": "இது ஒரு சிறு தொகுப்பு",
        "recentchanges-label-bot": "இந்த தொகுப்பானது ஒரு தானியங்கியால் செய்யப்பட்டதாகும்",
        "recentchanges-label-unpatrolled": "இந்த  தொகுப்பு  இன்னும் ரோந்திடப்படவில்லை",
-       "recentchanges-legend-newpage": "$1 - புதிய பக்கம்",
+       "recentchanges-label-plusminus": "இத்தனை பைட்டுகளுக்கு பக்கத்தின் அளவு மாற்றப்பட்டுள்ளது",
+       "recentchanges-legend-heading": "'''குறியீட்டு விளக்கம்:'''",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|புதிய பக்கங்கள் பட்டியலையும்]] காணவும்)",
        "rcnotefrom": "கீழே காணப்படுவது '''$2''' இலிருந்து செய்யப்பட்ட மாற்றங்களாகும் ('''$1''' வரைக் காட்டப்பட்டுள்ளது).",
        "rclistfrom": "$3 $2 தொடக்கம் செய்யப்பட்ட புதிய மாற்றங்களைக் காட்டவும்",
        "rcshowhideminor": "சிறிய தொகுப்புகளை $1",
+       "rcshowhideminor-hide": "மறை",
        "rcshowhidebots": "தானியங்கிகளை $1",
-       "rcshowhideliu": "புகுபதிகை செய்த பயனர்களை $1",
+       "rcshowhidebots-show": "காட்டு",
+       "rcshowhideliu": "$1 பதிவு செய்துள்ள பயனர்கள்",
+       "rcshowhideliu-hide": "மறை",
        "rcshowhideanons": "அடையாளம் காட்டாத பயனர்களை $1",
+       "rcshowhideanons-hide": "மறை",
        "rcshowhidepatr": "$1 கவனிக்கப்பட்ட தொகுப்புக்கள்",
        "rcshowhidemine": "என் தொகுப்புகளை $1",
+       "rcshowhidemine-hide": "மறை",
        "rclinks": "கடைசி $2 நாட்களில் கடைசி $1 மாற்றங்களைக் காட்டு.<br />$3",
        "diff": "வேறுபாடு",
        "hist": "வரலாறு",
        "import-interwiki-history": "இப்பக்கத்தின் அனைத்து வரலாற்றுப் பதிப்புகளையும் நகலெடு",
        "import-interwiki-templates": "அனைத்து வார்ப்புருக்களையும் சேர்",
        "import-interwiki-submit": "இறக்கு",
-       "import-interwiki-namespace": "பின்வரும் பெயர்வெளிக்கு மாற்று:",
+       "import-mapping-default": "வழக்கமான இடங்களுக்கு இறக்குமதி செய்யவும்",
+       "import-mapping-namespace": "ஏதேனும் ஓர் பெயர்வெளிக்கு இறக்குமதி செய்யவும்:",
+       "import-mapping-subpage": "பின் வரும் பக்கத்தை துணை பக்கங்களாக இறக்குமதி செய்யவும்:",
        "import-upload-filename": "கோப்புப்பெயர்:",
        "import-comment": "கருத்து:",
        "importtext": "தயவுசெய்து மூல விக்கியிலிருந்து [[Special:Export|ஏற்றுமதி அம்சத்தைப்]] பயன்படுத்தி கோப்பை ஏற்றுமதி செய்யவும்.\nஉங்கள் கணினியில் இதை சேமித்து பிறகு அக்கோப்பை இங்கே பதிவேற்றவும்.",
index ebcdbfb..80b656d 100644 (file)
        "revdelete-submit": "ఎంచుకున్న {{PLURAL:$1|కూర్పుకు|కూర్పులకు}} ఆపాదించు",
        "revdelete-success": "కూర్పు కనబడే విధానాన్ని జయప్రదంగా తాజాకరించాం.",
        "revdelete-failure": "కూర్పు కనబడే పద్ధతిని తాజాపరచలేకపోయాం:\n$1",
-       "logdelete-success": "à°\98à°\9fà°¨ à°\95నబడà±\87 à°µà°¿à°§à°¾à°¨à°¾à°¨à±\8dని à°\9cయపà±\8dà°°à°¦à°\82à°\97à°¾ à°¸à±\86à°\9fà±\8d à°\9aà±\87à°¸ాం.",
+       "logdelete-success": "à°\98à°\9fà°¨ à°\95నబడà±\87 à°µà°¿à°§à°¾à°¨à°¾à°¨à±\8dని à°\9cయపà±\8dà°°à°¦à°\82à°\97à°¾ à°\85మరà±\8dà°\9aాం.",
        "logdelete-failure": "'''చిట్టా కనబడే పద్ధతిని అమర్చలేకపోయాం:'''\n$1",
        "revdel-restore": "దృశ్యతని మార్చు",
        "pagehist": "పేజీ చరిత్ర",
        "import-interwiki-history": "ఈ పేజీ యొక్క అన్ని చారిత్రక కూర్పులను కాపీ చెయ్యి",
        "import-interwiki-templates": "అన్ని మూసలను ఉంచు",
        "import-interwiki-submit": "దిగుమతించు",
-       "import-interwiki-namespace": "లక్ష్యిత నేంస్పేసు:",
-       "import-interwiki-rootpage": "గమ్యస్థానపు మూలపు పేజీ (ఐచ్ఛికం):",
        "import-upload-filename": "పైలుపేరు:",
        "import-comment": "వ్యాఖ్య:",
        "importtext": "[[Special:Export|ఎగుమతి ఉపకరణాన్ని]] ఉపయోగించి, ఈ ఫైలుని  మూల వికీ నుంచి ఎగుమతి చెయ్యండి.\nదాన్ని మీ కంప్యూటర్లో భద్రపరచి, ఆపై ఇక్కడికి ఎక్కించండి.",
index 076825a..a337bdd 100644 (file)
        "import-interwiki-text": "Як вики ва як номи саҳифаро интихоб кунед, то иттилоот аз он ворид шавад.\nТаърихи нусхаҳо ва номҳои вироишкунандагон сабт хоҳанд монд.\nИттилооти марбут ба ворид кардани саҳифаҳо дар [[Special:Log/import|гузоришҳои воридот]] сабт хоҳад шуд.",
        "import-interwiki-history": "Тамоми таърихи нусхаҳои ин саҳифа интиқол дода шавад",
        "import-interwiki-submit": "Ворид шавад",
-       "import-interwiki-namespace": "Фазои номи мақсад:",
        "import-upload-filename": "Номи парванда:",
        "import-comment": "Тавзеҳ:",
        "importtext": "Лутфан парвандаро аз вики манбаъ содир кунед, аз тариқи саҳифа [[Special:Export|абзори содирот]].\nПас онро ба компютератон захира карда инҷо боргузорӣ кунед.",
index 987b155..d4a2122 100644 (file)
        "import-interwiki-history": "คัดลอกประวัติทั้งหมดในหน้านี้",
        "import-interwiki-templates": "รวมแม่แบบทั้งหมด",
        "import-interwiki-submit": "นำเข้า",
-       "import-interwiki-namespace": "เนมสเปซปลายทาง:",
        "import-upload-filename": "ชื่อไฟล์:",
        "import-comment": "ความเห็น:",
        "importtext": "กรุณาส่งออกไฟล์จากวิกิต้นทางโดยใช้[[Special:Export|เครื่องมือส่งออก]]\nบันทึกลงคอมพิวเตอร์ของคุณ และอัปโหลดที่นี่",
index 63528e3..9e3cf8f 100644 (file)
@@ -71,7 +71,9 @@
                        "Ayrıntılı Bilgi",
                        "Gokalpselamet",
                        "Macofe",
-                       "Nighteagle2000"
+                       "Nighteagle2000",
+                       "Watermelon juice",
+                       "Ömer Berkay"
                ]
        },
        "tog-underline": "Bağlantıların altını çiz:",
        "wrongpassword": "Parolayı yanlış girdiniz. Lütfen tekrar deneyiniz.",
        "wrongpasswordempty": "Boş parola girdiniz. Lütfen tekrar deneyiniz.",
        "passwordtooshort": "Parolalar en az {{PLURAL:$1|1 karakter|$1 karakter}} uzunluğunda olmalı.",
+       "passwordtoolong": "Parolalar en az {{PLURAL:$1|1 karakter|$1 karakter}} uzunluğunda olmalı.",
        "password-name-match": "Şifreniz kullanıcı adınızdan farklı olmalıdır.",
        "password-login-forbidden": "Bu kullanıcı adı ve şifre kullanımı yasaklanmıştır",
        "mailmypassword": "Parolayı sıfırla",
        "missingcommentheader": "'''Hatırlatma:''' Bu yorum için bir konu/başlık sunmadınız. Eğer \"{{int: savearticle}}\" tuşuna tekrar basarsanız, değişikliğiniz konu/başlık olmadan kaydedilecektir.",
        "summary-preview": "Ön izleme özeti:",
        "subject-preview": "Konu/Başlık ön izlemesi:",
+       "previewerrortext": "Yaptığınız değişikliklerin önizlemesi sırasında bir hata oluştu.",
        "blockedtitle": "Kullanıcı erişimi engellendi.",
        "blockedtext": "'''Kullanıcı adı veya IP adresiniz engellenmiştir.'''\n\nSizi engelleyen hizmetli: $1.<br />\nEngelleme sebebi: ''$2''.\n\n* Engellenmenin başlangıcı: $8\n* Engellenmenin bitişi: $6\n* Engellenme süresi: $7\n\nBelirtilen nedene göre engellenmenizin uygun olmadığını düşünüyorsanız, $1 ya da başka bir [[{{MediaWiki:Grouppage-sysop}}|hizmetli]] ile bu durumu görüşebilirsiniz. [[Special:Preferences|Tercihlerim]] kısmında geçerli bir e-posta adresi girmediyseniz \"Kullanıcıya e-posta gönder\" özelliğini kullanamazsınız, tercihlerinize e-posta adresinizi eklediğinizde e-posta gönderme hakkına sahip olacaksınız.\n<br />Şu anki IP adresiniz $3, engellenme numaranız #$5.\n<br />Bir hizmetliden durumunuz hakkında bilgi almak istediğinizde veya herhangi bir sorguda bu bilgiler gerekecektir, lütfen not ediniz.",
        "autoblockedtext": "IP adresiniz otomatik olarak engellendi, çünkü $1 tarafından engellenmiş başka bir kullanıcı tarafından kullanılmaktaydı.\nBelirtilen sebep şudur:\n\n:''$2''\n\n* Engellemenin başlangıcı: $8\n* Engellemenin bitişi: $6\n* Bloke edilmesi istenen: $7\n\nEngelleme hakkında tartışmak için $1 ile veya diğer [[{{MediaWiki:Grouppage-sysop}}|hizmetlilerden]] biriyle irtibata geçebilirsiniz.\n\nNot, [[Special:Preferences|kullanıcı tercihlerinize]] geçerli bir e-posta adresi kaydetmediyseniz  \"kullanıcıya e-posta gönder\" özelliğinden faydalanamayabilirsiniz ve bu özelliği kullanmaktan engellenmediniz.\n\nŞu anki IP numaranız $3 ve engellenme ID'niz #$5.\nLütfen yapacağınız herhangi bir sorguda yukarıdaki bütün detayları bulundurun.",
        "prefs-rc": "Son değişiklikler",
        "prefs-watchlist": "İzleme listesi",
        "prefs-editwatchlist": "İzleme listesini düzenle",
-       "prefs-editwatchlist-label": "İzleme listesinizdeki girişleri düzenle",
-       "prefs-editwatchlist-edit": "İzleme listesini gör ve düzenle",
+       "prefs-editwatchlist-label": "İzleme listenizdeki girişleri düzenleyin:",
+       "prefs-editwatchlist-edit": "İzleme listenizdeki başlıkları görüntüleyin ve düzenleyin",
        "prefs-editwatchlist-raw": "Ham izleme listesini düzenle",
-       "prefs-editwatchlist-clear": "İzleme listesini temizle",
+       "prefs-editwatchlist-clear": "İzleme listenizi temizleyin",
        "prefs-watchlist-days": "İzleme listesinde görüntülenecek gün sayısı:",
        "prefs-watchlist-days-max": "en fazla $1 {{PLURAL:$1|gün|gün}}",
        "prefs-watchlist-edits": "Genişletilmiş izleme listesinde gösterilecek değişiklik sayısı:",
        "listgrouprights-removegroup-self": "Kendi hesabından {{PLURAL:$2|grup|grupları}} çıkarabilir: $1",
        "listgrouprights-addgroup-self-all": "Kendi hesabına tüm grupları ekleyebilir",
        "listgrouprights-removegroup-self-all": "Kendi hesabından tüm grupları çıkarabilir",
+       "listgrouprights-namespaceprotection-header": "Ad kısıtlamaları",
+       "listgrouprights-namespaceprotection-namespace": "Ad alanı",
        "listgrouprights-namespaceprotection-restrictedto": "Kullanıcının değişiklik yapmasına izin veren hak(lar)",
+       "trackingcategories": "Eşleşen kategoriler",
+       "trackingcategories-name": "Mesaj Duvarı",
        "broken-file-category-desc": "Sayfa bozuk dosya bağlantısı (mevcut olmayan bir dosyayı kullanmaya çalışan bağlantı) içeriyor.",
        "trackingcategories-nodesc": "Açıklama yok.",
        "trackingcategories-disabled": "Kategori devre dışı",
        "sp-contributions-newbies-sub": "Yeni kullanıcılar için",
        "sp-contributions-newbies-title": "Yeni hesaplar için kullanıcı katkıları",
        "sp-contributions-blocklog": "Engel kaydı",
+       "sp-contributions-suppresslog": "Silinen kullanıcı katkıları",
        "sp-contributions-deleted": "silinen kullanıcı katkıları",
        "sp-contributions-uploads": "yüklenenler",
        "sp-contributions-logs": "kayıtlar",
        "unblocked": "[[User:$1|$1]] - engelleme kaldırıldı",
        "unblocked-range": "$1 engeli kaldırıldı",
        "unblocked-id": "$1 engeli çıkarıldı",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] engellenmiştir.",
        "blocklist": "Engellenmiş kullanıcılar",
        "ipblocklist": "Engellenmiş kullanıcılar",
        "ipblocklist-legend": "Engellenen kullanıcı ara",
        "import-interwiki-history": "Sayfanın tüm geçmiş sürümlerini kopyala",
        "import-interwiki-templates": "Tüm şablonları içer",
        "import-interwiki-submit": "Import",
-       "import-interwiki-namespace": "Hedef ad alanı:",
-       "import-interwiki-rootpage": "Hedeflenen kaynak sayfası (isteğe bağlı):",
        "import-upload-filename": "Dosya adı:",
        "import-comment": "Yorum:",
        "importtext": "Lütfen dosyayı [[Special:Export|dışa aktarım yardımcı yazılımıyla]] kaynak vikiden dışa aktarın.\nBilgisayarınıza kaydedin ve buraya yükleyin.",
        "pageinfo-protect-cascading-yes": "Evet",
        "pageinfo-protect-cascading-from": "Korumalar üzerinden geçiş",
        "pageinfo-category-info": "Kategori bilgileri",
+       "pageinfo-category-total": "Üye sayısı",
        "pageinfo-category-pages": "Sayfa sayısı",
        "pageinfo-category-subcats": "Alt kategori sayısı",
        "pageinfo-category-files": "Dosya sayısı",
        "patrol-log-page": "Kontrol kaydı",
        "patrol-log-header": "Bu gözlenmiş revizyonların günlüğüdür.",
        "log-show-hide-patrol": "Gözetim günlüğünü $1",
+       "log-show-hide-tag": "$1 Etiket günlüğü",
        "deletedrevision": "$1 sayılı eski sürüm silindi.",
        "filedeleteerror-short": "$1 dosyanın silinmesinde hata oldu",
        "filedeleteerror-long": "Dosyayı silerken hatalarla karşılaşıldı:\n\n$1",
        "tags-tag": "Etiket adı",
        "tags-display-header": "Değişiklik listelerindeki görünüm",
        "tags-description-header": "Anlamının tam açıklaması",
+       "tags-source-header": "Kaynak",
        "tags-active-header": "Etkin?",
        "tags-hitcount-header": "Etiketli değişiklikler",
+       "tags-actions-header": "Eylemler",
        "tags-active-yes": "Evet",
        "tags-active-no": "Hayır",
+       "tags-source-none": "Artık kullanımda",
        "tags-edit": "değiştir",
+       "tags-delete": "sil",
+       "tags-activate": "Etkinleştir",
+       "tags-deactivate": "Devre dışı bırakma",
        "tags-hitcount": "$1 {{PLURAL:$1|değişiklik|değişiklik}}",
+       "tags-manage-no-permission": "Yeni sayfalar oluşturmaya yetkiniz yok.",
+       "tags-create-heading": "Yeni bir öge oluştur",
+       "tags-create-explanation": "Varsayılan olarak, Yeni oluşturulan etiketlerin hazır hale getirilmesi kullanıcılar ve botlar tarafından yapılacaktır.",
+       "tags-create-tag-name": "Etiket adı",
+       "tags-create-reason": "Neden:",
+       "tags-create-submit": "Oluştur",
+       "tags-create-no-name": "Etik adı belirtmeniz gerekiyor",
+       "tags-delete-title": "Etiketi Sil",
+       "tags-activate-reason": "Neden:",
+       "tags-activate-submit": "Etkinleştir",
+       "tags-edit-existing-tags": "Mevcut etiketler:",
+       "tags-edit-existing-tags-none": "\"Yok\"",
+       "tags-edit-new-tags": "Yeni görev:",
+       "tags-edit-add": "Bu etiketleri ekleyin:",
+       "tags-edit-reason": "Neden:",
+       "tags-edit-none-selected": "Eklemek ya da çıkarmak için en az bir etiketi seçin lütfen.",
        "comparepages": "Sayfaları karşılaştır",
        "compare-page1": "Sayfa 1",
        "compare-page2": "Sayfa 2",
        "logentry-rights-autopromote": "$1, $4 iken $5 olarak otomatik {{GENDER:$2|terfi edildi}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|yükledi}} $3",
        "logentry-upload-overwrite": "$1 $3 dosyasının yeni bir sürümünü {{GENDER:$2|yükledi}}",
+       "log-name-tag": "Etiket günlüğü",
        "rightsnone": "(hiçbiri)",
        "revdelete-summary": "değişiklik özeti",
        "feedback-adding": "Sayfaya geribildirim ekleniyor...",
        "feedback-bugornote": "Eğer teknik bir problemi detaylarıyla açıklamaya hazırsanız lütfen [$1 bir hata raporlayın]. Diğer taraftan, aşağıdaki kolay formu kullanabilirsiniz. Yorumunuz, kullanıcı adınızla beraber \"[$3 $2]\" sayfasına eklenecektir.",
        "feedback-cancel": "İptal",
        "feedback-close": "Tamamlandı",
+       "feedback-error-title": "Hata",
        "feedback-error1": "Hata: Bilinmeyen API sonucu",
        "feedback-error2": "Hata: Düzenleme başarısız oldu",
        "feedback-error3": "Hata: API'den yanıt yok",
        "feedback-subject": "Konu:",
        "feedback-submit": "Gönder",
        "feedback-thanks": "Teşekkürler! Görüşleriniz \"[$2 $1]\" sayfasında paylaşılmıştır.",
+       "feedback-thanks-title": "Teşekkürler!",
+       "feedback-useragent": "Kullanıcı temsilcisi",
        "searchsuggest-search": "Ara",
        "searchsuggest-containing": "içeren...",
        "api-error-badaccess-groups": "Bu wiki için dosya yüklemenize izin verilmiyor.",
        "action-pagelang": "sayfa dilini değiştir",
        "log-name-pagelang": "Dil günlüğünü değiştir",
        "logentry-pagelang-pagelang": "$1, $3 sayfasının dilini $4 dilinden $5 diline {{GENDER:$2|çevirdi}}.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (etkin)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''devre dışı''')",
        "mediastatistics": "Medya istatistikleri",
        "mediastatistics-summary": "Karşıya yüklenen dosya türlerine ilişkin istatistikler. Bu yalnızca bir dosyanın en son sürümünü içerir. Eski veya silinen dosyala sürümleri hariç tutulur.",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte|$1 byte}} ($2; $3%)",
        "special-characters-group-gujarati": "Gücerat",
        "special-characters-group-thai": "Tay",
        "special-characters-group-lao": "Lao",
-       "special-characters-group-khmer": "Kmer"
+       "special-characters-group-khmer": "Kmer",
+       "special-characters-title-endash": "tire",
+       "special-characters-title-minus": "Eksi işareti"
 }
index e3d1e0e..8c3e8c0 100644 (file)
        "right-viewsuppressed": "Перегляд змін, приховаих від усіх користувачів",
        "right-suppressionlog": "перегляд приватних журналів",
        "right-block": "заборона редагувань для інших дописувачів",
-       "right-blockemail": "Ð\91локÑ\83ваÑ\82и ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а Ð²Ñ\96д Ð½Ð°Ð´Ñ\81иланнÑ\8f ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97",
+       "right-blockemail": "блокÑ\83ваннÑ\8f ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а Ð²Ñ\96д Ð½Ð°Ð´Ñ\81иланнÑ\8f ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и",
        "right-hideuser": "блокування імені користувача і приховування його",
        "right-ipblock-exempt": "уникнення блокування за IP-адресою, автоблокування і блокування діапазонів",
        "right-proxyunbannable": "уникнення автоматичного блокування проксі-серверів",
        "import-interwiki-history": "Копіювати всю історію змін цієї сторінки",
        "import-interwiki-templates": "Включити всі шаблони",
        "import-interwiki-submit": "Імпортувати",
-       "import-interwiki-namespace": "Цільовий простір назв:",
-       "import-interwiki-rootpage": "Коренева сторінка (необов'язково):",
        "import-upload-filename": "Назва файлу:",
        "import-comment": "Примітка:",
        "importtext": "Будь ласка, експортуйте сторінку з іншої вікі, використовуючи [[Special:Export|засіб експорту]], збережіть файл, а потім завантажте його сюди.",
index 87dd1a9..7ffa15f 100644 (file)
        "moredotdotdot": "اور...",
        "morenotlisted": "یہ فہرست مکمل نہیں ہے۔",
        "mypage": "میرا صفحہ",
-       "mytalk": "میری گفتگو",
+       "mytalk": "تبادلۂ خیال",
        "anontalk": "اس IP کیلیے بات چیت",
        "navigation": "رہنمائی",
        "and": "&#32;اور",
        "disclaimers": "اعلانات",
        "disclaimerpage": "Project:عام اعلان",
        "edithelp": "معاونت براۓ ترمیم",
+       "helppage-top-gethelp": "مدد",
        "mainpage": "صفحہ اول",
        "mainpage-description": "صفحہ اول",
        "policy-url": "Project:حکمتِ عملی",
        "gotaccountlink": "داخل ہوجائیے",
        "userlogin-resetlink": "داخلِ نوشتہ ہونے کی تفاصیل بھول گئے ہیں؟",
        "userlogin-resetpassword-link": "کلمہ شناخت بھول گئے؟",
+       "userlogin-helplink2": "داخل ہو کر ہمارا مدد کریں",
        "createacct-emailrequired": "ای میل پتہ",
        "createacct-emailoptional": "ای میل ایڈریس (اختیاری)",
        "createacct-email-ph": "اپنا برقی پتہ لکھیں",
+       "createacct-another-email-ph": "برقی پتہ لکھیں",
        "createaccountmail": "بذریعۂ برقی ڈاک",
        "createacct-realname": "اصلی نام (اختیاری)",
        "createaccountreason": "وجہ:",
        "createacct-reason": "وجہ",
+       "createacct-reason-ph": "آپ دوسرا کھاتہ کیوں تخلیق کررہے ہیں",
        "createacct-captcha": "حفاظتی تدبیر",
        "createacct-imgcaptcha-ph": "آپ اوپر دیکھ متن داخل کریں",
        "createacct-submit": "آپ کا کھاتا بنائیں",
+       "createacct-another-submit": "دوسرا کھاتہ تخلیق کریں",
        "createacct-benefit-heading": "{{SITENAME}} آپ جیسے لوگوں کی طرف سے بنایا گیا ہے ۔",
        "createacct-benefit-body1": "ترمیم",
        "createacct-benefit-body2": "$1 {{PLURAL:$1|صفحہ|صفحات}}",
        "wrongpasswordempty": "کلمۂ شناخت ندارد۔ دوبارہ کوشش کریں۔",
        "passwordtooshort": "آپکا منتخب کردہ پارلفظ مختصر ہے. پارلفظ کم از کم {{PLURAL:$1|1 محرف|$1 محارف}} ہونا چاہئے.",
        "password-name-match": "آپکا پارلفظ آپکے اسمِ صارف سے مختلف ہونا چاہئے.",
+       "password-login-forbidden": "اس صارف نام یا کلمۂ شناخت (پاسورڈ) کا استعمال ممنوع ہے",
        "mailmypassword": "نیا پارلفظ برقی ڈاک میں بھیجو",
        "passwordremindertitle": "نیا عارضی کلمۂ شناخت برائے {{SITENAME}}",
        "passwordremindertext": "(IP پتہ $1 سے) کسی (یا شاید آپ) نے {{SITENAME}} ($4)\nکیلئے نئی کلمۂ شناخت کیلئے التماس کیا. ایک عارضی کلمۂ شناخت \"$3\"\nبرائے صارف \"$2\" تخلیق کیا گیا ہے. اگر یہ آپ کا ارادہ تھا، تو آپ\nکو چاہئے کہ داخلِ نوشتہ ہونے کے بعد نئے کلمۂ شناخت کا انتخاب کریں.\nآپ کا کلمۂ شناخت {{PLURAL:$5|ایک دِن|$5 دِن}} کے بعد ناکارہ ہوجائے گا.\n\nاگر کسی اَور نے یہ التماس کیا ہے، یا آپ کو اپنا کلمۂ شناخت یاد آگیا ہے،\nاور آپ اسے تبدیل نہیں کرنا چاہتے، تو آپ یہ پیغام نظر انداز کرسکتے ہیں اور\nآپنا پُرانا کلمۂ شناخت کا استعمال جاری رکھ سکتے ہیں.",
        "noemailprefs": "اِن خصائص کو کام میں لانے کیلئے اپنے ترجیحات میں برقی ڈاک کا پتہ متعین کیجئے.",
        "emailconfirmlink": "اپنے برقی پتہ کی تصدیق کیجئے",
        "invalidemailaddress": "برقی پتہ قبول نہیں کیا جاسکتا کیونکہ یہ غلط شکل میں ہے.\nبراہِ کرم! ایک برقی پتہ صحیح شکل میں درج کیجئے یا جگہ کو خالی چھوڑ دیجئے.",
+       "emaildisabled": "اس سائٹ سے برقی خط نہیں بھیجے جاسکتے",
        "accountcreated": "تخلیقِ کھاتہ",
        "accountcreatedtext": "تخیلقِ کھاتۂ صارف براۓ $1۔",
        "createaccount-title": "کھاتہ سازی برائے {{SITENAME}}",
        "pt-createaccount": "کھاتا بنائیں",
        "pt-userlogout": "خارج ہوجائیں",
        "user-mail-no-addy": "برقی ڈاک بھیجنے کی کوشش بغیر برقی ڈاک پتہ",
+       "user-mail-no-body": "خالی یا بہت ہی مختصر برقی خط بھیجنے کی کوشش",
        "changepassword": "کلمۂ شناخت تبدیل کریں",
        "resetpass_announce": "آپ ایک برقی ارسال کردہ عارضی رمز کے ساتھ داخل ہوئے ہیں.\nداخلِ نوشتہ کے عمل کو مکمل کرنے کیلئے آپ کو یہاں نیا پارلفظ متعین کرنا ہوگا:",
        "resetpass_header": "کھاتہ کا پارلفظ تبدیل کریں",
        "resetpass-submit-loggedin": "پارلفظ کی تبدیلی",
        "resetpass-submit-cancel": "منسوخ",
        "resetpass-wrong-oldpass": "عارضی یا موجودہ پارلفظ ناقص ہے.\nآپ یا تو پہلے ہی سے آپنا پارلفظ کامیابی سے تبدیل کرچکے ہیں اور یا آپ نے نئے عارضی پارلفظ کی درخواست کی ہے.",
+       "resetpass-recycled": "براہ کرم اپنے موجودہ کلمۂ شناخت (پاسورڈ) سے مختلف کلمۂ شناخت سے بازترتیب (ری‌سیٹ) کریں",
+       "resetpass-temp-emailed": "آپ عارضی برقی خط سے بھیجے گئے کوڈ سے لاگ ان ہیں\nمکمل طور پر لاگ ان ہونے کے لیے آپ کو نیا پاسورڈ سیٹ کرنا پڑے گا",
        "resetpass-temp-password": "عارضی پارلفظ:",
        "passwordreset": "پارلفظ کی بازتعینی",
        "passwordreset-username": "اسمِ صارف:",
        "search-external": "بیرونی تلاش",
        "searchdisabled": "{{SITENAME}} تلاش غیرفعال.\nآپ فی الحال گوگل کے ذریعے تلاش کرسکتے ہیں.\nیاد رکھئے کہ اُن کے {{SITENAME}} اشاریے ممکناً پرانے ہوسکتے ہیں.",
        "preferences": "ترجیحات",
-       "mypreferences": "میری ترجیہات",
+       "mypreferences": "ترجیحات",
        "prefs-edits": "تدوینات کی تعداد:",
        "prefs-skin": "جِلد",
        "skin-preview": "پیش منظر",
        "emailmessage": "پیغام:",
        "emailsend": "بھیجیں",
        "watchlist": "میری زیرنظرفہرست",
-       "mywatchlist": "میری زیرنظرفہرست",
+       "mywatchlist": "زیرنظرفہرست",
        "watchlistfor2": "براۓ $1 ($2)",
        "addedwatchtext": "یہ صفحہ \"<nowiki>$1</nowiki>\" آپکی [[Special:Watchlist|زیرنظر]] فہرست میں شامل کردیا گیا ہے۔ اب مستقل میں اس صفحے اور اس سے ملحقہ تبادلہ خیال کا صفحے میں کی جانے والی تبدیلوں کا اندراج کیا جاتا رہے گا، اور ان صفحات کی شناخت کو سہل بنانے کے لیۓ [[Special:حالیہ تبدیلیاں|حالیہ تبدیلیوں کی فہرست]] میں انکو '''مُتَجَل''' (bold) تحریر کیا جاۓ گا۔ <p> اگر آپ کسی وقت اس صفحہ کو زیرنظرفہرست سے خارج کرنا چاہیں تو اوپر دیۓ گۓ \"زیرنظرمنسوخ\" پر ٹک کیجیۓ۔",
        "removedwatchtext": "صفحہ \"[[:$1]]\" آپ کی زیر نظر فہرست سے خارج کر دیا گیا۔",
        "deletereasonotherlist": "دوسری وجہ",
        "rollback": "ترمیمات سابقہ حالت پرواپس",
        "rollbacklink": "واپس سابقہ حالت",
+       "rollbacklinkcount": "استرجع $1 {{PLURAL:$1|ترمیم|ترامیم}}",
        "rollbackfailed": "سابقہ حالت پر واپسی ناکام",
        "cantrollback": "تدوین ثانی کا اعادہ نہیں کیا جاسکتا؛ کیونکہ اس میں آخری بار حصہ لینے والا ہی اس صفحہ کا واحد کاتب ہے۔",
        "protectlogpage": "نوشتۂ محفوظ شدگی",
        "blanknamespace": "(مرکز)",
        "contributions": "{{جنس:$1|صارف}} شراکتیں",
        "contributions-title": "مساہماتِ صارف برائے $1",
-       "mycontris": "میرا حصہ",
+       "mycontris": "شراکت",
        "contribsub2": "براۓ $1 ($2)",
        "uctop": " (اوپر)",
        "month": "مہینہ (اور اُس سے قبل):",
index 629b9f5..09ab08c 100644 (file)
        "wrongpassword": "אומריכטיגע פאסווארט אריינגעלייגט.\nביטע פרובירט נאכאמאל.",
        "wrongpasswordempty": "פאסווארט אריינגעלייגט איז געווען ליידיג.\nביטע פרובירט נאכאמאל.",
        "passwordtooshort": "פאַסווערטער מוזן זײַן כאטש {{PLURAL:$1|איין כאַראַקטער|$1 כאַראַקטערס}}.",
+       "passwordtoolong": "פאַסווערטער טארן נישט זיין לענגער וויי {{PLURAL:$1|איין כאַראַקטער|$1 כאַראַקטערס}}.",
        "password-name-match": "אײַער פאַסווארט מוז זײַן אנדערש פון אײַער באַניצער נאָמען.",
        "password-login-forbidden": "באַניצן דעם נאָמען און שפּריכוואָרט איז פאַרבאָטן.",
        "mailmypassword": "צוריקשטעלן פאַסווארט",
        "missingcommentheader": "'''דערמאַנונג:''' איר האט נישט אַרײַנגעשטעלט א טעמע/קעפל פאר דער אנמערקונג. אויב וועט איר דרוקן נאכאמאל אויפן \"{{int:savearticle}}\", וועט אייער ענדערונג ווערן אפגעהיטן אן דעם.",
        "summary-preview": "סך-הכל פאראויסדיגע ווייזונג:",
        "subject-preview": "טעמע/קעפל פאראויסדיגע ווייזונג:",
+       "previewerrortext": "א פעלער האט פאסירט ביים פרובירן פארויסקוקן אײַערע ענדערונגען.",
        "blockedtitle": "באַניצער איז בלאקירט",
        "blockedtext": "'''אייער באניצער נאמען אדער IP אדרעס איז געווארן בלאקירט.'''\n\nדעם בלאק האט $1 געמאכט פון וועגן ''$2''.\n\n* בלאקירן הייבט אן: $8\n* בלאקירן גייט אויס: $6\n* בלאק מכוון צו: $7\n\nאיר קענט זיך ווענדן צו $1 אדער צו אנדערע [[{{MediaWiki:Grouppage-sysop}}|אדמיניסטראטארן]] אדורכצורעדן דעם בלאק.\n\nגיט אכט אז איר קענט נישט ניצן די \"שיקט דעם באניצער א ע-פאסט\" אייגנקייט אויב האט איר נישט איינגעשטעלט אין אייערע [[Special:Preferences|קונטע פרעפערענצן]] א גילטיקן בליצפאסט אדרעסדאס אדער איר זענט בלאקירט פון שיקן בליצפאסט.\n\nאייער IP אדרעס איז $3, און דער בלאק האט נומער #$5. ביטע שיקט איינעם פון די צוויי (אדער זיי ביידע) ווען איר ווענדט זיך צו די אדמיניסטראטורן.",
        "autoblockedtext": "אײַער [[IP אדרעס|אײַ־פּי־אַדרעס]] איז בלאָקירט געװאָרן אױטאָמאַטיש, צוליב דעם װאָס אַן אַנדער באַניצער װאָס איז בלאָקירט געװאָרן דורך $1 האָט זיך געניצט דעם דאָזיקן אײַ־פּי.\nדי אורזאַך פֿון דער בלאָקירונג איז:\n\n:'''$2'''\n\n* אנהייב פון דער בלאקירונג: $8\n* ענדע פון דער בלאָקירונג: $6\n* וועמען בלאקירט: ִ$7\n\nאיר קענט זיך פֿאַרבינדן דורכן בליצבריװ מיט $1 אָדער מיט יעדן אַנדערן [[{{MediaWiki:Grouppage-sysop}}|סיסאָפּ]] צו דיסקוטירן װעגן דער בלאָקירונג.\n\nאױב האָט איר ניט אַרײַנגעקלאַפּט אײַער בליצפּאָסט־אַדרעס אין אײַערע [[Special:Preferences|פּרעפֿערענצן]] אדער איר זענט בלאקירט פון שיקן בליצפאסט, קענט איר זיך ''נישט'' ניצן די אפציע \"שיקט דעם באניצער אן ע-פאסט\".\n\nאייער יעצטיגער IP אדרעס איז $3, און דער בלאָקירונג־נומער איז #$5.\nביטע צײכנט עס אָן בשעת איר װענדט זיך צו די סיסאָפּן.",
        "import-interwiki-history": "קאפירן אלע היסטאריע ווערסיעס פאר דעם בלאט",
        "import-interwiki-templates": "איינשילסן אלע מוסטערן",
        "import-interwiki-submit": "אימפארט",
-       "import-interwiki-namespace": "ציל נאמענטייל:",
-       "import-interwiki-rootpage": "ציל שטאמבלאט (אפציאנאל):",
        "import-upload-filename": "טעקע נאמען:",
        "import-comment": "הערה:",
        "importtext": "ביטע עקספארטירט די טעקע פון דער מקור וויקי ניצנדיג דאס [[Special:Export|עקספארט הילפמיטל]], שפייכלט אײַן אויף אײַער קאמפיוטער און לאדט אַרויף דא.",
index 57fa7b1..55e9f0a 100644 (file)
        "cannotchangeemail": "本wiki不允许对账户的电子邮件地址进行更改。",
        "emaildisabled": "该网站无法发送电子邮件。",
        "accountcreated": "已建立账户",
-       "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]])的账户已创建。",
+       "accountcreatedtext": "[[{{ns:User}}:$1|$1]]([[{{ns:User talk}}:$1|对话]])的账户已创建。",
        "createaccount-title": "在{{SITENAME}}创建新账户",
        "createaccount-text": "有人在{{SITENAME}}中利用您的邮箱创建了一个名为 \"$2\" 的新帐户($4),密码是 \"$3\" 。您应该立即登录并更改密码。\n\n如果该账户创建错误的话,您可以忽略此信息。",
        "login-throttled": "你最近尝试登录的次数过多。请等待$1后再试。",
        "import-interwiki-history": "复制此页的所有历史版本",
        "import-interwiki-templates": "包含所有模板",
        "import-interwiki-submit": "导入",
-       "import-interwiki-namespace": "目标名字空间:",
-       "import-interwiki-rootpage": "目标根页面(可选):",
+       "import-mapping-default": "导入至默认位置",
+       "import-mapping-namespace": "导入至一个名字空间:",
+       "import-mapping-subpage": "作为以下页面的子页面导入:",
        "import-upload-filename": "文件名:",
        "import-comment": "注释:",
        "importtext": "请使用[[Special:Export|导出功能]]从源 wiki 导出文件,\n保存到您的电脑并上传到这里。",
index 8426fbe..9653cbf 100644 (file)
        "import-interwiki-history": "複製此頁的所有歷史修訂",
        "import-interwiki-templates": "包含所有模板",
        "import-interwiki-submit": "匯入",
-       "import-interwiki-namespace": "目標命名空間:",
-       "import-interwiki-rootpage": "目標根頁面 (選填):",
        "import-upload-filename": "檔案名稱:",
        "import-comment": "評論:",
        "importtext": "請使用 [[Special:Export|匯出工具]] 從來源 Wiki 匯出檔案,\n儲存至您的電腦後再上傳到這裡。",
index 797bfda..9f86bd6 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tunisian Spoken Arabic (   زَوُن)
+/** Tunisian Spoken Arabic (تونسي/Tûnsi)
  *
  * To improve a translation please visit https://translatewiki.net
  *
@@ -8,7 +8,4 @@
  *
  */
 
-$fallback = 'ar';
-
-$rtl = true;
-
+$fallback = 'aeb-arab';
\ No newline at end of file
diff --git a/languages/messages/MessagesAeb_arab.php b/languages/messages/MessagesAeb_arab.php
new file mode 100644 (file)
index 0000000..1043496
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+/** Tunisian Spoken Arabic (Arabic script) (تونسي)
+ *
+ * To improve a translation please visit https://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ */
+
+$fallback = 'ar';
+
+$rtl = true;
\ No newline at end of file
index 71641ef..4ab57d4 100755 (executable)
@@ -203,13 +203,16 @@ def customRules( path ):
     fp = open( path, 'r', encoding = 'U8' )
     ret = dict()
     for line in fp:
-        elems = line.split( '#' )[0].split()
+        line = line.rstrip( '\r\n' )
+        if '#' in line:
+            line = line.split( '#' )[0].rstrip()
+        elems = line.split( '\t' )
         if len( elems ) > 1:
             ret[elems[0]] = elems[1]
     return ret
 
 def dictToSortedList( src_table, pos ):
-    return sorted( src_table.items(), key = lambda m: m[pos] )
+    return sorted( src_table.items(), key = lambda m: ( m[pos], m[1 - pos] ) )
 
 def translate( text, conv_table ):
     i = 0
@@ -229,7 +232,7 @@ def manualWordsTable( path, conv_table, reconv_table ):
     reconv_table = {}
     wordlist = [line.split( '#' )[0].strip() for line in fp]
     wordlist = list( set( wordlist ) )
-    wordlist.sort( key = len, reverse = True )
+    wordlist.sort( key = lambda w: ( len(w), w ), reverse = True )
     while wordlist:
         word = wordlist.pop()
         new_word = translate( word, conv_table )
@@ -241,7 +244,7 @@ def manualWordsTable( path, conv_table, reconv_table ):
 
 def defaultWordsTable( src_wordlist, src_tomany, char_conv_table, char_reconv_table ):
     wordlist = list( src_wordlist )
-    wordlist.sort( key = len, reverse = True )
+    wordlist.sort( key = lambda w: ( len(w), w ), reverse = True )
     word_conv_table = {}
     word_reconv_table = {}
     conv_table = char_conv_table.copy()
@@ -276,7 +279,7 @@ def PHPArray( table ):
 def main():
     #Get Unihan.zip:
     url = 'http://www.unicode.org/Public/%s/ucd/Unihan.zip' % UNIHAN_VER
-    han_dest = 'Unihan.zip'
+    han_dest = 'Unihan-%s.zip' % UNIHAN_VER
     download( url, han_dest )
     
     # Get scim-tables-$(SCIM_TABLES_VER).tar.gz:
index 4a2d9fb..3b5f3dd 100644 (file)
@@ -2718,4 +2718,4 @@ A型肝炎        甲型肝炎
 賈伯斯      乔布斯
 波里活      宝莱坞
 庫德族      库尔德族
-庫德人      库尔德人
\ No newline at end of file
+庫德人      库尔德人
index a4e4901..f765873 100644 (file)
@@ -3064,4 +3064,4 @@ IP地址  IP位址
 宝莱坞      波里活
 寶萊塢      波里活
 庫德族      库爾德族
-庫德人      库爾德人
\ No newline at end of file
+庫德人      库爾德人
index bcd8492..b0be071 100644 (file)
@@ -743,4 +743,4 @@ IP地址    IP位址
 乔布斯      賈伯斯
 波里活      寶萊塢
 库尔德族   庫德族
-库尔德人   庫德人
\ No newline at end of file
+库尔德人   庫德人
index 9157e3f..a82dd1e 100644 (file)
 灵昆 靈崑
 龙岩 龍巖
 扑冬 撲鼕
-冬冬鼓      鼕鼕鼓
\ No newline at end of file
+冬冬鼓      鼕鼕鼓
index f202c9d..5a0c6c3 100644 (file)
@@ -790,4 +790,4 @@ U+26548𦕈|U+07707眇|
 U+26D4F𦵏|U+0846C葬|
 U+28F7B𨽻|U+096B6隶|
 U+294D0𩓐|U+08116脖|
-U+295D7𩗗|U+098D3飓|
\ No newline at end of file
+U+295D7𩗗|U+098D3飓|
index c7df768..1cfa6c4 100644 (file)
@@ -19,6 +19,7 @@
        "ooui-toolgroup-collapse": "কম দেখাও",
        "ooui-dialog-message-accept": "ঠিক আছে",
        "ooui-dialog-message-reject": "বাতিল",
+       "ooui-dialog-process-error": "কিছু একটায় ত্রুটি হয়েছে",
        "ooui-dialog-process-dismiss": "বাতিল করুন",
        "ooui-dialog-process-retry": "আবার চেষ্টা করুন",
        "ooui-dialog-process-continue": "অগ্রসর হোন"
index b84df25..6230cc9 100644 (file)
@@ -6,5 +6,14 @@
        },
        "ooui-outline-control-move-down": "Flyt lutin niður",
        "ooui-outline-control-move-up": "Flyt lutin upp",
-       "ooui-toolbar-more": "Meira"
+       "ooui-outline-control-remove": "Tak ein lut burtur",
+       "ooui-toolbar-more": "Meira",
+       "ooui-toolgroup-expand": "Meira",
+       "ooui-toolgroup-collapse": "Færri",
+       "ooui-dialog-message-accept": "OK",
+       "ooui-dialog-message-reject": "Avbrót",
+       "ooui-dialog-process-error": "Okkurt gekk galið",
+       "ooui-dialog-process-dismiss": "Lat aftur",
+       "ooui-dialog-process-retry": "Royn aftur",
+       "ooui-dialog-process-continue": "Halt fram"
 }
index b003e8c..982a3cd 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Vikassy",
                        "Nayvik",
-                       "Omshivaprakash"
+                       "Omshivaprakash",
+                       "Pavanaja"
                ]
        },
        "ooui-outline-control-move-down": "ವಸ್ತುವನ್ನು ಕೆಳಗೆ ಸರಿಸು",
@@ -14,7 +15,7 @@
        "ooui-toolgroup-collapse": "ಕೆಲವೇ ಕೆಲವು",
        "ooui-dialog-message-accept": "ಸರಿ",
        "ooui-dialog-message-reject": "ರದ್ದುಮಾಡು",
-       "ooui-dialog-process-error": "à²\8eನೋ ಎಡವಟ್ಟಾಗಿದೆ....",
+       "ooui-dialog-process-error": "à²\8fನೋ ಎಡವಟ್ಟಾಗಿದೆ....",
        "ooui-dialog-process-dismiss": "ತೆಗೆದುಹಾಕು",
        "ooui-dialog-process-retry": "ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ",
        "ooui-dialog-process-continue": "ಮುಂದುವರೆಸು"
index bf3cedf..ee5f281 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-bell {
        background-image: url("themes/mediawiki/images/icons/bell.png");
index 80de362..d26af40 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-article {
        background-image: url("themes/mediawiki/images/icons/article-ltr.png");
index bacc878..90d8555 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-alignCentre {
        background-image: url("themes/mediawiki/images/icons/align-center.png");
index 654562c..b7ded14 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-edit {
        background-image: url("themes/mediawiki/images/icons/edit-ltr.png");
index 8f90358..9a1532b 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-indent {
        background-image: url("themes/mediawiki/images/icons/indent-ltr.png");
index fa5a369..6b657b7 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-bigger {
        background-image: url("themes/mediawiki/images/icons/bigger-ltr.png");
index 70c354d..782b410 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-beta {
        background-image: url("themes/mediawiki/images/icons/beta.png");
index 4d7c676..a274181 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-stripeFlow {
        background-image: url("themes/mediawiki/images/icons/stripeFlow-ltr.png");
        background-image:         linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/stripeToC-ltr.svg");
        background-image:      -o-linear-gradient(transparent, transparent), url("themes/mediawiki/images/icons/stripeToC-ltr.png");
 }
+.oo-ui-icon-viewCompact {
+       background-image: url("themes/mediawiki/images/icons/viewCompact.png");
+       background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/viewCompact.svg");
+       background-image:         linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/viewCompact.svg");
+       background-image:      -o-linear-gradient(transparent, transparent), url("themes/mediawiki/images/icons/viewCompact.png");
+}
+.oo-ui-icon-viewDetails {
+       background-image: url("themes/mediawiki/images/icons/viewDetails-ltr.png");
+       background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/viewDetails-ltr.svg");
+       background-image:         linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/viewDetails-ltr.svg");
+       background-image:      -o-linear-gradient(transparent, transparent), url("themes/mediawiki/images/icons/viewDetails-ltr.png");
+}
+.oo-ui-icon-visionSimulator {
+       background-image: url("themes/mediawiki/images/icons/visionSimulator.png");
+       background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/visionSimulator.svg");
+       background-image:         linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/visionSimulator.svg");
+       background-image:      -o-linear-gradient(transparent, transparent), url("themes/mediawiki/images/icons/visionSimulator.png");
+}
index bb4eed9..19ac130 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-map {
        background-image: url("themes/mediawiki/images/icons/map-ltr.png");
index d67a180..61b3361 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-image {
        background-image: url("themes/mediawiki/images/icons/image-ltr.png");
index d04cccd..6dc10b4 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-block {
        background-image: url("themes/mediawiki/images/icons/block.png");
index 0285d2e..9e54697 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-arrowNext {
        background-image: url("themes/mediawiki/images/icons/arrow-ltr.png");
index aa06d4b..e748f76 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-userActive {
        background-image: url("themes/mediawiki/images/icons/userActive-ltr.png");
index b9d36bf..28c95c6 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 .oo-ui-icon-logoCC {
        background-image: url("themes/mediawiki/images/icons/logo-cc.png");
index 41e2f88..c32d7ca 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
             -o-transition: all ease-in-out 200ms;
                transition: all ease-in-out 200ms;
 }
+.oo-ui-menuLayout-menu {
+       height: 18em;
+       width: 18em;
+}
 .oo-ui-menuLayout-content {
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
+       top: 18em;
+       left: 18em;
+       right: 18em;
+       bottom: 18em;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu .oo-ui-menuLayout-menu {
+       width: 0 !important;
+       height: 0 !important;
+       overflow: hidden;
 }
-.oo-ui-menuLayout-top .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu .oo-ui-menuLayout-content {
+       top: 0 !important;
+       left: 0 !important;
+       right: 0 !important;
+       bottom: 0 !important;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top .oo-ui-menuLayout-menu {
+       width: auto !important;
        left: 0;
        top: 0;
        right: 0;
 }
-.oo-ui-menuLayout-top .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top .oo-ui-menuLayout-content {
        right: 0 !important;
        bottom: 0 !important;
        left: 0 !important;
 }
-.oo-ui-menuLayout-after .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after .oo-ui-menuLayout-menu {
+       height: auto !important;
        top: 0;
        right: 0;
        bottom: 0;
 }
-.oo-ui-menuLayout-after .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after .oo-ui-menuLayout-content {
        bottom: 0 !important;
        left: 0 !important;
        top: 0 !important;
 }
-.oo-ui-menuLayout-bottom .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom .oo-ui-menuLayout-menu {
+       width: auto !important;
        right: 0;
        bottom: 0;
        left: 0;
 }
-.oo-ui-menuLayout-bottom .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom .oo-ui-menuLayout-content {
        left: 0 !important;
        top: 0 !important;
        right: 0 !important;
 }
-.oo-ui-menuLayout-before .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before .oo-ui-menuLayout-menu {
+       height: auto !important;
        bottom: 0;
        left: 0;
        top: 0;
 }
-.oo-ui-menuLayout-before .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before .oo-ui-menuLayout-content {
        top: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
 .oo-ui-toolGroup-empty {
        display: none;
 }
+.oo-ui-toolGroup .oo-ui-tool-link {
+       text-decoration: none;
+}
 .oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
        background-position: center center;
        background-repeat: no-repeat;
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
        display: block;
 }
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon {
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-accel {
+       display: none;
+}
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-iconElement > .oo-ui-tool-link .oo-ui-iconElement-icon {
        display: block;
 }
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-accel,
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title {
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-iconElement > .oo-ui-tool-link .oo-ui-tool-title {
        display: none;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link {
        cursor: default;
 }
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link > .oo-ui-tool-title,
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link > .oo-ui-tool-accel {
-       display: none;
-}
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
        cursor: pointer;
 }
        width: 1.5em;
        opacity: 0.8;
 }
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title {
+       line-height: 2.1em;
+       font-size: 0.8em;
+}
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-tool-active.oo-ui-widget-enabled {
        background-color: #eeeeee;
 }
        width: 100%;
        vertical-align: middle;
        white-space: nowrap;
-       text-decoration: none;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon,
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel,
 .oo-ui-buttonGroupWidget:last-child {
        margin-right: 0;
 }
-.oo-ui-buttonGroupWidget .oo-ui-buttonWidget {
+.oo-ui-buttonGroupWidget .oo-ui-buttonElement {
        margin-right: 0;
 }
-.oo-ui-buttonGroupWidget .oo-ui-buttonWidget:last-child {
+.oo-ui-buttonGroupWidget .oo-ui-buttonElement:last-child {
        margin-right: 0;
 }
 .oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
        border-bottom-right-radius: 2px;
        border-top-right-radius: 2px;
 }
+.oo-ui-toggleButtonWidget {
+       display: inline-block;
+       vertical-align: middle;
+       margin-right: 0.5em;
+}
+.oo-ui-toggleButtonWidget:last-child {
+       margin-right: 0;
+}
 .oo-ui-toggleSwitchWidget {
        position: relative;
        display: inline-block;
index 76093dd..7ee64a2 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:13Z
+ * Date: 2015-04-27T17:17:17Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
             -o-transition: all ease-in-out 200ms;
                transition: all ease-in-out 200ms;
 }
+.oo-ui-menuLayout-menu {
+       height: 18em;
+       width: 18em;
+}
 .oo-ui-menuLayout-content {
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
+       top: 18em;
+       left: 18em;
+       right: 18em;
+       bottom: 18em;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu .oo-ui-menuLayout-menu {
+       width: 0 !important;
+       height: 0 !important;
+       overflow: hidden;
 }
-.oo-ui-menuLayout-top .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu .oo-ui-menuLayout-content {
+       top: 0 !important;
+       left: 0 !important;
+       right: 0 !important;
+       bottom: 0 !important;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top .oo-ui-menuLayout-menu {
+       width: auto !important;
        left: 0;
        top: 0;
        right: 0;
 }
-.oo-ui-menuLayout-top .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top .oo-ui-menuLayout-content {
        right: 0 !important;
        bottom: 0 !important;
        left: 0 !important;
 }
-.oo-ui-menuLayout-after .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after .oo-ui-menuLayout-menu {
+       height: auto !important;
        top: 0;
        right: 0;
        bottom: 0;
 }
-.oo-ui-menuLayout-after .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after .oo-ui-menuLayout-content {
        bottom: 0 !important;
        left: 0 !important;
        top: 0 !important;
 }
-.oo-ui-menuLayout-bottom .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom .oo-ui-menuLayout-menu {
+       width: auto !important;
        right: 0;
        bottom: 0;
        left: 0;
 }
-.oo-ui-menuLayout-bottom .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom .oo-ui-menuLayout-content {
        left: 0 !important;
        top: 0 !important;
        right: 0 !important;
 }
-.oo-ui-menuLayout-before .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before .oo-ui-menuLayout-menu {
+       height: auto !important;
        bottom: 0;
        left: 0;
        top: 0;
 }
-.oo-ui-menuLayout-before .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before .oo-ui-menuLayout-content {
        top: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
 .oo-ui-toolGroup-empty {
        display: none;
 }
+.oo-ui-toolGroup .oo-ui-tool-link {
+       text-decoration: none;
+}
 .oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
        background-position: center center;
        background-repeat: no-repeat;
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
        display: block;
 }
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon {
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-accel {
+       display: none;
+}
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-iconElement > .oo-ui-tool-link .oo-ui-iconElement-icon {
        display: block;
 }
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-accel,
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title {
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-iconElement > .oo-ui-tool-link .oo-ui-tool-title {
        display: none;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link {
        cursor: default;
 }
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link > .oo-ui-tool-title,
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link > .oo-ui-tool-accel {
-       display: none;
-}
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
        cursor: pointer;
 }
        width: 1.5em;
        opacity: 0.8;
 }
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title {
+       line-height: 2.1em;
+       font-size: 0.8em;
+}
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-tool-active.oo-ui-widget-enabled {
        background-color: #eeeeee;
 }
        width: 100%;
        vertical-align: middle;
        white-space: nowrap;
-       text-decoration: none;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon,
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel,
 .oo-ui-buttonGroupWidget:last-child {
        margin-right: 0;
 }
-.oo-ui-buttonGroupWidget .oo-ui-buttonWidget {
+.oo-ui-buttonGroupWidget .oo-ui-buttonElement {
        margin-right: 0;
 }
-.oo-ui-buttonGroupWidget .oo-ui-buttonWidget:last-child {
+.oo-ui-buttonGroupWidget .oo-ui-buttonElement:last-child {
        margin-right: 0;
 }
 .oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
        border-bottom-right-radius: 2px;
        border-top-right-radius: 2px;
 }
+.oo-ui-toggleButtonWidget {
+       display: inline-block;
+       vertical-align: middle;
+       margin-right: 0.5em;
+}
+.oo-ui-toggleButtonWidget:last-child {
+       margin-right: 0;
+}
 .oo-ui-toggleSwitchWidget {
        position: relative;
        display: inline-block;
index 1a8d8b6..7d346bb 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:06Z
+ * Date: 2015-04-27T17:17:10Z
  */
 /**
  * @class
index f46dd07..f836042 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.9.8
+ * OOjs UI v0.10.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-04-12T17:19:06Z
+ * Date: 2015-04-27T17:17:10Z
  */
 ( function ( OO ) {
 
@@ -44,6 +44,39 @@ OO.ui.Keys = {
        SPACE: 32
 };
 
+/**
+ * Check if an element is focusable.
+ * Inspired from :focusable in jQueryUI v1.11.4 - 2015-04-14
+ *
+ * @param {jQuery} element Element to test
+ * @return {Boolean} [description]
+ */
+OO.ui.isFocusableElement = function ( $element ) {
+       var node = $element[0],
+               nodeName = node.nodeName.toLowerCase(),
+               // Check if the element have tabindex set
+               isInElementGroup = /^(input|select|textarea|button|object)$/.test( nodeName ),
+               // Check if the element is a link with href or if it has tabindex
+               isOtherElement = (
+                       ( nodeName === 'a' && node.href ) ||
+                       !isNaN( $element.attr( 'tabindex' ) )
+               ),
+               // Check if the element is visible
+               isVisible = (
+                       // This is quicker than calling $element.is( ':visible' )
+                       $.expr.filters.visible( node ) &&
+                       // Check that all parents are visible
+                       !$element.parents().addBack().filter( function () {
+                               return $.css( this, 'visibility' ) === 'hidden';
+                       } ).length
+               );
+
+       return (
+               ( isInElementGroup ? !node.disabled : isOtherElement ) &&
+               isVisible
+       );
+};
+
 /**
  * Get the user's language and any fallback languages.
  *
@@ -1776,7 +1809,7 @@ OO.ui.Window = function OoUiWindow( config ) {
        this.$overlay.addClass( 'oo-ui-window-overlay' );
        this.$content
                .addClass( 'oo-ui-window-content' )
-               .attr( 'tabIndex', 0 );
+               .attr( 'tabindex', 0 );
        this.$frame
                .addClass( 'oo-ui-window-frame' )
                .append( this.$content );
@@ -6366,6 +6399,7 @@ OO.ui.ClippableElement.prototype.clip = function () {
  * @extends OO.ui.Widget
  * @mixins OO.ui.IconElement
  * @mixins OO.ui.FlaggedElement
+ * @mixins OO.ui.TabIndexedElement
  *
  * @constructor
  * @param {OO.ui.ToolGroup} toolGroup
@@ -6385,10 +6419,6 @@ OO.ui.Tool = function OoUiTool( toolGroup, config ) {
        // Parent constructor
        OO.ui.Tool.super.call( this, config );
 
-       // Mixin constructors
-       OO.ui.IconElement.call( this, config );
-       OO.ui.FlaggedElement.call( this, config );
-
        // Properties
        this.toolGroup = toolGroup;
        this.toolbar = this.toolGroup.getToolbar();
@@ -6398,6 +6428,11 @@ OO.ui.Tool = function OoUiTool( toolGroup, config ) {
        this.$link = $( '<a>' );
        this.title = null;
 
+       // Mixin constructors
+       OO.ui.IconElement.call( this, config );
+       OO.ui.FlaggedElement.call( this, config );
+       OO.ui.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$link } ) );
+
        // Events
        this.toolbar.connect( this, { updateState: 'onUpdateState' } );
 
@@ -6414,7 +6449,6 @@ OO.ui.Tool = function OoUiTool( toolGroup, config ) {
        this.$link
                .addClass( 'oo-ui-tool-link' )
                .append( this.$icon, this.$title, this.$accel )
-               .prop( 'tabIndex', 0 )
                .attr( 'role', 'button' );
        this.$element
                .data( 'oo-ui-tool', this )
@@ -6431,6 +6465,7 @@ OO.ui.Tool = function OoUiTool( toolGroup, config ) {
 OO.inheritClass( OO.ui.Tool, OO.ui.Widget );
 OO.mixinClass( OO.ui.Tool, OO.ui.IconElement );
 OO.mixinClass( OO.ui.Tool, OO.ui.FlaggedElement );
+OO.mixinClass( OO.ui.Tool, OO.ui.TabIndexedElement );
 
 /* Events */
 
@@ -6628,6 +6663,132 @@ OO.ui.Tool.prototype.destroy = function () {
 /**
  * Collection of tool groups.
  *
+ *     @example
+ *     // Basic OOjs UI toolbar example
+ *
+ *     // Create the toolbar
+ *     var toolFactory = new OO.ui.ToolFactory();
+ *     var toolGroupFactory = new OO.ui.ToolGroupFactory();
+ *     var toolbar = new OO.ui.Toolbar( toolFactory, toolGroupFactory );
+ *
+ *     // We will be placing status text in this element when tools are used
+ *     var $area = $( '<p>' ).css( 'font-size', '0.8em' ).text( 'Toolbar example' );
+ *
+ *     // Define the tools that we're going to place in our toolbar
+ *
+ *     // Create a class inheriting from OO.ui.Tool
+ *     function PictureTool() {
+ *         PictureTool.super.apply( this, arguments );
+ *     };
+ *     OO.inheritClass( PictureTool, OO.ui.Tool );
+ *     // Each tool must have a 'name' (used as an internal identifier, see later) and at least one
+ *     // of 'icon' and 'title' (displayed icon and text).
+ *     PictureTool.static.name = 'picture';
+ *     PictureTool.static.icon = 'picture';
+ *     PictureTool.static.title = 'Insert picture';
+ *     // Defines the action that will happen when this tool is selected (clicked).
+ *     PictureTool.prototype.onSelect = function () {
+ *         $area.text( 'Picture tool clicked!' );
+ *         this.setActive( false );
+ *     };
+ *     // The toolbar can be synchronized with the state of some external stuff, like a text
+ *     // editor's editing area, highlighting the tools (e.g. a 'bold' tool would be shown as active
+ *     // when the text cursor was inside bolded text). Here we simply disable this feature.
+ *     PictureTool.prototype.onUpdateState = function () {
+ *         this.setActive( false );
+ *     };
+ *     // Make this tool available in our toolFactory and thus our toolbar
+ *     toolFactory.register( PictureTool );
+ *
+ *     // Register two more tools, nothing interesting here
+ *     function SettingsTool() {
+ *         SettingsTool.super.apply( this, arguments );
+ *     };
+ *     OO.inheritClass( SettingsTool, OO.ui.Tool );
+ *     SettingsTool.static.name = 'settings';
+ *     SettingsTool.static.icon = 'settings';
+ *     SettingsTool.static.title = 'Change settings';
+ *     SettingsTool.prototype.onSelect = function () {
+ *         $area.text( 'Settings tool clicked!' );
+ *         this.setActive( false );
+ *     };
+ *     SettingsTool.prototype.onUpdateState = function () {
+ *         this.setActive( false );
+ *     };
+ *     toolFactory.register( SettingsTool );
+ *
+ *     // Register two more tools, nothing interesting here
+ *     function StuffTool() {
+ *         StuffTool.super.apply( this, arguments );
+ *     };
+ *     OO.inheritClass( StuffTool, OO.ui.Tool );
+ *     StuffTool.static.name = 'stuff';
+ *     StuffTool.static.icon = 'ellipsis';
+ *     StuffTool.static.title = 'More stuff';
+ *     StuffTool.prototype.onSelect = function () {
+ *         $area.text( 'More stuff tool clicked!' );
+ *         this.setActive( false );
+ *     };
+ *     StuffTool.prototype.onUpdateState = function () {
+ *         this.setActive( false );
+ *     };
+ *     toolFactory.register( StuffTool );
+ *
+ *     // This is a PopupTool. Rather than having a custom 'onSelect' action, it will display a
+ *     // little popup window (a PopupWidget). 'onUpdateState' is also already implemented.
+ *     function HelpTool( toolGroup, config ) {
+ *         OO.ui.PopupTool.call( this, toolGroup, $.extend( { popup: {
+ *             padded: true,
+ *             label: 'Help',
+ *             head: true
+ *         } }, config ) );
+ *         this.popup.$body.append( '<p>I am helpful!</p>' );
+ *     };
+ *     OO.inheritClass( HelpTool, OO.ui.PopupTool );
+ *     HelpTool.static.name = 'help';
+ *     HelpTool.static.icon = 'help';
+ *     HelpTool.static.title = 'Help';
+ *     toolFactory.register( HelpTool );
+ *
+ *     // Finally define which tools and in what order appear in the toolbar. Each tool may only be
+ *     // used once (but not all defined tools must be used).
+ *     toolbar.setup( [
+ *         {
+ *             // 'bar' tool groups display tools' icons only, side-by-side.
+ *             type: 'bar',
+ *             include: [ 'picture', 'help' ]
+ *         },
+ *         {
+ *             // 'list' tool groups display both the titles and icons, in a dropdown list.
+ *             type: 'list',
+ *             indicator: 'down',
+ *             label: 'More',
+ *             include: [ 'settings', 'stuff' ]
+ *         }
+ *         // Note how the tools themselves are toolgroup-agnostic - the same tool can be displayed
+ *         // either in a 'list' or a 'bar'. There is a 'menu' tool group too, not showcased here.
+ *     ] );
+ *
+ *     // Create some UI around the toolbar and place it in the document
+ *     var frame = new OO.ui.PanelLayout( {
+ *         expanded: false,
+ *         framed: true
+ *     } );
+ *     var contentFrame = new OO.ui.PanelLayout( {
+ *         expanded: false,
+ *         padded: true
+ *     } );
+ *     frame.$element.append(
+ *         toolbar.$element,
+ *         contentFrame.$element.append( $area )
+ *     );
+ *     $( 'body' ).append( frame.$element );
+ *
+ *     // Here is where the toolbar is actually built. This must be done after inserting it into the
+ *     // document.
+ *     toolbar.initialize();
+ *     toolbar.emit( 'updateState' );
+ *
  * @class
  * @extends OO.ui.Element
  * @mixins OO.EventEmitter
@@ -6671,7 +6832,7 @@ OO.ui.Toolbar = function OoUiToolbar( toolFactory, toolGroupFactory, config ) {
        // Events
        this.$element
                .add( this.$bar ).add( this.$group ).add( this.$actions )
-               .on( 'mousedown', this.onPointerDown.bind( this ) );
+               .on( 'mousedown keydown', this.onPointerDown.bind( this ) );
 
        // Initialization
        this.$group.addClass( 'oo-ui-toolbar-tools' );
@@ -6906,14 +7067,18 @@ OO.ui.ToolGroup = function OoUiToolGroup( toolbar, config ) {
        this.exclude = config.exclude || [];
        this.promote = config.promote || [];
        this.demote = config.demote || [];
-       this.onCapturedMouseUpHandler = this.onCapturedMouseUp.bind( this );
+       this.onCapturedMouseKeyUpHandler = this.onCapturedMouseKeyUp.bind( this );
 
        // Events
        this.$element.on( {
-               mousedown: this.onPointerDown.bind( this ),
-               mouseup: this.onPointerUp.bind( this ),
-               mouseover: this.onMouseOver.bind( this ),
-               mouseout: this.onMouseOut.bind( this )
+               mousedown: this.onMouseKeyDown.bind( this ),
+               mouseup: this.onMouseKeyUp.bind( this ),
+               keydown: this.onMouseKeyDown.bind( this ),
+               keyup: this.onMouseKeyUp.bind( this ),
+               focus: this.onMouseOverFocus.bind( this ),
+               blur: this.onMouseOutBlur.bind( this ),
+               mouseover: this.onMouseOverFocus.bind( this ),
+               mouseout: this.onMouseOutBlur.bind( this )
        } );
        this.toolbar.getToolFactory().connect( this, { register: 'onToolFactoryRegister' } );
        this.aggregate( { disable: 'itemDisable' } );
@@ -6996,57 +7161,64 @@ OO.ui.ToolGroup.prototype.updateDisabled = function () {
 };
 
 /**
- * Handle mouse down events.
+ * Handle mouse down and key down events.
  *
- * @param {jQuery.Event} e Mouse down event
+ * @param {jQuery.Event} e Mouse down or key down event
  */
-OO.ui.ToolGroup.prototype.onPointerDown = function ( e ) {
-       if ( !this.isDisabled() && e.which === 1 ) {
+OO.ui.ToolGroup.prototype.onMouseKeyDown = function ( e ) {
+       if (
+               !this.isDisabled() &&
+               ( e.which === 1 || e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )
+       ) {
                this.pressed = this.getTargetTool( e );
                if ( this.pressed ) {
                        this.pressed.setActive( true );
-                       this.getElementDocument().addEventListener(
-                               'mouseup', this.onCapturedMouseUpHandler, true
-                       );
+                       this.getElementDocument().addEventListener( 'mouseup', this.onCapturedMouseKeyUpHandler, true );
+                       this.getElementDocument().addEventListener( 'keyup', this.onCapturedMouseKeyUpHandler, true );
                }
+               return false;
        }
-       return false;
 };
 
 /**
- * Handle captured mouse up events.
+ * Handle captured mouse up and key up events.
  *
- * @param {Event} e Mouse up event
+ * @param {Event} e Mouse up or key up event
  */
-OO.ui.ToolGroup.prototype.onCapturedMouseUp = function ( e ) {
-       this.getElementDocument().removeEventListener( 'mouseup', this.onCapturedMouseUpHandler, true );
-       // onPointerUp may be called a second time, depending on where the mouse is when the button is
+OO.ui.ToolGroup.prototype.onCapturedMouseKeyUp = function ( e ) {
+       this.getElementDocument().removeEventListener( 'mouseup', this.onCapturedMouseKeyUpHandler, true );
+       this.getElementDocument().removeEventListener( 'keyup', this.onCapturedMouseKeyUpHandler, true );
+       // onMouseKeyUp may be called a second time, depending on where the mouse is when the button is
        // released, but since `this.pressed` will no longer be true, the second call will be ignored.
-       this.onPointerUp( e );
+       this.onMouseKeyUp( e );
 };
 
 /**
- * Handle mouse up events.
+ * Handle mouse up and key up events.
  *
- * @param {jQuery.Event} e Mouse up event
+ * @param {jQuery.Event} e Mouse up or key up event
  */
-OO.ui.ToolGroup.prototype.onPointerUp = function ( e ) {
+OO.ui.ToolGroup.prototype.onMouseKeyUp = function ( e ) {
        var tool = this.getTargetTool( e );
 
-       if ( !this.isDisabled() && e.which === 1 && this.pressed && this.pressed === tool ) {
+       if (
+               !this.isDisabled() && this.pressed && this.pressed === tool &&
+               ( e.which === 1 || e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )
+       ) {
                this.pressed.onSelect();
+               this.pressed = null;
+               return false;
        }
 
        this.pressed = null;
-       return false;
 };
 
 /**
- * Handle mouse over events.
+ * Handle mouse over and focus events.
  *
- * @param {jQuery.Event} e Mouse over event
+ * @param {jQuery.Event} e Mouse over or focus event
  */
-OO.ui.ToolGroup.prototype.onMouseOver = function ( e ) {
+OO.ui.ToolGroup.prototype.onMouseOverFocus = function ( e ) {
        var tool = this.getTargetTool( e );
 
        if ( this.pressed && this.pressed === tool ) {
@@ -7055,11 +7227,11 @@ OO.ui.ToolGroup.prototype.onMouseOver = function ( e ) {
 };
 
 /**
- * Handle mouse out events.
+ * Handle mouse out and blur events.
  *
- * @param {jQuery.Event} e Mouse out event
+ * @param {jQuery.Event} e Mouse out or blur event
  */
-OO.ui.ToolGroup.prototype.onMouseOut = function ( e ) {
+OO.ui.ToolGroup.prototype.onMouseOutBlur = function ( e ) {
        var tool = this.getTargetTool( e );
 
        if ( this.pressed && this.pressed === tool ) {
@@ -8144,6 +8316,18 @@ OO.mixinClass( OO.ui.FieldsetLayout, OO.ui.GroupElement );
  * FormLayouts are used to wrap {@link OO.ui.FieldsetLayout FieldsetLayouts} when you intend to use browser-based
  * form submission for the fields instead of handling them in JavaScript. Form layouts can be configured with an
  * HTML form action, an encoding type, and a method using the #action, #enctype, and #method configs, respectively.
+ * See the [OOjs UI documentation on MediaWiki] [1] for more information and examples.
+ *
+ * Only widgets from the {@link OO.ui.InputWidget InputWidget} family support form submission. It
+ * includes standard form elements like {@link OO.ui.CheckboxInputWidget checkboxes}, {@link
+ * OO.ui.RadioInputWidget radio buttons} and {@link OO.ui.TextInputWidget text fields}, as well as
+ * some fancier controls. Some controls have both regular and InputWidget variants, for example
+ * OO.ui.DropdownWidget and OO.ui.DropdownInputWidget – only the latter support form submission and
+ * often have simplified APIs to match the capabilities of HTML forms.
+ * See the [OOjs UI Inputs documentation on MediaWiki] [2] for more information about InputWidgets.
+ *
+ * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Layouts/Forms
+ * [2]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs
  *
  *     @example
  *     // Example of a form layout that wraps a fieldset layout
@@ -8248,34 +8432,80 @@ OO.ui.FormLayout.prototype.onFormSubmit = function () {
 };
 
 /**
- * Layout with a content and menu area.
+ * MenuLayouts combine a menu and a content {@link OO.ui.PanelLayout panel}. The menu is positioned relative to the content (after, before, top, or bottom)
+ * and its size is customized with the #menuSize config. The content area will fill all remaining space.
  *
- * The menu area can be positioned at the top, after, bottom or before. The content area will fill
- * all remaining space.
+ *     @example
+ *     var menuLayout = new OO.ui.MenuLayout( {
+ *         position: 'top'
+ *     } ),
+ *         menuPanel = new OO.ui.PanelLayout( { padded: true, expanded: true, scrollable: true } ),
+ *         contentPanel = new OO.ui.PanelLayout( { padded: true, expanded: true, scrollable: true } ),
+ *         select = new OO.ui.SelectWidget( {
+ *             items: [
+ *                 new OO.ui.OptionWidget( {
+ *                     data: 'before',
+ *                     label: 'Before',
+ *                 } ),
+ *                 new OO.ui.OptionWidget( {
+ *                     data: 'after',
+ *                     label: 'After',
+ *                 } ),
+ *                 new OO.ui.OptionWidget( {
+ *                     data: 'top',
+ *                     label: 'Top',
+ *                 } ),
+ *                 new OO.ui.OptionWidget( {
+ *                     data: 'bottom',
+ *                     label: 'Bottom',
+ *                 } )
+ *              ]
+ *         } ).on( 'select', function ( item ) {
+ *            menuLayout.setMenuPosition( item.getData() );
+ *         } );
+ *
+ *     menuLayout.$menu.append(
+ *         menuPanel.$element.append( '<b>Menu panel</b>', select.$element )
+ *     );
+ *     menuLayout.$content.append(
+ *         contentPanel.$element.append( '<b>Content panel</b>', '<p>Note that the menu is positioned relative to the content panel: top, bottom, after, before.</p>')
+ *     );
+ *     $( 'body' ).append( menuLayout.$element );
+ *
+ * If menu size needs to be overridden, it can be accomplished using CSS similar to the snippet
+ * below. MenuLayout's CSS will override the appropriate values with 'auto' or '0' to display the
+ * menu correctly. If `menuPosition` is known beforehand, CSS rules corresponding to other positions
+ * may be omitted.
+ *
+ *     .oo-ui-menuLayout-menu {
+ *         height: 200px;
+ *         width: 200px;
+ *     }
+ *     .oo-ui-menuLayout-content {
+ *         top: 200px;
+ *         left: 200px;
+ *         right: 200px;
+ *         bottom: 200px;
+ *     }
  *
  * @class
  * @extends OO.ui.Layout
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {number|string} [menuSize='18em'] Size of menu in pixels or any CSS unit
  * @cfg {boolean} [showMenu=true] Show menu
  * @cfg {string} [menuPosition='before'] Position of menu: `top`, `after`, `bottom` or `before`
  */
 OO.ui.MenuLayout = function OoUiMenuLayout( config ) {
-       var positions = this.constructor.static.menuPositions;
-
        // Configuration initialization
-       config = config || {};
+       config = $.extend( {
+               showMenu: true,
+               menuPosition: 'before'
+       }, config );
 
        // Parent constructor
        OO.ui.MenuLayout.super.call( this, config );
 
-       // Properties
-       this.showMenu = config.showMenu !== false;
-       this.menuSize = config.menuSize || '18em';
-       this.menuPosition = positions[ config.menuPosition ] || positions.before;
-
        /**
         * Menu DOM node
         *
@@ -8290,42 +8520,20 @@ OO.ui.MenuLayout = function OoUiMenuLayout( config ) {
        this.$content = $( '<div>' );
 
        // Initialization
-       this.toggleMenu( this.showMenu );
-       this.updateSizes();
        this.$menu
-               .addClass( 'oo-ui-menuLayout-menu' )
-               .css( this.menuPosition.sizeProperty, this.menuSize );
+               .addClass( 'oo-ui-menuLayout-menu' );
        this.$content.addClass( 'oo-ui-menuLayout-content' );
        this.$element
-               .addClass( 'oo-ui-menuLayout ' + this.menuPosition.className )
+               .addClass( 'oo-ui-menuLayout' )
                .append( this.$content, this.$menu );
+       this.setMenuPosition( config.menuPosition );
+       this.toggleMenu( config.showMenu );
 };
 
 /* Setup */
 
 OO.inheritClass( OO.ui.MenuLayout, OO.ui.Layout );
 
-/* Static Properties */
-
-OO.ui.MenuLayout.static.menuPositions = {
-       top: {
-               sizeProperty: 'height',
-               className: 'oo-ui-menuLayout-top'
-       },
-       after: {
-               sizeProperty: 'width',
-               className: 'oo-ui-menuLayout-after'
-       },
-       bottom: {
-               sizeProperty: 'height',
-               className: 'oo-ui-menuLayout-bottom'
-       },
-       before: {
-               sizeProperty: 'width',
-               className: 'oo-ui-menuLayout-before'
-       }
-};
-
 /* Methods */
 
 /**
@@ -8339,7 +8547,9 @@ OO.ui.MenuLayout.prototype.toggleMenu = function ( showMenu ) {
 
        if ( this.showMenu !== showMenu ) {
                this.showMenu = showMenu;
-               this.updateSizes();
+               this.$element
+                       .toggleClass( 'oo-ui-menuLayout-showMenu', this.showMenu )
+                       .toggleClass( 'oo-ui-menuLayout-hideMenu', !this.showMenu );
        }
 
        return this;
@@ -8354,59 +8564,6 @@ OO.ui.MenuLayout.prototype.isMenuVisible = function () {
        return this.showMenu;
 };
 
-/**
- * Set menu size.
- *
- * @param {number|string} size Size of menu in pixels or any CSS unit
- * @chainable
- */
-OO.ui.MenuLayout.prototype.setMenuSize = function ( size ) {
-       this.menuSize = size;
-       this.updateSizes();
-
-       return this;
-};
-
-/**
- * Update menu and content CSS based on current menu size and visibility
- *
- * This method is called internally when size or position is changed.
- */
-OO.ui.MenuLayout.prototype.updateSizes = function () {
-       if ( this.showMenu ) {
-               this.$menu
-                       .css( this.menuPosition.sizeProperty, this.menuSize )
-                       .css( 'overflow', '' );
-               // Set offsets on all sides. CSS resets all but one with
-               // 'important' rules so directionality flips are supported
-               this.$content.css( {
-                       top: this.menuSize,
-                       right: this.menuSize,
-                       bottom: this.menuSize,
-                       left: this.menuSize
-               } );
-       } else {
-               this.$menu
-                       .css( this.menuPosition.sizeProperty, 0 )
-                       .css( 'overflow', 'hidden' );
-               this.$content.css( {
-                       top: 0,
-                       right: 0,
-                       bottom: 0,
-                       left: 0
-               } );
-       }
-};
-
-/**
- * Get menu size.
- *
- * @return {number|string} Menu size
- */
-OO.ui.MenuLayout.prototype.getMenuSize = function () {
-       return this.menuSize;
-};
-
 /**
  * Set menu position.
  *
@@ -8415,19 +8572,9 @@ OO.ui.MenuLayout.prototype.getMenuSize = function () {
  * @chainable
  */
 OO.ui.MenuLayout.prototype.setMenuPosition = function ( position ) {
-       var positions = this.constructor.static.menuPositions;
-
-       if ( !positions[ position ] ) {
-               throw new Error( 'Cannot set position; unsupported position value: ' + position );
-       }
-
-       this.$menu.css( this.menuPosition.sizeProperty, '' );
-       this.$element.removeClass( this.menuPosition.className );
-
-       this.menuPosition = positions[ position ];
-
-       this.updateSizes();
-       this.$element.addClass( this.menuPosition.className );
+       this.$element.removeClass( 'oo-ui-menuLayout-' + this.menuPosition );
+       this.menuPosition = position;
+       this.$element.addClass( 'oo-ui-menuLayout-' + position );
 
        return this;
 };
@@ -8647,6 +8794,35 @@ OO.ui.BookletLayout.prototype.focus = function ( itemIndex ) {
        }
 };
 
+/**
+ * Find the first focusable input in the booklet layout and focus
+ * on it.
+ */
+OO.ui.BookletLayout.prototype.focusFirstFocusable = function () {
+       var i, len,
+               found = false,
+               items = this.stackLayout.getItems(),
+               checkAndFocus = function () {
+                       if ( OO.ui.isFocusableElement( $( this ) ) ) {
+                               $( this ).focus();
+                               found = true;
+                               return false;
+                       }
+               };
+
+       for ( i = 0, len = items.length; i < len; i++ ) {
+               if ( found ) {
+                       break;
+               }
+               // Find all potentially focusable elements in the item
+               // and check if they are focusable
+               items[i].$element
+                       .find( 'input, select, textarea, button, object' )
+                       /* jshint loopfunc:true */
+                       .each( checkAndFocus );
+       }
+};
+
 /**
  * Handle outline widget select events.
  *
@@ -9412,6 +9588,7 @@ OO.ui.BarToolGroup.static.name = 'bar';
  * @mixins OO.ui.LabelElement
  * @mixins OO.ui.TitledElement
  * @mixins OO.ui.ClippableElement
+ * @mixins OO.ui.TabIndexedElement
  *
  * @constructor
  * @param {OO.ui.Toolbar} toolbar
@@ -9431,23 +9608,26 @@ OO.ui.PopupToolGroup = function OoUiPopupToolGroup( toolbar, config ) {
        // Parent constructor
        OO.ui.PopupToolGroup.super.call( this, toolbar, config );
 
+       // Properties
+       this.active = false;
+       this.dragging = false;
+       this.onBlurHandler = this.onBlur.bind( this );
+       this.$handle = $( '<span>' );
+
        // Mixin constructors
        OO.ui.IconElement.call( this, config );
        OO.ui.IndicatorElement.call( this, config );
        OO.ui.LabelElement.call( this, config );
        OO.ui.TitledElement.call( this, config );
        OO.ui.ClippableElement.call( this, $.extend( {}, config, { $clippable: this.$group } ) );
-
-       // Properties
-       this.active = false;
-       this.dragging = false;
-       this.onBlurHandler = this.onBlur.bind( this );
-       this.$handle = $( '<span>' );
+       OO.ui.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$handle } ) );
 
        // Events
        this.$handle.on( {
-               mousedown: this.onHandlePointerDown.bind( this ),
-               mouseup: this.onHandlePointerUp.bind( this )
+               keydown: this.onHandleMouseKeyDown.bind( this ),
+               keyup: this.onHandleMouseKeyUp.bind( this ),
+               mousedown: this.onHandleMouseKeyDown.bind( this ),
+               mouseup: this.onHandleMouseKeyUp.bind( this )
        } );
 
        // Initialization
@@ -9477,6 +9657,7 @@ OO.mixinClass( OO.ui.PopupToolGroup, OO.ui.IndicatorElement );
 OO.mixinClass( OO.ui.PopupToolGroup, OO.ui.LabelElement );
 OO.mixinClass( OO.ui.PopupToolGroup, OO.ui.TitledElement );
 OO.mixinClass( OO.ui.PopupToolGroup, OO.ui.ClippableElement );
+OO.mixinClass( OO.ui.PopupToolGroup, OO.ui.TabIndexedElement );
 
 /* Static Properties */
 
@@ -9497,9 +9678,9 @@ OO.ui.PopupToolGroup.prototype.setDisabled = function () {
 /**
  * Handle focus being lost.
  *
- * The event is actually generated from a mouseup, so it is not a normal blur event object.
+ * The event is actually generated from a mouseup/keyup, so it is not a normal blur event object.
  *
- * @param {jQuery.Event} e Mouse up event
+ * @param {jQuery.Event} e Mouse up or key up event
  */
 OO.ui.PopupToolGroup.prototype.onBlur = function ( e ) {
        // Only deactivate when clicking outside the dropdown element
@@ -9511,33 +9692,44 @@ OO.ui.PopupToolGroup.prototype.onBlur = function ( e ) {
 /**
  * @inheritdoc
  */
-OO.ui.PopupToolGroup.prototype.onPointerUp = function ( e ) {
+OO.ui.PopupToolGroup.prototype.onMouseKeyUp = function ( e ) {
        // Only close toolgroup when a tool was actually selected
-       if ( !this.isDisabled() && e.which === 1 && this.pressed && this.pressed === this.getTargetTool( e ) ) {
+       if (
+               !this.isDisabled() && this.pressed && this.pressed === this.getTargetTool( e ) &&
+               ( e.which === 1 || e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )
+       ) {
                this.setActive( false );
        }
-       return OO.ui.PopupToolGroup.super.prototype.onPointerUp.call( this, e );
+       return OO.ui.PopupToolGroup.super.prototype.onMouseKeyUp.call( this, e );
 };
 
 /**
- * Handle mouse up events.
+ * Handle mouse up and key up events.
  *
- * @param {jQuery.Event} e Mouse up event
+ * @param {jQuery.Event} e Mouse up or key up event
  */
-OO.ui.PopupToolGroup.prototype.onHandlePointerUp = function () {
-       return false;
+OO.ui.PopupToolGroup.prototype.onHandleMouseKeyUp = function ( e ) {
+       if (
+               !this.isDisabled() &&
+               ( e.which === 1 || e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )
+       ) {
+               return false;
+       }
 };
 
 /**
- * Handle mouse down events.
+ * Handle mouse down and key down events.
  *
- * @param {jQuery.Event} e Mouse down event
+ * @param {jQuery.Event} e Mouse down or key down event
  */
-OO.ui.PopupToolGroup.prototype.onHandlePointerDown = function ( e ) {
-       if ( !this.isDisabled() && e.which === 1 ) {
+OO.ui.PopupToolGroup.prototype.onHandleMouseKeyDown = function ( e ) {
+       if (
+               !this.isDisabled() &&
+               ( e.which === 1 || e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )
+       ) {
                this.setActive( !this.active );
+               return false;
        }
-       return false;
 };
 
 /**
@@ -9551,6 +9743,7 @@ OO.ui.PopupToolGroup.prototype.setActive = function ( value ) {
                this.active = value;
                if ( value ) {
                        this.getElementDocument().addEventListener( 'mouseup', this.onBlurHandler, true );
+                       this.getElementDocument().addEventListener( 'keyup', this.onBlurHandler, true );
 
                        // Try anchoring the popup to the left first
                        this.$element.addClass( 'oo-ui-popupToolGroup-active oo-ui-popupToolGroup-left' );
@@ -9565,6 +9758,7 @@ OO.ui.PopupToolGroup.prototype.setActive = function ( value ) {
                        }
                } else {
                        this.getElementDocument().removeEventListener( 'mouseup', this.onBlurHandler, true );
+                       this.getElementDocument().removeEventListener( 'keyup', this.onBlurHandler, true );
                        this.$element.removeClass(
                                'oo-ui-popupToolGroup-active oo-ui-popupToolGroup-left  oo-ui-popupToolGroup-right'
                        );
@@ -9683,16 +9877,18 @@ OO.ui.ListToolGroup.prototype.getExpandCollapseTool = function () {
 /**
  * @inheritdoc
  */
-OO.ui.ListToolGroup.prototype.onPointerUp = function ( e ) {
-       var ret = OO.ui.ListToolGroup.super.prototype.onPointerUp.call( this, e );
-
+OO.ui.ListToolGroup.prototype.onMouseKeyUp = function ( e ) {
        // Do not close the popup when the user wants to show more/fewer tools
-       if ( $( e.target ).closest( '.oo-ui-tool-name-more-fewer' ).length ) {
-               // Prevent the popup list from being hidden
-               this.setActive( true );
+       if (
+               $( e.target ).closest( '.oo-ui-tool-name-more-fewer' ).length &&
+               ( e.which === 1 || e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )
+       ) {
+               // HACK: Prevent the popup list from being hidden. Skip the PopupToolGroup implementation (which
+               // hides the popup list when a tool is selected) and call ToolGroup's implementation directly.
+               return OO.ui.ListToolGroup.super.super.prototype.onMouseKeyUp.call( this, e );
+       } else {
+               return OO.ui.ListToolGroup.super.prototype.onMouseKeyUp.call( this, e );
        }
-
-       return ret;
 };
 
 OO.ui.ListToolGroup.prototype.updateCollapsibleState = function () {
@@ -10157,11 +10353,12 @@ OO.ui.OutlineControlsWidget.prototype.onOutlineChange = function () {
 };
 
 /**
- * ToggleWidget is mixed into other classes to create widgets with an on/off state.
+ * ToggleWidget implements basic behavior of widgets with an on/off state.
  * Please see OO.ui.ToggleButtonWidget and OO.ui.ToggleSwitchWidget for examples.
  *
  * @abstract
  * @class
+ * @extends OO.ui.Widget
  *
  * @constructor
  * @param {Object} [config] Configuration options
@@ -10172,6 +10369,9 @@ OO.ui.ToggleWidget = function OoUiToggleWidget( config ) {
        // Configuration initialization
        config = config || {};
 
+       // Parent constructor
+       OO.ui.ToggleWidget.super.call( this, config );
+
        // Properties
        this.value = null;
 
@@ -10180,6 +10380,10 @@ OO.ui.ToggleWidget = function OoUiToggleWidget( config ) {
        this.setValue( !!config.value );
 };
 
+/* Setup */
+
+OO.inheritClass( OO.ui.ToggleWidget, OO.ui.Widget );
+
 /* Events */
 
 /**
@@ -10311,8 +10515,7 @@ OO.mixinClass( OO.ui.ButtonGroupWidget, OO.ui.GroupElement );
  */
 OO.ui.ButtonWidget = function OoUiButtonWidget( config ) {
        // Configuration initialization
-       // FIXME: The `nofollow` alias is deprecated and will be removed (T89767)
-       config = $.extend( { noFollow: config && config.nofollow }, config );
+       config = config || {};
 
        // Parent constructor
        OO.ui.ButtonWidget.super.call( this, config );
@@ -10330,7 +10533,9 @@ OO.ui.ButtonWidget = function OoUiButtonWidget( config ) {
        this.href = null;
        this.target = null;
        this.noFollow = false;
-       this.isHyperlink = false;
+
+       // Events
+       this.connect( this, { disable: 'onDisable' } );
 
        // Initialization
        this.$button.append( this.$icon, this.$label, this.$indicator );
@@ -10384,7 +10589,7 @@ OO.ui.ButtonWidget.prototype.onMouseUp = function ( e ) {
  */
 OO.ui.ButtonWidget.prototype.onClick = function ( e ) {
        var ret = OO.ui.ButtonElement.prototype.onClick.call( this, e );
-       if ( this.isHyperlink ) {
+       if ( this.href ) {
                return true;
        }
        return ret;
@@ -10395,7 +10600,7 @@ OO.ui.ButtonWidget.prototype.onClick = function ( e ) {
  */
 OO.ui.ButtonWidget.prototype.onKeyPress = function ( e ) {
        var ret = OO.ui.ButtonElement.prototype.onKeyPress.call( this, e );
-       if ( this.isHyperlink ) {
+       if ( this.href ) {
                return true;
        }
        return ret;
@@ -10438,18 +10643,39 @@ OO.ui.ButtonWidget.prototype.setHref = function ( href ) {
 
        if ( href !== this.href ) {
                this.href = href;
-               if ( href !== null ) {
-                       this.$button.attr( 'href', href );
-                       this.isHyperlink = true;
-               } else {
-                       this.$button.removeAttr( 'href' );
-                       this.isHyperlink = false;
-               }
+               this.updateHref();
+       }
+
+       return this;
+};
+
+/**
+ * Update the `href` attribute, in case of changes to href or
+ * disabled state.
+ *
+ * @private
+ * @chainable
+ */
+OO.ui.ButtonWidget.prototype.updateHref = function () {
+       if ( this.href !== null && !this.isDisabled() ) {
+               this.$button.attr( 'href', this.href );
+       } else {
+               this.$button.removeAttr( 'href' );
        }
 
        return this;
 };
 
+/**
+ * Handle disable events.
+ *
+ * @private
+ * @param {boolean} disabled Element is disabled
+ */
+OO.ui.ButtonWidget.prototype.onDisable = function () {
+       this.updateHref();
+};
+
 /**
  * Set hyperlink target.
  *
@@ -10742,8 +10968,14 @@ OO.ui.PopupButtonWidget.prototype.onAction = function () {
  * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Buttons_and_Switches#Toggle_buttons
  *
  * @class
- * @extends OO.ui.ButtonWidget
- * @mixins OO.ui.ToggleWidget
+ * @extends OO.ui.ToggleWidget
+ * @mixins OO.ui.ButtonElement
+ * @mixins OO.ui.IconElement
+ * @mixins OO.ui.IndicatorElement
+ * @mixins OO.ui.LabelElement
+ * @mixins OO.ui.TitledElement
+ * @mixins OO.ui.FlaggedElement
+ * @mixins OO.ui.TabIndexedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
@@ -10758,26 +10990,41 @@ OO.ui.ToggleButtonWidget = function OoUiToggleButtonWidget( config ) {
        OO.ui.ToggleButtonWidget.super.call( this, config );
 
        // Mixin constructors
-       OO.ui.ToggleWidget.call( this, config );
+       OO.ui.ButtonElement.call( this, config );
+       OO.ui.IconElement.call( this, config );
+       OO.ui.IndicatorElement.call( this, config );
+       OO.ui.LabelElement.call( this, config );
+       OO.ui.TitledElement.call( this, $.extend( {}, config, { $titled: this.$button } ) );
+       OO.ui.FlaggedElement.call( this, config );
+       OO.ui.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$button } ) );
 
        // Events
        this.connect( this, { click: 'onAction' } );
 
        // Initialization
-       this.$element.addClass( 'oo-ui-toggleButtonWidget' );
+       this.$button.append( this.$icon, this.$label, this.$indicator );
+       this.$element
+               .addClass( 'oo-ui-toggleButtonWidget' )
+               .append( this.$button );
 };
 
 /* Setup */
 
-OO.inheritClass( OO.ui.ToggleButtonWidget, OO.ui.ButtonWidget );
-OO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.ToggleWidget );
+OO.inheritClass( OO.ui.ToggleButtonWidget, OO.ui.ToggleWidget );
+OO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.ButtonElement );
+OO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.IconElement );
+OO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.IndicatorElement );
+OO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.LabelElement );
+OO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.TitledElement );
+OO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.FlaggedElement );
+OO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.TabIndexedElement );
 
 /* Methods */
 
 /**
+ * Handle the button action being triggered.
  *
  * @private
- * Handle the button action being triggered.
  */
 OO.ui.ToggleButtonWidget.prototype.onAction = function () {
        this.setValue( !this.value );
@@ -10789,16 +11036,30 @@ OO.ui.ToggleButtonWidget.prototype.onAction = function () {
 OO.ui.ToggleButtonWidget.prototype.setValue = function ( value ) {
        value = !!value;
        if ( value !== this.value ) {
-               this.$button.attr( 'aria-pressed', value.toString() );
+               // Might be called from parent constructor before ButtonElement constructor
+               if ( this.$button ) {
+                       this.$button.attr( 'aria-pressed', value.toString() );
+               }
                this.setActive( value );
        }
 
-       // Parent method (from mixin)
-       OO.ui.ToggleWidget.prototype.setValue.call( this, value );
+       // Parent method
+       OO.ui.ToggleButtonWidget.super.prototype.setValue.call( this, value );
 
        return this;
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.ToggleButtonWidget.prototype.setButtonElement = function ( $button ) {
+       if ( this.$button ) {
+               this.$button.removeAttr( 'aria-pressed' );
+       }
+       OO.ui.ButtonElement.prototype.setButtonElement.call( this, $button );
+       this.$button.attr( 'aria-pressed', this.value.toString() );
+};
+
 /**
  * DropdownWidgets are not menus themselves, rather they contain a menu of options created with
  * OO.ui.MenuOptionWidget. The DropdownWidget takes care of opening and displaying the menu so that
@@ -11290,7 +11551,6 @@ OO.ui.InputWidget.prototype.blur = function () {
  * @mixins OO.ui.IndicatorElement
  * @mixins OO.ui.LabelElement
  * @mixins OO.ui.TitledElement
- * @mixins OO.ui.FlaggedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
@@ -11316,7 +11576,6 @@ OO.ui.ButtonInputWidget = function OoUiButtonInputWidget( config ) {
        OO.ui.IndicatorElement.call( this, config );
        OO.ui.LabelElement.call( this, config );
        OO.ui.TitledElement.call( this, $.extend( {}, config, { $titled: this.$input } ) );
-       OO.ui.FlaggedElement.call( this, config );
 
        // Initialization
        if ( !config.useInputTag ) {
@@ -11333,7 +11592,6 @@ OO.mixinClass( OO.ui.ButtonInputWidget, OO.ui.IconElement );
 OO.mixinClass( OO.ui.ButtonInputWidget, OO.ui.IndicatorElement );
 OO.mixinClass( OO.ui.ButtonInputWidget, OO.ui.LabelElement );
 OO.mixinClass( OO.ui.ButtonInputWidget, OO.ui.TitledElement );
-OO.mixinClass( OO.ui.ButtonInputWidget, OO.ui.FlaggedElement );
 
 /* Methods */
 
@@ -11392,10 +11650,12 @@ OO.ui.ButtonInputWidget.prototype.setValue = function ( value ) {
 
 /**
  * CheckboxInputWidgets, like HTML checkboxes, can be selected and/or configured with a value.
- *  Note that these {@link OO.ui.InputWidget input widgets} are best laid out
+ * Note that these {@link OO.ui.InputWidget input widgets} are best laid out
  * in {@link OO.ui.FieldLayout field layouts} that use the {@link OO.ui.FieldLayout#align inline}
  * alignment. For more information, please see the [OOjs UI documentation on MediaWiki][1].
  *
+ * This widget can be used inside a HTML form, such as a OO.ui.FormLayout.
+ *
  *     @example
  *     // An example of selected, unselected, and disabled checkbox inputs
  *     var checkbox1=new OO.ui.CheckboxInputWidget( {
@@ -11501,8 +11761,8 @@ OO.ui.CheckboxInputWidget.prototype.isSelected = function () {
 
 /**
  * DropdownInputWidget is a {@link OO.ui.DropdownWidget DropdownWidget} intended to be used
- * within a {@link OO.ui.FormLayout form}. The selected value is synchronized with the value
- * of  a hidden HTML `input` tag. Please see the [OOjs UI documentation on MediaWiki][1] for
+ * within a HTML form, such as a OO.ui.FormLayout. The selected value is synchronized with the value
+ * of a hidden HTML `input` tag. Please see the [OOjs UI documentation on MediaWiki][1] for
  * more information about input widgets.
  *
  *     @example
@@ -11646,6 +11906,8 @@ OO.ui.DropdownInputWidget.prototype.blur = function () {
  * with {@link OO.ui.RadioOptionWidget radio options} instead of this class. For more information,
  * please see the [OOjs UI documentation on MediaWiki][1].
  *
+ * This widget can be used inside a HTML form, such as a OO.ui.FormLayout.
+ *
  *     @example
  *     // An example of selected, unselected, and disabled radio inputs
  *     var radio1 = new OO.ui.RadioInputWidget( {
@@ -11741,6 +12003,8 @@ OO.ui.RadioInputWidget.prototype.isSelected = function () {
  * which modifies incoming values rather than validating them.
  * Please see the [OOjs UI documentation on MediaWiki] [1] for more information and examples.
  *
+ * This widget can be used inside a HTML form, such as a OO.ui.FormLayout.
+ *
  *     @example
  *     // Example of a text input widget
  *     var textInput = new OO.ui.TextInputWidget( {
@@ -14107,11 +14371,7 @@ OO.ui.SelectWidget.prototype.unbindKeyDownListener = function () {
  * @return {OO.ui.OptionWidget|null} Outline item widget, `null` if none was found
  */
 OO.ui.SelectWidget.prototype.getTargetItem = function ( e ) {
-       var $item = $( e.target ).closest( '.oo-ui-optionWidget' );
-       if ( $item.length ) {
-               return $item.data( 'oo-ui-optionWidget' );
-       }
-       return null;
+       return $( e.target ).closest( '.oo-ui-optionWidget' ).data( 'oo-ui-optionWidget' ) || null;
 };
 
 /**
@@ -14930,8 +15190,7 @@ OO.mixinClass( OO.ui.OutlineSelectWidget, OO.ui.TabIndexedElement );
  *     $( 'body' ).append( fieldset.$element );
  *
  * @class
- * @extends OO.ui.Widget
- * @mixins OO.ui.ToggleWidget
+ * @extends OO.ui.ToggleWidget
  * @mixins OO.ui.TabIndexedElement
  *
  * @constructor
@@ -14944,7 +15203,6 @@ OO.ui.ToggleSwitchWidget = function OoUiToggleSwitchWidget( config ) {
        OO.ui.ToggleSwitchWidget.super.call( this, config );
 
        // Mixin constructors
-       OO.ui.ToggleWidget.call( this, config );
        OO.ui.TabIndexedElement.call( this, config );
 
        // Properties
@@ -14971,8 +15229,7 @@ OO.ui.ToggleSwitchWidget = function OoUiToggleSwitchWidget( config ) {
 
 /* Setup */
 
-OO.inheritClass( OO.ui.ToggleSwitchWidget, OO.ui.Widget );
-OO.mixinClass( OO.ui.ToggleSwitchWidget, OO.ui.ToggleWidget );
+OO.inheritClass( OO.ui.ToggleSwitchWidget, OO.ui.ToggleWidget );
 OO.mixinClass( OO.ui.ToggleSwitchWidget, OO.ui.TabIndexedElement );
 
 /* Methods */
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.png
new file mode 100644 (file)
index 0000000..bc4bc26
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.svg
new file mode 100644 (file)
index 0000000..d96a2e3
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="viewCompact">
+        <circle cx="6" cy="6" r="2"/>
+        <circle cx="12" cy="6" r="2"/>
+        <circle cx="18" cy="6" r="2"/>
+        <circle cx="6" cy="12" r="2"/>
+        <circle cx="12" cy="12" r="2"/>
+        <circle cx="18" cy="12" r="2"/>
+        <circle cx="6" cy="18" r="2"/>
+        <circle cx="12" cy="18" r="2"/>
+        <circle cx="18" cy="18" r="2"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.png
new file mode 100644 (file)
index 0000000..4ab5394
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.svg
new file mode 100644 (file)
index 0000000..4f5f9b3
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="viewDetails">
+        <circle cx="5.5" cy="8.5" r="2.5"/>
+        <path d="M10 6h12v1H10zM10 8h9v1h-9zM10 10h4v1h-4z"/>
+        <circle cx="5.5" cy="16.5" r="2.5"/>
+        <path d="M10 14h12v1H10zM10 16h9v1h-9zM10 18h4v1h-4z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.png
new file mode 100644 (file)
index 0000000..46587ec
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.svg
new file mode 100644 (file)
index 0000000..f43b05f
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="viewDetails">
+        <circle cx="18.5" cy="8.5" r="2.5"/>
+        <path d="M14 6H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
+        <circle cx="18.5" cy="16.5" r="2.5"/>
+        <path d="M14 14H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.png
new file mode 100644 (file)
index 0000000..e1afbae
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.svg
new file mode 100644 (file)
index 0000000..ae6ba27
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M0 10v8h2.3c.3.6 1 1 1.7 1h4c1.5 0 2.7-.8 3-2h2c.3 1.2 1.5 2 3 2h4c.7 0 1.4 0 1.7-1H24v-8zm10 6c0 1-.4 2-2 2H4c-.6 0-1-.4-1-1v-3c0-.6.4-1 1-1h5c.6 0 1 .4 1 1zm11 1c0 .6-.4 1-1 1h-4c-1.6 0-2-1-2-2v-2c0-.6.4-1 1-1h5c.6 0 1 .4 1 1z"/>
+</svg>
index f01115b..387b020 100644 (file)
@@ -2,7 +2,7 @@
 
 .mw-category {
        .column-count(3);
-       .column-width(25em);
+       .column-width(24em);
        .mw-category-group {
                li {
                        .column-break-inside-avoid;
index f5aeb3f..32cd79a 100644 (file)
         * Wikipage import methods
         *
         * See https://www.mediawiki.org/wiki/ResourceLoader/Legacy_JavaScript#wikibits.js
-        *
-        * @deprecated since 1.17 Use mw.loader instead. Warnings added in 1.26.
         */
 
        function importScript( page ) {
                return importScriptURI( uri );
        }
 
+       /**
+        * @deprecated since 1.17 Use mw.loader instead. Warnings added in 1.25.
+        */
        function importScriptURI( url ) {
                if ( loadedScripts[url] ) {
                        return null;
                return importStylesheetURI( uri );
        }
 
+       /**
+        * @deprecated since 1.17 Use mw.loader instead. Warnings added in 1.25.
+        */
        function importStylesheetURI( url, media ) {
                var l = document.createElement( 'link' );
                l.rel = 'stylesheet';
 
        msg = 'Use mw.loader instead.';
        mw.log.deprecate( win, 'loadedScripts', loadedScripts, msg );
-       mw.log.deprecate( win, 'importScript', importScript, msg );
        mw.log.deprecate( win, 'importScriptURI', importScriptURI, msg );
-       mw.log.deprecate( win, 'importStylesheet', importStylesheet, msg );
        mw.log.deprecate( win, 'importStylesheetURI', importStylesheetURI, msg );
+       // Not quite deprecated yet.
+       win.importScript = importScript;
+       win.importStylesheet = importStylesheet;
 
 }( mediaWiki, jQuery ) );
index 3f4c6f9..a33b86a 100644 (file)
@@ -1,4 +1,4 @@
-.PHONY: help test phpunit install coverage warning destructive parser noparser safe databaseless list-groups
+.PHONY: help test phpunit coverage warning destructive parser noparser safe databaseless list-groups
 .DEFAULT: warning
 
 SHELL = /bin/sh
@@ -35,9 +35,6 @@ destructive: phpunit
 phpunit:
        ${PU}
 
-install:
-       ./install-phpunit.sh
-
 tap:
        ${PU} --tap
 
index 54758f9..b666c83 100644 (file)
@@ -36,39 +36,6 @@ class FormatMetadataTest extends MediaWikiMediaTestCase {
                        'File with invalid date metadata (bug 29471)' );
        }
 
-       /**
-        * @param string $filename
-        * @param int $expected Total image area
-        * @dataProvider provideFlattenArray
-        * @covers FormatMetadata::flattenArray
-        */
-       public function testFlattenArray( $vals, $type, $noHtml, $ctx, $expected ) {
-               $actual = FormatMetadata::flattenArray( $vals, $type, $noHtml, $ctx );
-               $this->assertEquals( $expected, $actual );
-       }
-
-       public static function provideFlattenArray() {
-               return array(
-                       array(
-                               array( 1, 2, 3 ), 'ul', false, false,
-                               "<ul><li>1</li>\n<li>2</li>\n<li>3</li></ul>",
-                       ),
-                       array(
-                               array( 1, 2, 3 ), 'ol', false, false,
-                               "<ol><li>1</li>\n<li>2</li>\n<li>3</li></ol>",
-                       ),
-                       array(
-                               array( 1, 2, 3 ), 'ul', true, false,
-                               "\n*1\n*2\n*3",
-                       ),
-                       array(
-                               array( 1, 2, 3 ), 'ol', true, false,
-                               "\n#1\n#2\n#3",
-                       ),
-                       // TODO: more test cases
-               );
-       }
-
        /**
         * @param mixed $input
         * @param mixed $output
diff --git a/tests/phpunit/includes/objectcache/WANObjectCacheTest.php b/tests/phpunit/includes/objectcache/WANObjectCacheTest.php
new file mode 100644 (file)
index 0000000..3161d18
--- /dev/null
@@ -0,0 +1,243 @@
+<?php
+
+class WANObjectCacheTest extends MediaWikiTestCase {
+       /** @var WANObjectCache */
+       private $cache;
+
+       protected function setUp() {
+               parent::setUp();
+
+               if ( $this->getCliArg( 'use-wanobjectcache' ) ) {
+                       $name = $this->getCliArg( 'use-wanobjectcache' );
+
+                       $this->cache = ObjectCache::getWANInstance( $name );
+               } else {
+                       $this->cache = new WANObjectCache( array(
+                               'cache'   => new HashBagOStuff(),
+                               'pool'    => 'testcache-hash',
+                               'relayer' => new EventRelayerNull( array() )
+                       ) );
+               }
+       }
+
+       /**
+        * @dataProvider provider_testSetAndGet
+        * @covers WANObjectCache::set()
+        * @covers WANObjectCache::get()
+        * @param mixed $value
+        * @param integer $ttl
+        */
+       public function testSetAndGet( $value, $ttl ) {
+               $key = wfRandomString();
+               $this->cache->set( $key, $value, $ttl );
+
+               $curTTL = null;
+               $this->assertEquals( $value, $this->cache->get( $key, $curTTL ) );
+               if ( is_infinite( $ttl ) || $ttl == 0 ) {
+                       $this->assertTrue( is_infinite( $curTTL ), "Current TTL is infinite" );
+               } else {
+                       $this->assertGreaterThan( 0, $curTTL, "Current TTL > 0" );
+                       $this->assertLessThanOrEqual( $ttl, $curTTL, "Current TTL < nominal TTL" );
+               }
+       }
+
+       public static function provider_testSetAndGet() {
+               return array(
+                       array( 14141, 3 ),
+                       array( 3535.666, 3 ),
+                       array( array(), 3 ),
+                       array( null, 3 ),
+                       array( '0', 3 ),
+                       array( (object)array( 'meow' ), 3 ),
+                       array( INF, 3 ),
+                       array( '', 3 ),
+                       array( 'pizzacat', INF ),
+               );
+       }
+
+       public function testGetNotExists() {
+               $key = wfRandomString();
+               $curTTL = null;
+               $value = $this->cache->get( $key, $curTTL );
+
+               $this->assertFalse( $value, "Non-existing key has false value" );
+               $this->assertNull( $curTTL, "Non-existing key has null current TTL" );
+       }
+
+       public function testSetOver() {
+               $key = wfRandomString();
+               for ( $i=0; $i<3; ++$i ) {
+                       $value = wfRandomString();
+                       $this->cache->set($key, $value, 3);
+
+                       $this->assertEquals( $this->cache->get( $key ), $value );
+               }
+       }
+
+       /**
+        * @covers WANObjectCache::getWithSetCallback()
+        */
+       public function testGetWithSetCallback() {
+               $cache = $this->cache;
+
+               $key = wfRandomString();
+               $value = wfRandomString();
+               $cKey1 = wfRandomString();
+               $cKey2 = wfRandomString();
+
+               $wasSet = 0;
+               $func = function() use ( &$wasSet, $value ) { ++$wasSet; return $value; };
+
+               $wasSet = 0;
+               $v = $cache->getWithSetCallback( $key, $func, 30, array(), array( 'lockTSE' => 5 ) );
+               $this->assertEquals( $v, $value );
+               $this->assertEquals( 1, $wasSet, "Value regenerated" );
+
+               $wasSet = 0;
+               $v = $cache->getWithSetCallback( $key, $func, 30, array(), array( 'lockTSE' => 5 ) );
+               $this->assertEquals( $v, $value );
+               $this->assertEquals( 0, $wasSet, "Value not regenerated" );
+
+               $priorTime = microtime( true );
+               usleep( 1 );
+               $wasSet = 0;
+               $v = $cache->getWithSetCallback( $key, $func, 30, array( $cKey1, $cKey2 ) );
+               $this->assertEquals( $v, $value );
+               $this->assertEquals( 1, $wasSet, "Value regenerated due to check keys" );
+               $t1 = $cache->getCheckKeyTime( $cKey1 );
+               $this->assertGreaterThanOrEqual( $priorTime, $t1, 'Check keys generated on miss' );
+               $t2 = $cache->getCheckKeyTime( $cKey2 );
+               $this->assertGreaterThanOrEqual( $priorTime, $t2, 'Check keys generated on miss' );
+
+               $priorTime = microtime( true );
+               $wasSet = 0;
+               $v = $cache->getWithSetCallback( $key, $func, 30, array( $cKey1, $cKey2 ) );
+               $this->assertEquals( $v, $value );
+               $this->assertEquals( 1, $wasSet, "Value regenerated due to still-recent check keys" );
+               $t1 = $cache->getCheckKeyTime( $cKey1 );
+               $this->assertLessThanOrEqual( $priorTime, $t1, 'Check keys did not change again' );
+               $t2 = $cache->getCheckKeyTime( $cKey2 );
+               $this->assertLessThanOrEqual( $priorTime, $t2, 'Check keys did not change again' );
+
+               $curTTL = null;
+               $v = $cache->get( $key, $curTTL, array( $cKey1, $cKey2 ) );
+               $this->assertEquals( $v, $value );
+               $this->assertLessThanOrEqual( 0, $curTTL, "Value has current TTL < 0 due to check keys" );
+       }
+
+       /**
+        * @covers WANObjectCache::getMulti()
+        */
+       public function testGetMulti() {
+               $cache = $this->cache;
+
+               $value1 = array( 'this' => 'is', 'a' => 'test' );
+               $value2 = array( 'this' => 'is', 'another' => 'test' );
+
+               $key1 = wfRandomString();
+               $key2 = wfRandomString();
+               $key3 = wfRandomString();
+
+               $cache->set( $key1, $value1, 5 );
+               $cache->set( $key2, $value2, 10 );
+
+               $curTTLs = array();
+               $this->assertEquals(
+                       array( $key1 => $value1, $key2 => $value2 ),
+                       $cache->getMulti( array( $key1, $key2, $key3 ), $curTTLs )
+               );
+
+               $this->assertEquals( 2, count( $curTTLs ), "Two current TTLs in array" );
+               $this->assertGreaterThan( 0, $curTTLs[$key1], "Key 1 has current TTL > 0" );
+               $this->assertGreaterThan( 0, $curTTLs[$key2], "Key 2 has current TTL > 0" );
+
+               $cKey1 = wfRandomString();
+               $cKey2 = wfRandomString();
+               $curTTLs = array();
+               $this->assertEquals(
+                       array( $key1 => $value1, $key2 => $value2 ),
+                       $cache->getMulti( array( $key1, $key2, $key3 ), $curTTLs ),
+                       'Result array populated'
+               );
+
+               $priorTime = microtime( true );
+               usleep( 1 );
+               $curTTLs = array();
+               $this->assertEquals(
+                       array( $key1 => $value1, $key2 => $value2 ),
+                       $cache->getMulti( array( $key1, $key2, $key3 ), $curTTLs, array( $cKey1, $cKey2 ) ),
+                       "Result array populated even with new check keys"
+               );
+               $t1 = $cache->getCheckKeyTime( $cKey1 );
+               $this->assertGreaterThanOrEqual( $priorTime, $t1, 'Check key 1 generated on miss' );
+               $t2 = $cache->getCheckKeyTime( $cKey2 );
+               $this->assertGreaterThanOrEqual( $priorTime, $t2, 'Check key 2 generated on miss' );
+               $this->assertEquals( 2, count( $curTTLs ), "Current TTLs array set" );
+               $this->assertLessThanOrEqual( 0, $curTTLs[$key1], 'Key 1 has current TTL <= 0' );
+               $this->assertLessThanOrEqual( 0, $curTTLs[$key2], 'Key 2 has current TTL <= 0' );
+
+               usleep( 1 );
+               $curTTLs = array();
+               $this->assertEquals(
+                       array( $key1 => $value1, $key2 => $value2 ),
+                       $cache->getMulti( array( $key1, $key2, $key3 ), $curTTLs, array( $cKey1, $cKey2 ) ),
+                       "Result array still populated even with new check keys"
+               );
+               $this->assertEquals( 2, count( $curTTLs ), "Current TTLs still array set" );
+               $this->assertLessThan( 0, $curTTLs[$key1], 'Key 1 has negative current TTL' );
+               $this->assertLessThan( 0, $curTTLs[$key2], 'Key 2 has negative current TTL' );
+       }
+
+       /**
+        * @covers WANObjectCache::delete()
+        */
+       public function testDelete() {
+               $key = wfRandomString();
+               $value = wfRandomString();
+               $this->cache->set( $key, $value );
+
+               $curTTL = null;
+               $v = $this->cache->get( $key, $curTTL );
+               $this->assertEquals( $value, $v, "Key was created with value" );
+               $this->assertGreaterThan( 0, $curTTL, "Existing key has current TTL > 0" );
+
+               $this->cache->delete( $key );
+
+               $curTTL = null;
+               $v = $this->cache->get( $key, $curTTL );
+               $this->assertFalse( $v, "Deleted key has false value" );
+               $this->assertLessThan( 0, $curTTL, "Deleted key has current TTL < 0" );
+
+               $this->cache->set( $key, $value . 'more' );
+               $this->assertFalse( $v, "Deleted key is tombstoned and has false value" );
+               $this->assertLessThan( 0, $curTTL, "Deleted key is tombstoned and has current TTL < 0" );
+       }
+
+       /**
+        * @covers WANObjectCache::touchCheckKey()
+        * @covers WANObjectCache::getCheckKeyTime()
+        */
+       public function testTouchKeys() {
+               $key = wfRandomString();
+
+               $t0 = $this->cache->getCheckKeyTime( $key );
+               $this->assertFalse( $t0, 'Check key time is false' );
+
+               $priorTime = microtime( true );
+               usleep( 1 );
+               $this->cache->touchCheckKey( $key );
+               $t1 = $this->cache->getCheckKeyTime( $key );
+               $this->assertGreaterThanOrEqual( $priorTime, $t1, 'Check key created' );
+
+               $t2 = $this->cache->getCheckKeyTime( $key );
+               $this->assertEquals( $t1, $t2, 'Check key time did not change' );
+
+               usleep( 1 );
+               $this->cache->touchCheckKey( $key );
+               $t3 = $this->cache->getCheckKeyTime( $key );
+               $this->assertGreaterThan( $t2, $t3, 'Check key time increased' );
+
+               $t4 = $this->cache->getCheckKeyTime( $key );
+               $this->assertEquals( $t3, $t4, 'Check key time did not change' );
+       }
+}
\ No newline at end of file
diff --git a/tests/phpunit/install-phpunit.sh b/tests/phpunit/install-phpunit.sh
deleted file mode 100755 (executable)
index 022f998..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/sh
-
-has_binary () {
-    if [ -z `which $1` ]; then
-        return 1
-    fi
-    return 0
-}
-
-if [ `id -u` -ne 0 ]; then
-    echo '*** ERROR: Must be root to run'
-    exit 1
-fi
-
-if ( has_binary phpunit ); then
-    echo PHPUnit already installed
-else if ( has_binary pear ); then
-    echo Installing phpunit with pear
-    pear channel-discover pear.phpunit.de
-    pear channel-discover components.ez.no
-    pear channel-discover pear.symfony.com
-    pear update-channels
-    #Temporary fix for 64597
-    pear install --alldeps phpunit/PHPUnit-3.7.35
-else if ( has_binary apt-get ); then
-    echo Installing phpunit with apt-get
-    apt-get install phpunit
-else if ( has_binary yum ); then
-    echo Installing phpunit with yum
-    yum install phpunit
-else if ( has_binary port ); then
-    echo Installing phpunit with macports
-    port install php5-unit
-fi
-fi
-fi
-fi
-fi
index 3dd2af6..7c3d699 100644 (file)
                mwTester = new CompletenessTest( mw, mwTestIgnore );
        }
 
-       /**
-        * Test environment recommended for all QUnit test modules
-        *
-        * Whether to log environment changes to the console
-        */
-       QUnit.config.urlConfig.push( 'mwlogenv' );
-
        /**
         * Reset mw.config and others to a fresh copy of the live config for each test(),
         * and restore it back to the live one afterwards.
         * </code>
         */
        QUnit.newMwEnvironment = ( function () {
-               var warn, error, log, liveConfig, liveMessages,
+               var warn, error, liveConfig, liveMessages,
                        ajaxRequests = [];
 
                liveConfig = mw.config.values;
                        ajaxRequests.push( { xhr: jqXHR, options: ajaxOptions } );
                }
 
-               log = QUnit.urlParams.mwlogenv ? mw.log : function () {};
-
                return function ( localEnv ) {
                        localEnv = $.extend( {
                                // QUnit
 
                        return {
                                setup: function () {
-                                       log( 'MwEnvironment> SETUP    for "' + QUnit.config.current.module
-                                               + ': ' + QUnit.config.current.testName + '"' );
 
                                        // Greetings, mock environment!
                                        mw.config.values = freshConfigCopy( localEnv.config );
 
                                teardown: function () {
                                        var timers, active;
-                                       log( 'MwEnvironment> TEARDOWN for "' + QUnit.config.current.module
-                                               + ': ' + QUnit.config.current.testName + '"' );
 
                                        localEnv.teardown.call( this );