Merge "Use CSS columns instead of tables in Special:SpecialPages"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 22 Apr 2015 15:04:36 +0000 (15:04 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 22 Apr 2015 15:04:36 +0000 (15:04 +0000)
191 files changed:
RELEASE-NOTES-1.25
RELEASE-NOTES-1.26
includes/EditPage.php
includes/OutputPage.php
includes/User.php
includes/ZhConversion.php
includes/api/ApiBase.php
includes/api/ApiBlock.php
includes/api/ApiContinuationManager.php
includes/api/ApiEditPage.php
includes/api/ApiExpandTemplates.php
includes/api/ApiFormatBase.php
includes/api/ApiFormatJson.php
includes/api/ApiFormatPhp.php
includes/api/ApiImageRotate.php
includes/api/ApiImport.php
includes/api/ApiMain.php
includes/api/ApiManageTags.php
includes/api/ApiMove.php
includes/api/ApiOpenSearch.php
includes/api/ApiPageSet.php
includes/api/ApiParamInfo.php
includes/api/ApiParse.php
includes/api/ApiProtect.php
includes/api/ApiPurge.php
includes/api/ApiQuery.php
includes/api/ApiQueryAllCategories.php
includes/api/ApiQueryAllLinks.php
includes/api/ApiQueryAllMessages.php
includes/api/ApiQueryAllUsers.php
includes/api/ApiQueryBacklinks.php
includes/api/ApiQueryBacklinksprop.php
includes/api/ApiQueryBlocks.php
includes/api/ApiQueryCategories.php
includes/api/ApiQueryCategoryInfo.php
includes/api/ApiQueryCategoryMembers.php
includes/api/ApiQueryDeletedrevs.php
includes/api/ApiQueryDuplicateFiles.php
includes/api/ApiQueryExtLinksUsage.php
includes/api/ApiQueryFileRepoInfo.php
includes/api/ApiQueryFilearchive.php
includes/api/ApiQueryIWBacklinks.php
includes/api/ApiQueryImageInfo.php
includes/api/ApiQueryInfo.php
includes/api/ApiQueryLangBacklinks.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryPageProps.php
includes/api/ApiQueryPagesWithProp.php
includes/api/ApiQueryPrefixSearch.php
includes/api/ApiQueryQueryPage.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryRevisionsBase.php
includes/api/ApiQuerySiteinfo.php
includes/api/ApiQueryTags.php
includes/api/ApiQueryTokens.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiQueryUserInfo.php
includes/api/ApiQueryUsers.php
includes/api/ApiQueryWatchlist.php
includes/api/ApiResult.php
includes/api/ApiSetNotificationTimestamp.php
includes/api/ApiTokens.php
includes/api/ApiWatch.php
includes/api/i18n/es.json
includes/api/i18n/gl.json
includes/api/i18n/ja.json
includes/api/i18n/ksh.json
includes/api/i18n/mk.json
includes/api/i18n/nl.json
includes/api/i18n/pl.json
includes/api/i18n/uk.json
includes/api/i18n/zh-hans.json
includes/content/ContentHandler.php
includes/content/TextContentHandler.php
includes/debug/MWDebug.php
includes/diff/DifferenceEngine.php
includes/installer/i18n/ce.json
includes/jobqueue/JobQueue.php
includes/jobqueue/JobQueueDB.php
includes/jobqueue/JobQueueRedis.php
includes/jobqueue/JobRunner.php
includes/libs/MultiHttpClient.php
includes/libs/objectcache/BagOStuff.php
includes/logging/RightsLogFormatter.php
includes/resourceloader/ResourceLoader.php
includes/skins/Skin.php
includes/specials/SpecialChangeEmail.php
includes/specials/SpecialEditTags.php
includes/specials/SpecialJavaScriptTest.php
includes/specials/SpecialMergeHistory.php
includes/specials/SpecialRevisiondelete.php
languages/i18n/aeb.json
languages/i18n/ast.json
languages/i18n/awa.json
languages/i18n/be.json
languages/i18n/bgn.json
languages/i18n/bho.json
languages/i18n/bn.json
languages/i18n/ce.json
languages/i18n/cs.json
languages/i18n/cv.json
languages/i18n/de.json
languages/i18n/egl.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/fy.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/hy.json
languages/i18n/ilo.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/khw.json
languages/i18n/ksh.json
languages/i18n/lb.json
languages/i18n/lrc.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/oc.json
languages/i18n/pl.json
languages/i18n/ps.json
languages/i18n/pt.json
languages/i18n/ro.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/scn.json
languages/i18n/sco.json
languages/i18n/ses.json
languages/i18n/sl.json
languages/i18n/su.json
languages/i18n/sv.json
languages/i18n/szl.json
languages/i18n/te.json
languages/i18n/tg-cyrl.json
languages/i18n/th.json
languages/i18n/uk.json
languages/i18n/wuu.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesAzb.php
languages/messages/MessagesBgn.php
languages/messages/MessagesUdm.php
maintenance/checkUsernames.php
maintenance/language/zhtable/simp2trad.manual
maintenance/language/zhtable/simp2trad_noconvert.manual
maintenance/language/zhtable/simpphrases.manual
maintenance/language/zhtable/simpphrases_exclude.manual
maintenance/language/zhtable/symme_supp.manual
maintenance/language/zhtable/toCN.manual
maintenance/language/zhtable/toHK.manual
maintenance/language/zhtable/toSimp.manual
maintenance/language/zhtable/toTW.manual
maintenance/language/zhtable/toTrad.manual
maintenance/language/zhtable/trad2simp.manual
maintenance/language/zhtable/trad2simp_noconvert.manual
maintenance/language/zhtable/tradphrases.manual
maintenance/language/zhtable/tradphrases_exclude.manual
maintenance/runJobs.php
resources/Resources.php
resources/src/dom-level2-skip.js [new file with mode: 0644]
resources/src/mediawiki.special/mediawiki.special.version.css
resources/src/mediawiki/mediawiki.feedback.js
resources/src/polyfill-nodeTypes.js [new file with mode: 0644]
tests/TestsAutoLoader.php
tests/phpunit/includes/EditPageTest.php
tests/phpunit/includes/UserTest.php
tests/phpunit/includes/api/ApiContinuationManagerTest.php
tests/phpunit/includes/api/ApiEditPageTest.php
tests/phpunit/includes/api/ApiErrorFormatterTest.php
tests/phpunit/includes/api/ApiResultTest.php
tests/phpunit/includes/api/format/ApiFormatTestBase.php
tests/phpunit/includes/api/query/ApiQueryContinue2Test.php
tests/phpunit/includes/api/query/ApiQueryContinueTest.php
tests/phpunit/includes/content/ContentHandlerTest.php
tests/phpunit/includes/content/TextContentHandlerTest.php [new file with mode: 0644]
tests/phpunit/includes/content/WikitextContentHandlerTest.php
tests/phpunit/mocks/content/DummyContentForTesting.php [new file with mode: 0644]
tests/phpunit/mocks/content/DummyContentHandlerForTesting.php [new file with mode: 0644]
tests/phpunit/mocks/content/DummyNonTextContent.php [new file with mode: 0644]
tests/phpunit/mocks/content/DummyNonTextContentHandler.php [new file with mode: 0644]

index f0d1c07..530a804 100644 (file)
@@ -268,6 +268,9 @@ production.
     as comma-separated lists.
   * merge events use new-style formatting.
   * delete/event and delete/revision events use new-style formatting.
+* The root node and various other nodes will now always be an object in formats
+  such as json that distinguish between arrays and objects.
+  * Except for action=opensearch where the spec requires an array.
 
 === Action API internal changes in 1.25 ===
 * ApiHelp has been rewritten to support i18n and paginated HTML output.
@@ -316,6 +319,10 @@ production.
   metadata isn't set.
 * (T35235) LogFormatter subclasses are now responsible for formatting log event
   parameters for the API.
+* Many modules have changed result data formats. While this shouldn't affect
+  clients not using the experimental formatversion=2015, code using
+  ApiResult::getResultData() and not using ApiResult::transformForBC() may need
+  updating.
 * The following methods have been deprecated and may be removed in a future
   release:
   * ApiBase::getDescription
@@ -411,9 +418,6 @@ changes to languages because of Bugzilla reports.
   and getInternalLinkAttributes methods in Linker, and removed
   getExternalLinkAttributes method, which was deprecated in MediaWiki 1.18.
 * Removed Sites class, which was deprecated in 1.21 and replaced by SiteSQLStore.
-* The mw.api.getToken() method now uses action=query?meta=tokens. This will now
-  fail for custom tokens registered only via the deprecated ApiTokensGetTokenTypes
-  hook. The ApiQueryTokensRegisterTypes hook should be used for this to work.
 * Added wgRelevantArticleId to the client-side config, for use on special pages.
 * Deprecated the TitleIsCssOrJsPage hook. Superseded by the
   ContentHandlerDefaultModelFor hook since MediaWiki 1.21.
index bf9341d..eddfe30 100644 (file)
@@ -35,6 +35,13 @@ changes to languages because of Bugzilla reports.
 * ChangeTags::tagDescription() will return false if the interface message
   for the tag is disabled.
 * Added PageHistoryPager::doBatchLookups hook.
+* supportsDirectEditing and supportsDirectApiEditing methods added to
+ContentHandler, to provide a way for ApiEditPage and EditPage to check
+if direct editing of content is allowed. These methods return false,
+by default for the ContentHandler base class and true for TextContentHandler
+and it's derivative classes (everything in core). For Content types that
+do not support direct editing, an alternative mechanism should be provided
+for editing, such as action overrides or specific api modules.
 
 == Compatibility ==
 
index 8d27eac..b0da562 100644 (file)
@@ -380,12 +380,14 @@ class EditPage {
 
        public $suppressIntro = false;
 
-       /** @var bool Set to true to allow editing of non-text content types. */
-       public $allowNonTextContent = false;
-
        /** @var bool */
        protected $edit;
 
+       /**
+        * @var bool Set in ApiEditPage, based on ContentHandler::allowsDirectApiEditing
+        */
+       private $enableApiEditOverride = false;
+
        /**
         * @param Article $article
         */
@@ -447,8 +449,18 @@ class EditPage {
         * @throws MWException If $modelId has no known handler
         */
        public function isSupportedContentModel( $modelId ) {
-               return $this->allowNonTextContent ||
-                       ContentHandler::getForModelID( $modelId ) instanceof TextContentHandler;
+               return $this->enableApiEditOverride === true ||
+                       ContentHandler::getForModelID( $modelId )->supportsDirectEditing();
+       }
+
+       /**
+        * Allow editing of content that supports API direct editing, but not general
+        * direct editing. Set to false by default.
+        *
+        * @param bool $enableOverride
+        */
+       public function setApiEditOverride( $enableOverride ) {
+               $this->enableApiEditOverride = $enableOverride;
        }
 
        function submit() {
@@ -3737,7 +3749,7 @@ HTML
                }
 
                $script .= '});';
-               $wgOut->addScript( Html::inlineScript( ResourceLoader::makeLoaderConditionalScript( $script ) ) );
+               $wgOut->addScript( ResourceLoader::makeInlineScript( $script ) );
 
                $toolbar = '<div id="toolbar"></div>';
 
index cac89f4..28d55e4 100644 (file)
@@ -2854,10 +2854,8 @@ class OutputPage extends ContextSource {
                                                        $resourceLoader->makeModuleResponse( $context, $grpModules )
                                                );
                                        } else {
-                                               $links['html'] .= Html::inlineScript(
-                                                       ResourceLoader::makeLoaderConditionalScript(
-                                                               $resourceLoader->makeModuleResponse( $context, $grpModules )
-                                                       )
+                                               $links['html'] .= ResourceLoader::makeInlineScript(
+                                                       $resourceLoader->makeModuleResponse( $context, $grpModules )
                                                );
                                        }
                                        $links['html'] .= "\n";
@@ -2896,10 +2894,8 @@ class OutputPage extends ContextSource {
                                        if ( $only === ResourceLoaderModule::TYPE_STYLES ) {
                                                $link = Html::linkedStyle( $url );
                                        } elseif ( $loadCall ) {
-                                               $link = Html::inlineScript(
-                                                       ResourceLoader::makeLoaderConditionalScript(
-                                                               Xml::encodeJsCall( 'mw.loader.load', array( $url, 'text/javascript', true ) )
-                                                       )
+                                               $link = ResourceLoader::makeInlineScript(
+                                                       Xml::encodeJsCall( 'mw.loader.load', array( $url, 'text/javascript', true ) )
                                                );
                                        } else {
                                                $link = Html::linkedScript( $url );
@@ -2908,10 +2904,8 @@ class OutputPage extends ContextSource {
                                                        // browsers not supported by the startup module would unconditionally
                                                        // execute this module. Otherwise users will get "ReferenceError: mw is
                                                        // undefined" or "jQuery is undefined" from e.g. a "site" module.
-                                                       $link = Html::inlineScript(
-                                                               ResourceLoader::makeLoaderConditionalScript(
-                                                                       Xml::encodeJsCall( 'document.write', array( $link ) )
-                                                               )
+                                                       $link = ResourceLoader::makeInlineScript(
+                                                               Xml::encodeJsCall( 'document.write', array( $link ) )
                                                        );
                                                }
 
@@ -2955,10 +2949,8 @@ class OutputPage extends ContextSource {
                }
 
                if ( count( $states ) ) {
-                       $html = Html::inlineScript(
-                               ResourceLoader::makeLoaderConditionalScript(
-                                       ResourceLoader::makeLoaderStateScript( $states )
-                               )
+                       $html = ResourceLoader::makeInlineScript(
+                               ResourceLoader::makeLoaderStateScript( $states )
                        ) . "\n" . $html;
                }
 
@@ -2977,10 +2969,8 @@ class OutputPage extends ContextSource {
                $links[] = $this->makeResourceLoaderLink( 'startup', ResourceLoaderModule::TYPE_SCRIPTS, true );
 
                // Load config before anything else
-               $links[] = Html::inlineScript(
-                       ResourceLoader::makeLoaderConditionalScript(
-                               ResourceLoader::makeConfigSetScript( $this->getJSVars() )
-                       )
+               $links[] = ResourceLoader::makeInlineScript(
+                       ResourceLoader::makeConfigSetScript( $this->getJSVars() )
                );
 
                // Load embeddable private modules before any loader links
@@ -3004,10 +2994,8 @@ class OutputPage extends ContextSource {
                // Only load modules that have marked themselves for loading at the top
                $modules = $this->getModules( true, 'top' );
                if ( $modules ) {
-                       $links[] = Html::inlineScript(
-                               ResourceLoader::makeLoaderConditionalScript(
-                                       Xml::encodeJsCall( 'mw.loader.load', array( $modules ) )
-                               )
+                       $links[] = ResourceLoader::makeInlineScript(
+                               Xml::encodeJsCall( 'mw.loader.load', array( $modules ) )
                        );
                }
 
@@ -3047,10 +3035,8 @@ class OutputPage extends ContextSource {
                // Only load modules that have marked themselves for loading at the bottom
                $modules = $this->getModules( true, 'bottom' );
                if ( $modules ) {
-                       $links[] = Html::inlineScript(
-                               ResourceLoader::makeLoaderConditionalScript(
-                                       Xml::encodeJsCall( 'mw.loader.load', array( $modules, null, true ) )
-                               )
+                       $links[] = ResourceLoader::makeInlineScript(
+                               Xml::encodeJsCall( 'mw.loader.load', array( $modules, null, true ) )
                        );
                }
 
index b122a9f..c3d4a65 100644 (file)
@@ -1431,37 +1431,85 @@ class User implements IDBAccessObject {
        public function addAutopromoteOnceGroups( $event ) {
                global $wgAutopromoteOnceLogInRC, $wgAuth;
 
-               $toPromote = array();
-               if ( !wfReadOnly() && $this->getId() ) {
-                       $toPromote = Autopromote::getAutopromoteOnceGroups( $this, $event );
-                       if ( count( $toPromote ) ) {
-                               $oldGroups = $this->getGroups(); // previous groups
-
-                               foreach ( $toPromote as $group ) {
-                                       $this->addGroup( $group );
-                               }
-                               // update groups in external authentication database
-                               $wgAuth->updateExternalDBGroups( $this, $toPromote );
+               if ( wfReadOnly() || !$this->getId() ) {
+                       return array();
+               }
 
-                               $newGroups = array_merge( $oldGroups, $toPromote ); // all groups
+               $toPromote = Autopromote::getAutopromoteOnceGroups( $this, $event );
+               if ( !count( $toPromote ) ) {
+                       return array();
+               }
 
-                               $logEntry = new ManualLogEntry( 'rights', 'autopromote' );
-                               $logEntry->setPerformer( $this );
-                               $logEntry->setTarget( $this->getUserPage() );
-                               $logEntry->setParameters( array(
-                                       '4::oldgroups' => $oldGroups,
-                                       '5::newgroups' => $newGroups,
-                               ) );
-                               $logid = $logEntry->insert();
-                               if ( $wgAutopromoteOnceLogInRC ) {
-                                       $logEntry->publish( $logid );
-                               }
-                       }
+               if ( !$this->checkAndSetTouched() ) {
+                       return array(); // raced out (bug T48834)
+               }
+
+               $oldGroups = $this->getGroups(); // previous groups
+               foreach ( $toPromote as $group ) {
+                       $this->addGroup( $group );
+               }
+
+               // update groups in external authentication database
+               $wgAuth->updateExternalDBGroups( $this, $toPromote );
+
+               $newGroups = array_merge( $oldGroups, $toPromote ); // all groups
+
+               $logEntry = new ManualLogEntry( 'rights', 'autopromote' );
+               $logEntry->setPerformer( $this );
+               $logEntry->setTarget( $this->getUserPage() );
+               $logEntry->setParameters( array(
+                       '4::oldgroups' => $oldGroups,
+                       '5::newgroups' => $newGroups,
+               ) );
+               $logid = $logEntry->insert();
+               if ( $wgAutopromoteOnceLogInRC ) {
+                       $logEntry->publish( $logid );
                }
 
                return $toPromote;
        }
 
+       /**
+        * Bump user_touched if it didn't change since this object was loaded
+        *
+        * On success, the mTouched field is updated.
+        * The user serialization cache is always cleared.
+        *
+        * @return bool Whether user_touched was actually updated
+        * @since 1.26
+        */
+       protected function checkAndSetTouched() {
+               $this->load();
+
+               if ( !$this->mId ) {
+                       return false; // anon
+               }
+
+               // Get a new user_touched that is higher than the old one
+               $oldTouched = $this->mTouched;
+               $newTouched = $this->newTouchedTimestamp();
+
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->update( 'user',
+                       array( 'user_touched' => $dbw->timestamp( $newTouched ) ),
+                       array(
+                               'user_id' => $this->mId,
+                               'user_touched' => $dbw->timestamp( $oldTouched ) // CAS check
+                       ),
+                       __METHOD__
+               );
+               $success = ( $dbw->affectedRows() > 0 );
+
+               if ( $success ) {
+                       $this->mTouched = $newTouched;
+               }
+
+               // Clears on failure too since that is desired if the cache is stale
+               $this->clearSharedCache();
+
+               return $success;
+       }
+
        /**
         * Clear various cached data stored in this object. The cache of the user table
         * data (i.e. self::$mCacheVars) is not cleared unless $reloadFrom is given.
@@ -2341,6 +2389,17 @@ class User implements IDBAccessObject {
                return $this->mTouched;
        }
 
+       /**
+        * Get the user_touched timestamp field (time of last DB updates)
+        * @return string TS_MW Timestamp
+        * @since 1.26
+        */
+       protected function getDBTouched() {
+               $this->load();
+
+               return $this->mTouched;
+       }
+
        /**
         * @return Password
         * @since 1.24
index 4be2751..b05c219 100644 (file)
@@ -375,6 +375,7 @@ $zh2Hant = array(
 '啰' => '囉',
 '啴' => '嘽',
 '啸' => '嘯',
+'喂' => '餵',
 '喷' => '噴',
 '喽' => '嘍',
 '喾' => '嚳',
@@ -415,7 +416,6 @@ $zh2Hant = array(
 '垭' => '埡',
 '垱' => '壋',
 '垲' => '塏',
-'垴' => '堖',
 '埘' => '塒',
 '埙' => '塤',
 '埚' => '堝',
@@ -504,7 +504,6 @@ $zh2Hant = array(
 '岖' => '嶇',
 '岗' => '崗',
 '岘' => '峴',
-'岙' => '嶴',
 '岚' => '嵐',
 '岛' => '島',
 '岭' => '嶺',
@@ -2889,7 +2888,6 @@ $zh2Hant = array(
 '𩧿' => '䮠',
 '𩨀' => '騔',
 '𩨁' => '䮞',
-'𩨂' => '驄',
 '𩨃' => '騝',
 '𩨄' => '騪',
 '𩨅' => '𩤸',
@@ -3004,8 +3002,8 @@ $zh2Hant = array(
 '𫛸' => '鶗',
 '0出現' => '0出現',
 '0出现' => '0出現',
-'0出線' => '0出線',
 '0出线' => '0出線',
+'0出線' => '0出線',
 '0只支持' => '0只支持',
 '0只支援' => '0只支援',
 '0周后' => '0周後',
@@ -3078,7 +3076,8 @@ $zh2Hant = array(
 '9只' => '9隻',
 '9余' => '9餘',
 '·范' => '·范',
-'’s' => '’s',
+'’s ' => '’s',
+'。个中' => '。箇中',
 '〇周后' => '〇周後',
 '〇年' => '〇年',
 '〇只' => '〇隻',
@@ -3116,6 +3115,7 @@ $zh2Hant = array(
 '一争两丑' => '一爭兩醜',
 '一物克一物' => '一物剋一物',
 '一目了然' => '一目了然',
+'一碗面' => '一碗麵',
 '一扎' => '一紮',
 '一冲' => '一衝',
 '一厘一毫' => '一釐一毫',
@@ -3208,8 +3208,8 @@ $zh2Hant = array(
 '不干她' => '不干她',
 '不干它' => '不干它',
 '不干我' => '不干我',
-'不干擾' => '不干擾',
 '不干扰' => '不干擾',
+'不干擾' => '不干擾',
 '不干涉' => '不干涉',
 '不干牠' => '不干牠',
 '不干犯' => '不干犯',
@@ -3228,8 +3228,8 @@ $zh2Hant = array(
 '不负所托' => '不負所托',
 '不通吊庆' => '不通弔慶',
 '不丑' => '不醜',
-'不采聲' => '不采聲',
 '不采声' => '不采聲',
+'不采聲' => '不采聲',
 '不锈钢' => '不鏽鋼',
 '不食干腊' => '不食乾腊',
 '不斗' => '不鬥',
@@ -3260,6 +3260,7 @@ $zh2Hant = array(
 '中型钟表面' => '中型鐘表面',
 '中型钟表' => '中型鐘錶',
 '中型钟面' => '中型鐘面',
+'中境里' => '中境里',
 '中岳' => '中嶽',
 '中庄子' => '中庄子',
 '中文里' => '中文裡',
@@ -3275,8 +3276,8 @@ $zh2Hant = array(
 '中签订' => '中簽訂',
 '中签' => '中籤',
 '中风后' => '中風後',
-'丰儀' => '丰儀',
 '丰仪' => '丰儀',
+'丰儀' => '丰儀',
 '丰南' => '丰南',
 '丰姿' => '丰姿',
 '丰容' => '丰容',
@@ -3290,16 +3291,22 @@ $zh2Hant = array(
 '丰采' => '丰采',
 '丰韻' => '丰韻',
 '丰韵' => '丰韻',
+'丹棱' => '丹稜',
 '主仆' => '主僕',
 '主干' => '主幹',
 '主钟差' => '主鐘差',
 '主钟曲线' => '主鐘曲線',
 '乃系' => '乃係',
 '么么唱唱' => '么么唱唱',
+'么九' => '么九',
 '么儿' => '么兒',
+'么半' => '么半',
 '么喝' => '么喝',
+'么女' => '么女',
 '么妹' => '么妹',
+'么子' => '么子',
 '么弟' => '么弟',
+'么正' => '么正',
 '么爷' => '么爺',
 '么雞' => '么雞',
 '么么小丑' => '么麼小丑',
@@ -3321,14 +3328,12 @@ $zh2Hant = array(
 '九扎' => '九紮',
 '九只' => '九隻',
 '九余' => '九餘',
-'也斗了胆' => '也斗了膽',
 '干上' => '乾上',
 '干干' => '乾乾',
-'干干儿的' => '乾乾兒的',
 '干干净净' => '乾乾淨淨',
 '干了' => '乾了',
 '干井' => '乾井',
-'干个够' => '乾個夠',
+'干个' => '乾個',
 '干儿' => '乾兒',
 '干冰' => '乾冰',
 '干冷' => '乾冷',
@@ -3349,7 +3354,6 @@ $zh2Hant = array(
 '干回付' => '乾回付',
 '干圆洁净' => '乾圓潔淨',
 '干地' => '乾地',
-'干坤' => '乾坤',
 '干坞' => '乾塢',
 '干女' => '乾女',
 '干奴才' => '乾奴才',
@@ -3464,13 +3468,14 @@ $zh2Hant = array(
 '干醋' => '乾醋',
 '干重' => '乾重',
 '干量' => '乾量',
+'干锅' => '乾鍋',
 '干阿奶' => '乾阿奶',
-'干隆' => '乾隆',
 '干雷' => '乾雷',
 '干电' => '乾電',
 '干霍乱' => '乾霍亂',
 '干颡' => '乾顙',
 '干台' => '乾颱',
+'干食' => '乾食',
 '干饭' => '乾飯',
 '干馆' => '乾館',
 '干糇' => '乾餱',
@@ -3484,10 +3489,8 @@ $zh2Hant = array(
 '乱哄' => '亂鬨',
 '乱哄不过来' => '亂鬨不過來',
 '了然后' => '了然後',
-'事情干脆' => '事情干脆',
 '事有斗巧' => '事有鬥巧',
 '事里' => '事裡',
-'事都干脆' => '事都干脆',
 '二不棱登' => '二不稜登',
 '二个' => '二個',
 '二只得' => '二只得',
@@ -3497,8 +3500,8 @@ $zh2Hant = array(
 '二缶钟惑' => '二缶鐘惑',
 '二老板' => '二老板',
 '二虎相斗' => '二虎相鬥',
-'二里头' => '二里頭',
 '二里頭' => '二里頭',
+'二里头' => '二里頭',
 '二只' => '二隻',
 '二余' => '二餘',
 '于丹' => '于丹',
@@ -3510,10 +3513,10 @@ $zh2Hant = array(
 '于偉國' => '于偉國',
 '于伟国' => '于偉國',
 '于光新' => '于光新',
-'于光遠' => '于光遠',
 '于光远' => '于光遠',
-'äº\8eå\85\8b\85°å¤\9aå\8e¿' => 'äº\8eå\85\8b\98­å¤\9a縣',
+'äº\8eå\85\89é\81 ' => 'äº\8eå\85\89é\81 ',
 '于克-蘭多縣' => '于克-蘭多縣',
+'于克-兰多县' => '于克-蘭多縣',
 '于克勒' => '于克勒',
 '于再清' => '于再清',
 '于冕' => '于冕',
@@ -3524,16 +3527,16 @@ $zh2Hant = array(
 '于化虎' => '于化虎',
 '于占元' => '于占元',
 '于友泽' => '于友澤',
-'于台烟' => '于台煙',
 '于台煙' => '于台煙',
+'于台烟' => '于台煙',
 '于右任' => '于右任',
 '于吉' => '于吉',
 '于和伟' => '于和偉',
 '于品海' => '于品海',
-'于國楨' => '于國楨',
 '于国桢' => '于國楨',
-'äº\8eå\9b½æ²»' => 'äº\8eå\9c\8bæ²»',
+'äº\8eå\9c\8b楨' => 'äº\8eå\9c\8b楨',
 '于國治' => '于國治',
+'于国治' => '于國治',
 '于堅' => '于堅',
 '于坚' => '于堅',
 '于大宝' => '于大寶',
@@ -3547,8 +3550,8 @@ $zh2Hant = array(
 '于娟' => '于娟',
 '于子千' => '于子千',
 '于孔兼' => '于孔兼',
-'于学忠' => '于學忠',
 '于學忠' => '于學忠',
+'于学忠' => '于學忠',
 '于家堡' => '于家堡',
 '于寘' => '于寘',
 '于宝轩' => '于寶軒',
@@ -3560,10 +3563,10 @@ $zh2Hant = array(
 '于山' => '于山',
 '于山國' => '于山國',
 '于山国' => '于山國',
-'于帅' => '于帥',
 '于帥' => '于帥',
-'äº\8eå¹¼è»\8d' => 'äº\8eå¹¼è»\8d',
+'äº\8eå¸\85' => 'äº\8e帥',
 '于幼军' => '于幼軍',
+'于幼軍' => '于幼軍',
 '于康震' => '于康震',
 '于广洲' => '于廣洲',
 '于廣洲' => '于廣洲',
@@ -3571,8 +3574,8 @@ $zh2Hant = array(
 '于从濂' => '于從濂',
 '于從濂' => '于從濂',
 '于德海' => '于德海',
-'于志寧' => '于志寧',
 '于志宁' => '于志寧',
+'于志寧' => '于志寧',
 '于忠肃集' => '于忠肅集',
 '于思' => '于思',
 '于慎行' => '于慎行',
@@ -3585,19 +3588,19 @@ $zh2Hant = array(
 '于敏中' => '于敏中',
 '于斌' => '于斌',
 '于斯塔德' => '于斯塔德',
-'于斯納爾斯貝里' => '于斯納爾斯貝里',
 '于斯纳尔斯贝里' => '于斯納爾斯貝里',
-'于斯達爾' => '于斯達爾',
+'于斯納爾斯貝里' => '于斯納爾斯貝里',
 '于斯达尔' => '于斯達爾',
-'äº\8eæ\98\8e濤' => 'äº\8eæ\98\8e濤',
+'äº\8eæ\96¯é\81\94ç\88¾' => 'äº\8eæ\96¯é\81\94ç\88¾',
 '于明涛' => '于明濤',
+'于明濤' => '于明濤',
 '于是之' => '于是之',
 '于晨楠' => '于晨楠',
 '于晴' => '于晴',
-'于会泳' => '于會泳',
 '于會泳' => '于會泳',
-'于根偉' => '于根偉',
+'于会泳' => '于會泳',
 '于根伟' => '于根偉',
+'于根偉' => '于根偉',
 '于格' => '于格',
 '于枫' => '于楓',
 '于楓' => '于楓',
@@ -3620,20 +3623,20 @@ $zh2Hant = array(
 '于浩威' => '于浩威',
 '于海' => '于海',
 '于海洋' => '于海洋',
-'于湘蘭' => '于湘蘭',
 '于湘兰' => '于湘蘭',
+'于湘蘭' => '于湘蘭',
 '于漢超' => '于漢超',
 '于汉超' => '于漢超',
 '于澄' => '于澄',
 '于澤爾' => '于澤爾',
 '于泽尔' => '于澤爾',
-'于涛' => '于濤',
 '于濤' => '于濤',
+'于涛' => '于濤',
 '于熙珍' => '于熙珍',
 '于尔岑' => '于爾岑',
 '于爾岑' => '于爾岑',
-'于尔根' => '于爾根',
 '于爾根' => '于爾根',
+'于尔根' => '于爾根',
 '于尔里克' => '于爾里克',
 '于爾里克' => '于爾里克',
 '于特森' => '于特森',
@@ -3653,18 +3656,18 @@ $zh2Hant = array(
 '于謙' => '于謙',
 '于谦' => '于謙',
 '于谨' => '于謹',
-'于貝爾' => '于貝爾',
 '于贝尔' => '于貝爾',
-'äº\8eèµ ' => 'äº\8eè´\88',
+'äº\8eè²\9dç\88¾' => 'äº\8eè²\9dç\88¾',
 '于贈' => '于贈',
+'于赠' => '于贈',
 '于越' => '于越',
 '于军' => '于軍',
 '于軍' => '于軍',
 '于道泉' => '于道泉',
 '于远伟' => '于遠偉',
 '于遠偉' => '于遠偉',
-'于都县' => '于都縣',
 '于都縣' => '于都縣',
+'于都县' => '于都縣',
 '于里察' => '于里察',
 '于阗' => '于闐',
 '于双戈' => '于雙戈',
@@ -3677,8 +3680,8 @@ $zh2Hant = array(
 '于靖' => '于靖',
 '于非暗' => '于非闇',
 '于非闇' => '于非闇',
-'于韋斯屈萊' => '于韋斯屈萊',
 '于韦斯屈莱' => '于韋斯屈萊',
+'于韋斯屈萊' => '于韋斯屈萊',
 '于风政' => '于風政',
 '于風政' => '于風政',
 '于飞' => '于飛',
@@ -3687,8 +3690,8 @@ $zh2Hant = array(
 '于余曲折' => '于餘曲折',
 '于鬯' => '于鬯',
 '于魁智' => '于魁智',
-'于鳳桐' => '于鳳桐',
 '于凤桐' => '于鳳桐',
+'于鳳桐' => '于鳳桐',
 '于鳳至' => '于鳳至',
 '于凤至' => '于鳳至',
 '于默奧' => '于默奧',
@@ -3696,14 +3699,16 @@ $zh2Hant = array(
 '云乎' => '云乎',
 '云云' => '云云',
 '云何' => '云何',
-'云为' => '云為',
+'云敞' => '云敞',
 '云為' => '云為',
+'云为' => '云為',
 '云然' => '云然',
 '云尔' => '云爾',
 '云:' => '云:',
 '五个' => '五個',
 '五周后' => '五周後',
 '五天后' => '五天後',
+'五峰县' => '五峯縣',
 '五岳' => '五嶽',
 '五年' => '五年',
 '五谷' => '五穀',
@@ -3715,7 +3720,6 @@ $zh2Hant = array(
 '五只' => '五隻',
 '五余' => '五餘',
 '井干' => '井幹',
-'井干摧败' => '井榦摧敗',
 '井里' => '井裡',
 '亚于' => '亞於',
 '亚美尼亚历' => '亞美尼亞曆',
@@ -3723,6 +3727,7 @@ $zh2Hant = array(
 '交游' => '交遊',
 '交哄' => '交鬨',
 '亦云' => '亦云',
+'京沈' => '京瀋',
 '亮丑' => '亮醜',
 '亮钟' => '亮鐘',
 '人云' => '人云',
@@ -3739,6 +3744,7 @@ $zh2Hant = array(
 '付托' => '付託',
 '仙后' => '仙后',
 '仙后座' => '仙后座',
+'仙游' => '仙遊',
 '代数里' => '代數裡',
 '代理发行' => '代理發行',
 '代码表' => '代碼表',
@@ -3767,6 +3773,7 @@ $zh2Hant = array(
 '伊郁' => '伊鬱',
 '伏几' => '伏几',
 '伐罪吊民' => '伐罪弔民',
+'休克期' => '休克期',
 '休征' => '休徵',
 '伙头' => '伙頭',
 '伴游' => '伴遊',
@@ -3793,13 +3800,12 @@ $zh2Hant = array(
 '作品里' => '作品裡',
 '作奸犯科' => '作姦犯科',
 '作准' => '作準',
-'你斗了胆' => '你斗了膽',
 '你夸' => '你誇',
 '佣金' => '佣金',
-'佣鈿' => '佣鈿',
 '佣钿' => '佣鈿',
-'ä½£é\92±' => 'ä½£é\8c¢',
+'ä½£é\88¿' => 'ä½£é\88¿',
 '佣錢' => '佣錢',
+'佣钱' => '佣錢',
 '佳肴' => '佳肴',
 '佳里鎮' => '佳里鎮',
 '并一不二' => '併一不二',
@@ -3808,7 +3814,7 @@ $zh2Hant = array(
 '并到' => '併到',
 '并合' => '併合',
 '并名' => '併名',
-'并吞' => '併吞',
+'并吞下' => '併吞下',
 '并拢' => '併攏',
 '并案' => '併案',
 '并流' => '併流',
@@ -3846,7 +3852,6 @@ $zh2Hant = array(
 '个里' => '個裡',
 '个钟' => '個鐘',
 '个钟表' => '個鐘錶',
-'们斗了胆' => '們斗了膽',
 '幸免' => '倖免',
 '幸存' => '倖存',
 '幸幸' => '倖幸',
@@ -3875,6 +3880,7 @@ $zh2Hant = array(
 '传于' => '傳於',
 '债累累' => '債纍纍',
 '傻里傻气' => '傻裡傻氣',
+'仅余' => '僅餘',
 '仆人' => '僕人',
 '仆使' => '僕使',
 '仆仆' => '僕僕',
@@ -3956,14 +3962,15 @@ $zh2Hant = array(
 '凶险' => '兇險',
 '先采' => '先採',
 '光致致' => '光緻緻',
+'克期间' => '克期間',
 '免征' => '免徵',
 '党太尉' => '党太尉',
 '党姓' => '党姓',
 '党家' => '党家',
 '党怀英' => '党懷英',
 '党进' => '党進',
-'党项' => '党項',
 '党項' => '党項',
+'党项' => '党項',
 '内脏' => '內臟',
 '内制' => '內製',
 '内面包' => '內面包',
@@ -4034,8 +4041,8 @@ $zh2Hant = array(
 '准三后' => '准三后',
 '准保護' => '准保護',
 '准保护' => '准保護',
-'准保釋' => '准保釋',
 '准保释' => '准保釋',
+'准保釋' => '准保釋',
 '凌蒙初' => '凌濛初',
 '凝炼' => '凝鍊',
 '几上' => '几上',
@@ -4079,20 +4086,22 @@ $zh2Hant = array(
 '划具' => '划具',
 '划到岸' => '划到岸',
 '划到江心' => '划到江心',
-'划动' => '划動',
 '划動' => '划動',
+'划动' => '划動',
 '划去' => '划去',
 '划子' => '划子',
 '划得來' => '划得來',
 '划得来' => '划得來',
 '划拳' => '划拳',
-'划槳' => '划槳',
 '划桨' => '划槳',
+'划槳' => '划槳',
 '划水' => '划水',
+'划着独木舟' => '划着獨木舟',
+'划着竹筏' => '划着竹筏',
+'划着船' => '划着船',
 '划算' => '划算',
 '划船' => '划船',
 '划艇' => '划艇',
-'划著' => '划著',
 '划行' => '划行',
 '划走' => '划走',
 '划起' => '划起',
@@ -4100,8 +4109,8 @@ $zh2Hant = array(
 '划进' => '划進',
 '划过' => '划過',
 '划過' => '划過',
-'划龙舟' => '划龍舟',
 '划龍舟' => '划龍舟',
+'划龙舟' => '划龍舟',
 '判断发' => '判斷發',
 '别辟' => '別闢',
 '利欲' => '利慾',
@@ -4136,7 +4145,6 @@ $zh2Hant = array(
 '剥制' => '剝製',
 '剩余' => '剩餘',
 '剪其发' => '剪其髮',
-'剪牡丹喂牛' => '剪牡丹喂牛',
 '剪发' => '剪髮',
 '割舍' => '割捨',
 '创获' => '創穫',
@@ -4148,8 +4156,9 @@ $zh2Hant = array(
 '铲头' => '剷頭',
 '划入' => '劃入',
 '划为' => '劃為',
-'å\8a\89ä½³æ\80\9c' => 'å\8a\89ä½³æ\80\9c',
+'å\88\92è\91\97' => 'å\8a\83è\91\97å\90\8d',
 '刘佳怜' => '劉佳怜',
+'劉佳怜' => '劉佳怜',
 '刘芸后' => '劉芸后',
 '力拼' => '力拚',
 '力拼众敌' => '力拼眾敵',
@@ -4157,7 +4166,6 @@ $zh2Hant = array(
 '功勋' => '功勳',
 '功致' => '功緻',
 '加氢精制' => '加氫精制',
-'加注' => '加註',
 '劣于' => '劣於',
 '助于' => '助於',
 '劫余' => '劫餘',
@@ -4179,6 +4187,7 @@ $zh2Hant = array(
 '包扎' => '包紮',
 '匏系' => '匏繫',
 '北山索面' => '北山索麵',
+'北仑河' => '北崙河',
 '北岳' => '北嶽',
 '北回线' => '北迴線',
 '北回铁路' => '北迴鐵路',
@@ -4199,8 +4208,8 @@ $zh2Hant = array(
 '十出' => '十齣',
 '千个' => '千個',
 '千只可' => '千只可',
-'千只够' => '千只夠',
 '千只夠' => '千只夠',
+'千只够' => '千只夠',
 '千只怕' => '千只怕',
 '千只能' => '千只能',
 '千只足够' => '千只足夠',
@@ -4230,7 +4239,6 @@ $zh2Hant = array(
 '南回线' => '南迴線',
 '南回铁路' => '南迴鐵路',
 '南游' => '南遊',
-'博汇' => '博彙',
 '博采' => '博採',
 '博尔术' => '博爾朮',
 '卜云吉' => '卜云吉',
@@ -4254,8 +4262,8 @@ $zh2Hant = array(
 '反朴' => '反樸',
 '反冲' => '反衝',
 '反复制' => '反複製',
-'反覆' => '反覆',
 '反复' => '反覆',
+'反覆' => '反覆',
 '取舍' => '取捨',
 '受雇' => '受僱',
 '受托' => '受託',
@@ -4270,8 +4278,9 @@ $zh2Hant = array(
 '口腹之欲' => '口腹之慾',
 '口里' => '口裡',
 '口钟' => '口鐘',
-'古書云' => '古書云',
+'古人有云' => '古人有云',
 '古书云' => '古書云',
+'古書云' => '古書云',
 '古柯咸' => '古柯鹹',
 '古朴' => '古樸',
 '古语云' => '古語云',
@@ -4310,10 +4319,10 @@ $zh2Hant = array(
 '只身旁' => '只身旁',
 '只身材' => '只身材',
 '只身段' => '只身段',
-'只身为' => '只身為',
 '只身為' => '只身為',
-'只身邊' => '只身邊',
+'只身为' => '只身為',
 '只身边' => '只身邊',
+'只身邊' => '只身邊',
 '只身首' => '只身首',
 '只身體' => '只身體',
 '只身体' => '只身體',
@@ -4339,6 +4348,7 @@ $zh2Hant = array(
 '叶音' => '叶音',
 '叶韵' => '叶韻',
 '吃板刀面' => '吃板刀麵',
+'吃碗面' => '吃碗麵',
 '吃姜' => '吃薑',
 '吃里扒外' => '吃裡扒外',
 '吃里爬外' => '吃裡爬外',
@@ -4359,6 +4369,7 @@ $zh2Hant = array(
 '同伙' => '同夥',
 '同于' => '同於',
 '同余' => '同餘',
+'名单于' => '名單於',
 '后冠' => '后冠',
 '后北街' => '后北街',
 '后土' => '后土',
@@ -4369,21 +4380,21 @@ $zh2Hant = array(
 '后庄' => '后庄',
 '后座' => '后座',
 '后母戊' => '后母戊',
-'后海灣' => '后海灣',
 '后海湾' => '后海灣',
+'后海灣' => '后海灣',
 '后瑞站' => '后瑞站',
 '后稷' => '后稷',
 '后綜' => '后綜',
 '后羿' => '后羿',
 '后街' => '后街',
 '后角' => '后角',
-'后豐' => '后豐',
 '后丰' => '后豐',
+'后豐' => '后豐',
 '后里' => '后里',
 '后髮FK型星' => '后髮FK型星',
 '后发FK型星' => '后髮FK型星',
-'后发座' => '后髮座',
 '后髮座' => '后髮座',
+'后发座' => '后髮座',
 '后发星系团' => '后髮星系團',
 '后髮星系團' => '后髮星系團',
 '吐哺捉发' => '吐哺捉髮',
@@ -4400,18 +4411,20 @@ $zh2Hant = array(
 '吹发' => '吹髮',
 '吹胡' => '吹鬍',
 '吾为之范我驰驱' => '吾爲之範我馳驅',
-'吕后' => '呂后',
 '呂后' => '呂后',
+'吕后' => '呂后',
 '呆呆兽' => '呆呆獸',
 '呆致致' => '呆緻緻',
 '呆里呆气' => '呆裡呆氣',
 '告札' => '告劄',
+'呦喂' => '呦喂',
 '周后' => '周后',
+'周惠后' => '周惠后',
 '周历' => '周曆',
-'周杰倫' => '周杰倫',
-'周杰伦' => '周杰倫',
+'周杰' => '周杰',
 '周历史' => '周歷史',
-'周游' => '周遊',
+'周游列国' => '周遊列國',
+'呵喂' => '呵喂',
 '呼吁' => '呼籲',
 '命中注定' => '命中注定',
 '和奸' => '和姦',
@@ -4422,7 +4435,6 @@ $zh2Hant = array(
 '咯当' => '咯噹',
 '哀吊' => '哀弔',
 '哀挽' => '哀輓',
-'品汇' => '品彙',
 '品鉴' => '品鑑',
 '哄堂大笑' => '哄堂大笑',
 '員山庄' => '員山庄',
@@ -4437,9 +4449,14 @@ $zh2Hant = array(
 '商历' => '商曆',
 '商标准许' => '商標准許',
 '商历史' => '商歷史',
+'啊喂' => '啊喂',
 '启发式' => '啟發式',
 '啷当' => '啷噹',
 '喂了一声' => '喂了一聲',
+'喂喂' => '喂喂',
+'喂哟' => '喂喲',
+'喂!' => '喂!',
+'喂,' => '喂,',
 '善于' => '善於',
 '喜向往' => '喜向往',
 '喜欢表' => '喜歡錶',
@@ -4450,11 +4467,13 @@ $zh2Hant = array(
 '喧哄' => '喧鬨',
 '丧钟' => '喪鐘',
 '乔岳' => '喬嶽',
-'單于' => '單于',
 '单于' => '單于',
+'單于' => '單于',
 '单单于' => '單單於',
 '单干' => '單幹',
 '单打独斗' => '單打獨鬥',
+'喲喂' => '喲喂',
+'哟喂' => '喲喂',
 '嘉谷' => '嘉穀',
 '嘉肴' => '嘉肴',
 '嘴里' => '嘴裡',
@@ -4497,6 +4516,7 @@ $zh2Hant = array(
 '回旋加速' => '回旋加速',
 '回历' => '回曆',
 '回历史' => '回歷史',
+'回荡' => '回蕩',
 '回复中' => '回覆中',
 '回复你' => '回覆你',
 '回复帖子' => '回覆帖子',
@@ -4570,12 +4590,14 @@ $zh2Hant = array(
 '堡子里' => '堡子里',
 '场里' => '場裡',
 '塞耳盗钟' => '塞耳盜鐘',
+'境里' => '境裡',
+'境里程' => '境里程',
 '墓志铭' => '墓志銘',
 '墓志' => '墓誌',
 '增辟' => '增闢',
 '墨子里' => '墨子里',
-'墨沈' => '墨沈',
-'墨沈未干' => '墨瀋未乾',
+'墨沈沈' => '墨沈沈',
+'墨沈' => '墨瀋',
 '垦辟' => '墾闢',
 '壮游' => '壯遊',
 '壮面' => '壯麵',
@@ -4584,8 +4606,8 @@ $zh2Hant = array(
 '壸范' => '壼範',
 '壽天里' => '壽天里',
 '寿面' => '壽麵',
-'夏于乔' => '夏于喬',
 '夏于喬' => '夏于喬',
+'夏于乔' => '夏于喬',
 '夏历' => '夏曆',
 '夏历史' => '夏歷史',
 '夏游' => '夏遊',
@@ -4597,16 +4619,16 @@ $zh2Hant = array(
 '多只含' => '多只含',
 '多只在' => '多只在',
 '多只是' => '多只是',
-'多只會' => '多只會',
 '多只会' => '多只會',
+'多只會' => '多只會',
 '多只有' => '多只有',
 '多只比' => '多只比',
 '多只用' => '多只用',
 '多只能' => '多只能',
 '多只限' => '多只限',
 '多只需' => '多只需',
-'多只须' => '多只須',
 '多只須' => '多只須',
+'多只须' => '多只須',
 '多周后' => '多周後',
 '多天后' => '多天後',
 '多于' => '多於',
@@ -4665,7 +4687,6 @@ $zh2Hant = array(
 '大钟' => '大鐘',
 '大只' => '大隻',
 '大风后' => '大風後',
-'大曲酒' => '大麴酒',
 '天克地冲' => '天克地衝',
 '天后' => '天后',
 '天后宫' => '天后宮',
@@ -4692,14 +4713,10 @@ $zh2Hant = array(
 '太丑' => '太醜',
 '太阁' => '太閤',
 '夯干' => '夯幹',
-'夸人' => '夸人',
 '夸克' => '夸克',
-'夸姣' => '夸姣',
-'夸容' => '夸容',
 '夸父' => '夸父',
 '夸特' => '夸特',
 '夸脱' => '夸脫',
-'夸丽' => '夸麗',
 '奇勋' => '奇勳',
 '奇迹' => '奇蹟',
 '奇丑' => '奇醜',
@@ -4710,7 +4727,6 @@ $zh2Hant = array(
 '女仆' => '女僕',
 '奴仆' => '奴僕',
 '奸淫掳掠' => '奸淫擄掠',
-'好干' => '好乾',
 '好家伙' => '好傢夥',
 '好凶' => '好兇',
 '好勇斗狠' => '好勇鬥狠',
@@ -4734,7 +4750,6 @@ $zh2Hant = array(
 '始于' => '始於',
 '委托' => '委託',
 '委托书' => '委託書',
-'姜文杰' => '姜文杰',
 '奸夫' => '姦夫',
 '奸妇' => '姦婦',
 '奸宄' => '姦宄',
@@ -4765,7 +4780,9 @@ $zh2Hant = array(
 '存折' => '存摺',
 '存于' => '存於',
 '孛里海' => '孛里海',
-'孤寡不谷' => '孤寡不穀',
+'孝惠后' => '孝惠后',
+'孙杰' => '孫杰',
+'孫杰' => '孫杰',
 '学家' => '學家',
 '学里' => '學裡',
 '宇宙志' => '宇宙誌',
@@ -4867,8 +4884,8 @@ $zh2Hant = array(
 '尸弃佛' => '尸棄佛',
 '尸祝' => '尸祝',
 '尸禄' => '尸祿',
-'尸罗精舍' => '尸羅精舍',
 '尸羅精舍' => '尸羅精舍',
+'尸罗精舍' => '尸羅精舍',
 '尸臣' => '尸臣',
 '尸谏' => '尸諫',
 '尸魂界' => '尸魂界',
@@ -4894,24 +4911,27 @@ $zh2Hant = array(
 '山里的' => '山裡的',
 '山谷道' => '山谷道',
 '山重水复' => '山重水複',
+'岫岩' => '岫巖',
 '岱岳' => '岱嶽',
 '峇里海' => '峇里海',
 '峰回' => '峰迴',
 '峻岭' => '峻岭',
-'昆剧' => '崑劇',
 '崑剧' => '崑劇',
+'昆剧' => '崑劇',
 '崑山' => '崑山',
 '昆山' => '崑山',
 '昆冈' => '崑岡',
 '昆仑' => '崑崙',
+'昆嵛' => '崑嵛',
+'昆承湖' => '崑承湖',
 '崑曲' => '崑曲',
 '昆曲' => '崑曲',
-'昆腔' => '崑腔',
 '崑腔' => '崑腔',
-'æ\98\86è\8b\8f' => 'å´\91è\98\87',
+'æ\98\86è\85\94' => 'å´\91è\85\94',
 '崑苏' => '崑蘇',
-'æ\98\86è°\83' => 'å´\91調',
+'æ\98\86è\8b\8f' => 'å´\91è\98\87',
 '崑调' => '崑調',
+'昆调' => '崑調',
 '崖广' => '崖广',
 '嶒棱' => '嶒稜',
 '岳岳' => '嶽嶽',
@@ -4948,6 +4968,7 @@ $zh2Hant = array(
 '师范' => '師範',
 '席卷' => '席捲',
 '带征' => '帶徵',
+'带余' => '帶餘',
 '带发修行' => '帶髮修行',
 '幅图里' => '幅圖裡',
 '干系' => '干係',
@@ -4960,6 +4981,7 @@ $zh2Hant = array(
 '年里' => '年裡',
 '年鉴' => '年鑑',
 '并力' => '并力',
+'并吞' => '并吞',
 '并州' => '并州',
 '并日而食' => '并日而食',
 '并迭' => '并迭',
@@ -4973,7 +4995,7 @@ $zh2Hant = array(
 '干些' => '幹些',
 '干人' => '幹人',
 '干什么' => '幹什麼',
-'干个' => '幹個',
+'干个够' => '幹個夠',
 '干劲' => '幹勁',
 '干吏' => '幹吏',
 '干员' => '幹員',
@@ -4983,7 +5005,6 @@ $zh2Hant = array(
 '干坏事' => '幹壞事',
 '干完' => '幹完',
 '干家' => '幹家',
-'干将' => '幹將',
 '干得了' => '幹得了',
 '干性油' => '幹性油',
 '干才' => '幹才',
@@ -5027,13 +5048,13 @@ $zh2Hant = array(
 '床席' => '床蓆',
 '店里' => '店裡',
 '府干卿' => '府干卿',
-'府干擾' => '府干擾',
 '府干扰' => '府干擾',
+'府干擾' => '府干擾',
 '府干政' => '府干政',
 '府干涉' => '府干涉',
 '府干犯' => '府干犯',
-'府干預' => '府干預',
 '府干预' => '府干預',
+'府干預' => '府干預',
 '府干' => '府幹',
 '座钟' => '座鐘',
 '廍子里' => '廍子里',
@@ -5041,8 +5062,8 @@ $zh2Hant = array(
 '厨余' => '廚餘',
 '厮斗' => '廝鬥',
 '庙里' => '廟裡',
-'廢后' => '廢后',
 '废后' => '廢后',
+'廢后' => '廢后',
 '广征' => '廣徵',
 '广舍' => '廣捨',
 '延历' => '延曆',
@@ -5096,6 +5117,8 @@ $zh2Hant = array(
 '張三丰' => '張三丰',
 '张三丰' => '張三丰',
 '张勋' => '張勳',
+'張杰' => '張杰',
+'张杰' => '張杰',
 '张乐于张徐' => '張樂于張徐',
 '强制作用' => '強制作用',
 '强奸' => '強姦',
@@ -5109,13 +5132,9 @@ $zh2Hant = array(
 '弹子台' => '彈子檯',
 '弹珠台' => '彈珠檯',
 '汇刊' => '彙刊',
-'汇报' => '彙報',
-'汇整' => '彙整',
 '汇算' => '彙算',
-'汇编' => '彙編',
 '汇纂' => '彙纂',
 '汇辑' => '彙輯',
-'汇集' => '彙集',
 '形单影只' => '形單影隻',
 '形于' => '形於',
 '彭于晏' => '彭于晏',
@@ -5133,11 +5152,13 @@ $zh2Hant = array(
 '后印' => '後印',
 '后台老板' => '後台老板',
 '后天' => '後天',
+'後庄' => '後庄',
 '后面店' => '後面店',
 '徐干' => '徐幹',
 '徒杠' => '徒杠',
 '徒托空言' => '徒託空言',
 '得到回复' => '得到回覆',
+'得力干将' => '得力幹將',
 '从仆' => '從僕',
 '从图里' => '從圖裡',
 '从山里' => '從山裡',
@@ -5326,7 +5347,7 @@ $zh2Hant = array(
 '忠人之托' => '忠人之托',
 '忠仆' => '忠僕',
 '忠于' => '忠於',
-'快干' => '快',
+'快干' => '快',
 '快快当当' => '快快當當',
 '快冲' => '快衝',
 '怒于' => '怒於',
@@ -5376,11 +5397,12 @@ $zh2Hant = array(
 '意大利面' => '意大利麵',
 '爱困' => '愛睏',
 '感于' => '感於',
-'愿朴' => '愿樸',
 '愿樸' => '愿樸',
+'愿朴' => '愿樸',
 '愿而恭' => '愿而恭',
 '栗冽' => '慄冽',
 '栗栗' => '慄慄',
+'慈溪' => '慈谿',
 '慌里慌张' => '慌裡慌張',
 '惨淡' => '慘澹',
 '庆吊' => '慶弔',
@@ -5406,9 +5428,8 @@ $zh2Hant = array(
 '应征' => '應徵',
 '应钟' => '應鐘',
 '懔栗' => '懍慄',
-'蒙懂' => '懞懂',
-'蒙蒙懂懂' => '懞懞懂懂',
-'蒙直' => '懞直',
+'懞懞懂懂' => '懞懞懂懂',
+'懞直' => '懞直',
 '惩忿窒欲' => '懲忿窒欲',
 '怀里' => '懷裡',
 '怀钟' => '懷鐘',
@@ -5437,7 +5458,6 @@ $zh2Hant = array(
 '所占算' => '所占算',
 '所托' => '所託',
 '扁拟谷盗虫' => '扁擬穀盜蟲',
-'手冢治虫' => '手塚治虫',
 '手塚治虫' => '手塚治虫',
 '手折' => '手摺',
 '手表態' => '手表態',
@@ -5446,15 +5466,15 @@ $zh2Hant = array(
 '手表決' => '手表決',
 '手表决' => '手表決',
 '手表演' => '手表演',
-'手表現' => '手表現',
 '手表现' => '手表現',
+'手表現' => '手表現',
 '手表示' => '手表示',
 '手表達' => '手表達',
 '手表达' => '手表達',
 '手表露' => '手表露',
 '手表面' => '手表面',
+'手里' => '手裏',
 '手里剑' => '手裏劍',
-'手里' => '手裡',
 '手表' => '手錶',
 '手链' => '手鍊',
 '手松' => '手鬆',
@@ -5492,6 +5512,7 @@ $zh2Hant = array(
 '批复' => '批覆',
 '批注' => '批註',
 '批斗' => '批鬥',
+'扼肮' => '扼肮',
 '承制' => '承製',
 '抑制作用' => '抑制作用',
 '抑制剂' => '抑制劑',
@@ -5500,8 +5521,8 @@ $zh2Hant = array(
 '抓斗' => '抓鬥',
 '抗御' => '抗禦',
 '折向往' => '折向往',
-'折子戏' => '折子戲',
 '折子戲' => '折子戲',
+'折子戏' => '折子戲',
 '折戟沈河' => '折戟沈河',
 '折冲' => '折衝',
 '披榛采兰' => '披榛採蘭',
@@ -5567,6 +5588,7 @@ $zh2Hant = array(
 '挑大梁' => '挑大樑',
 '挑斗' => '挑鬥',
 '振荡' => '振蕩',
+'捆扎' => '捆紮',
 '捉奸徒' => '捉奸徒',
 '捉奸细' => '捉奸細',
 '捉奸贼' => '捉奸賊',
@@ -5686,8 +5708,8 @@ $zh2Hant = array(
 '采种' => '採種',
 '采空区' => '採空區',
 '采空采穗' => '採空採穗',
-'采纳' => '採納',
 '采納' => '採納',
+'采纳' => '採納',
 '采给' => '採給',
 '采花' => '採花',
 '采芹人' => '採芹人',
@@ -5734,13 +5756,12 @@ $zh2Hant = array(
 '揪发' => '揪髮',
 '揪须' => '揪鬚',
 '揭丑' => '揭醜',
-'揮手表' => '揮手表',
 '挥手表' => '揮手表',
+'揮手表' => '揮手表',
 '搋面' => '搋麵',
 '损于' => '損於',
 '搏斗' => '搏鬥',
 '捣鬼吊白' => '搗鬼弔白',
-'扼肮' => '搤肮',
 '扼肮拊背' => '搤肮拊背',
 '搬斗' => '搬鬥',
 '搭干铺' => '搭乾鋪',
@@ -5772,8 +5793,9 @@ $zh2Hant = array(
 '拨谷' => '撥穀',
 '撩斗' => '撩鬥',
 '播于' => '播於',
+'扑咚' => '撲鼕',
 '扑冬' => '撲鼕',
-'æ\89\91å\86¬å\86¬' => '撲鼕鼕',
+'æ\89\91å\92\9aå\92\9a' => '撲鼕鼕',
 '擀面' => '擀麵',
 '击扑' => '擊扑',
 '击钟' => '擊鐘',
@@ -5781,7 +5803,6 @@ $zh2Hant = array(
 '担仔面' => '擔仔麵',
 '担担面' => '擔擔麵',
 '据云' => '據云',
-'据干而窥井底' => '據榦而窺井底',
 '擢发' => '擢髮',
 '擦干' => '擦乾',
 '擦干净' => '擦乾淨',
@@ -5793,7 +5814,7 @@ $zh2Hant = array(
 '收获' => '收穫',
 '改征' => '改徵',
 '改采' => '改採',
-'放挣' => '放懞掙',
+'放挣' => '放懞掙',
 '放荡' => '放蕩',
 '放松' => '放鬆',
 '政斗' => '政鬥',
@@ -5840,14 +5861,15 @@ $zh2Hant = array(
 '数与虏确' => '數與虜确',
 '数只' => '數隻',
 '文丑' => '文丑',
-'文汇报' => '文匯報',
 '文学志' => '文學誌',
 '文征明' => '文徵明',
 '文思泉涌' => '文思泉湧',
+'文杰' => '文杰',
 '文采郁郁' => '文采郁郁',
 '斗牛星' => '斗牛星',
 '斫雕为朴' => '斫雕為樸',
 '新井里美' => '新井里美',
+'新干县' => '新幹縣',
 '新历' => '新曆',
 '新历史' => '新歷史',
 '新扎' => '新紮',
@@ -5855,12 +5877,10 @@ $zh2Hant = array(
 '断发' => '斷髮',
 '断发文身' => '斷髮文身',
 '方便面' => '方便麵',
-'方几' => '方几',
 '方向往' => '方向往',
 '方志恒' => '方志恒',
 '方法里' => '方法裡',
 '方志' => '方誌',
-'方面' => '方面',
 '于0' => '於0',
 '于1' => '於1',
 '于2' => '於2',
@@ -5900,9 +5920,9 @@ $zh2Hant = array(
 '于国' => '於國',
 '于坏' => '於坏',
 '于垂' => '於垂',
-'于夫罗' => '於夫羅',
-'於夫罗' => '於夫羅',
 '於夫羅' => '於夫羅',
+'於夫罗' => '於夫羅',
+'于夫罗' => '於夫羅',
 '于她' => '於她',
 '于好' => '於好',
 '于始' => '於始',
@@ -5927,8 +5947,8 @@ $zh2Hant = array(
 '于是' => '於是',
 '于是乎' => '於是乎',
 '于时' => '於時',
-'于梨华' => '於梨華',
 '於梨華' => '於梨華',
+'于梨华' => '於梨華',
 '于乐' => '於樂',
 '于此' => '於此',
 '於氏' => '於氏',
@@ -5964,14 +5984,13 @@ $zh2Hant = array(
 '于陆' => '於陸',
 '于震中' => '於震中',
 '于震前' => '於震前',
-'äº\8eé\9c\87å\90\8e' => 'æ\96¼é\9c\87å\90\8e',
+'äº\8eé\9c\87å\90\8e' => 'æ\96¼é\9c\87å¾\8c',
 '施舍' => '施捨',
 '施于' => '施於',
 '施舍之道' => '施舍之道',
 '旁征博引' => '旁徵博引',
 '旁注' => '旁註',
 '旅游' => '旅遊',
-'旋干转坤' => '旋乾轉坤',
 '旋回' => '旋迴',
 '族里' => '族裡',
 '日心历表' => '日心曆表',
@@ -5991,11 +6010,13 @@ $zh2Hant = array(
 '明范' => '明範',
 '明鉴' => '明鑑',
 '易于' => '易於',
+'昔人有云' => '昔人有云',
 '星历' => '星曆',
 '星期后' => '星期後',
 '星历史' => '星歷史',
 '春游' => '春遊',
 '春香斗学' => '春香鬥學',
+'昭惠后' => '昭惠后',
 '是发小' => '是髮小',
 '时钟' => '時鐘',
 '时间不准' => '時間不準',
@@ -6004,7 +6025,7 @@ $zh2Hant = array(
 '晚钟' => '晚鐘',
 '晞发' => '晞髮',
 '晨钟' => '晨鐘',
-'æ\99®å\86¬å\86¬' => '普鼕鼕',
+'æ\99®å\92\9aå\92\9a' => '普鼕鼕',
 '晾干' => '晾乾',
 '暗地里' => '暗地裡',
 '暗沟里' => '暗溝裡',
@@ -6030,7 +6051,6 @@ $zh2Hant = array(
 '晒谷' => '曬穀',
 '曰云' => '曰云',
 '更仆难数' => '更僕難數',
-'更加注' => '更加注',
 '更签' => '更籤',
 '更钟' => '更鐘',
 '书签' => '書籤',
@@ -6040,8 +6060,8 @@ $zh2Hant = array(
 '曾朴' => '曾樸',
 '最多' => '最多',
 '最多只' => '最多只',
-'會干擾' => '會干擾',
 '会干扰' => '會干擾',
+'會干擾' => '會干擾',
 '会干' => '會幹',
 '会吊' => '會弔',
 '会里' => '會裡',
@@ -6056,15 +6076,15 @@ $zh2Hant = array(
 '有只不' => '有只不',
 '有只允' => '有只允',
 '有只容' => '有只容',
-'有只采' => '有只採',
 '有只採' => '有只採',
+'有只采' => '有只採',
 '有只是' => '有只是',
 '有只用' => '有只用',
 '有回复' => '有回覆',
 '有够赞' => '有夠讚',
 '有征伐' => '有征伐',
-'有征战' => '有征戰',
 '有征戰' => '有征戰',
+'有征战' => '有征戰',
 '有征服' => '有征服',
 '有征讨' => '有征討',
 '有征討' => '有征討',
@@ -6081,8 +6101,8 @@ $zh2Hant = array(
 '望后石' => '望后石',
 '朝乾夕惕' => '朝乾夕惕',
 '朝钟' => '朝鐘',
-'朦胧' => '朦朧',
 '蒙胧' => '朦朧',
+'朦胧' => '朦朧',
 '木偶戏扎' => '木偶戲紮',
 '木材干馏' => '木材乾餾',
 '木梁' => '木樑',
@@ -6101,6 +6121,7 @@ $zh2Hant = array(
 '朱理安历史' => '朱理安歷史',
 '朴子里' => '朴子里',
 '李志喜' => '李志喜',
+'李适' => '李适',
 '李连杰' => '李連杰',
 '李連杰' => '李連杰',
 '材干' => '材幹',
@@ -6113,20 +6134,22 @@ $zh2Hant = array(
 '束发' => '束髮',
 '杠人' => '杠人',
 '杠梁' => '杠梁',
-'杠轂' => '杠轂',
 '杠毂' => '杠轂',
+'杠轂' => '杠轂',
 '杯干' => '杯乾',
 '杯面' => '杯麵',
+'杰倫' => '杰倫',
 '杰伦' => '杰倫',
-'杰威爾音樂' => '杰威爾音樂',
-'杰威尔音乐' => '杰威爾音樂',
-'杰特' => '杰特',
+'杰威爾' => '杰威爾',
+'杰威尔' => '杰威爾',
 '东周钟' => '東周鐘',
 '东岳' => '東嶽',
 '東湖里' => '東湖里',
 '东冲西突' => '東衝西突',
 '东游' => '東遊',
+'松口镇' => '松口鎮',
 '松山庄' => '松山庄',
+'松溪县' => '松谿縣',
 '板荡' => '板蕩',
 '林宏岳' => '林宏嶽',
 '林杰樑' => '林杰樑',
@@ -6147,6 +6170,7 @@ $zh2Hant = array(
 '柜子' => '柜子',
 '柜柳' => '柜柳',
 '柱梁' => '柱樑',
+'柳斌杰' => '柳斌杰',
 '柳诒征' => '柳詒徵',
 '栖栖皇皇' => '栖栖皇皇',
 '栗栖溪' => '栗栖溪',
@@ -6160,6 +6184,7 @@ $zh2Hant = array(
 '格里高利历' => '格里高利曆',
 '格斗' => '格鬥',
 '桂圆干' => '桂圓乾',
+'框里' => '框裡',
 '桌几' => '桌几',
 '桌历' => '桌曆',
 '桌历史' => '桌歷史',
@@ -6185,14 +6210,15 @@ $zh2Hant = array(
 '植发' => '植髮',
 '椒面' => '椒麵',
 '椰枣干' => '椰棗乾',
-'楊雅筑' => '楊雅筑',
 '杨雅筑' => '楊雅筑',
+'楊雅筑' => '楊雅筑',
 '桢干' => '楨幹',
 '业余' => '業餘',
 '榨干' => '榨乾',
 '枪杆' => '槍桿',
 '杠杆' => '槓桿',
 '乐器钟' => '樂器鐘',
+'乐游原' => '樂遊原',
 '樊于期' => '樊於期',
 '梁上' => '樑上',
 '梁柱' => '樑柱',
@@ -6208,8 +6234,8 @@ $zh2Hant = array(
 '模范14棒' => '模范14棒',
 '模范21棒' => '模范21棒',
 '模范七棒' => '模范七棒',
-'模范三軍' => '模范三軍',
 '模范三军' => '模范三軍',
+'模范三軍' => '模范三軍',
 '模范棒棒堂' => '模范棒棒堂',
 '模制' => '模製',
 '样范' => '樣範',
@@ -6233,15 +6259,16 @@ $zh2Hant = array(
 '朴陋' => '樸陋',
 '朴马' => '樸馬',
 '朴鲁' => '樸魯',
-'树干' => '樹幹',
 '树林里' => '樹林裡',
+'树干' => '樹榦',
 '树梁' => '樹樑',
 '桥梁' => '橋樑',
-'机械系' => '機械系',
 '機械系' => '機械系',
+'机械系' => '機械系',
 '机械表' => '機械錶',
 '机械钟' => '機械鐘',
 '机械钟表' => '機械鐘錶',
+'横峰县' => '橫峯縣',
 '横征暴敛' => '橫徵暴斂',
 '横梁' => '橫樑',
 '横冲' => '橫衝',
@@ -6250,6 +6277,7 @@ $zh2Hant = array(
 '台灯' => '檯燈',
 '台球' => '檯球',
 '台面上' => '檯面上',
+'台面化' => '檯面化',
 '柜台' => '櫃檯',
 '栉发工' => '櫛髮工',
 '欲海难填' => '欲海難填',
@@ -6259,6 +6287,7 @@ $zh2Hant = array(
 '欧游' => '歐遊',
 '止于' => '止於',
 '正官庄' => '正官庄',
+'正杰' => '正杰',
 '武丑' => '武丑',
 '武后' => '武后',
 '武斗' => '武鬥',
@@ -6299,6 +6328,7 @@ $zh2Hant = array(
 '水来汤里去' => '水來湯裡去',
 '水准' => '水準',
 '水无怜奈' => '水無怜奈',
+'水表面' => '水表面',
 '水里' => '水裡',
 '水里商工' => '水里商工',
 '水里溪' => '水里溪',
@@ -6327,15 +6357,14 @@ $zh2Hant = array(
 '没事干' => '沒事幹',
 '没干' => '沒幹',
 '没折至' => '沒摺至',
-'没梢干' => '沒梢幹',
 '没样范' => '沒樣範',
 '没准' => '沒準',
 '冲冠发怒' => '沖冠髮怒',
 '冲天' => '沖天',
+'沙琅' => '沙瑯',
 '沙羡' => '沙羡',
 '沙里淘金' => '沙裡淘金',
 '河岳' => '河嶽',
-'河流汇集' => '河流匯集',
 '河里' => '河裡',
 '油泼面' => '油潑麵',
 '油斗' => '油鬥',
@@ -6356,7 +6385,7 @@ $zh2Hant = array(
 '泱郁' => '泱鬱',
 '泳气钟' => '泳氣鐘',
 '洄游' => '洄遊',
-'æ´\8b河大æ\9b²' => 'æ´\8b河大麴',
+'æ´\8b河大æ\9b²' => 'æ´\8b河大麯',
 '洒家' => '洒家',
 '洒扫' => '洒掃',
 '洒水' => '洒水',
@@ -6366,8 +6395,8 @@ $zh2Hant = array(
 '洒濯' => '洒濯',
 '洒然' => '洒然',
 '洒脱' => '洒脫',
-'洗炼' => '洗鍊',
 '洗练' => '洗鍊',
+'洗炼' => '洗鍊',
 '洗发' => '洗髮',
 '洛钟东应' => '洛鐘東應',
 '洞里' => '洞裡',
@@ -6396,13 +6425,13 @@ $zh2Hant = array(
 '浸卤' => '浸滷',
 '涂善妮' => '涂善妮',
 '涂坤' => '涂坤',
-'涂壮勋' => '涂壯勳',
 '涂壯勳' => '涂壯勳',
+'涂壮勋' => '涂壯勳',
 '涂天相' => '涂天相',
 '涂姓' => '涂姓',
 '涂序瑄' => '涂序瑄',
-'涂敏恆' => '涂敏恆',
 '涂敏恒' => '涂敏恆',
+'涂敏恆' => '涂敏恆',
 '涂泽民' => '涂澤民',
 '涂澤民' => '涂澤民',
 '涂绍煃' => '涂紹煃',
@@ -6411,8 +6440,8 @@ $zh2Hant = array(
 '涂谨申' => '涂謹申',
 '涂逢年' => '涂逢年',
 '涂醒哲' => '涂醒哲',
-'涂長望' => '涂長望',
 '涂长望' => '涂長望',
+'涂長望' => '涂長望',
 '涂鸿钦' => '涂鴻欽',
 '涂鴻欽' => '涂鴻欽',
 '涳蒙' => '涳濛',
@@ -6425,7 +6454,6 @@ $zh2Hant = array(
 '泪如泉涌' => '淚如泉湧',
 '淡于' => '淡於',
 '淡蒙蒙' => '淡濛濛',
-'淡朱' => '淡硃',
 '净余' => '淨餘',
 '净发' => '淨髮',
 '淫欲' => '淫慾',
@@ -6495,8 +6523,10 @@ $zh2Hant = array(
 '准军事' => '準軍事',
 '准头' => '準頭',
 '准点' => '準點',
+'沟大曲' => '溝大麯',
 '溟蒙' => '溟濛',
 '溢于' => '溢於',
+'温洛克期' => '溫洛克期',
 '溲面' => '溲麵',
 '溺于' => '溺於',
 '滃郁' => '滃鬱',
@@ -6542,6 +6572,7 @@ $zh2Hant = array(
 '潮涌' => '潮湧',
 '溃于' => '潰於',
 '涩谷区' => '澀谷區',
+'澄江县' => '澂江縣',
 '澄澹精致' => '澄澹精致',
 '澒蒙' => '澒濛',
 '泽渗漓而下降' => '澤滲灕而下降',
@@ -6560,11 +6591,20 @@ $zh2Hant = array(
 '蒙汜' => '濛汜',
 '蒙蒙细雨' => '濛濛細雨',
 '蒙雾' => '濛霧',
-'蒙松雨' => '濛鬆雨',
 '蒙鸿' => '濛鴻',
+'浚州' => '濬州',
+'浚县' => '濬縣',
 '滨田里佳子' => '濱田里佳子',
-'沈吉线' => '瀋吉線',
+'沈丹客运' => '瀋丹客運',
+'沈丹线' => '瀋丹線',
+'沈丹铁路' => '瀋丹鐵路',
+'沈北' => '瀋北',
+'沈吉' => '瀋吉',
+'沈大线' => '瀋大線',
+'沈大铁路' => '瀋大鐵路',
+'沈大高速' => '瀋大高速',
 '沈山线' => '瀋山線',
+'沈山铁路' => '瀋山鐵路',
 '沈州' => '瀋州',
 '沈抚' => '瀋撫',
 '沈水' => '瀋水',
@@ -6613,6 +6653,7 @@ $zh2Hant = array(
 '炼制' => '煉製',
 '煎面' => '煎麵',
 '烟卷' => '煙捲',
+'烟台' => '煙臺',
 '照入签' => '照入籤',
 '照相干片' => '照相乾片',
 '煨干' => '煨乾',
@@ -6701,6 +6742,7 @@ $zh2Hant = array(
 '理次发' => '理次髮',
 '理发' => '理髮',
 '琴钟' => '琴鐘',
+'珐琅' => '琺瑯',
 '瑞城里' => '瑞城里',
 '瑞征' => '瑞徵',
 '瑶签' => '瑤籤',
@@ -6736,6 +6778,7 @@ $zh2Hant = array(
 '男仆' => '男僕',
 '界里' => '界裡',
 '畏于' => '畏於',
+'留长发' => '留長髮',
 '留发' => '留髮',
 '毕于' => '畢於',
 '毕业于' => '畢業於',
@@ -6785,11 +6828,11 @@ $zh2Hant = array(
 '白霉' => '白黴',
 '百个' => '百個',
 '百只可' => '百只可',
-'百只夠' => '百只夠',
 '百只够' => '百只夠',
+'百只夠' => '百只夠',
 '百只怕' => '百只怕',
-'百只足夠' => '百只足夠',
 '百只足够' => '百只足夠',
+'百只足夠' => '百只足夠',
 '百周后' => '百周後',
 '百天后' => '百天後',
 '百年' => '百年',
@@ -6805,6 +6848,8 @@ $zh2Hant = array(
 '的回复' => '的回覆',
 '的图里' => '的圖裡',
 '的山里' => '的山裡',
+'的干将' => '的幹將',
+'的个中' => '的箇中',
 '的钟' => '的鐘',
 '的长发' => '的長髮',
 '的发小' => '的髮小',
@@ -6877,6 +6922,7 @@ $zh2Hant = array(
 '瞳蒙' => '瞳矇',
 '蒙事' => '矇事',
 '蒙昧无知' => '矇昧無知',
+'蒙松雨' => '矇松雨',
 '蒙混' => '矇混',
 '蒙瞍' => '矇瞍',
 '蒙眬' => '矇矓',
@@ -6887,6 +6933,7 @@ $zh2Hant = array(
 '矜夸' => '矜誇',
 '短几' => '短几',
 '短于' => '短於',
+'短发生' => '短發生',
 '短发' => '短髮',
 '矮几' => '矮几',
 '石几' => '石几',
@@ -6895,20 +6942,14 @@ $zh2Hant = array(
 '石英钟' => '石英鐘',
 '石英钟表' => '石英鐘錶',
 '石钟' => '石鐘',
-'石钟山' => '石鐘山',
 '研制' => '研製',
 '砰当' => '砰噹',
 '破鉴' => '破鑑',
-'朱唇皓齿' => '硃唇皓齒',
-'朱批' => '硃批',
 '朱砂' => '硃砂',
-'朱笔' => '硃筆',
-'朱红色' => '硃紅色',
-'朱色' => '硃色',
-'朱谕' => '硃諭',
 '硬干' => '硬幹',
 '确瘠' => '确瘠',
 '碑志' => '碑誌',
+'碗里' => '碗裡',
 '碰钟' => '碰鐘',
 '确系' => '確係',
 '码表' => '碼錶',
@@ -6952,7 +6993,6 @@ $zh2Hant = array(
 '私欲' => '私慾',
 '私斗' => '私鬥',
 '秋游' => '秋遊',
-'秋阴入井干' => '秋陰入井幹',
 '秋发' => '秋髮',
 '种丹妮' => '种丹妮',
 '种师中' => '种師中',
@@ -6965,6 +7005,7 @@ $zh2Hant = array(
 '秒表示' => '秒表示',
 '秒钟' => '秒鐘',
 '秤杆' => '秤桿',
+'秦沈客运' => '秦瀋客運',
 '移祸于' => '移禍於',
 '稀松' => '稀鬆',
 '棱台' => '稜台',
@@ -7010,6 +7051,7 @@ $zh2Hant = array(
 '谷雨' => '穀雨',
 '谷类' => '穀類',
 '谷食' => '穀食',
+'穆棱' => '穆稜',
 '穆罕默德历' => '穆罕默德曆',
 '穆罕默德历史' => '穆罕默德歷史',
 '积淀' => '積澱',
@@ -7035,7 +7077,6 @@ $zh2Hant = array(
 '窃钟掩耳' => '竊鐘掩耳',
 '立于' => '立於',
 '立范' => '立範',
-'站干岸儿' => '站乾岸兒',
 '童仆' => '童僕',
 '竞斗' => '競鬥',
 '竹几' => '竹几',
@@ -7043,18 +7084,19 @@ $zh2Hant = array(
 '竹签' => '竹籤',
 '竹席' => '竹蓆',
 '竹制' => '竹製',
+'竹溪县' => '竹谿縣',
 '笑里藏刀' => '笑裡藏刀',
 '第一出现' => '第一出現',
 '第一出現' => '第一出現',
-'第一出線' => '第一出線',
 '第一出线' => '第一出線',
+'第一出線' => '第一出線',
 '第一出' => '第一齣',
 '第七出' => '第七齣',
 '第三出局' => '第三出局',
 '第三出' => '第三齣',
 '第九出' => '第九齣',
-'第二出线' => '第二出線',
 '第二出線' => '第二出線',
+'第二出线' => '第二出線',
 '第二出' => '第二齣',
 '第五出局' => '第五出局',
 '第五出' => '第五齣',
@@ -7069,8 +7111,8 @@ $zh2Hant = array(
 '筑前' => '筑前',
 '筑北' => '筑北',
 '筑州' => '筑州',
-'筑后' => '筑後',
 '筑後' => '筑後',
+'筑后' => '筑後',
 '筑波' => '筑波',
 '筑紫' => '筑紫',
 '筑肥' => '筑肥',
@@ -7081,16 +7123,14 @@ $zh2Hant = array(
 '答复' => '答覆',
 '筵几' => '筵几',
 '个中原因' => '箇中原因',
-'个中奥妙' => '箇中奧妙',
-'个中奥秘' => '箇中奧秘',
+'个中奥' => '箇中奧',
 '个中好手' => '箇中好手',
 '个中强手' => '箇中強手',
-'个中消息' => '箇中消息',
 '个中滋味' => '箇中滋味',
 '个中玄机' => '箇中玄機',
 '个中理由' => '箇中理由',
-'个中讯息' => '箇中訊息',
-'个中资讯' => '箇中資訊',
+'个中翘楚' => '箇中翹楚',
+'个中道理' => '箇中道理',
 '个中高手' => '箇中高手',
 '个旧' => '箇舊',
 '算历' => '算曆',
@@ -7115,8 +7155,9 @@ $zh2Hant = array(
 '范金' => '範金',
 '简并' => '簡併',
 '简朴' => '簡樸',
-'ç°¡ç­\91ç¿\8e' => 'ç°¡ç­\91ç¿\8e',
+'ç®\80ç\9f­å\8f\91' => 'ç°¡ç\9f­ç\99¼',
 '简筑翎' => '簡筑翎',
+'簡筑翎' => '簡筑翎',
 '簸荡' => '簸蕩',
 '签幐' => '籤幐',
 '签押' => '籤押',
@@ -7198,14 +7239,12 @@ $zh2Hant = array(
 '绝于' => '絕於',
 '绞干' => '絞乾',
 '络腮胡' => '絡腮鬍',
-'給我干脆' => '給我干脆',
-'给我干脆' => '給我干脆',
 '给于' => '給於',
 '丝恩发怨' => '絲恩髮怨',
 '丝制' => '絲製',
 '丝发' => '絲髮',
 '绑扎' => '綁紮',
-'捆扎' => '綑紮',
+'绥棱' => '綏稜',
 '經有云' => '經有云',
 '经有云' => '經有云',
 '综合征' => '綜合徵',
@@ -7213,6 +7252,9 @@ $zh2Hant = array(
 '维系' => '維繫',
 '绾发' => '綰髮',
 '纲鉴' => '綱鑑',
+'網球台' => '網球台',
+'网球台' => '網球台',
+'网站里' => '網站裡',
 '网里' => '網裡',
 '网志' => '網誌',
 '网游' => '網遊',
@@ -7237,6 +7279,7 @@ $zh2Hant = array(
 '缝里' => '縫裡',
 '缝制' => '縫製',
 '缩栗' => '縮慄',
+'缩短发' => '縮短發',
 '纵欲' => '縱慾',
 '纤夫' => '縴夫',
 '纤手' => '縴手',
@@ -7247,7 +7290,6 @@ $zh2Hant = array(
 '繁复' => '繁複',
 '繁钟' => '繁鐘',
 '绷扒吊拷' => '繃扒弔拷',
-'穗帏飘井干' => '繐幃飄井幹',
 '绕梁' => '繞樑',
 '绘制' => '繪製',
 '系上。' => '繫上。',
@@ -7273,6 +7315,7 @@ $zh2Hant = array(
 '系紧' => '繫緊',
 '系绳' => '繫繩',
 '系累' => '繫纍',
+'系舟' => '繫舟',
 '系船' => '繫船',
 '系辞' => '繫辭',
 '系鞋带' => '繫鞋帶',
@@ -7317,7 +7360,7 @@ $zh2Hant = array(
 '老干' => '老乾',
 '老仆' => '老僕',
 '老干部' => '老幹部',
-'老' => '老懞',
+'老' => '老懞',
 '老于' => '老於',
 '老爷钟' => '老爺鐘',
 '老姜' => '老薑',
@@ -7357,6 +7400,7 @@ $zh2Hant = array(
 '胜键' => '胜鍵',
 '胡云' => '胡云',
 '胡子昂' => '胡子昂',
+'胡杰' => '胡杰',
 '胡朴安' => '胡樸安',
 '胡里胡涂' => '胡裡胡塗',
 '胰脏' => '胰臟',
@@ -7419,6 +7463,7 @@ $zh2Hant = array(
 '自制能力' => '自制能力',
 '自于' => '自於',
 '自然数里' => '自然數裡',
+'自由钟' => '自由鐘',
 '自制' => '自製',
 '自觉自愿' => '自覺自愿',
 '自夸' => '自誇',
@@ -7431,8 +7476,8 @@ $zh2Hant = array(
 '台静农' => '臺靜農',
 '臻于' => '臻於',
 '舂谷' => '舂穀',
-'舉手表' => '舉手表',
 '举手表' => '舉手表',
+'舉手表' => '舉手表',
 '舊庄' => '舊庄',
 '旧历' => '舊曆',
 '旧历史' => '舊歷史',
@@ -7474,18 +7519,18 @@ $zh2Hant = array(
 '茂都淀' => '茂都澱',
 '范文同' => '范文同',
 '范文正公' => '范文正公',
-'范文瀾' => '范文瀾',
 '范文澜' => '范文瀾',
+'范文瀾' => '范文瀾',
 '范文照' => '范文照',
 '范文程' => '范文程',
 '范文芳' => '范文芳',
 '范文藤' => '范文藤',
 '范文虎' => '范文虎',
 '范登堡' => '范登堡',
-'范賢惠' => '范賢惠',
 '范贤惠' => '范賢惠',
-'è\8c\85äº\8eè½¼' => 'è\8c\85äº\8e軾',
+'è\8c\83è³¢æ\83 ' => 'è\8c\83è³¢æ\83 ',
 '茅于軾' => '茅于軾',
+'茅于轼' => '茅于軾',
 '茶几' => '茶几',
 '茶余' => '茶餘',
 '茶面' => '茶麵',
@@ -7502,7 +7547,7 @@ $zh2Hant = array(
 '莽荡' => '莽蕩',
 '菜干' => '菜乾',
 '菜坛' => '菜罈',
-'菜肴' => '菜',
+'菜肴' => '菜',
 '菠棱菜' => '菠稜菜',
 '菠萝干' => '菠蘿乾',
 '华严钟' => '華嚴鐘',
@@ -7612,10 +7657,11 @@ $zh2Hant = array(
 '藤制' => '藤製',
 '药签' => '藥籤',
 '药面儿' => '藥麵兒',
-'苏昆' => '蘇崑',
 '苏崑' => '蘇崑',
+'苏昆' => '蘇崑',
 '苹果' => '蘋果',
 '苹果干' => '蘋果乾',
+'兰溪市' => '蘭谿市',
 '萝卜' => '蘿蔔',
 '萝卜干' => '蘿蔔乾',
 '虎须' => '虎鬚',
@@ -7634,6 +7680,7 @@ $zh2Hant = array(
 '蝎虎' => '蝎虎',
 '蝎蝎螫螫' => '蝎蝎螫螫',
 '蝎谮' => '蝎譖',
+'虾面' => '蝦麵',
 '虮虱相吊' => '蟣蝨相弔',
 '蛏干' => '蟶乾',
 '蚁后' => '蟻后',
@@ -7645,6 +7692,7 @@ $zh2Hant = array(
 '行事历' => '行事曆',
 '行事历史' => '行事歷史',
 '行凶' => '行兇',
+'行家里手' => '行家裡手',
 '行于' => '行於',
 '行百里者半于九十' => '行百里者半於九十',
 '卫后庄公' => '衛後莊公',
@@ -7698,6 +7746,7 @@ $zh2Hant = array(
 '冲头阵' => '衝頭陣',
 '冲风' => '衝風',
 '衡鉴' => '衡鑑',
+'表面包' => '表面包',
 '衷于' => '衷於',
 '袋杆' => '袋桿',
 '袋里' => '袋裡',
@@ -7716,13 +7765,13 @@ $zh2Hant = array(
 '夹裙' => '袷裙',
 '裁并' => '裁併',
 '裁制' => '裁製',
-'里手' => '裏手',
+'里勾外连' => '裏勾外連',
 '里水镇' => '裏水鎮',
 '里海' => '裏海',
+'里运河' => '裏運河',
 '补于' => '補於',
 '补注' => '補註',
 '装折' => '裝摺',
-'里勾外连' => '裡勾外連',
 '里屋' => '裡屋',
 '里层' => '裡層',
 '里带' => '裡帶',
@@ -7771,6 +7820,13 @@ $zh2Hant = array(
 '复利' => '複利',
 '复印' => '複印',
 '复句' => '複句',
+'复合函数' => '複合函數',
+'复合制' => '複合制',
+'复合式' => '複合式',
+'复合弓' => '複合弓',
+'复合材' => '複合材',
+'复合物' => '複合物',
+'复合体' => '複合體',
 '复壁' => '複壁',
 '复姓' => '複姓',
 '复字键' => '複字鍵',
@@ -7846,6 +7902,7 @@ $zh2Hant = array(
 '触须' => '觸鬚',
 '言云' => '言云',
 '言大而夸' => '言大而夸',
+'言里' => '言裡',
 '言辩而确' => '言辯而确',
 '订制' => '訂製',
 '计划' => '計劃',
@@ -7855,6 +7912,7 @@ $zh2Hant = array(
 '托交' => '託交',
 '托人' => '託人',
 '托付' => '託付',
+'托克逊' => '託克遜',
 '托儿' => '託兒',
 '托古讽今' => '託古諷今',
 '托名' => '託名',
@@ -7876,8 +7934,10 @@ $zh2Hant = array(
 '托辞' => '託辭',
 '托运' => '託運',
 '托过' => '託過',
+'托里县' => '託里縣',
 '托附' => '託附',
 '许愿起经' => '許愿起經',
+'許聖杰' => '許聖杰',
 '许虬' => '許虬',
 '注上' => '註上',
 '注册' => '註冊',
@@ -7915,6 +7975,7 @@ $zh2Hant = array(
 '诔赞' => '誄讚',
 '夸下海口' => '誇下海口',
 '夸了' => '誇了',
+'夸人' => '誇人',
 '夸他' => '誇他',
 '夸你' => '誇你',
 '夸来夸去' => '誇來誇去',
@@ -7926,7 +7987,9 @@ $zh2Hant = array(
 '夸多斗靡' => '誇多鬥靡',
 '夸大' => '誇大',
 '夸她' => '誇她',
+'夸姣' => '誇姣',
 '夸官' => '誇官',
+'夸容' => '誇容',
 '夸张' => '誇張',
 '夸强说会' => '誇強說會',
 '夸得' => '誇得',
@@ -7951,6 +8014,7 @@ $zh2Hant = array(
 '夸辩' => '誇辯',
 '夸过' => '誇過',
 '夸饰' => '誇飾',
+'夸丽' => '誇麗',
 '志哀' => '誌哀',
 '志喜' => '誌喜',
 '志庆' => '誌慶',
@@ -7959,8 +8023,8 @@ $zh2Hant = array(
 '诱奸' => '誘姦',
 '语云' => '語云',
 '语汇' => '語彙',
-'語有云' => '語有云',
 '语有云' => '語有云',
+'語有云' => '語有云',
 '语法里' => '語法裡',
 '语里' => '語裡',
 '诚征' => '誠徵',
@@ -7980,12 +8044,14 @@ $zh2Hant = array(
 '咨询' => '諮詢',
 '诸余' => '諸餘',
 '谋干' => '謀幹',
+'谢杰' => '謝杰',
+'謝杰' => '謝杰',
 '谢华后' => '謝華后',
 '谬采虚声' => '謬採虛聲',
 '谬赞' => '謬讚',
 '謷丑' => '謷醜',
-'謹愿' => '謹愿',
 '谨愿' => '謹愿',
+'謹愿' => '謹愿',
 '谨于心' => '謹於心',
 '哗噪' => '譁噪',
 '哗嚣' => '譁囂',
@@ -8036,8 +8102,8 @@ $zh2Hant = array(
 '买凶' => '買兇',
 '买断发' => '買斷發',
 '贻范' => '貽範',
-'賈后' => '賈后',
 '贾后' => '賈后',
+'賈后' => '賈后',
 '赈饥' => '賑饑',
 '赏赞' => '賞讚',
 '賢后' => '賢后',
@@ -8065,6 +8131,7 @@ $zh2Hant = array(
 '赵治勋' => '趙治勳',
 '趱干' => '趲幹',
 '足于' => '足於',
+'足球台' => '足球台',
 '跌扑' => '跌扑',
 '路图里' => '路圖裡',
 '路签' => '路籤',
@@ -8112,6 +8179,7 @@ $zh2Hant = array(
 '辞汇' => '辭彙',
 '辫发' => '辮髮',
 '辩斗' => '辯鬥',
+'辰溪县' => '辰谿縣',
 '农历' => '農曆',
 '农历史' => '農歷史',
 '农民历' => '農民曆',
@@ -8134,7 +8202,6 @@ $zh2Hant = array(
 '回翔' => '迴翔',
 '回肠' => '迴腸',
 '回肠荡气' => '迴腸盪氣',
-'回荡' => '迴蕩',
 '回诵' => '迴誦',
 '回路' => '迴路',
 '回转' => '迴轉',
@@ -8196,11 +8263,12 @@ $zh2Hant = array(
 '造钟' => '造鐘',
 '连三并四' => '連三併四',
 '连采' => '連採',
+'连发式' => '連發式',
 '连系' => '連繫',
-'周游世界' => '週遊世界',
+'周游' => '週遊',
 '进两出' => '進兩出',
-'進制' => '進制',
 '进制' => '進制',
+'進制' => '進制',
 '逼并' => '逼併',
 '遇风后' => '遇風後',
 '游了' => '遊了',
@@ -8234,6 +8302,7 @@ $zh2Hant = array(
 '游目骋怀' => '遊目騁懷',
 '游程' => '遊程',
 '游丝' => '遊絲',
+'游美学务' => '遊美學務',
 '游兴' => '遊興',
 '游船' => '遊船',
 '游艇' => '遊艇',
@@ -8302,10 +8371,10 @@ $zh2Hant = array(
 '部落发' => '部落發',
 '郭后' => '郭后',
 '都于' => '都於',
-'乡愿' => '鄉愿',
 '鄉愿' => '鄉愿',
-'郑凯云' => '鄭凱云',
+'乡愿' => '鄉愿',
 '鄭凱云' => '鄭凱云',
+'郑凯云' => '鄭凱云',
 '配制饲料' => '配制飼料',
 '配图里' => '配圖裡',
 '配水干管' => '配水幹管',
@@ -8314,8 +8383,8 @@ $zh2Hant = array(
 '酒气冲天' => '酒氣衝天',
 '酒坛' => '酒罈',
 '酒肴' => '酒肴',
-'酒麹' => '酒麴',
 '酒曲' => '酒麴',
+'酒麹' => '酒麴',
 '酥松' => '酥鬆',
 '酸姜' => '酸薑',
 '醇朴' => '醇樸',
@@ -8378,10 +8447,10 @@ $zh2Hant = array(
 '采石之役' => '采石之役',
 '采石之战' => '采石之戰',
 '采石之戰' => '采石之戰',
-'采石矶' => '采石磯',
 '采石磯' => '采石磯',
-'é\87\8c海大学' => 'é\87\8c海大學',
+'é\87\87ç\9f³ç\9f¶' => 'é\87\87ç\9f³ç£¯',
 '里海大學' => '里海大學',
+'里海大学' => '里海大學',
 '里海崖' => '里海崖',
 '里海茨' => '里海茨',
 '里铺' => '里舖',
@@ -8417,6 +8486,7 @@ $zh2Hant = array(
 '金表露' => '金表露',
 '金表面' => '金表面',
 '金装玉里' => '金裝玉裡',
+'金溪县' => '金谿縣',
 '金链' => '金鍊',
 '金钟' => '金鐘',
 '金发' => '金髮',
@@ -8511,6 +8581,7 @@ $zh2Hant = array(
 '钟罩' => '鐘罩',
 '钟声' => '鐘聲',
 '钟腰' => '鐘腰',
+'钟花' => '鐘花',
 '钟螺' => '鐘螺',
 '钟行' => '鐘行',
 '钟表面' => '鐘表面',
@@ -8545,13 +8616,13 @@ $zh2Hant = array(
 '鉴察' => '鑑察',
 '鉴往知来' => '鑑往知來',
 '鉴戒' => '鑑戒',
+'鉴于' => '鑑於',
 '鉴湖' => '鑑湖',
 '鉴藏' => '鑑藏',
 '鉴谅' => '鑑諒',
 '鉴证' => '鑑證',
 '鉴识' => '鑑識',
 '鉴赏' => '鑑賞',
-'鉴于' => '鑒於',
 '长几' => '長几',
 '长于' => '長於',
 '长历' => '長曆',
@@ -8620,8 +8691,10 @@ $zh2Hant = array(
 '陳冲' => '陳冲',
 '陳士杰' => '陳士杰',
 '陈升' => '陳昇',
-'陳有后' => '陳有后',
 '陈有后' => '陳有后',
+'陳有后' => '陳有后',
+'陈杰' => '陳杰',
+'陳杰' => '陳杰',
 '陈炼' => '陳鍊',
 '陆游' => '陸遊',
 '阳春面' => '陽春麵',
@@ -8649,7 +8722,6 @@ $zh2Hant = array(
 '雕梁画栋' => '雕樑畫棟',
 '双折射' => '雙折射',
 '双折' => '雙摺',
-'双沟大曲' => '雙溝大麯',
 '双胜类' => '雙胜類',
 '双雕' => '雙鵰',
 '杂合面儿' => '雜合麵兒',
@@ -8671,7 +8743,7 @@ $zh2Hant = array(
 '雪里' => '雪裡',
 '雪里红' => '雪裡紅',
 '雪里蕻' => '雪裡蕻',
-'云吞面' => '雲吞麵',
+'云吞' => '雲吞',
 '云笈七签' => '雲笈七籤',
 '云游' => '雲遊',
 '云须' => '雲鬚',
@@ -8684,16 +8756,21 @@ $zh2Hant = array(
 '电子表格' => '電子表格',
 '电子钟' => '電子鐘',
 '电子钟表' => '電子鐘錶',
+'电梯里' => '電梯裡',
 '电波钟' => '電波鐘',
 '电码表' => '電碼表',
 '电冲' => '電衝',
+'电视台风' => '電視台風',
 '电表' => '電錶',
 '电钟' => '電鐘',
 '震栗' => '震慄',
 '霉气冲天' => '霉氣衝天',
+'沾化' => '霑化',
+'沾益' => '霑益',
 '雾里' => '霧裡',
 '露丑' => '露醜',
 '霁范' => '霽範',
+'灵昆' => '靈崑',
 '青山一发' => '青山一髮',
 '青霉' => '青黴',
 '非常准' => '非常準',
@@ -8721,7 +8798,6 @@ $zh2Hant = array(
 '面粉碎' => '面粉碎',
 '面粉红' => '面粉紅',
 '面食饭' => '面食飯',
-'面食面' => '面食麵',
 '鞋里' => '鞋裡',
 '鞣制' => '鞣製',
 '秋千' => '鞦韆',
@@ -8749,7 +8825,6 @@ $zh2Hant = array(
 '预报不准' => '預報不準',
 '预制' => '預製',
 '领袖欲' => '領袖慾',
-'头儿干' => '頭兒幹',
 '头里' => '頭裡',
 '头长发' => '頭長髮',
 '头发' => '頭髮',
@@ -8759,8 +8834,8 @@ $zh2Hant = array(
 '额我略历史' => '額我略歷史',
 '颜范' => '顏範',
 '颠干倒坤' => '顛乾倒坤',
-'顛顛仆仆' => '顛顛仆仆',
 '颠颠仆仆' => '顛顛仆仆',
+'顛顛仆仆' => '顛顛仆仆',
 '颤栗' => '顫慄',
 '显示表明' => '顯示表明',
 '显示表格' => '顯示表格',
@@ -8854,6 +8929,7 @@ $zh2Hant = array(
 '余子' => '餘子',
 '余存' => '餘存',
 '余孽' => '餘孽',
+'余干' => '餘干',
 '余年' => '餘年',
 '余式' => '餘式',
 '余弦' => '餘弦',
@@ -8876,6 +8952,7 @@ $zh2Hant = array(
 '余殃' => '餘殃',
 '余毒' => '餘毒',
 '余气' => '餘氣',
+'余江' => '餘江',
 '余波' => '餘波',
 '余温' => '餘溫',
 '余泽' => '餘澤',
@@ -8924,7 +9001,6 @@ $zh2Hant = array(
 '馄饨面' => '餛飩麵',
 '馆谷' => '館穀',
 '馆里' => '館裡',
-'餵驴' => '餵驢',
 '饥寒' => '饑寒',
 '饥民' => '饑民',
 '饥渴' => '饑渴',
@@ -8941,12 +9017,12 @@ $zh2Hant = array(
 '马干' => '馬乾',
 '馬占山' => '馬占山',
 '马斯垂克期' => '馬斯垂克期',
-'馬格里布' => '馬格里布',
 '马格里布' => '馬格里布',
+'馬格里布' => '馬格里布',
 '驻扎' => '駐紮',
 '骀荡' => '駘蕩',
-'騰格里' => '騰格里',
 '腾格里' => '騰格里',
+'騰格里' => '騰格里',
 '腾涌' => '騰湧',
 '腾冲' => '騰衝',
 '惊栗' => '驚慄',
@@ -8973,6 +9049,7 @@ $zh2Hant = array(
 '发乳' => '髮乳',
 '发光可鉴' => '髮光可鑑',
 '发匪' => '髮匪',
+'发及腰' => '髮及腰',
 '发型' => '髮型',
 '发夹' => '髮夾',
 '发妻' => '髮妻',
@@ -8983,6 +9060,7 @@ $zh2Hant = array(
 '发廊' => '髮廊',
 '发式' => '髮式',
 '发引千钧' => '髮引千鈞',
+'发披肩' => '髮披肩',
 '发指' => '髮指',
 '发卷' => '髮捲',
 '发根' => '髮根',
@@ -9111,6 +9189,7 @@ $zh2Hant = array(
 '斗犀台' => '鬥犀臺',
 '斗犬' => '鬥犬',
 '斗狠' => '鬥狠',
+'斗兽' => '鬥獸',
 '斗叠' => '鬥疊',
 '斗百草' => '鬥百草',
 '斗眼' => '鬥眼',
@@ -9119,13 +9198,13 @@ $zh2Hant = array(
 '斗而铸锥' => '鬥而鑄錐',
 '斗脚' => '鬥腳',
 '斗舰' => '鬥艦',
+'斗艳' => '鬥艷',
 '斗茶' => '鬥茶',
 '斗草' => '鬥草',
 '斗叶儿' => '鬥葉兒',
 '斗叶子' => '鬥葉子',
 '斗蟋蟀' => '鬥蟋蟀',
 '斗话' => '鬥話',
-'斗艳' => '鬥豔',
 '斗起' => '鬥起',
 '斗趣' => '鬥趣',
 '斗闲气' => '鬥閒氣',
@@ -9140,6 +9219,7 @@ $zh2Hant = array(
 '斗鸭' => '鬥鴨',
 '斗鹌鹑' => '鬥鵪鶉',
 '斗丽' => '鬥麗',
+'斗龙' => '鬥龍',
 '闹表' => '鬧錶',
 '闹钟' => '鬧鐘',
 '哄动' => '鬨動',
@@ -9189,13 +9269,14 @@ $zh2Hant = array(
 '鬼谷子' => '鬼谷子',
 '魂牵梦系' => '魂牽夢繫',
 '魏征' => '魏徵',
-'魔杰座' => '魔杰座',
 '魔表' => '魔錶',
 '鱼干' => '魚乾',
 '鱼松' => '魚鬆',
 '鲜于枢' => '鮮于樞',
 '鮮于樞' => '鮮于樞',
 '鲸须' => '鯨鬚',
+'鳥栖' => '鳥栖',
+'鸟栖市' => '鳥栖市',
 '鳳凰于飛' => '鳳凰于飛',
 '凤梨干' => '鳳梨乾',
 '鸣钟' => '鳴鐘',
@@ -9206,6 +9287,7 @@ $zh2Hant = array(
 '雕悍' => '鵰悍',
 '雕翎' => '鵰翎',
 '雕鹗' => '鵰鶚',
+'鹤峰县' => '鶴峯縣',
 '鹤吊' => '鶴弔',
 '鹤发' => '鶴髮',
 '鸾鉴' => '鸞鑑',
@@ -9242,14 +9324,16 @@ $zh2Hant = array(
 '盐余' => '鹽餘',
 '鹿場里' => '鹿場里',
 '丽于' => '麗於',
+'麟游' => '麟遊',
+'曲酒' => '麯酒',
 '曲尘' => '麴塵',
 '曲櫱' => '麴櫱',
 '曲秀才' => '麴秀才',
 '曲车' => '麴車',
 '曲道士' => '麴道士',
 '曲钱' => '麴錢',
-'麹霉' => '麴黴',
 '曲霉' => '麴黴',
+'麹霉' => '麴黴',
 '面人儿' => '麵人兒',
 '面价' => '麵價',
 '面包' => '麵包',
@@ -9280,7 +9364,11 @@ $zh2Hant = array(
 '麻将席' => '麻將蓆',
 '麻酱面' => '麻醬麵',
 '黄干黑瘦' => '黃乾黑瘦',
+'黄岩区' => '黃巖區',
+'黄岩县' => '黃巖縣',
 '黄历' => '黃曆',
+'黄杰' => '黃杰',
+'黃杰' => '黃杰',
 '黄历史' => '黃歷史',
 '黃詩杰' => '黃詩杰',
 '黄诗杰' => '黃詩杰',
@@ -9294,11 +9382,14 @@ $zh2Hant = array(
 '黎吉雲' => '黎吉雲',
 '黎吉云' => '黎吉雲',
 '黑奴吁天录' => '黑奴籲天錄',
+'黑干将' => '黑幹將',
+'黑长发' => '黑長髮',
 '黑发' => '黑髮',
 '点札' => '點劄',
 '点半钟' => '點半鐘',
 '点多钟' => '點多鐘',
 '点里' => '點裡',
+'点赞' => '點讚',
 '点里程' => '點里程',
 '点钟' => '點鐘',
 '霉毒' => '黴毒',
@@ -9308,6 +9399,7 @@ $zh2Hant = array(
 '霉黧' => '黴黧',
 '鼓里' => '鼓裡',
 '鼓噪' => '鼓譟',
+'咚咚鼓' => '鼕鼕鼓',
 '冬冬鼓' => '鼕鼕鼓',
 '鼠曲草' => '鼠麴草',
 '鼻梁儿' => '鼻梁兒',
@@ -9318,6 +9410,7 @@ $zh2Hant = array(
 '齿落发白' => '齒落髮白',
 '齿发' => '齒髮',
 '出儿' => '齣兒',
+'龙岩' => '龍巖',
 '龙卷' => '龍捲',
 '龙眼干' => '龍眼乾',
 '龙须' => '龍鬚',
@@ -9325,13 +9418,13 @@ $zh2Hant = array(
 '龙斗虎伤' => '龍鬥虎傷',
 '龜山庄' => '龜山庄',
 '龟鉴' => '龜鑑',
+',个中' => ',箇中',
 );
 
 $zh2Hans = array(
 '㑯' => '㑔',
 '㑳' => '㑇',
 '㑶' => '㐹',
-'㑺' => '俊',
 '㒓' => '𠉂',
 '㒺' => '罔',
 '㓂' => '寇',
@@ -9359,10 +9452,8 @@ $zh2Hans = array(
 '㢝' => '𢋈',
 '㤙' => '恩',
 '㥦' => '惬',
-'㥫' => '惇',
 '㥮' => '㤘',
 '㦎' => '𢛯',
-'㧱' => '拿',
 '㨗' => '捷',
 '㨪' => '晃',
 '㨿' => '据',
@@ -9489,7 +9580,6 @@ $zh2Hans = array(
 '來' => '来',
 '侖' => '仑',
 '侶' => '侣',
-'侷' => '局',
 '俁' => '俣',
 '係' => '系',
 '俔' => '伣',
@@ -9766,7 +9856,6 @@ $zh2Hans = array(
 '執' => '执',
 '堅' => '坚',
 '堊' => '垩',
-'堖' => '垴',
 '堝' => '埚',
 '堯' => '尧',
 '報' => '报',
@@ -9776,7 +9865,6 @@ $zh2Hans = array(
 '塏' => '垲',
 '塒' => '埘',
 '塗' => '涂',
-'塚' => '冢',
 '塟' => '葬',
 '塢' => '坞',
 '塤' => '埙',
@@ -9933,7 +10021,6 @@ $zh2Hans = array(
 '嶧' => '峄',
 '嶨' => '峃',
 '嶮' => '崄',
-'嶴' => '岙',
 '嶸' => '嵘',
 '嶺' => '岭',
 '嶼' => '屿',
@@ -10075,7 +10162,6 @@ $zh2Hans = array(
 '應' => '应',
 '懌' => '怿',
 '懍' => '懔',
-'懞' => '蒙',
 '懟' => '怼',
 '懣' => '懑',
 '懨' => '恹',
@@ -10281,8 +10367,6 @@ $zh2Hans = array(
 '棧' => '栈',
 '棲' => '栖',
 '棶' => '梾',
-'椀' => '碗',
-'椉' => '乘',
 '椏' => '桠',
 '椗' => '碇',
 '椲' => '㭏',
@@ -10446,7 +10530,6 @@ $zh2Hans = array(
 '湞' => '浈',
 '湧' => '涌',
 '湯' => '汤',
-'湻' => '淳',
 '湼' => '涅',
 '溈' => '沩',
 '準' => '准',
@@ -10794,7 +10877,6 @@ $zh2Hans = array(
 '矚' => '瞩',
 '矯' => '矫',
 '砲' => '炮',
-'硃' => '朱',
 '硜' => '硁',
 '硤' => '硖',
 '硨' => '砗',
@@ -11426,7 +11508,6 @@ $zh2Hans = array(
 '衊' => '蔑',
 '術' => '术',
 '衕' => '同',
-'衖' => '弄',
 '衚' => '胡',
 '衛' => '卫',
 '衝' => '冲',
@@ -11489,7 +11570,6 @@ $zh2Hans = array(
 '覽' => '览',
 '覿' => '觌',
 '觀' => '观',
-'觔' => '斤',
 '觝' => '抵',
 '觴' => '觞',
 '觶' => '觯',
@@ -11920,7 +12000,6 @@ $zh2Hans = array(
 '適' => '适',
 '遯' => '遁',
 '遲' => '迟',
-'遶' => '绕',
 '遷' => '迁',
 '選' => '选',
 '遺' => '遗',
@@ -12380,7 +12459,6 @@ $zh2Hans = array(
 '靭' => '韧',
 '靱' => '韧',
 '鞀' => '鼗',
-'鞌' => '鞍',
 '鞏' => '巩',
 '鞝' => '绱',
 '鞦' => '秋',
@@ -12528,6 +12606,7 @@ $zh2Hans = array(
 '餭' => '𫗮',
 '餱' => '糇',
 '餳' => '饧',
+'餵' => '喂',
 '餶' => '馉',
 '餷' => '馇',
 '餸' => '𩠌',
@@ -12582,7 +12661,6 @@ $zh2Hans = array(
 '駧' => '𩧲',
 '駩' => '𩧴',
 '駭' => '骇',
-'駮' => '驳',
 '駰' => '骃',
 '駱' => '骆',
 '駶' => '𩧺',
@@ -12621,7 +12699,7 @@ $zh2Hans = array(
 '驁' => '骜',
 '驂' => '骖',
 '驃' => '骠',
-'驄' => '𩨂',
+'驄' => '',
 '驅' => '驱',
 '驊' => '骅',
 '驋' => '𩧯',
@@ -12649,10 +12727,8 @@ $zh2Hans = array(
 '體' => '体',
 '髕' => '髌',
 '髖' => '髋',
-'髣' => '仿',
 '髥' => '髯',
 '髮' => '发',
-'髴' => '佛',
 '鬀' => '剃',
 '鬆' => '松',
 '鬉' => '鬃',
@@ -12665,7 +12741,6 @@ $zh2Hans = array(
 '鬨' => '哄',
 '鬩' => '阋',
 '鬪' => '斗',
-'鬭' => '斗',
 '鬮' => '阄',
 '鬰' => '郁',
 '鬱' => '郁',
@@ -12944,7 +13019,7 @@ $zh2Hans = array(
 '鼇' => '鳌',
 '鼈' => '鳖',
 '鼉' => '鼍',
-'é¼\95' => 'å\86¬',
+'é¼\95' => 'å\92\9a',
 '鼴' => '鼹',
 '齊' => '齐',
 '齋' => '斋',
@@ -12977,43 +13052,30 @@ $zh2Hans = array(
 '龜' => '龟',
 '龭' => '𩨎',
 '龯' => '𨱆',
-'𠇮' => '命',
-'𠌂' => '伞',
 '𠌥' => '𠆿',
 '𠏢' => '𠉗',
 '𠕂' => '再',
 '𠕅' => '再',
-'𠖇' => '冥',
 '𠞆' => '𠛆',
 '𠞰' => '剿',
 '𠠎' => '𠚳',
-'𠪾' => '历',
-'𠴟' => '咩',
-'𠻳' => '嗽',
 '𡄔' => '𠴢',
 '𡄣' => '𠵸',
 '𡅏' => '𠲥',
-'𡐨' => '野',
 '𡑭' => '𡋗',
 '𡓾' => '𡋀',
 '𡚁' => '弊',
 '𡞵' => '㛟',
 '𡠹' => '㛿',
 '𡢃' => '㛠',
-'𡨘' => '冤',
 '𡨥' => '寇',
-'𡬶' => '寻',
 '𡮉' => '𡭜',
 '𡮣' => '𡭬',
 '𡻕' => '岁',
 '𡾱' => '㟜',
 '𢣚' => '𢘝',
 '𢣭' => '𢘞',
-'𢬸' => '括',
-'𢭏' => '捣',
-'𢮥' => '操',
 '𢶫' => '𢫞',
-'𢷬' => '捣',
 '𢷮' => '𢫊',
 '𢹿' => '𢬦',
 '𣙎' => '㭣',
@@ -13030,20 +13092,15 @@ $zh2Hans = array(
 '𤨏' => '琐',
 '𤪺' => '㻘',
 '𤫩' => '㻏',
-'𤰜' => '亩',
 '𤱈' => '亩',
-'𤱊' => '留',
 '𤳸' => '𤳄',
 '𤸫' => '𤶧',
 '𤺥' => '瘩',
-'𥄨' => '瞅',
 '𥌃' => '𥅘',
 '𥕥' => '𥐰',
 '𥖅' => '𥐯',
 '𥢢' => '䅪',
-'𥦗' => '窗',
 '𥨐' => '𥧂',
-'𥲻' => '纂',
 '𥵃' => '𥱔',
 '𥵊' => '𥭉',
 '𥸠' => '𥮋',
@@ -13051,16 +13108,12 @@ $zh2Hans = array(
 '𥽖' => '𥺇',
 '𥿊' => '𦈈',
 '𦂅' => '𦈒',
-'𦂳' => '紧',
-'𦃂' => '紧',
 '𦃄' => '𦈗',
-'𦉆' => '碴',
 '𦊱' => '挂',
 '𦍑' => '羌',
 '𦕈' => '眇',
 '𦢈' => '𣍨',
 '𦣎' => '𦟗',
-'𦪙' => '䑽',
 '𦪽' => '𦨩',
 '𦵏' => '葬',
 '𧔥' => '𧒭',
@@ -13182,22 +13235,21 @@ $zh2Hans = array(
 '』' => '’',
 '「' => '“',
 '「' => '“',
-'」' => '”',
 '」' => '”',
+'」' => '”',
 '。陞' => '。升',
 '《易乾' => '《易乾',
 '一釐' => '一厘',
-'一口鍾' => '一口钟',
-'一鍾' => '一钟',
 '上昇' => '上升',
+'不穀' => '不穀',
 '專著' => '专著',
-'世界鍾' => '世界钟',
-'喪鍾' => '丧钟',
 '乾一坛' => '乾一坛',
 '乾一壇' => '乾一坛',
 '乾一组' => '乾一组',
 '乾一組' => '乾一组',
 '乾上乾下' => '乾上乾下',
+'乾東' => '乾东',
+'乾东' => '乾东',
 '乾為天' => '乾为天',
 '乾為陽' => '乾为阳',
 '乾九' => '乾九',
@@ -13214,20 +13266,20 @@ $zh2Hans = array(
 '乾興' => '乾兴',
 '乾岡' => '乾冈',
 '乾冈' => '乾冈',
-'乾刘' => '乾刘',
 '乾劉' => '乾刘',
-'ä¹¾å\88\9a' => 'ä¹¾å\88\9a',
+'ä¹¾å\88\98' => 'ä¹¾å\88\98',
 '乾剛' => '乾刚',
+'乾刚' => '乾刚',
 '乾務' => '乾务',
 '乾务' => '乾务',
 '乾化' => '乾化',
 '乾卦' => '乾卦',
-'乾县' => '乾县',
 '乾縣' => '乾县',
+'乾县' => '乾县',
 '乾台' => '乾台',
 '乾吉' => '乾吉',
-'乾啟' => '乾启',
 '乾启' => '乾启',
+'乾啟' => '乾启',
 '乾命' => '乾命',
 '乾和' => '乾和',
 '乾嘉' => '乾嘉',
@@ -13239,8 +13291,8 @@ $zh2Hans = array(
 '乾天也' => '乾天也',
 '乾始' => '乾始',
 '乾姓' => '乾姓',
-'乾宁' => '乾宁',
 '乾寧' => '乾宁',
+'乾宁' => '乾宁',
 '乾宅' => '乾宅',
 '乾宇' => '乾宇',
 '乾安' => '乾安',
@@ -13252,8 +13304,8 @@ $zh2Hans = array(
 '乾巛' => '乾巛',
 '乾州' => '乾州',
 '乾式' => '乾式',
-'乾錄' => '乾录',
 '乾录' => '乾录',
+'乾錄' => '乾录',
 '乾律' => '乾律',
 '乾德' => '乾德',
 '乾心' => '乾心',
@@ -13266,17 +13318,17 @@ $zh2Hans = array(
 '乾旦' => '乾旦',
 '乾明' => '乾明',
 '乾昧' => '乾昧',
-'乾暉' => '乾晖',
 '乾晖' => '乾晖',
+'乾暉' => '乾晖',
 '乾景' => '乾景',
 '乾晷' => '乾晷',
 '乾曜' => '乾曜',
-'乾構' => '乾构',
 '乾构' => '乾构',
+'乾構' => '乾构',
 '乾枢' => '乾枢',
 '乾樞' => '乾枢',
-'乾棟' => '乾栋',
 '乾栋' => '乾栋',
+'乾棟' => '乾栋',
 '乾步' => '乾步',
 '乾氏' => '乾氏',
 '乾沓和' => '乾沓和',
@@ -13288,6 +13340,7 @@ $zh2Hans = array(
 '乾潭' => '乾潭',
 '乾灵' => '乾灵',
 '乾靈' => '乾灵',
+'乾生元' => '乾生元',
 '乾男' => '乾男',
 '乾皋' => '乾皋',
 '乾盛世' => '乾盛世',
@@ -13295,22 +13348,22 @@ $zh2Hans = array(
 '乾祐' => '乾祐',
 '乾神' => '乾神',
 '乾穹' => '乾穹',
-'乾竇' => '乾窦',
 '乾窦' => '乾窦',
+'乾竇' => '乾窦',
 '乾竺' => '乾竺',
 '乾笃' => '乾笃',
 '乾篤' => '乾笃',
 '乾符' => '乾符',
 '乾策' => '乾策',
 '乾精' => '乾精',
-'乾紅' => '乾红',
 '乾红' => '乾红',
+'乾紅' => '乾红',
 '乾綱' => '乾纲',
 '乾纲' => '乾纲',
 '乾纽' => '乾纽',
 '乾紐' => '乾纽',
-'乾络' => '乾络',
 '乾絡' => '乾络',
+'乾络' => '乾络',
 '乾統' => '乾统',
 '乾统' => '乾统',
 '乾维' => '乾维',
@@ -13318,8 +13371,8 @@ $zh2Hans = array(
 '乾罗' => '乾罗',
 '乾羅' => '乾罗',
 '乾花' => '乾花',
-'乾荫' => '乾荫',
 '乾蔭' => '乾荫',
+'乾荫' => '乾荫',
 '乾行' => '乾行',
 '乾衡' => '乾衡',
 '乾西' => '乾西',
@@ -13327,23 +13380,23 @@ $zh2Hans = array(
 '乾象' => '乾象',
 '乾象歷' => '乾象历',
 '乾象历' => '乾象历',
-'乾貞' => '乾贞',
 '乾贞' => '乾贞',
+'乾貞' => '乾贞',
 '乾贵士' => '乾贵士',
 '乾貴士' => '乾贵士',
-'乾貺' => '乾贶',
 '乾贶' => '乾贶',
+'乾貺' => '乾贶',
 '乾車' => '乾车',
 '乾车' => '乾车',
-'乾轴' => '乾轴',
 '乾軸' => '乾轴',
+'乾轴' => '乾轴',
 '乾通' => '乾通',
 '乾造' => '乾造',
 '乾道' => '乾道',
 '乾鉴' => '乾鉴',
 '乾鑒' => '乾鉴',
-'乾鈞' => '乾钧',
 '乾钧' => '乾钧',
+'乾鈞' => '乾钧',
 '乾闥' => '乾闼',
 '乾闼' => '乾闼',
 '乾陀' => '乾陀',
@@ -13352,8 +13405,8 @@ $zh2Hans = array(
 '乾音' => '乾音',
 '乾顧' => '乾顾',
 '乾顾' => '乾顾',
-'乾風' => '乾风',
 '乾风' => '乾风',
+'乾風' => '乾风',
 '乾首' => '乾首',
 '乾马' => '乾马',
 '乾馬' => '乾马',
@@ -13361,19 +13414,21 @@ $zh2Hans = array(
 '乾鹄' => '乾鹄',
 '乾鵲' => '乾鹊',
 '乾鹊' => '乾鹊',
-'乾龙' => '乾龙',
 '乾龍' => '乾龙',
+'乾龙' => '乾龙',
 '乾,健也' => '乾,健也',
 '乾,天也' => '乾,天也',
 '五箇山' => '五箇山',
+'什么' => '什么',
 '仇讎' => '仇雠',
 '以微知著' => '以微知著',
-'以莛叩鍾' => '以莛叩钟',
 '仰屋著書' => '仰屋著书',
 '彷彿' => '仿佛',
 '夥計' => '伙计',
 '佛頭著糞' => '佛头著粪',
 '偵蒐' => '侦搜',
+'倖一郎' => '倖一郎',
+'倖田' => '倖田',
 '候覆' => '候复',
 '藉助' => '借助',
 '藉口' => '借口',
@@ -13384,19 +13439,18 @@ $zh2Hans = array(
 '藉由' => '借由',
 '藉端' => '借端',
 '藉詞' => '借词',
+'傒倖' => '傒倖',
 '先名後姓' => '先名后姓',
+'兒寬' => '兒宽',
 '六么' => '六幺',
 '蘭質薰心' => '兰质薰心',
 '內聯陞' => '内联升',
 '憑藉' => '凭借',
-'分鍾' => '分钟',
 '初昇' => '初升',
 '利欲薰心' => '利欲薰心',
-'刻鍾' => '刻钟',
 '剋了' => '剋了',
 '剋架' => '剋架',
 '剖釐' => '剖厘',
-'千鍾' => '千钟',
 '陞為' => '升为',
 '陞了' => '升了',
 '昇仙' => '升仙',
@@ -13412,7 +13466,6 @@ $zh2Hans = array(
 '昇降' => '升降',
 '卓著' => '卓著',
 '博和託' => '博和讬',
-'卷舌' => '卷舌',
 '歷陞' => '历升',
 '釐改' => '厘改',
 '釐整' => '厘整',
@@ -13421,14 +13474,11 @@ $zh2Hans = array(
 '釐清' => '厘清',
 '釐訂' => '厘订',
 '釐革' => '厘革',
-'原子鍾' => '原子钟',
 '原著' => '原著',
 '又陞' => '又升',
 '反反覆覆' => '反反复复',
 '反覆' => '反复',
-'古鍾' => '古钟',
 '可穿著' => '可穿著',
-'台鍾' => '台钟',
 '吃衣著飯' => '吃衣著饭',
 '合著' => '合著',
 '同陞和' => '同升和',
@@ -13439,16 +13489,13 @@ $zh2Hans = array(
 '回覆' => '回复',
 '土著' => '土著',
 '坤乾' => '坤乾',
-'塔鍾' => '塔钟',
 '墨瀋' => '墨渖',
-'壁鍾' => '壁钟',
 '覆查' => '复查',
 '覆核' => '复核',
 '覆检' => '复检',
 '復甦' => '复苏',
-'多鍾' => '多钟',
+'多么' => '多么',
 '大麴' => '大曲',
-'大鍾' => '大钟',
 '天道為乾' => '天道为乾',
 '天道为乾' => '天道为乾',
 '奧區' => '奧区',
@@ -13456,9 +13503,8 @@ $zh2Hans = array(
 '姓么' => '姓幺',
 '子餘' => '子馀',
 '字乾生' => '字乾生',
-'孫乾' => '孙乾',
 '孙乾' => '孙乾',
-'å®\8bé\8d¾å\9c\8b' => 'å®\8bé\92\9få\9b½',
+'å­«ä¹¾' => 'å­\99ä¹¾',
 '宏碁' => '宏碁',
 '官陞' => '官升',
 '將軍抽俥' => '将军抽俥',
@@ -13466,31 +13512,37 @@ $zh2Hans = array(
 '爾冬陞' => '尔冬升',
 '尼乾陀' => '尼乾陀',
 '跼促' => '局促',
+'侷促' => '局促',
 '跼限' => '局限',
-'山崩鍾應' => '山崩钟应',
-'崔秀鍾' => '崔秀钟',
+'侷限' => '局限',
+'山崎闇齋' => '山崎闇斋',
+'岳託' => '岳讬',
 '巨著' => '巨著',
 '乾乾淨淨' => '干干净净',
 '乾乾脆脆' => '干干脆脆',
 '乾泉水' => '干泉水',
 '年陞' => '年升',
+'么九' => '幺九',
 '么二三' => '幺二三',
 '么元' => '幺元',
 '么鳳' => '幺凤',
 '么半' => '幺半',
 '么半群' => '幺半群',
-'么廝' => '幺厮',
 '幺厮' => '幺厮',
+'么廝' => '幺厮',
 '么叔' => '幺叔',
+'么女' => '幺女',
 '么媽' => '幺妈',
 '么妹' => '幺妹',
 '么姓' => '幺姓',
 '么姨' => '幺姨',
 '么娘' => '幺娘',
-'幺孃' => '幺娘',
 '么孃' => '幺娘',
+'幺孃' => '幺娘',
+'么子' => '幺子',
 '么小' => '幺小',
 '么弟' => '幺弟',
+'么正' => '幺正',
 '么氏' => '幺氏',
 '么爸' => '幺爸',
 '么爹' => '幺爹',
@@ -13502,18 +13554,16 @@ $zh2Hans = array(
 '么麼' => '幺麽',
 '么麽小丑' => '幺麽小丑',
 '慶餘' => '庆馀',
-'座鍾' => '座钟',
 '康乾' => '康乾',
 '張法乾' => '张法乾',
 '张法乾' => '张法乾',
-'張鍾英' => '张钟英',
 '彰明較著' => '彰明较著',
 '待覆' => '待复',
 '後姓' => '後姓',
 '慫慂' => '怂恿',
+'怎么' => '怎么',
 '恩威並著' => '恩威并著',
 '噁心' => '恶心',
-'懸鍾' => '悬钟',
 '情蒐' => '情搜',
 '情鍾' => '情钟',
 '惏悷' => '惏悷',
@@ -13526,6 +13576,7 @@ $zh2Hans = array(
 '扞格' => '扞格',
 '執著' => '执著',
 '批覆' => '批复',
+'承乾' => '承乾',
 '拉鍊' => '拉链',
 '拙著' => '拙著',
 '拚命' => '拚命',
@@ -13533,9 +13584,7 @@ $zh2Hans = array(
 '拚死' => '拚死',
 '拾瀋' => '拾渖',
 '拿破崙' => '拿破仑',
-'掛鍾' => '挂钟',
 '挨剋' => '挨剋',
-'掩耳盜鍾' => '掩耳盗钟',
 '提昇' => '提升',
 '蒐錄' => '搜录',
 '蒐索' => '搜索',
@@ -13544,28 +13593,26 @@ $zh2Hans = array(
 '蒐證' => '搜证',
 '蒐購' => '搜购',
 '蒐輯' => '搜辑',
-'蒐采' => '搜采',
 '蒐採' => '搜采',
+'蒐采' => '搜采',
 '蒐集' => '搜集',
 '搥打' => '搥打',
 '搥胸頓足' => '搥胸顿足',
-'擺鍾' => '摆钟',
-'撞鍾' => '撞钟',
 '撰著' => '撰著',
 '效果顯著' => '效果显著',
-'敲鍾' => '敲钟',
 '文徵明' => '文徵明',
+'觔斗' => '斤斗',
 '新著' => '新著',
 '於世成' => '於世成',
-'於之瑩' => '於之莹',
 '於之莹' => '於之莹',
+'於之瑩' => '於之莹',
 '於乎' => '於乎',
 '於乙于同' => '於乙于同',
 '於乙宇同' => '於乙宇同',
 '於于同' => '於于同',
 '於哲' => '於哲',
-'於夫罗' => '於夫罗',
 '於夫羅' => '於夫罗',
+'於夫罗' => '於夫罗',
 '於姓' => '於姓',
 '於宇同' => '於宇同',
 '於崇文' => '於崇文',
@@ -13575,7 +13622,7 @@ $zh2Hans = array(
 '於梨華' => '於梨华',
 '於梨华' => '於梨华',
 '於氏' => '於氏',
-'於潜县' => '於潜县',
+'於潜' => '於潜',
 '於潛縣' => '於潜县',
 '於祥玉' => '於祥玉',
 '於菟' => '於菟',
@@ -13583,7 +13630,6 @@ $zh2Hans = array(
 '於除鞬' => '於除鞬',
 '旋乾轉坤' => '旋乾转坤',
 '旋乾转坤' => '旋乾转坤',
-'時鍾' => '时钟',
 '曠若發矇' => '旷若发矇',
 '崑崙' => '昆仑',
 '崑劇' => '昆剧',
@@ -13593,10 +13639,10 @@ $zh2Hans = array(
 '崑蘇' => '昆苏',
 '崑調' => '昆调',
 '易·乾' => '易·乾',
-'易经·乾' => '易经·乾',
 '易經·乾' => '易经·乾',
-'易经乾' => '易经乾',
+'易经·乾' => '易经·乾',
 '易經乾' => '易经乾',
+'易经乾' => '易经乾',
 '昭著' => '昭著',
 '顯著' => '显著',
 '顯著地' => '显著地',
@@ -13606,17 +13652,17 @@ $zh2Hans = array(
 '顯著效果' => '显著效果',
 '顯著特點' => '显著特点',
 '晉陞' => '晋升',
-'晚鍾' => '晚钟',
-'晨鍾' => '晨钟',
 '暗闇' => '暗闇',
 '麴黴' => '曲霉',
-'曾運乾' => '曾运乾',
 '曾运乾' => '曾运乾',
+'曾運乾' => '曾运乾',
 '月陞' => '月升',
 '朝乾夕惕' => '朝乾夕惕',
-'朝鍾暮鼓' => '朝钟暮鼓',
 '朱有燉' => '朱有燉',
 '朱淛' => '朱淛',
+'硃砂' => '朱砂',
+'硃紅' => '朱红',
+'硃色' => '朱色',
 '朴於宇同' => '朴於宇同',
 '李乾德' => '李乾德',
 '李乾順' => '李乾顺',
@@ -13624,15 +13670,11 @@ $zh2Hans = array(
 '李澤鉅' => '李泽钜',
 '李祕' => '李祕',
 '李譔' => '李譔',
-'李鍾原' => '李钟原',
-'林鍾' => '林钟',
-'柳诒徵' => '柳诒徵',
 '柳詒徵' => '柳诒徵',
+'柳诒徵' => '柳诒徵',
 '校讎' => '校雠',
 '楈枒' => '楈枒',
 '樊於期' => '樊於期',
-'橡椀' => '橡椀',
-'此鍾' => '此钟',
 '殘瀋' => '残渖',
 '慇懃' => '殷勤',
 '慇勤' => '殷勤',
@@ -13647,9 +13689,7 @@ $zh2Hans = array(
 '沈默' => '沉默',
 '氾濫' => '泛滥',
 '洗鍊' => '洗练',
-'洪鍾' => '洪钟',
 '瀋液' => '渖液',
-'點鍾' => '点钟',
 '薰習' => '熏习',
 '薰心' => '熏心',
 '薰沐' => '熏沐',
@@ -13660,12 +13700,8 @@ $zh2Hans = array(
 '王道乾' => '王道乾',
 '王餘魚' => '王馀鱼',
 '甚夥' => '甚夥',
-'生物鍾' => '生物钟',
-'電鍾' => '电钟',
-'男為乾' => '男为乾',
 '男为乾' => '男为乾',
-'男爲乾' => '男为乾',
-'男性爲乾' => '男性为乾',
+'男為乾' => '男为乾',
 '男性為乾' => '男性为乾',
 '男性为乾' => '男性为乾',
 '療效顯著' => '疗效显著',
@@ -13677,19 +13713,19 @@ $zh2Hans = array(
 '瞭臺' => '瞭台',
 '瞭台' => '瞭台',
 '瞭望' => '瞭望',
-'矇眬' => '矇眬',
 '矇矓' => '矇眬',
+'矇眬' => '矇眬',
 '石碁' => '石碁',
 '石碁鎮' => '石碁镇',
-'石英鍾' => '石英钟',
-'石鍾乳' => '石钟乳',
+'碩託' => '硕讬',
 '鹼菜' => '硷菜',
-'碁聖' => '碁圣',
 '碁圣' => '碁圣',
+'碁聖' => '碁圣',
 '碁所' => '碁所',
 '祕宜' => '祕宜',
-'ç§\92é\8d¾' => 'ç§\92é\92\9f',
+'ç©\80æ\97¦' => 'ç©\80æ\97¦',
 '穀梁' => '穀梁',
+'穀水' => '穀水',
 '穿著者' => '穿着者',
 '竹昇' => '竹升',
 '答覆' => '答复',
@@ -13697,15 +13733,16 @@ $zh2Hans = array(
 '米瀋' => '米渖',
 '餬口' => '糊口',
 '繙㠾' => '繙㠾',
+'遶境' => '绕境',
 '線國安' => '缐国安',
 '線姓' => '缐姓',
 '編著' => '编著',
-'編鍾' => '编钟',
+'老么' => '老幺',
 '肉乾乾' => '肉干干',
 '肘手鍊足' => '肘手链足',
 '甦醒' => '苏醒',
-'苧烯' => '苧烯',
 '薴烯' => '苧烯',
+'苧烯' => '苧烯',
 '蘋果' => '苹果',
 '荠苧' => '荠苧',
 '榮陞' => '荣升',
@@ -13723,14 +13760,18 @@ $zh2Hans = array(
 '著者' => '著者',
 '著身' => '著身',
 '著述' => '著述',
-'覆蓋' => '覆蓋',
+'蔡絛' => '蔡絛',
+'行餘' => '行馀',
+'覆蓋' => '覆盖',
 '見微知著' => '见微知著',
 '見著' => '见著',
 '視微知著' => '视微知著',
 '言幾析理' => '言幾析理',
 '諲譔' => '諲譔',
-'警鍾' => '警钟',
 '譩譆' => '譩譆',
+'託庸' => '讬庸',
+'託恩多' => '讬恩多',
+'託麻' => '讬麻',
 '論著' => '论著',
 '譯著' => '译著',
 '謝肇淛' => '谢肇淛',
@@ -13739,62 +13780,30 @@ $zh2Hans = array(
 '較著' => '较著',
 '近角聪信' => '近角聪信',
 '这么' => '这么',
-'進化鍾' => '进化钟',
 '造麴' => '造曲',
 '遺著' => '遗著',
+'那么' => '那么',
 '那麽' => '那麽',
 '郭子乾' => '郭子乾',
-'郭行餘' => '郭行馀',
 '酒麴' => '酒曲',
 '醉瀋' => '醉渖',
 '醯壶' => '醯壶',
 '醯壺' => '醯壶',
-'醯酱' => '醯酱',
 '醯醬' => '醯酱',
+'醯酱' => '醯酱',
 '醯醋' => '醯醋',
 '醯醢' => '醯醢',
-'醯鸡' => '醯鸡',
 '醯雞' => '醯鸡',
+'醯鸡' => '醯鸡',
 '重覆' => '重复',
-'金尚鍾' => '金尚钟',
-'金民鍾' => '金民钟',
-'金鍾' => '金钟',
 '金鍊' => '金链',
-'鍾麗緹' => '钟丽缇',
-'鍾乳石' => '钟乳石',
-'鍾儀奏楚' => '钟仪奏楚',
-'鍾關' => '钟关',
-'鍾聲' => '钟声',
-'鍾頭' => '钟头',
-'鍾山' => '钟山',
-'鍾差' => '钟差',
-'鍾座' => '钟座',
 '鍾情' => '钟情',
 '鍾意' => '钟意',
-'鍾慧冰' => '钟慧冰',
-'鍾擺' => '钟摆',
-'鍾架' => '钟架',
-'鍾楚紅' => '钟楚红',
-'鍾樓' => '钟楼',
-'鍾漢良' => '钟汉良',
-'鍾汶' => '钟汶',
-'鍾淑慧' => '钟淑慧',
 '鍾靈' => '钟灵',
-'鍾點' => '钟点',
 '鍾愛' => '钟爱',
-'鍾琴' => '钟琴',
-'鍾相' => '钟相',
-'鍾祥' => '钟祥',
-'鍾離' => '钟离',
-'鍾表' => '钟表',
-'鍾鎮濤' => '钟镇涛',
-'鍾面' => '钟面',
-'鍾馗' => '钟馗',
-'鍾鳴漏盡' => '钟鸣漏尽',
-'鍾鳴鼎食' => '钟鸣鼎食',
-'鍾鼓' => '钟鼓',
 '鐵鍊' => '铁链',
 '鉸鍊' => '铰链',
+'銀硃' => '银朱',
 '銀鍊' => '银链',
 '鍊子' => '链子',
 '鍊條' => '链条',
@@ -13802,22 +13811,21 @@ $zh2Hans = array(
 '鍊鎖' => '链锁',
 '鍊錘' => '链锤',
 '鎖鍊' => '锁链',
+'闇公' => '闇公',
 '閻懷禮' => '闫怀礼',
-'鬧鍾' => '闹钟',
-'陽為乾' => '阳为乾',
 '阳为乾' => '阳为乾',
-'é\99½ç\88²乾' => '阳为乾',
+'é\99½ç\82º乾' => '阳为乾',
 '阿部正瞭' => '阿部正瞭',
 '陆徵祥' => '陆徵祥',
 '陸徵祥' => '陆徵祥',
-'陈乾生' => '陈乾生',
 '陳乾生' => '陈乾生',
-'陈元扞' => '陈元扞',
+'陈乾生' => '陈乾生',
 '陳元扞' => '陈元扞',
+'陈元扞' => '陈元扞',
 '陈公乾生' => '陈公乾生',
 '陳公乾生' => '陈公乾生',
-'陳遇乾' => '陈遇乾',
 '陈遇乾' => '陈遇乾',
+'陳遇乾' => '陈遇乾',
 '陳堵' => '陳堵',
 '陳禕' => '陳禕',
 '雍乾' => '雍乾',
@@ -13825,28 +13833,25 @@ $zh2Hans = array(
 '讎定' => '雠定',
 '讎校' => '雠校',
 '讎問' => '雠问',
-'音聲如鍾' => '音声如钟',
 '項鍊' => '项链',
 '飛昇' => '飞升',
 '飭令' => '飭令',
-'é¤\98å¹´ç\84¡å¤\9a' => 'é¦\80å¹´æ\97 å¤\9a',
+'飽è¨\97' => '饱讬',
 '餘慶' => '馀庆',
 '餘瀋' => '馀渖',
-'馬德鍾' => '马德钟',
-'高昇' => '高升',
+'馬鞌' => '马鞍',
 '高陞' => '高升',
+'高昇' => '高升',
 '鬱姓' => '鬱姓',
 '鬱氏' => '鬱氏',
 '魏徵' => '魏徵',
 '魚乾乾' => '鱼干干',
-'鳴鍾' => '鸣钟',
 '麽氏' => '麽氏',
 '麽麽' => '麽麽',
 '麼麼' => '麽麽',
 '黃麴毒素' => '黄曲毒素',
-'黄润乾' => '黄润乾',
 '黃潤乾' => '黄润乾',
-'é»\83é\8d¾' => 'é»\84é\92\9f',
+'é»\84润乾' => 'é»\84润乾',
 '龍鍾' => '龙钟',
 ',陞' => ',升',
 );
@@ -13870,22 +13875,23 @@ $zh2TW = array(
 '丙肝' => 'C肝',
 'IP地址' => 'IP位址',
 '乔戈里峰' => 'K2',
-'·威爾士' => '·威爾士',
 '·威尔士' => '·威爾士',
+'·威爾士' => '·威爾士',
 '一杆' => '一桿',
 '七杆' => '七桿',
 '三杆' => '三桿',
-'三极管' => '三極體',
 '三極管' => '三極體',
+'三极管' => '三極體',
 '达累斯萨拉姆' => '三蘭港',
 '上落客' => '上下客',
 '落車' => '下車',
-'不來梅' => '不萊梅',
 '不来梅' => '不萊梅',
+'不來梅' => '不萊梅',
 '以太网' => '乙太網',
 '九杆' => '九桿',
 '了結他' => '了結他',
 '二手煙' => '二手菸',
+'二手烟' => '二手菸',
 '二杆' => '二桿',
 '二极管' => '二極體',
 '二極管' => '二極體',
@@ -13895,18 +13901,18 @@ $zh2TW = array(
 '阿斯旺' => '亞斯文',
 '人工智能' => '人工智慧',
 '人机交互' => '人機互動',
-'石勒蘇益格' => '什勒斯維希',
 '石勒苏益格' => '什勒斯維希',
+'石勒蘇益格' => '什勒斯維希',
 '界面' => '介面',
 '伊利诺伊州' => '伊利諾州',
-'伊斯坦布爾' => '伊斯坦堡',
 '伊斯坦布尔' => '伊斯坦堡',
+'伊斯坦布爾' => '伊斯坦堡',
 '伊斯兰堡' => '伊斯蘭瑪巴德',
 '伊斯蘭堡' => '伊斯蘭瑪巴德',
 '埃博拉' => '伊波拉',
 '伊丽莎白' => '伊莉莎白',
-'掌上壓' => '伏地挺身',
 '俯卧撑' => '伏地挺身',
+'掌上壓' => '伏地挺身',
 '伯明翰' => '伯明罕',
 '服务器' => '伺服器',
 '字节' => '位元組',
@@ -13925,8 +13931,11 @@ $zh2TW = array(
 '八杆' => '八桿',
 '公共交通' => '公共運輸',
 '六杆' => '六桿',
-'凯瑟琳' => '凱薩琳',
 '嘉芙蓮' => '凱薩琳',
+'凯瑟琳' => '凱薩琳',
+'划着独木舟' => '划著獨木舟',
+'划着竹筏' => '划著竹筏',
+'划着船' => '划著船',
 '打印' => '列印',
 '列支敦士登' => '列支敦斯登',
 '前波美拉尼亚' => '前波莫瑞',
@@ -13944,16 +13953,18 @@ $zh2TW = array(
 '卡斯特罗' => '卡斯楚',
 '卡塔尔' => '卡達',
 '卡塔爾' => '卡達',
-'打印机' => '印表機',
+'铆足' => '卯足',
 '打印機' => '印表機',
+'打印机' => '印表機',
 '厄立特里亞' => '厄利垂亞',
-'厄立特里亚' => '厄利垂亞',
 '厄利垂亚' => '厄利垂亞',
+'厄立特里亚' => '厄利垂亞',
+'厄瓜多尔' => '厄瓜多',
 '厄瓜多爾' => '厄瓜多',
 '厄瓜多' => '厄瓜多',
-'厄瓜多尔' => '厄瓜多',
 '源代码' => '原始碼',
 '圆珠笔' => '原子筆',
+'反烟' => '反菸',
 '反煙' => '反菸',
 '可卡因' => '古柯鹼',
 '便携式' => '可攜式',
@@ -13966,64 +13977,61 @@ $zh2TW = array(
 '斯坦福' => '史丹福',
 '斯皮尔伯格' => '史匹柏',
 '斯特劳斯' => '史特勞斯',
-'斯威士兰' => '史瓦濟蘭',
 '斯威士蘭' => '史瓦濟蘭',
+'斯威士兰' => '史瓦濟蘭',
 '斯蒂芬' => '史蒂芬',
 '斯大林' => '史達林',
 '結他' => '吉他',
-'乞力馬札羅' => '吉力馬札羅',
 '乞力马扎罗' => '吉力馬札羅',
-'吉布堤' => '吉布地',
+'乞力馬札羅' => '吉力馬札羅',
 '吉布提' => '吉布地',
-'å\90\89å°\94å\90\89æ\96¯æ\96¯å\9d¦' => 'å\90\89ç\88¾å\90\89æ\96¯',
+'å\90\89å¸\83å ¤' => 'å\90\89å¸\83å\9c°',
 '基里巴斯' => '吉里巴斯',
 '圖瓦盧' => '吐瓦魯',
 '图瓦卢' => '吐瓦魯',
 '吸煙' => '吸菸',
+'吸烟' => '吸菸',
 '呂宋煙' => '呂宋菸',
-'å\93\88è\90¨å\85\8bæ\96¯å\9d¦' => 'å\93\88è\96©å\85\8b',
+'å\90\95å®\8bç\83\9f' => 'å\91\82å®\8bè\8f¸',
 '格丁根' => '哥廷根',
 '哥特式' => '哥德式',
 '哥斯達黎加' => '哥斯大黎加',
 '哥斯达黎加' => '哥斯大黎加',
 '卡拉奇' => '喀拉蚩',
 '乔治·奥威尔' => '喬治·歐威爾',
-'佐治亚' => '喬治亞',
-'佐治亞' => '喬治亞',
 '格魯吉亞' => '喬治亞',
+'佐治亞' => '喬治亞',
+'佐治亚' => '喬治亞',
 '格鲁吉亚' => '喬治亞',
-'单反相机' => '單眼相機',
 '單鏡反光機' => '單眼相機',
+'单反相机' => '單眼相機',
 '嘯咤' => '嘯吒',
 '四杆' => '四桿',
-'土库曼斯坦' => '土庫曼',
-'圖盧茲' => '土魯斯',
 '图卢兹' => '土魯斯',
-'IP' => '地址',
+'圖盧茲' => '土魯斯',
 '戛纳' => '坎城',
 '堪培拉' => '坎培拉',
 '坦桑尼亞' => '坦尚尼亞',
 '坦桑尼亚' => '坦尚尼亞',
 '端口' => '埠',
 '首席执行官' => '執行長',
-'塔吉克斯坦' => '塔吉克',
-'塞舌爾' => '塞席爾',
 '塞舌尔' => '塞席爾',
-'萨拉热窝' => '塞拉耶佛',
+'塞舌爾' => '塞席爾',
 '薩拉熱窩' => '塞拉耶佛',
-'塞爾維亞和黑山' => '塞爾維亞與蒙特內哥羅',
-'塞爾維亞與蒙特內哥羅' => '塞爾維亞與蒙特內哥羅',
+'萨拉热窝' => '塞拉耶佛',
 '塞尔维亚和黑山' => '塞爾維亞與蒙特內哥羅',
-'塞维利亚' => '塞維亞',
+'塞爾維亞與蒙特內哥羅' => '塞爾維亞與蒙特內哥羅',
+'塞爾維亞和黑山' => '塞爾維亞與蒙特內哥羅',
 '西維爾' => '塞維亞',
+'塞维利亚' => '塞維亞',
 '塞黑' => '塞蒙',
+'英聯邦' => '大英國協',
 '英联邦' => '大英國協',
 '共和联邦' => '大英國協',
-'英聯邦' => '大英國協',
-'宇航员' => '太空人',
 '太空飛行員' => '太空人',
-'航天飞机' => '太空梭',
+'宇航员' => '太空人',
 '穿梭機' => '太空梭',
+'航天飞机' => '太空梭',
 '宇航服' => '太空衣',
 '航天器' => '太空飛行器',
 '尼日利亞' => '奈及利亞',
@@ -14034,12 +14042,12 @@ $zh2TW = array(
 '威斯特法倫' => '威斯伐倫',
 '威斯特法伦' => '威斯伐倫',
 '威士顿康星' => '威斯康辛',
-'威爾士' => '威爾斯',
 '威尔士' => '威爾斯',
+'威爾士' => '威爾斯',
 '字库' => '字型檔',
 '存盘' => '存檔',
-'门德尔松' => '孟德爾頌',
 '孟德爾遜' => '孟德爾頌',
+'门德尔松' => '孟德爾頌',
 '安哈爾特' => '安哈特',
 '安哈尔特' => '安哈特',
 '安提瓜和巴布達' => '安地卡及巴布達',
@@ -14049,10 +14057,11 @@ $zh2TW = array(
 '宽带' => '寬頻',
 '老撾人民民主共和國' => '寮人民民主共和國',
 '老挝人民民主共和国' => '寮人民民主共和國',
-'老挝' => '寮國',
 '老撾' => '寮國',
-'老挝语' => '寮語',
+'老挝' => '寮國',
 '老撾語' => '寮語',
+'老挝语' => '寮語',
+'波里活' => '寶萊塢',
 '高峰时段' => '尖峰時段',
 '高峰时间' => '尖峰時間',
 '贊比亞' => '尚比亞',
@@ -14065,10 +14074,10 @@ $zh2TW = array(
 '機床' => '工具機',
 '珍寶客機' => '巨無霸客機',
 '发达国家' => '已開發國家',
-'巴塞隆拿' => '巴塞隆納',
 '巴塞罗那' => '巴塞隆納',
-'å·´å¸\83äº\9aæ\96°å\87 å\86\85äº\9a' => 'å·´å¸\83äº\9eç´\90å¹¾å\85§äº\9e',
+'å·´å¡\9eé\9a\86æ\8b¿' => 'å·´å¡\9eé\9a\86ç´\8d',
 '巴布亞新畿內亞' => '巴布亞紐幾內亞',
+'巴布亚新几内亚' => '巴布亞紐幾內亞',
 '巴士拉' => '巴斯拉',
 '巴巴多斯' => '巴貝多',
 '佈' => '布',
@@ -14076,8 +14085,8 @@ $zh2TW = array(
 '布基纳法索' => '布吉納法索',
 '布殊' => '布希',
 '布什' => '布希',
-'勃兰登堡' => '布蘭登堡',
 '勃蘭登堡' => '布蘭登堡',
+'勃兰登堡' => '布蘭登堡',
 '布里斯托尔' => '布里斯托',
 '布隆方丹' => '布隆泉',
 '希拉里' => '希拉蕊',
@@ -14089,22 +14098,25 @@ $zh2TW = array(
 '干着急' => '干著急',
 '干着' => '幹著',
 '畿內亞' => '幾內亞',
-'几内亚比绍' => '幾內亞比索',
 '幾內亞比紹' => '幾內亞比索',
+'几内亚比绍' => '幾內亞比索',
 '比利牛斯' => '庇里牛斯',
+'库尔德人' => '庫德人',
+'库尔德族' => '庫德族',
 '康涅狄格' => '康乃狄克',
 '约翰斯顿岛' => '強斯頓環礁',
-'形而上学' => '形上學',
+'汇编' => '彙編',
 '形而上學' => '形上學',
+'形而上学' => '形上學',
 '得克薩斯' => '德克薩斯',
 '得克萨斯' => '德克薩斯',
-'德累斯頓' => '德勒斯登',
 '德累斯顿' => '德勒斯登',
+'德累斯頓' => '德勒斯登',
 '德里达' => '德希達',
 '特拉华' => '德拉瓦',
 '特拉華' => '德拉瓦',
-'快闪存储器' => '快閃記憶體',
 '闪存' => '快閃記憶體',
+'快闪存储器' => '快閃記憶體',
 '想象' => '想像',
 '愛德文' => '愛德溫',
 '艾滋' => '愛滋',
@@ -14114,11 +14126,15 @@ $zh2TW = array(
 '戈爾巴喬夫' => '戈巴契夫',
 '戈尔巴乔夫' => '戈巴契夫',
 '戒煙' => '戒菸',
+'戒烟' => '戒菸',
 '戴克里先' => '戴克里先',
+'抽烟' => '抽菸',
 '抽煙' => '抽菸',
 '拉普兰' => '拉布蘭',
+'拒烟' => '拒菸',
 '拒煙' => '拒菸',
 '捲煙' => '捲菸',
+'卷烟' => '捲菸',
 '積架' => '捷豹',
 '控件' => '控制項',
 '推杆' => '推桿',
@@ -14131,30 +14147,31 @@ $zh2TW = array(
 '攻打印' => '攻打印',
 '数字技术' => '數位技術',
 '數碼技術' => '數位技術',
-'數碼相機' => '數位相機',
 '数码相机' => '數位相機',
-'æ\95°å­\97ä¿¡å\8f·' => 'æ\95¸ä½\8dè¨\8aè\99\9f',
+'æ\95¸ç¢¼ç\9b¸æ©\9f' => 'æ\95¸ä½\8dç\9b¸æ©\9f',
 '數碼訊號' => '數位訊號',
+'数字信号' => '數位訊號',
 '数字电视' => '數位電視',
 '數碼電視' => '數位電視',
-'调制解调器' => '數據機',
 '調制解調器' => '數據機',
-'斯洛文尼亚' => '斯洛維尼亞',
+'调制解调器' => '數據機',
 '斯洛文尼亞' => '斯洛維尼亞',
+'斯洛文尼亚' => '斯洛維尼亞',
 '新罕布什尔' => '新罕布夏',
 '施罗德' => '施洛德',
+'旱烟' => '旱菸',
 '旱煙' => '旱菸',
 '普利策' => '普利茲',
 '芯片' => '晶片',
 '智能卡' => '智慧卡',
-'智能手機' => '智慧型手機',
 '智能手机' => '智慧型手機',
-'智能电话' => '智慧型電話',
+'智能手機' => '智慧型手機',
 '智能電話' => '智慧型電話',
-'知识产权' => '智慧財產權',
+'智能电话' => '智慧型電話',
 '知識產權' => '智慧財產權',
-'萌島' => '曼島',
+'知识产权' => '智慧財產權',
 '马恩岛' => '曼島',
+'萌島' => '曼島',
 '木杆' => '木桿',
 '列奥纳多' => '李奧納多',
 '杜塞爾多夫' => '杜塞道夫',
@@ -14163,22 +14180,22 @@ $zh2TW = array(
 '亚细安' => '東協',
 '东盟' => '東協',
 '东南亚国家联盟' => '東南亞國協',
-'柏林墙' => '柏林圍牆',
 '柏林牆' => '柏林圍牆',
+'柏林墙' => '柏林圍牆',
 '乍得' => '查德',
 '查韦斯' => '查維茲',
 '克林顿' => '柯林頓',
 '克林頓' => '柯林頓',
 '撒切尔' => '柴契爾',
 '戴卓爾' => '柴契爾',
-'格林纳达' => '格瑞那達',
 '格林納達' => '格瑞那達',
-'乒乓球' => '桌球',
+'格林纳达' => '格瑞那達',
 '乒乓' => '桌球',
+'乒乓球' => '桌球',
 '杆弟' => '桿弟',
 '杆身' => '桿身',
-'杆頭' => '桿頭',
 '杆头' => '桿頭',
+'杆頭' => '桿頭',
 '梅尔·吉布森' => '梅爾·吉勃遜',
 '梵高' => '梵谷',
 '桑巴舞' => '森巴舞',
@@ -14187,16 +14204,16 @@ $zh2TW = array(
 '枪支' => '槍枝',
 '标准杆' => '標準桿',
 '標準杆' => '標準桿',
-'毛里求斯' => '模里西斯',
 '毛里裘斯' => '模里西斯',
-'æ©\9f械人' => 'æ©\9få\99¨äºº',
+'æ¯\9bé\87\8cæ±\82æ\96¯' => '模é\87\8c西æ\96¯',
 '机器人' => '機器人',
+'機械人' => '機器人',
 '概率' => '機率',
 '電單車' => '機車',
 '枱' => '檯',
 '字段' => '欄位',
-'奧巴馬' => '歐巴馬',
 '奥巴马' => '歐巴馬',
+'奧巴馬' => '歐巴馬',
 '正在叱咤' => '正在叱咤',
 '文莱' => '汶萊',
 '沙律' => '沙拉',
@@ -14205,23 +14222,26 @@ $zh2TW = array(
 '法属圭亚那' => '法屬蓋亞那',
 '波斯尼亚' => '波士尼亞',
 '波斯尼亞' => '波士尼亞',
-'波斯尼亞黑塞哥維那' => '波士尼亞赫塞哥維納',
 '波斯尼亚和黑塞哥维那' => '波士尼亞赫塞哥維納',
+'波斯尼亞黑塞哥維那' => '波士尼亞赫塞哥維納',
 '博茨瓦纳' => '波札那',
 '博茨瓦納' => '波札那',
 '波黑' => '波赫',
+'洋烟' => '洋菸',
 '洋煙' => '洋菸',
 '帕特里克' => '派屈克',
 '海洛英' => '海洛因',
 '侯赛因' => '海珊',
 '侯賽因' => '海珊',
 '鼠标' => '滑鼠',
-'漢诺威' => '漢諾瓦',
 '汉诺威' => '漢諾瓦',
-'乌兹别克斯坦' => '烏茲別克',
+'漢诺威' => '漢諾瓦',
+'烤烟' => '烤菸',
 '烤煙' => '烤菸',
 '無煙日' => '無菸日',
+'无烟日' => '無菸日',
 '無煙環境' => '無菸環境',
+'无烟环境' => '無菸環境',
 '烟熏' => '煙燻',
 '首席运营官' => '營運長',
 '熏烤' => '燻烤',
@@ -14229,24 +14249,24 @@ $zh2TW = array(
 '熏黑' => '燻黑',
 '版权信息' => '版權資訊',
 '疯牛症' => '狂牛症',
-'鐵托' => '狄托',
 '铁托' => '狄托',
+'鐵托' => '狄托',
 '塞拉利昂' => '獅子山',
 '独联体' => '獨立國協',
 '独立国家联合体' => '獨立國家國協',
-'波利尼西亚' => '玻里尼西亞',
 '波利尼西亞' => '玻里尼西亞',
-'æ\9c¬æ\9d°æ\98\8e' => 'ç\8f­å\82\91æ\98\8e',
+'æ³¢å\88©å°¼è¥¿äº\9a' => 'ç\8e»é\87\8c尼西äº\9e',
 '本傑明' => '班傑明',
+'本杰明' => '班傑明',
 '球杆' => '球桿',
 '理查德' => '理察',
 '卢塞恩' => '琉森',
 '危地馬拉' => '瓜地馬拉',
 '危地马拉' => '瓜地馬拉',
-'巴伦西亚' => '瓦倫西亞',
 '華倫西亞' => '瓦倫西亞',
-'å\86\88æ¯\94äº\9a' => 'ç\94\98æ¯\94亞',
+'巴伦西äº\9a' => 'ç\93¦å\80«è¥¿亞',
 '岡比亞' => '甘比亞',
+'冈比亚' => '甘比亞',
 '肯尼迪' => '甘迺迪',
 '留尼汪' => '留尼旺',
 '毕加索' => '畢卡索',
@@ -14258,8 +14278,8 @@ $zh2TW = array(
 '卢旺达' => '盧安達',
 '睾' => '睪',
 '知识产权局' => '知識產權局',
-'知識產權署' => '知識產權署',
 '知識產權局' => '知識產權署',
+'知識產權署' => '知識產權署',
 '知识产权署' => '知識產權署',
 '硅' => '矽',
 '硅藻' => '硅藻',
@@ -14269,32 +14289,35 @@ $zh2TW = array(
 '磁盘' => '磁碟',
 '磁道' => '磁軌',
 '禁煙' => '禁菸',
+'禁烟' => '禁菸',
 '福尔马林' => '福馬林',
 '福爾馬林' => '福馬林',
+'私烟' => '私菸',
 '私煙' => '私菸',
 '程序员' => '程式設計師',
 '编程语言' => '程式語言',
-'空氣質素' => '空氣品質',
 '空气质量' => '空氣品質',
+'空氣質素' => '空氣品質',
 '突尼斯' => '突尼西亞',
 '蹦极跳' => '笨豬跳',
 '绑紧跳' => '笨豬跳',
 '短信' => '簡訊',
 '纽黑文' => '紐哈芬',
-'新奥尔良' => '紐奧良',
 '新奧爾良' => '紐奧良',
+'新奥尔良' => '紐奧良',
 '新几内亚' => '紐幾內亞',
-'新西兰' => '紐西蘭',
 '新西蘭' => '紐西蘭',
+'新西兰' => '紐西蘭',
+'纸烟' => '紙菸',
 '紙煙' => '紙菸',
 '索贊尼辛' => '索忍尼辛',
 '索尔仁尼琴' => '索忍尼辛',
 '所羅門群島' => '索羅門群島',
 '所罗门群岛' => '索羅門群島',
-'索马里' => '索馬利亞',
 '索馬里' => '索馬利亞',
-'索马里兰' => '索馬利蘭',
+'索马里' => '索馬利亞',
 '索馬里蘭' => '索馬利蘭',
+'索马里兰' => '索馬利蘭',
 '維爾京群島' => '維京群島',
 '维尔京群岛' => '維京群島',
 '弗吉尼亚' => '維吉尼亞',
@@ -14302,25 +14325,25 @@ $zh2TW = array(
 '维特根斯坦' => '維根斯坦',
 '互联网络' => '網際網路',
 '因特网' => '網際網路',
-'互聯網' => '網際網路',
 '互联网' => '網際網路',
+'互聯網' => '網際網路',
 '系着' => '繫著',
 '卢瓦尔' => '羅亞爾',
 '盧瓦爾' => '羅亞爾',
 '卢浮宫' => '羅浮宮',
 '樂行童軍' => '羅浮童軍',
 '意大利' => '義大利',
-'昂山素姬' => '翁山蘇姬',
 '昂山素季' => '翁山蘇姬',
-'圣基茨和尼维斯' => '聖克里斯多福及尼維斯',
+'昂山素姬' => '翁山蘇姬',
 '聖吉斯納域斯' => '聖克里斯多福及尼維斯',
+'圣基茨和尼维斯' => '聖克里斯多福及尼維斯',
 '聖文森特和格林納丁斯' => '聖文森及格瑞那丁',
 '圣文森特和格林纳丁斯' => '聖文森及格瑞那丁',
 '圣赫勒拿' => '聖赫倫那',
 '聖盧西亞' => '聖露西亞',
 '圣卢西亚' => '聖露西亞',
-'圣马力诺' => '聖馬利諾',
 '聖馬力諾' => '聖馬利諾',
+'圣马力诺' => '聖馬利諾',
 '肯尼亚' => '肯亞',
 '氨基酸' => '胺基酸',
 '卧' => '臥',
@@ -14328,8 +14351,8 @@ $zh2TW = array(
 '三藩市' => '舊金山',
 '艾森豪威尔' => '艾森豪',
 '埃菲尔' => '艾菲爾',
-'阿里埃勒·沙龙' => '艾里爾·夏隆',
 '阿里埃勒·沙龍' => '艾里爾·夏隆',
+'阿里埃勒·沙龙' => '艾里爾·夏隆',
 '帕塔亚' => '芭達亞',
 '黎克特制' => '芮氏',
 '里氏0' => '芮氏0',
@@ -14347,33 +14370,51 @@ $zh2TW = array(
 '里氏震级' => '芮氏規模',
 '当且仅当' => '若且唯若',
 '味美思' => '苦艾酒',
-'毛里塔尼亞' => '茅利塔尼亞',
 '毛里塔尼亚' => '茅利塔尼亞',
-'霍尔木兹' => '荷姆茲',
+'毛里塔尼亞' => '茅利塔尼亞',
 '霍爾木茲' => '荷姆茲',
+'霍尔木兹' => '荷姆茲',
 '荷李活道' => '荷李活道',
 '莫桑比克' => '莫三比克',
-'瓦文萨' => '華勒沙',
 '華里沙' => '華勒沙',
+'瓦文萨' => '華勒沙',
 '瓦格纳' => '華格納',
+'烟具' => '菸具',
 '煙具' => '菸具',
 '煙品' => '菸品',
+'烟品' => '菸品',
 '煙嘴' => '菸嘴',
+'烟嘴' => '菸嘴',
 '煙捲' => '菸捲',
+'烟卷' => '菸捲',
 '煙斗' => '菸斗',
+'烟斗' => '菸斗',
 '煙民' => '菸民',
+'烟民' => '菸民',
+'烟灰' => '菸灰',
 '煙灰' => '菸灰',
+'烟瘾' => '菸癮',
 '煙癮' => '菸癮',
+'烟丝' => '菸絲',
 '煙絲' => '菸絲',
 '煙草' => '菸草',
+'烟草' => '菸草',
+'烟叶' => '菸葉',
 '煙葉' => '菸葉',
 '煙蒂' => '菸蒂',
+'烟蒂' => '菸蒂',
+'烟袋' => '菸袋',
 '煙袋' => '菸袋',
+'烟农' => '菸農',
 '煙農' => '菸農',
+'烟酒' => '菸酒',
 '煙酒' => '菸酒',
+'烟头' => '菸頭',
 '煙頭' => '菸頭',
+'烟鬼' => '菸鬼',
 '煙鬼' => '菸鬼',
 '煙鹼' => '菸鹼',
+'烟碱' => '菸鹼',
 '万历朝鲜战争' => '萬曆朝鮮戰爭',
 '瓦努阿圖' => '萬那杜',
 '瓦努阿图' => '萬那杜',
@@ -14386,22 +14427,24 @@ $zh2TW = array(
 '着' => '著',
 '科摩罗' => '葛摩',
 '科摩羅' => '葛摩',
-'黑山共和國' => '蒙特內哥羅共和國',
+'格林美獎' => '葛萊美獎',
+'格莱美奖' => '葛萊美獎',
 '黑山共和国' => '蒙特內哥羅共和國',
+'黑山共和國' => '蒙特內哥羅共和國',
+'蒙特利尔' => '蒙特婁',
 '蒙特利爾' => '蒙特婁',
 '滿地可' => '蒙特婁',
-'蒙特利尔' => '蒙特婁',
 '普密蓬' => '蒲美蓬',
 '布隆迪' => '蒲隆地',
 '圭亚那' => '蓋亞那',
 '开曼群岛' => '蓋曼群島',
 '開曼群島' => '蓋曼群島',
-'蕭士達高維契' => '蕭士塔高維奇',
 '肖斯塔科维奇' => '蕭士塔高維奇',
+'蕭士達高維契' => '蕭士塔高維奇',
 '肖邦' => '蕭邦',
 '薛定谔' => '薛丁格',
-'扎伊爾' => '薩伊',
 '扎伊尔' => '薩伊',
+'扎伊爾' => '薩伊',
 '素檀' => '蘇丹',
 '苏里南' => '蘇利南',
 '浮罗交怡' => '蘭卡威',
@@ -14410,17 +14453,17 @@ $zh2TW = array(
 '荧光' => '螢光',
 '荧屏' => '螢屏',
 '屏幕' => '螢幕',
-'流動網絡' => '行動網路',
 '移动网络' => '行動網路',
-'移动电话' => '行動電話',
+'流動網絡' => '行動網路',
 '流動電話' => '行動電話',
+'移动电话' => '行動電話',
 '冲着' => '衝著',
-'埃塞俄比亞' => '衣索比亞',
 '埃塞俄比亚' => '衣索比亞',
+'埃塞俄比亞' => '衣索比亞',
 '克隆人' => '複製人',
 '國際象棋' => '西洋棋',
-'囯际象棋' => '西洋棋',
 '国际象棋' => '西洋棋',
+'囯际象棋' => '西洋棋',
 '赫梯' => '西臺',
 '解像度' => '解析度',
 '分辨率' => '解析度',
@@ -14428,8 +14471,8 @@ $zh2TW = array(
 '出租车' => '計程車',
 '约翰逊' => '詹森',
 '诺曼底' => '諾曼第',
-'瑙鲁' => '諾魯',
 '瑙魯' => '諾魯',
+'瑙鲁' => '諾魯',
 '科特迪瓦' => '象牙海岸',
 '贝尔格莱德' => '貝爾格勒',
 '貝爾格萊德' => '貝爾格勒',
@@ -14437,14 +14480,15 @@ $zh2TW = array(
 '伯利茲' => '貝里斯',
 '首席财务官' => '財務長',
 '集装箱' => '貨櫃',
-'數據庫' => '資料庫',
 '数据库' => '資料庫',
+'數據庫' => '資料庫',
 '信息论' => '資訊理論',
+'乔布斯' => '賈伯斯',
 '宾西法尼亚' => '賓夕法尼亞',
 '利比里亞' => '賴比瑞亞',
 '利比里亚' => '賴比瑞亞',
-'莱索托' => '賴索托',
 '萊索托' => '賴索托',
+'莱索托' => '賴索托',
 '塞浦路斯' => '賽普勒斯',
 '碧咸' => '贝克漢',
 '赫丘勒·波洛' => '赫丘勒·白羅',
@@ -14453,8 +14497,8 @@ $zh2TW = array(
 '软驱' => '軟碟機',
 '軟件' => '軟體',
 '软件' => '軟體',
-'津巴布韦' => '辛巴威',
 '津巴布韋' => '辛巴威',
+'津巴布韦' => '辛巴威',
 '径入' => '逕入',
 '径到' => '逕到',
 '径取' => '逕取',
@@ -14474,13 +14518,12 @@ $zh2TW = array(
 '溫納圖萬' => '那杜',
 '丘吉尔' => '邱吉爾',
 '多普勒' => '都卜勒',
-'奥斯曼' => '鄂圖曼',
 '酰' => '醯',
 '里士满' => '里奇蒙',
-'金沙薩' => '金夏沙',
 '金沙萨' => '金夏沙',
-'健力士世界纪录' => '金氏世界紀錄',
+'金沙薩' => '金夏沙',
 '健力士世界紀錄' => '金氏世界紀錄',
+'健力士世界纪录' => '金氏世界紀錄',
 '吉尼斯世界纪录' => '金氏世界紀錄',
 '钚' => '鈽',
 '钩' => '鉤',
@@ -14503,22 +14546,24 @@ $zh2TW = array(
 '阿拉伯联合酋长国' => '阿拉伯聯合大公國',
 '阿拉伯聯合酋長國' => '阿拉伯聯合大公國',
 '亚拉巴马' => '阿拉巴馬',
-'阿联酋' => '阿聯',
 '阿聯酋' => '阿聯',
+'阿联酋' => '阿聯',
 '罗纳德·里根' => '隆納·雷根',
 '私隱' => '隱私',
 '耶加達' => '雅加達',
-'雅尔塔' => '雅爾達',
 '雅爾塔' => '雅爾達',
+'雅尔塔' => '雅爾達',
 '雅穆苏克雷' => '雅穆索戈',
 '雅穆蘇克雷' => '雅穆索戈',
 '悉尼' => '雪梨',
 '雪茄煙' => '雪茄菸',
+'雪茄烟' => '雪茄菸',
 '莱特湾' => '雷伊泰灣',
 '萊特灣' => '雷伊泰灣',
 '激光' => '雷射',
 '雷诺阿' => '雷諾瓦',
 '電子煙' => '電子菸',
+'电子烟' => '電子菸',
 '晶體管' => '電晶體',
 '晶体管' => '電晶體',
 '电杆' => '電桿',
@@ -14533,6 +14578,7 @@ $zh2TW = array(
 '导弹' => '飛彈',
 '糊口' => '餬口',
 '香煙' => '香菸',
+'香烟' => '香菸',
 '马里共和国' => '馬利共和國',
 '馬里共和國' => '馬利共和國',
 '马拉维' => '馬拉威',
@@ -14546,27 +14592,29 @@ $zh2TW = array(
 '斗着' => '鬥著',
 '魯賓斯·巴里切羅' => '魯本·巴瑞切羅',
 '咪高峰' => '麥克風',
-'迈克尔' => '麥可',
 '麦克尔' => '麥可',
+'迈克尔' => '麥可',
 '邁凱輪' => '麥拿輪',
 '迈凯轮' => '麥拿輪',
 '马萨诸塞' => '麻薩諸塞',
-'戴安娜' => '黛安娜',
 '狄安娜' => '黛安娜',
+'戴安娜' => '黛安娜',
+'点烟' => '點菸',
 '點煙' => '點菸',
 '霉素' => '黴素',
 );
 
 $zh2HK = array(
 'IP地址' => 'IP位址',
-'·威爾士' => '·威爾士',
 '·威尔士' => '·威爾士',
+'·威爾士' => '·威爾士',
 '一地里' => '一地裏',
 '一年里' => '一年裏',
 '三十六著' => '三十六着',
 '三極體' => '三極管',
 '旧金山' => '三藩市',
 '舊金山' => '三藩市',
+'上台面' => '上枱面',
 '下著' => '下着',
 '下著作' => '下著作',
 '下著名' => '下著名',
@@ -14575,8 +14623,8 @@ $zh2HK = array(
 '下著稱' => '下著稱',
 '下著者' => '下著者',
 '下著述' => '下著述',
-'下著录' => '下著錄',
 '下著錄' => '下著錄',
+'下著录' => '下著錄',
 '不占' => '不佔',
 '不萊梅' => '不來梅',
 '不著痕跡' => '不着痕跡',
@@ -14600,8 +14648,8 @@ $zh2HK = array(
 '葉門' => '也門',
 '事里' => '事裏',
 '二極體' => '二極管',
-'因特网' => '互聯網',
 '網際網路' => '互聯網',
+'因特网' => '互聯網',
 '井里' => '井裏',
 '亮著' => '亮着',
 '亮著作' => '亮著作',
@@ -14632,6 +14680,7 @@ $zh2HK = array(
 '伊斯坦堡' => '伊斯坦布爾',
 '伊斯蘭瑪巴德' => '伊斯蘭堡',
 '埃博拉' => '伊波拉',
+'伏著' => '伏着',
 '貝里斯' => '伯利茲',
 '伯明罕' => '伯明翰',
 '伴著' => '伴着',
@@ -14653,20 +14702,20 @@ $zh2HK = array(
 '布於' => '佈於',
 '布施' => '佈施',
 '布景' => '佈景',
-'布满' => '佈滿',
 '布滿' => '佈滿',
+'布满' => '佈滿',
 '布置' => '佈置',
-'布设' => '佈設',
 '布設' => '佈設',
+'布设' => '佈設',
 '布警' => '佈警',
 '布道' => '佈道',
 '布防' => '佈防',
-'布阵' => '佈陣',
 '布陣' => '佈陣',
+'布阵' => '佈陣',
 '布雷、' => '佈雷、',
 '布雷。' => '佈雷。',
-'布雷封锁' => '佈雷封鎖',
 '布雷封鎖' => '佈雷封鎖',
+'布雷封锁' => '佈雷封鎖',
 '布雷的' => '佈雷的',
 '布雷艇' => '佈雷艇',
 '布雷艦' => '佈雷艦',
@@ -14674,10 +14723,10 @@ $zh2HK = array(
 '布雷速度' => '佈雷速度',
 '布雷,' => '佈雷,',
 '布雷;' => '佈雷;',
-'布点' => '佈點',
 '布點' => '佈點',
-'å­\97ç¯\80' => 'ä½\8då\85\83çµ\84',
+'å¸\83ç\82¹' => 'ä½\88é»\9e',
 '字节' => '位元組',
+'字節' => '位元組',
 '低著' => '低着',
 '低著作' => '低著作',
 '低著名' => '低著名',
@@ -14734,11 +14783,11 @@ $zh2HK = array(
 '占一' => '佔一',
 '占七' => '佔七',
 '占三' => '佔三',
-'占上風' => '佔上風',
 '占上风' => '佔上風',
+'占上風' => '佔上風',
 '占下' => '佔下',
-'占下风' => '佔下風',
 '占下風' => '佔下風',
+'占下风' => '佔下風',
 '占不占' => '佔不佔',
 '占不足' => '佔不足',
 '占世界' => '佔世界',
@@ -14755,12 +14804,12 @@ $zh2HK = array(
 '占占' => '佔佔',
 '占便宜' => '佔便宜',
 '占俄' => '佔俄',
-'占个' => '佔個',
 '占個' => '佔個',
+'占个' => '佔個',
 '占个位' => '佔個位',
 '占個位' => '佔個位',
-'占億' => '佔億',
 '占亿' => '佔億',
+'占億' => '佔億',
 '占優' => '佔優',
 '占优' => '佔優',
 '占先' => '佔先',
@@ -14785,12 +14834,12 @@ $zh2HK = array(
 '占台' => '佔台',
 '占囁' => '佔囁',
 '占四' => '佔四',
-'占国' => '佔國',
 '占國' => '佔國',
+'占国' => '佔國',
 '占在' => '佔在',
 '占地' => '佔地',
-'占場' => '佔場',
 '占场' => '佔場',
+'占場' => '佔場',
 '占压' => '佔壓',
 '占壓' => '佔壓',
 '占多' => '佔多',
@@ -14816,8 +14865,8 @@ $zh2HK = array(
 '占整' => '佔整',
 '占新' => '佔新',
 '占有' => '佔有',
-'占东' => '佔東',
 '占東' => '佔東',
+'占东' => '佔東',
 '占查' => '佔查',
 '占次' => '佔次',
 '占比' => '佔比',
@@ -14825,19 +14874,19 @@ $zh2HK = array(
 '占满' => '佔滿',
 '占滿' => '佔滿',
 '占澳' => '佔澳',
-'占為' => '佔為',
 '占为' => '佔為',
+'占為' => '佔為',
 '占率' => '佔率',
 '占用' => '佔用',
-'占畢' => '佔畢',
 '占毕' => '佔畢',
+'占畢' => '佔畢',
 '占百' => '佔百',
 '占盡' => '佔盡',
 '占尽' => '佔盡',
 '占着' => '佔着',
 '占著' => '佔着',
-'占网' => '佔網',
 '占網' => '佔網',
+'占网' => '佔網',
 '占線' => '佔線',
 '占线' => '佔線',
 '占總' => '佔總',
@@ -14860,18 +14909,18 @@ $zh2HK = array(
 '占資' => '佔資',
 '占资' => '佔資',
 '占起' => '佔起',
-'占超过' => '佔超過',
 '占超過' => '佔超過',
-'占過' => '佔過',
+'占超过' => '佔超過',
 '占过' => '佔過',
+'占過' => '佔過',
 '占道' => '佔道',
 '占零' => '佔零',
 '占領' => '佔領',
 '占领' => '佔領',
-'占头' => '佔頭',
 '占頭' => '佔頭',
-'占头筹' => '佔頭籌',
+'占头' => '佔頭',
 '占頭籌' => '佔頭籌',
+'占头筹' => '佔頭籌',
 '占香' => '佔香',
 '占馬' => '佔馬',
 '占马' => '佔馬',
@@ -14931,8 +14980,8 @@ $zh2HK = array(
 '做著者' => '做著者',
 '做著述' => '做著述',
 '做著錄' => '做著錄',
-'金氏世界紀錄' => '健力士世界紀錄',
 '吉尼斯世界纪录' => '健力士世界紀錄',
+'金氏世界紀錄' => '健力士世界紀錄',
 '側著' => '側着',
 '側著作' => '側著作',
 '側著名' => '側著名',
@@ -15060,8 +15109,8 @@ $zh2HK = array(
 '南朝鲜' => '南韓',
 '波札那' => '博茨瓦納',
 '占卜' => '占卜',
-'占國橋' => '占國橋',
 '占国桥' => '占國橋',
+'占國橋' => '占國橋',
 '占有五不' => '占有五不',
 '占著作' => '占著作',
 '占著稱' => '占著稱',
@@ -15080,9 +15129,9 @@ $zh2HK = array(
 '印著述' => '印著述',
 '印著錄' => '印著錄',
 '瓜地馬拉' => '危地馬拉',
-'厄瓜多' => '厄瓜多爾',
 '厄瓜多爾' => '厄瓜多爾',
 '厄瓜多尔' => '厄瓜多爾',
+'厄瓜多' => '厄瓜多爾',
 '厄利垂亚' => '厄立特里亞',
 '厄利垂亞' => '厄立特里亞',
 '源代码' => '原始碼',
@@ -15117,6 +15166,7 @@ $zh2HK = array(
 '叫著錄' => '叫著錄',
 '古柯鹼' => '可卡因',
 '叱吒' => '叱咤',
+'斯坦福' => '史丹福',
 '斯皮尔伯格' => '史匹堡',
 '史匹柏' => '史匹堡',
 '史蒂芬·史匹柏' => '史提芬·史匹堡',
@@ -15127,7 +15177,6 @@ $zh2HK = array(
 '吃里扒外' => '吃裏扒外',
 '吃里爬外' => '吃裏爬外',
 '吉布地' => '吉布堤',
-'吉尔吉斯斯坦' => '吉爾吉斯',
 '吊著' => '吊着',
 '向著' => '向着',
 '向著作' => '向著作',
@@ -15166,8 +15215,8 @@ $zh2HK = array(
 '味著述' => '味著述',
 '味著錄' => '味著錄',
 '咖哩' => '咖喱',
-'麦克风' => '咪高峰',
 '麥克風' => '咪高峰',
+'麦克风' => '咪高峰',
 '哥特式' => '哥德式',
 '哥斯大黎加' => '哥斯達黎加',
 '哪里' => '哪裏',
@@ -15195,6 +15244,7 @@ $zh2HK = array(
 '喝著者' => '喝著者',
 '喝著述' => '喝著述',
 '喝著錄' => '喝著錄',
+'賈伯斯' => '喬布斯',
 '乔治·奥威尔' => '喬治·歐威爾',
 '單眼相機' => '單鏡反光機',
 '单反相机' => '單鏡反光機',
@@ -15262,7 +15312,6 @@ $zh2HK = array(
 '蓋亞那' => '圭亞那',
 '地占' => '地佔',
 '地图里' => '地圖裏',
-'IP' => '地址',
 '堪培拉' => '坎培拉',
 '坐台' => '坐枱',
 '坐著' => '坐着',
@@ -15283,10 +15332,11 @@ $zh2HK = array(
 '吉里巴斯' => '基里巴斯',
 '场里' => '場裏',
 '塗著' => '塗着',
-'塞普勒斯' => '塞浦路斯',
 '賽普勒斯' => '塞浦路斯',
+'塞普勒斯' => '塞浦路斯',
 '塞爾維亞與蒙特內哥羅' => '塞爾維亞和黑山',
 '塞席爾' => '塞舌爾',
+'境里' => '境裏',
 '壓著' => '壓着',
 '壓著作' => '壓著作',
 '壓著名' => '壓著名',
@@ -15320,8 +15370,8 @@ $zh2HK = array(
 '夾著者' => '夾著者',
 '夾著述' => '夾著述',
 '夾著錄' => '夾著錄',
-'奧占' => '奧佔',
 '奥占' => '奧佔',
+'奧占' => '奧佔',
 '歐巴馬' => '奧巴馬',
 '妆台' => '妝枱',
 '威斯伐倫' => '威斯特法倫',
@@ -15331,8 +15381,8 @@ $zh2HK = array(
 '字里行间' => '字裏行間',
 '存著' => '存着',
 '存著名' => '存著名',
-'孟德爾頌' => '孟德爾遜',
 '门德尔松' => '孟德爾遜',
+'孟德爾頌' => '孟德爾遜',
 '孤著' => '孤着',
 '孤著作' => '孤著作',
 '孤著名' => '孤著名',
@@ -15472,6 +15522,8 @@ $zh2HK = array(
 '幹著名' => '幹著名',
 '幹著稱' => '幹著稱',
 '幾內亞比索' => '幾內亞比紹',
+'庫德人' => '库爾德人',
+'庫德族' => '库爾德族',
 '店里' => '店裏',
 '坎城' => '康城',
 '戛纳' => '康城',
@@ -15656,10 +15708,10 @@ $zh2HK = array(
 '戏彩娱亲' => '戲綵娛親',
 '戲彩娛親' => '戲綵娛親',
 '戏里' => '戲裏',
-'撒切尔' => '戴卓爾',
 '柴契爾' => '戴卓爾',
-'狄安娜' => '戴安娜',
+'撒切尔' => '戴卓爾',
 '黛安娜' => '戴安娜',
+'狄安娜' => '戴安娜',
 '戴著' => '戴着',
 '戴著作' => '戴著作',
 '戴著名' => '戴著名',
@@ -15786,8 +15838,8 @@ $zh2HK = array(
 '捆著者' => '捆著者',
 '捆著述' => '捆著述',
 '捆著錄' => '捆著錄',
-'俯卧撑' => '掌上壓',
 '伏地挺身' => '掌上壓',
+'俯卧撑' => '掌上壓',
 '掖著' => '掖着',
 '掖著作' => '掖著作',
 '掖著名' => '掖著名',
@@ -15834,8 +15886,8 @@ $zh2HK = array(
 '揮著述' => '揮著述',
 '揮著錄' => '揮著錄',
 '搜索引擎' => '搜尋引擎',
-'抢占' => '搶佔',
 '搶占' => '搶佔',
+'抢占' => '搶佔',
 '摟著' => '摟着',
 '摟著作' => '摟著作',
 '摟著名' => '摟著名',
@@ -15870,8 +15922,8 @@ $zh2HK = array(
 '據著述' => '據著述',
 '據著錄' => '據著錄',
 '擡著' => '擡着',
-'摆布' => '擺佈',
 '擺布' => '擺佈',
+'摆布' => '擺佈',
 '擺著' => '擺着',
 '擺著作' => '擺著作',
 '擺著名' => '擺著名',
@@ -15899,8 +15951,8 @@ $zh2HK = array(
 '數位相機' => '數碼相機',
 '數碼訊號' => '數碼訊號',
 '数字信号' => '數碼訊號',
-'數位電視' => '數碼電視',
 '数字电视' => '數碼電視',
+'數位電視' => '數碼電視',
 '數著作' => '數著作',
 '數著名' => '數著名',
 '數著稱' => '數著稱',
@@ -15966,10 +16018,10 @@ $zh2HK = array(
 '暗著述' => '暗著述',
 '暗著錄' => '暗著錄',
 '暗里' => '暗裏',
-'會占' => '會佔',
 '会占' => '會佔',
-'會占卜' => '會占卜',
+'會占' => '會佔',
 '会占卜' => '會占卜',
+'會占卜' => '會占卜',
 '会里' => '會裏',
 '有著' => '有着',
 '有著作' => '有著作',
@@ -16011,8 +16063,8 @@ $zh2HK = array(
 '村里' => '村裏',
 '杜塞道夫' => '杜塞爾多夫',
 '迪拜' => '杜拜',
-'亚细安' => '東盟',
 '東協' => '東盟',
+'亚细安' => '東盟',
 '板著臉' => '板着臉',
 '枕著' => '枕着',
 '枕著作' => '枕著作',
@@ -16026,17 +16078,21 @@ $zh2HK = array(
 '台历' => '枱曆',
 '台灯' => '枱燈',
 '台面上' => '枱面上',
+'台面化' => '枱面化',
 '柏林墙' => '柏林圍牆',
 '奧黛莉·朵杜' => '柯德莉·塔圖',
-'奥黛丽·赫本' => '柯德莉·夏萍',
 '奧黛麗·赫本' => '柯德莉·夏萍',
+'奥黛丽·赫本' => '柯德莉·夏萍',
 '哥廷根' => '格丁根',
 '格瑞那達' => '格林納達',
+'葛萊美獎' => '格林美獎',
+'格莱美奖' => '格林美獎',
 '格鲁吉亚' => '格魯吉亞',
+'框里' => '框裏',
 '撞球' => '桌球',
 '台球' => '桌球',
-'梅鐸' => '梅鐸',
 '默多克' => '梅鐸',
+'梅鐸' => '梅鐸',
 '梳著' => '梳着',
 '梳著作' => '梳著作',
 '梳著名' => '梳著名',
@@ -16048,8 +16104,8 @@ $zh2HK = array(
 '桑巴舞' => '森巴舞',
 '森林里' => '森林裏',
 '棺材里' => '棺材裏',
-'榴莲' => '榴槤',
 '榴蓮' => '榴槤',
+'榴莲' => '榴槤',
 '樂著' => '樂着',
 '樂著作' => '樂著作',
 '樂著名' => '樂著名',
@@ -16063,8 +16119,8 @@ $zh2HK = array(
 '標誌著' => '標誌着',
 '树林里' => '樹林裏',
 '工具機' => '機床',
-'機器人' => '機械人',
 '机器人' => '機械人',
+'機器人' => '機械人',
 '柜台' => '櫃枱',
 '历史里' => '歷史裏',
 '死里求生' => '死裏求生',
@@ -16079,8 +16135,8 @@ $zh2HK = array(
 '殺著錄' => '殺著錄',
 '壳里' => '殼裏',
 '茅利塔尼亞' => '毛里塔尼亞',
-'模里西斯' => '毛里裘斯',
 '毛里求斯' => '毛里裘斯',
+'模里西斯' => '毛里裘斯',
 '公厘' => '毫米',
 '公釐' => '毫米',
 '水来汤里去' => '水來湯裏去',
@@ -16109,8 +16165,8 @@ $zh2HK = array(
 '沖著。' => '沖著。',
 '沖著《' => '沖著《',
 '沖著,' => '沖著,',
-'沙烏地阿拉伯' => '沙特阿拉伯',
 '沙地阿拉伯' => '沙特阿拉伯',
+'沙烏地阿拉伯' => '沙特阿拉伯',
 '沙里淘金' => '沙裏淘金',
 '河里' => '河裏',
 '沿著' => '沿着',
@@ -16126,6 +16182,8 @@ $zh2HK = array(
 '玻里尼西亞' => '波利尼西亞',
 '波士尼亞' => '波斯尼亞',
 '波士尼亞赫塞哥維納' => '波斯尼亞黑塞哥維那',
+'寶萊塢' => '波里活',
+'宝莱坞' => '波里活',
 '幫浦' => '泵',
 '洞里' => '洞裏',
 '辛巴威' => '津巴布韋',
@@ -16361,10 +16419,10 @@ $zh2HK = array(
 '畫著稱' => '畫著稱',
 '畫著者' => '畫著者',
 '當著' => '當着',
-'當著作' => '當著作',
 '過著作' => '當著作',
-'當著名' => '當著名',
+'當著作' => '當著作',
 '過著名' => '當著名',
+'當著名' => '當著名',
 '過著書' => '當著書',
 '當著書' => '當著書',
 '當著稱' => '當著稱',
@@ -16373,8 +16431,8 @@ $zh2HK = array(
 '過著者' => '當著者',
 '過著述' => '當著述',
 '當著述' => '當著述',
-'過著錄' => '當著錄',
 '當著錄' => '當著錄',
+'過著錄' => '當著錄',
 '几内亚' => '畿內亞',
 '幾內亞' => '畿內亞',
 '迭代' => '疊代',
@@ -16387,8 +16445,8 @@ $zh2HK = array(
 '疑著述' => '疑著述',
 '疑著錄' => '疑著錄',
 '狂牛症' => '瘋牛症',
-'發布' => '發佈',
 '发布' => '發佈',
+'發布' => '發佈',
 '發著' => '發着',
 '發著《' => '發著《',
 '發著作' => '發著作',
@@ -16517,15 +16575,16 @@ $zh2HK = array(
 '瞪著錄' => '瞪著錄',
 '智慧財產權' => '知識產權',
 '智財權' => '知識產權',
-'短信' => '短訊',
 '簡訊' => '短訊',
+'短信' => '短訊',
 '什勒斯維希' => '石勒蘇益格',
 '硅' => '矽',
 '硅藻' => '硅藻',
-'硬體' => '硬件',
 '硬件' => '硬件',
-'贝克汉姆' => '碧咸',
+'硬體' => '硬件',
+'碗里' => '碗裏',
 '贝克漢' => '碧咸',
+'贝克汉姆' => '碧咸',
 '社里' => '社裏',
 '福馬林' => '福爾馬林',
 '福著' => '福着',
@@ -16558,8 +16617,8 @@ $zh2HK = array(
 '空著者' => '空著者',
 '空著述' => '空著述',
 '空著錄' => '空著錄',
-'航天飞机' => '穿梭機',
 '太空梭' => '穿梭機',
+'航天飞机' => '穿梭機',
 '穿著' => '穿着',
 '穿著作' => '穿著作',
 '穿著名' => '穿著名',
@@ -16612,8 +16671,8 @@ $zh2HK = array(
 '紐賓士域' => '紐賓士域',
 '索忍尼辛' => '索贊尼辛',
 '索尔仁尼琴' => '索贊尼辛',
-'索馬利亞' => '索馬里',
 '索馬利里' => '索馬里',
+'索馬利亞' => '索馬里',
 '紮著' => '紮着',
 '紮著作' => '紮著作',
 '紮著名' => '紮著名',
@@ -16624,8 +16683,8 @@ $zh2HK = array(
 '紮著錄' => '紮著錄',
 '组里' => '組裏',
 '吉他' => '結他',
-'结彩' => '結綵',
 '結彩' => '結綵',
+'结彩' => '結綵',
 '綁著' => '綁着',
 '綁著作' => '綁著作',
 '綁著名' => '綁著名',
@@ -16634,6 +16693,7 @@ $zh2HK = array(
 '綁著者' => '綁著者',
 '綁著述' => '綁著述',
 '綁著錄' => '綁著錄',
+'网站里' => '網站裏',
 '網路' => '網絡',
 '网里' => '網裏',
 '彩带' => '綵帶',
@@ -16654,6 +16714,7 @@ $zh2HK = array(
 '緝凶' => '緝兇',
 '县里' => '縣裏',
 '缝里' => '縫裏',
+'縱著' => '縱着',
 '总数里' => '總數裏',
 '尖峰時段' => '繁忙時段',
 '尖峰時間' => '繁忙時間',
@@ -16722,8 +16783,8 @@ $zh2HK = array(
 '考著者' => '考著者',
 '考著述' => '考著述',
 '考著錄' => '考著錄',
-'圣基茨和尼维斯' => '聖吉斯納域斯',
 '聖克里斯多福及尼維斯' => '聖吉斯納域斯',
+'圣基茨和尼维斯' => '聖吉斯納域斯',
 '聖文森及格瑞那丁' => '聖文森特和格林納丁斯',
 '聖露西亞' => '聖盧西亞',
 '聖馬利諾' => '聖馬力諾',
@@ -16777,8 +16838,8 @@ $zh2HK = array(
 '與著述' => '與著述',
 '與著錄' => '與著錄',
 '舒马赫' => '舒麥加',
-'爱荷华' => '艾奧瓦',
 '愛荷華' => '艾奧瓦',
+'爱荷华' => '艾奧瓦',
 '埃菲尔' => '艾菲爾',
 '帕塔亚' => '芭達亞',
 '花盆里' => '花盆裏',
@@ -16794,12 +16855,12 @@ $zh2HK = array(
 '苦著錄' => '苦著錄',
 '苦里' => '苦裏',
 '英占' => '英佔',
-'大英國協' => '英聯邦',
 '共和联邦' => '英聯邦',
+'大英國協' => '英聯邦',
 '草丛里' => '草叢裏',
 '霍爾斯坦' => '荷爾斯泰因',
-'好萊塢' => '荷里活',
 '好莱坞' => '荷里活',
+'好萊塢' => '荷里活',
 '庄里' => '莊裏',
 '莫三比克' => '莫桑比克',
 '瓦倫西亞' => '華倫西亞',
@@ -16807,12 +16868,12 @@ $zh2HK = array(
 '巴倫西亞' => '華倫西亞',
 '瓦文萨' => '華里沙',
 '華勒沙' => '華里沙',
-'菲利普亲王' => '菲臘親王',
 '菲利普親王' => '菲臘親王',
+'菲利普亲王' => '菲臘親王',
 '賴索托' => '萊索托',
 '马恩岛' => '萌島',
-'马自达' => '萬事得',
 '馬自達' => '萬事得',
+'马自达' => '萬事得',
 '万历朝鲜战争' => '萬曆朝鮮戰爭',
 '落著' => '落着',
 '落著作' => '落著作',
@@ -16836,6 +16897,9 @@ $zh2HK = array(
 '蒙著述' => '蒙著述',
 '蒙著錄' => '蒙著錄',
 '蓋著' => '蓋着',
+'蓋著作' => '蓋著作',
+'蓋著名' => '蓋著名',
+'蓋著稱' => '蓋著稱',
 '肖斯塔科维奇' => '蕭士達高維契',
 '蕭士塔高維奇' => '蕭士達高維契',
 '肖邦' => '蕭邦',
@@ -16870,6 +16934,7 @@ $zh2HK = array(
 '蜜里调油' => '蜜裏調油',
 '荧屏' => '螢屏',
 '屏幕' => '螢幕',
+'行家里手' => '行家裏手',
 '首席执行官' => '行政總裁',
 '行著' => '行着',
 '行著作' => '行著作',
@@ -16903,7 +16968,6 @@ $zh2HK = array(
 '里带' => '裏帶',
 '里弦' => '裏弦',
 '里应外合' => '裏應外合',
-'里手' => '裏手',
 '里海' => '裏海',
 '里脊' => '裏脊',
 '里衣' => '裏衣',
@@ -16933,11 +16997,12 @@ $zh2HK = array(
 '裹著錄' => '裹著錄',
 '衬里' => '襯裏',
 '西占' => '西佔',
-'塞维利亚' => '西維爾',
 '塞維亞' => '西維爾',
+'塞维利亚' => '西維爾',
 '要占' => '要佔',
 '要占卜' => '要占卜',
 '覆著' => '覆着',
+'覆蓋著' => '覆蓋着',
 '見著' => '見着',
 '見著作' => '見著作',
 '見著名' => '見著名',
@@ -16946,9 +17011,12 @@ $zh2HK = array(
 '見著者' => '見著者',
 '見著述' => '見著述',
 '見著錄' => '見著錄',
+'視著' => '視着',
+'視著名' => '視著名',
 '角落里' => '角落裏',
-'分辨率' => '解像度',
 '解析度' => '解像度',
+'分辨率' => '解像度',
+'言里' => '言裏',
 '計畫' => '計劃',
 '記著' => '記着',
 '記著作' => '記著作',
@@ -17022,9 +17090,10 @@ $zh2HK = array(
 '貞著述' => '貞著述',
 '貞著錄' => '貞著錄',
 '負著' => '負着',
+'貢寮國' => '貢寮國',
 '買凶' => '買兇',
-'費占' => '費佔',
 '费占' => '費佔',
+'費占' => '費佔',
 '赌台' => '賭枱',
 '尚比亞' => '贊比亞',
 '西臺人' => '赫梯人',
@@ -17203,8 +17272,8 @@ $zh2HK = array(
 '連著者' => '連著者',
 '連著述' => '連著述',
 '連著錄' => '連著錄',
-'进占' => '進佔',
 '進占' => '進佔',
+'进占' => '進佔',
 '演化論' => '進化論',
 '逼著' => '逼着',
 '逼著作' => '逼著作',
@@ -17246,7 +17315,6 @@ $zh2HK = array(
 '还占' => '還佔',
 '邋里邋遢' => '邋裏邋遢',
 '那里' => '那裏',
-'奥斯曼' => '鄂圖曼',
 '配合著' => '配合着',
 '配合著名' => '配合著名',
 '配图里' => '配圖裏',
@@ -17271,8 +17339,8 @@ $zh2HK = array(
 '醯壶' => '醯壺',
 '醯醋' => '醯醋',
 '醯醢' => '醯醢',
-'醯酱' => '醯醬',
 '醯醬' => '醯醬',
+'醯酱' => '醯醬',
 '醯鸡' => '醯雞',
 '醯雞' => '醯雞',
 '釀著' => '釀着',
@@ -17315,8 +17383,8 @@ $zh2HK = array(
 '開著者' => '開著者',
 '開著述' => '開著述',
 '開著錄' => '開著錄',
-'开诚布公' => '開誠佈公',
 '開誠布公' => '開誠佈公',
+'开诚布公' => '開誠佈公',
 '閑著' => '閑着',
 '閑著作' => '閑著作',
 '閑著名' => '閑著名',
@@ -17387,8 +17455,8 @@ $zh2HK = array(
 '隨著者' => '隨著者',
 '隨著述' => '隨著述',
 '隨著錄' => '隨著錄',
-'隱占' => '隱佔',
 '隐占' => '隱佔',
+'隱占' => '隱佔',
 '雅爾達' => '雅爾塔',
 '雅著' => '雅着',
 '雅穆索戈' => '雅穆蘇克雷',
@@ -17410,13 +17478,14 @@ $zh2HK = array(
 '雜著述' => '雜著述',
 '雜著錄' => '雜著錄',
 '鸡蛋里挑骨头' => '雞蛋裏挑骨頭',
-'冰淇淋' => '雪糕',
 '冰激凌' => '雪糕',
+'冰淇淋' => '雪糕',
 '雪里' => '雪裏',
 '萊特灣' => '雷伊泰灣',
 '莱特湾' => '雷伊泰灣',
-'晶體管' => '電晶體',
 '晶体管' => '電晶體',
+'晶體管' => '電晶體',
+'电梯里' => '電梯裏',
 '电脑程序' => '電腦程式',
 '计算机程序' => '電腦程式',
 '霄裡' => '霄裡',
@@ -17427,8 +17496,8 @@ $zh2HK = array(
 '靠著' => '靠着',
 '靠著作' => '靠著作',
 '靠著名' => '靠著名',
-'靠著稱' => '靠著稱',
 '靠著称' => '靠著稱',
+'靠著稱' => '靠著稱',
 '靠著者' => '靠著者',
 '靠著述' => '靠著述',
 '靠著錄' => '靠著錄',
@@ -17533,8 +17602,8 @@ $zh2HK = array(
 '髭著者' => '髭著者',
 '髭著述' => '髭著述',
 '髭著錄' => '髭著錄',
-'斗着' => '鬥着',
 '鬥著' => '鬥着',
+'斗着' => '鬥着',
 '鬥著作' => '鬥著作',
 '鬥著名' => '鬥著名',
 '鬥著書' => '鬥著書',
@@ -17543,10 +17612,10 @@ $zh2HK = array(
 '鬥著述' => '鬥著述',
 '鬥著錄' => '鬥著錄',
 '鬧著' => '鬧着',
-'牛軋' => '鳥結',
 '牛轧' => '鳥結',
-'鸠占' => '鳩佔',
+'牛軋' => '鳥結',
 '鳩占' => '鳩佔',
+'鸠占' => '鳩佔',
 '麗著' => '麗着',
 '麗著作' => '麗著作',
 '麗著名' => '麗著名',
@@ -17556,26 +17625,26 @@ $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',
-'里氏5' => '黎克特制5',
+'芮氏4' => '黎克特制4',
 '芮氏5' => '黎克特制5',
-'里氏6' => '黎克特制6',
+'里氏5' => '黎克特制5',
 '芮氏6' => '黎克特制6',
-'里氏7' => '黎克特制7',
+'里氏6' => '黎克特制6',
 '芮氏7' => '黎克特制7',
-'里氏8' => '黎克特制8',
+'里氏7' => '黎克特制7',
 '芮氏8' => '黎克特制8',
-'芮氏9' => '黎克特制9',
+'里氏8' => '黎克特制8',
 '里氏9' => '黎克特制9',
+'芮氏9' => '黎克特制9',
 '芮氏地震規模' => '黎克特制地震震級',
 '里氏地震规模' => '黎克特制地震震級',
 '里氏震级' => '黎克特制震級',
@@ -17614,8 +17683,8 @@ $zh2CN = array(
 '下著' => '下着',
 '下著作' => '下著作',
 '下著名' => '下著名',
-'下著錄' => '下著录',
 '下著录' => '下著录',
+'下著錄' => '下著录',
 '下著有' => '下著有',
 '下著稱' => '下著称',
 '下著称' => '下著称',
@@ -17674,7 +17743,6 @@ $zh2CN = array(
 '麗著者' => '丽著者',
 '麗著述' => '丽著述',
 '麼著' => '么着',
-'烏茲別克' => '乌兹别克斯坦',
 '樂著' => '乐着',
 '樂著書' => '乐著书',
 '樂著作' => '乐著作',
@@ -17683,6 +17751,7 @@ $zh2CN = array(
 '樂著稱' => '乐著称',
 '樂著者' => '乐著者',
 '樂著述' => '乐著述',
+'賈伯斯' => '乔布斯',
 '喬治·歐威爾' => '乔治·奥威尔',
 '乘著' => '乘着',
 '乘著書' => '乘著书',
@@ -17709,8 +17778,8 @@ $zh2CN = array(
 '二極體' => '二极管',
 '二進位制' => '二进位制',
 '二進位' => '二进制',
-'網際網路' => '互联网',
 '網際網絡' => '互联网',
+'網際網路' => '互联网',
 '亞歷山卓' => '亚历山大',
 '雅穆索戈' => '亚穆苏克罗',
 '互動式' => '交互式',
@@ -17724,8 +17793,8 @@ $zh2CN = array(
 '亮著者' => '亮著者',
 '亮著述' => '亮著述',
 '人工智慧' => '人工智能',
-'甚麼' => '什么',
 '甚麽' => '什么',
+'甚麼' => '什么',
 '仗著' => '仗着',
 '仗著書' => '仗著书',
 '仗著作' => '仗著作',
@@ -17745,10 +17814,11 @@ $zh2CN = array(
 '代表著述' => '代表著述',
 '乙太網' => '以太网',
 '伊莉莎白' => '伊丽莎白',
-'伊利諾' => '伊利诺伊',
 '伊利諾伊' => '伊利诺伊',
+'伊利諾' => '伊利诺伊',
 '伊斯蘭瑪巴德' => '伊斯兰堡',
 '伊斯坦堡' => '伊斯坦布尔',
+'伏著' => '伏着',
 '優先順序' => '优先级',
 '傳著' => '传着',
 '傳著書' => '传著书',
@@ -17769,7 +17839,6 @@ $zh2CN = array(
 '伴著者' => '伴著者',
 '伴著述' => '伴著述',
 '點陣圖' => '位图',
-'IP' => '位址',
 '低著' => '低着',
 '低著書' => '低著书',
 '低著作' => '低著作',
@@ -17817,8 +17886,8 @@ $zh2CN = array(
 '信著稱' => '信著称',
 '信著者' => '信著者',
 '信著述' => '信著述',
-'掌上壓' => '俯卧撑',
 '伏地挺身' => '俯卧撑',
+'掌上壓' => '俯卧撑',
 '倒帳' => '倒账',
 '候著' => '候着',
 '候著書' => '候著书',
@@ -17828,8 +17897,8 @@ $zh2CN = array(
 '候著稱' => '候著称',
 '候著者' => '候著者',
 '候著述' => '候著述',
-'藉著' => '借着',
 '借著' => '借着',
+'藉著' => '借着',
 '借著書' => '借著书',
 '借著作' => '借著作',
 '借著名' => '借著名',
@@ -17922,8 +17991,8 @@ $zh2CN = array(
 '寫著稱' => '写著称',
 '寫著者' => '写著者',
 '寫著述' => '写著述',
-'沖著' => '冲着',
 '衝著' => '冲着',
+'沖著' => '冲着',
 '沖著。' => '冲著。',
 '沖著《' => '冲著《',
 '沖著,' => '冲著,',
@@ -17939,12 +18008,12 @@ $zh2CN = array(
 '湊合著' => '凑合着',
 '畿內亞' => '几内亚',
 '幾內亞比索' => '几内亚比绍',
-'凱薩琳' => '凯瑟琳',
 '嘉芙蓮' => '凯瑟琳',
+'凱薩琳' => '凯瑟琳',
 '份內' => '分内',
 '份外' => '分外',
-'解析度' => '分辨率',
 '解像度' => '分辨率',
+'解析度' => '分辨率',
 '份量' => '分量',
 '車諾比' => '切尔诺贝利',
 '劃著' => '划着',
@@ -17952,8 +18021,8 @@ $zh2CN = array(
 '列支敦斯登' => '列支敦士登',
 '賴比瑞亞' => '利比里亚',
 '別著' => '别着',
-'刮著' => '刮着',
 '颳著' => '刮着',
+'刮著' => '刮着',
 '到帳' => '到账',
 '制著' => '制着',
 '制著書' => '制著书',
@@ -18039,10 +18108,10 @@ $zh2CN = array(
 '印著述' => '印著述',
 '瓜地馬拉' => '危地马拉',
 '厄瓜多尔' => '厄瓜多尔',
-'厄瓜多爾' => '厄瓜多尔',
 '厄瓜多' => '厄瓜多尔',
-'å\8e\84ç«\8bç\89¹é\87\8cäº\9e' => 'å\8e\84ç«\8bç\89¹é\87\8cäº\9a',
+'å\8e\84ç\93\9cå¤\9aç\88¾' => 'å\8e\84ç\93\9cå¤\9aå°\94',
 '厄利垂亚' => '厄立特里亚',
+'厄立特里亞' => '厄立特里亚',
 '厄利垂亞' => '厄立特里亚',
 '壓著' => '压着',
 '壓著書' => '压著书',
@@ -18083,6 +18152,8 @@ $zh2CN = array(
 '變著稱' => '变著称',
 '變著者' => '变著者',
 '變著述' => '变著述',
+'隻字片語' => '只字片语',
+'隻言片語' => '只言片语',
 '唯讀' => '只读',
 '叫著' => '叫着',
 '叫著書' => '叫著书',
@@ -18146,7 +18217,6 @@ $zh2CN = array(
 '味著述' => '味著述',
 '咖哩' => '咖喱',
 '諮' => '咨',
-'哈薩克' => '哈萨克斯坦',
 '響著' => '响着',
 '響著書' => '响著书',
 '響著作' => '响著作',
@@ -18200,8 +18270,8 @@ $zh2CN = array(
 '因著書' => '因著书',
 '因著作' => '因著作',
 '因著名' => '因著名',
-'因著录' => '因著录',
 '因著錄' => '因著录',
+'因著录' => '因著录',
 '因著稱' => '因著称',
 '因著者' => '因著者',
 '因著述' => '因著述',
@@ -18226,7 +18296,6 @@ $zh2CN = array(
 '土魯斯' => '图卢兹',
 '吐瓦魯' => '图瓦卢',
 '原子筆' => '圆珠笔',
-'土庫曼' => '土库曼斯坦',
 '聖露西亞' => '圣卢西亚',
 '聖吉斯納域斯' => '圣基茨和尼维斯',
 '聖克里斯多福及尼維斯' => '圣基茨和尼维斯',
@@ -18259,12 +18328,10 @@ $zh2CN = array(
 '吉里巴斯' => '基里巴斯',
 '堂姊' => '堂姐',
 '坎培拉' => '堪培拉',
-'塔吉克' => '塔吉克斯坦',
-'塔吉克斯坦' => '塔吉克斯坦',
 '塞爾維亞與蒙特內哥羅' => '塞尔维亚和黑山',
 '塞拉利昂' => '塞拉利昂',
-'塞普勒斯' => '塞浦路斯',
 '賽普勒斯' => '塞浦路斯',
+'塞普勒斯' => '塞浦路斯',
 '西維爾' => '塞维利亚',
 '塞維亞' => '塞维利亚',
 '塞席爾' => '塞舌尔',
@@ -18345,6 +18412,7 @@ $zh2CN = array(
 '定著稱' => '定著称',
 '定著者' => '定著者',
 '定著述' => '定著述',
+'波里活' => '宝莱坞',
 '寬頻' => '宽带',
 '密西根' => '密歇根',
 '密执安' => '密歇根',
@@ -18381,8 +18449,8 @@ $zh2CN = array(
 '展著述' => '展著述',
 '華倫西亞' => '巴伦西亚',
 '瓦倫西亞' => '巴伦西亚',
-'巴塞隆納' => '巴塞罗那',
 '巴塞隆拿' => '巴塞罗那',
+'巴塞隆納' => '巴塞罗那',
 '巴斯拉' => '巴士拉',
 '帕邁拉環礁' => '巴尔米拉环礁',
 '巴貝多' => '巴巴多斯',
@@ -18417,6 +18485,8 @@ $zh2CN = array(
 '幹著名' => '幹著名',
 '幹著稱' => '幹著称',
 '庇護著' => '庇护着',
+'庫德人' => '库尔德人',
+'庫德族' => '库尔德族',
 '應用程式' => '应用程序',
 '應著' => '应着',
 '應著書' => '应著书',
@@ -18663,8 +18733,8 @@ $zh2CN = array(
 '披著稱' => '披著称',
 '披著者' => '披著者',
 '披著述' => '披著述',
-'擡著' => '抬着',
 '抬著' => '抬着',
+'擡著' => '抬着',
 '抬著作' => '抬著作',
 '抬著名' => '抬著名',
 '抬著錄' => '抬著录',
@@ -18837,8 +18907,8 @@ $zh2CN = array(
 '放著' => '放着',
 '放著作' => '放著作',
 '放著名' => '放著名',
-'放著称' => '放著称',
 '放著稱' => '放著称',
+'放著称' => '放著称',
 '放帳' => '放账',
 '敞著' => '敞着',
 '敞著作' => '敞著作',
@@ -18847,10 +18917,10 @@ $zh2CN = array(
 '敞著稱' => '敞著称',
 '敞著者' => '敞著者',
 '敞著述' => '敞著述',
-'數碼訊號' => '数字信号',
 '數位訊號' => '数字信号',
-'數位技術' => '数字技术',
+'數碼訊號' => '数字信号',
 '數碼技術' => '数字技术',
+'數位技術' => '数字技术',
 '數位電視' => '数字电视',
 '數碼電視' => '数字电视',
 '資料庫' => '数据库',
@@ -18879,6 +18949,7 @@ $zh2CN = array(
 '斥著稱' => '斥著称',
 '斥著者' => '斥著者',
 '斥著述' => '斥著述',
+'史丹福' => '斯坦福',
 '史達林' => '斯大林',
 '史瓦濟蘭' => '斯威士兰',
 '斯洛維尼亞' => '斯洛文尼亚',
@@ -18888,8 +18959,8 @@ $zh2CN = array(
 '紐西蘭' => '新西兰',
 '舊帳' => '旧账',
 '三藩市' => '旧金山',
-'昂山素姬' => '昂山素季',
 '翁山蘇姬' => '昂山素季',
+'昂山素姬' => '昂山素季',
 '昂著' => '昂着',
 '昂著書' => '昂著书',
 '昂著作' => '昂著作',
@@ -19008,6 +19079,8 @@ $zh2CN = array(
 '查維茲' => '查韦斯',
 '標誌著' => '标志着',
 '格瑞那達' => '格林纳达',
+'格林美獎' => '格莱美奖',
+'葛萊美獎' => '格莱美奖',
 '森巴舞' => '桑巴舞',
 '梅赫西迪' => '梅赛德斯',
 '夢著' => '梦着',
@@ -19034,8 +19107,8 @@ $zh2CN = array(
 '茅利塔尼亞' => '毛里塔尼亚',
 '毛里裘斯' => '毛里求斯',
 '模里西斯' => '毛里求斯',
-'公厘' => '毫米',
 '公釐' => '毫米',
+'公厘' => '毫米',
 '胺基酸' => '氨基酸',
 '水份' => '水分',
 '水氣' => '水汽',
@@ -19048,8 +19121,8 @@ $zh2CN = array(
 '求著者' => '求著者',
 '求著述' => '求著述',
 '漢諾瓦' => '汉诺威',
-'沈著' => '沉着',
 '沉著' => '沉着',
+'沈著' => '沉着',
 '沉著書' => '沉著书',
 '沉著作' => '沉著作',
 '沉著名' => '沉著名',
@@ -19057,8 +19130,8 @@ $zh2CN = array(
 '沉著稱' => '沉著称',
 '沉著者' => '沉著者',
 '沉著述' => '沉著述',
-'沙烏地阿拉伯' => '沙特阿拉伯',
 '沙地阿拉伯' => '沙特阿拉伯',
+'沙烏地阿拉伯' => '沙特阿拉伯',
 '沿著' => '沿着',
 '沿著書' => '沿著书',
 '沿著作' => '沿著作',
@@ -19228,10 +19301,10 @@ $zh2CN = array(
 '猜著者' => '猜著者',
 '猜著述' => '猜著述',
 '玩著' => '玩着',
-'萬那杜' => '瓦努阿图',
 '溫納圖' => '瓦努阿图',
-'è\8f¯å\8b\92æ²\99' => 'ç\93¦æ\96\87è\90¨',
+'è\90¬é\82£æ\9d\9c' => 'ç\93¦å\8aªé\98¿å\9b¾',
 '華里沙' => '瓦文萨',
+'華勒沙' => '瓦文萨',
 '甜著' => '甜着',
 '甜著書' => '甜著书',
 '甜著作' => '甜著作',
@@ -19287,6 +19360,10 @@ $zh2CN = array(
 '皺著者' => '皱著者',
 '皺著述' => '皱著述',
 '鹽份' => '盐分',
+'蓋著' => '盖着',
+'蓋著作' => '盖著作',
+'蓋著名' => '盖著名',
+'蓋著稱' => '盖著称',
 '盛著' => '盛着',
 '盛著書' => '盛著书',
 '盛著作' => '盛著作',
@@ -19323,8 +19400,8 @@ $zh2CN = array(
 '著絲' => '着丝',
 '著麼' => '着么',
 '著人' => '着人',
-'著甚麽' => '着什么',
 '著什麼' => '着什么',
+'著甚麽' => '着什么',
 '著他' => '着他',
 '著令' => '着令',
 '著位' => '着位',
@@ -19457,11 +19534,11 @@ $zh2CN = array(
 '智慧財產權' => '知识产权',
 '知識份子' => '知识分子',
 '什勒斯維希' => '石勒苏益格',
-'矽塵' => '矽尘',
 '矽尘' => '矽尘',
+'矽塵' => '矽尘',
 '矽肺' => '矽肺',
-'矽鋼' => '矽钢',
 '矽钢' => '矽钢',
+'矽鋼' => '矽钢',
 '矽' => '硅',
 '矽片' => '硅片',
 '矽谷' => '硅谷',
@@ -19482,8 +19559,8 @@ $zh2CN = array(
 '葛摩' => '科摩罗',
 '象牙海岸' => '科特迪瓦',
 '積極份子' => '积极分子',
-'行動電話' => '移动电话',
 '流動電話' => '移动电话',
+'行動電話' => '移动电话',
 '行動網路' => '移动网络',
 '流動網絡' => '移动网络',
 '程式設計師' => '程序员',
@@ -19554,12 +19631,13 @@ $zh2CN = array(
 '動畫影集' => '系列动画片',
 '繫著' => '系着',
 '索贊尼辛' => '索尔仁尼琴',
-'索忍尼辛' => '索尔仁尼琴',
 '蘇辛尼津' => '索尔仁尼琴',
+'索忍尼辛' => '索尔仁尼琴',
 '索馬利亞' => '索马里',
 '索馬利蘭' => '索马里兰',
 '正體中文' => '繁体中文',
 '強斯頓環礁' => '约翰斯顿岛',
+'縱著' => '纵着',
 '組份' => '组分',
 '經常帳' => '经常账',
 '經濟帳' => '经济账',
@@ -19675,8 +19753,8 @@ $zh2CN = array(
 '苦著述' => '苦著述',
 '英吋' => '英寸',
 '英呎' => '英尺',
-'大英國協' => '英联邦',
 '共和联邦' => '英联邦',
+'大英國協' => '英联邦',
 '士多啤梨' => '草莓',
 '螢光棒' => '荧光棒',
 '螢屏' => '荧屏',
@@ -19684,8 +19762,8 @@ $zh2CN = array(
 '莫三比克' => '莫桑比克',
 '雷伊泰灣' => '莱特湾',
 '賴索托' => '莱索托',
-'穫著' => '获着',
 '獲著' => '获着',
+'穫著' => '获着',
 '獲著書' => '获著书',
 '獲著作' => '获著作',
 '獲著名' => '获著名',
@@ -19712,7 +19790,6 @@ $zh2CN = array(
 '蒙著稱' => '蒙著称',
 '蒙著者' => '蒙著者',
 '蒙著述' => '蒙著述',
-'蓋著' => '蓋着',
 '藍芽' => '蓝牙',
 '薛丁格' => '薛定谔',
 '藏著' => '藏着',
@@ -19765,6 +19842,7 @@ $zh2CN = array(
 '裹著者' => '裹著者',
 '裹著述' => '裹著述',
 '要帳' => '要账',
+'覆蓋著' => '覆盖着',
 '覆著' => '覆着',
 '見著' => '见着',
 '見著書' => '见著书',
@@ -19774,6 +19852,8 @@ $zh2CN = array(
 '見著稱' => '见著称',
 '見著者' => '见著者',
 '見著述' => '见著述',
+'視著' => '视着',
+'視著名' => '视著名',
 '占士邦' => '詹姆斯·邦德',
 '警戒著' => '警戒着',
 '計畫' => '计划',
@@ -19788,7 +19868,6 @@ $zh2CN = array(
 '記著者' => '记著者',
 '記著述' => '记著述',
 '記帳' => '记账',
-'辭彙' => '词汇',
 '片語' => '词组',
 '試著' => '试着',
 '試著書' => '试著书',
@@ -19834,6 +19913,7 @@ $zh2CN = array(
 '貞著者' => '贞著者',
 '貞著述' => '贞著述',
 '負著' => '负着',
+'貢寮國' => '贡寮国',
 '帳上' => '账上',
 '帳冊' => '账册',
 '帳務' => '账务',
@@ -20091,6 +20171,7 @@ $zh2CN = array(
 '鈽' => '钚',
 '鍅' => '钫',
 '狄托' => '铁托',
+'卯足' => '铆足',
 '鋪著' => '铺着',
 '鋪著書' => '铺著书',
 '鋪著作' => '铺著作',
@@ -20184,7 +20265,6 @@ $zh2CN = array(
 '雅著稱' => '雅著称',
 '雅著者' => '雅著者',
 '雅著述' => '雅著述',
-'山葉' => '雅马哈',
 '雷諾瓦' => '雷诺阿',
 '荷姆茲' => '霍尔木兹',
 '非份' => '非分',
@@ -20221,8 +20301,8 @@ $zh2CN = array(
 '領著稱' => '领著称',
 '領著者' => '领著者',
 '領著述' => '领著述',
-'飄著' => '飘着',
 '飃著' => '飘着',
+'飄著' => '飘着',
 '飄著書' => '飘著书',
 '飄著作' => '飘著作',
 '飄著名' => '飘著名',
index 143fc0f..2a449df 100644 (file)
@@ -2829,6 +2829,7 @@ abstract class ApiBase extends ContextSource {
         * @return array
         */
        public function getResultData() {
+               wfDeprecated( __METHOD__, '1.25' );
                return $this->getResult()->getData();
        }
 
index 72aee32..26b5f0e 100644 (file)
@@ -113,27 +113,13 @@ class ApiBlock extends ApiBase {
                }
 
                $res['reason'] = $params['reason'];
-               if ( $params['anononly'] ) {
-                       $res['anononly'] = '';
-               }
-               if ( $params['nocreate'] ) {
-                       $res['nocreate'] = '';
-               }
-               if ( $params['autoblock'] ) {
-                       $res['autoblock'] = '';
-               }
-               if ( $params['noemail'] ) {
-                       $res['noemail'] = '';
-               }
-               if ( $params['hidename'] ) {
-                       $res['hidename'] = '';
-               }
-               if ( $params['allowusertalk'] ) {
-                       $res['allowusertalk'] = '';
-               }
-               if ( $params['watchuser'] ) {
-                       $res['watchuser'] = '';
-               }
+               $res['anononly'] = $params['anononly'];
+               $res['nocreate'] = $params['nocreate'];
+               $res['autoblock'] = $params['autoblock'];
+               $res['noemail'] = $params['noemail'];
+               $res['hidename'] = $params['hidename'];
+               $res['allowusertalk'] = $params['allowusertalk'];
+               $res['watchuser'] = $params['watchuser'];
 
                $this->getResult()->addValue( null, $this->getModuleName(), $res );
        }
index dea1cf4..354f4e7 100644 (file)
@@ -231,7 +231,7 @@ class ApiContinuationManager {
                                ApiResult::ADD_ON_TOP | ApiResult::NO_SIZE_CHECK );
                }
                if ( $batchcomplete ) {
-                       $result->addValue( null, 'batchcomplete', '',
+                       $result->addValue( null, 'batchcomplete', true,
                                ApiResult::ADD_ON_TOP | ApiResult::NO_SIZE_CHECK );
                }
        }
index 56c67e0..0dee147 100644 (file)
@@ -96,8 +96,12 @@ class ApiEditPage extends ApiBase {
                        $contentHandler = ContentHandler::getForModelID( $params['contentmodel'] );
                }
 
-               // @todo Ask handler whether direct editing is supported at all! make
-               // allowFlatEdit() method or some such
+               if ( $contentHandler->supportsDirectApiEditing() === false ) {
+                       $this->dieUsage(
+                               'Direct editing via API is not supported for this content type.',
+                               'no-direct-editing'
+                       );
+               }
 
                if ( !isset( $params['contentformat'] ) || $params['contentformat'] == '' ) {
                        $params['contentformat'] = $contentHandler->getDefaultFormat();
@@ -362,9 +366,7 @@ class ApiEditPage extends ApiBase {
 
                $ep = new EditPage( $articleObject );
 
-               // allow editing of non-textual content.
-               $ep->allowNonTextContent = true;
-
+               $ep->setApiEditOverride( true );
                $ep->setContextTitle( $titleObj );
                $ep->importFormData( $req );
                $content = $ep->textbox1;
@@ -488,7 +490,7 @@ class ApiEditPage extends ApiBase {
                                $this->dieStatus( $status );
 
                        case EditPage::AS_SUCCESS_NEW_ARTICLE:
-                               $r['new'] = '';
+                               $r['new'] = true;
                                // fall-through
 
                        case EditPage::AS_SUCCESS_UPDATE:
@@ -498,7 +500,7 @@ class ApiEditPage extends ApiBase {
                                $r['contentmodel'] = $titleObj->getContentModel();
                                $newRevId = $articleObject->getLatest();
                                if ( $newRevId == $oldRevId ) {
-                                       $r['nochange'] = '';
+                                       $r['nochange'] = true;
                                } else {
                                        $r['oldrevid'] = intval( $oldRevId );
                                        $r['newrevid'] = intval( $newRevId );
index 5c7717f..6d064eb 100644 (file)
@@ -96,9 +96,8 @@ class ApiExpandTemplates extends ApiBase {
                                $retval['parsetree'] = $xml;
                        } else {
                                // the old way
-                               $xml_result = array();
-                               ApiResult::setContentValue( $xml_result, 'xml', $xml );
-                               $result->addValue( null, 'parsetree', $xml_result );
+                               $result->addValue( null, 'parsetree', $xml );
+                               $result->addValue( null, ApiResult::META_BC_SUBELEMENTS, array( 'parsetree' ) );
                        }
                }
 
@@ -129,19 +128,13 @@ class ApiExpandTemplates extends ApiBase {
                                if ( isset( $prop['properties'] ) ) {
                                        $properties = $wgParser->getOutput()->getProperties();
                                        if ( $properties ) {
-                                               $properties_result = array();
-                                               foreach ( $properties as $name => $value ) {
-                                                       $entry = array();
-                                                       $entry['name'] = $name;
-                                                       ApiResult::setContentValue( $entry, 'value', $value );
-                                                       $properties_result[] = $entry;
-                                               }
-                                               ApiResult::setIndexedTagName( $properties_result, 'property' );
-                                               $retval['properties'] = $properties_result;
+                                               ApiResult::setArrayType( $properties, 'BCkvp', 'name' );
+                                               ApiResult::setIndexedTagName( $properties, 'property' );
+                                               $retval['properties'] = $properties;
                                        }
                                }
-                               if ( isset( $prop['volatile'] ) && $frame->isVolatile() ) {
-                                       $retval['volatile'] = '';
+                               if ( isset( $prop['volatile'] ) ) {
+                                       $retval['volatile'] = $frame->isVolatile();
                                }
                                if ( isset( $prop['ttl'] ) && $frame->getTTL() !== null ) {
                                        $retval['ttl'] = $frame->getTTL();
index 26eac08..d078dc4 100644 (file)
@@ -32,6 +32,7 @@
 abstract class ApiFormatBase extends ApiBase {
        private $mIsHtml, $mFormat, $mUnescapeAmps, $mHelp;
        private $mBuffer, $mDisabled = false;
+       protected $mForceDefaultParams = false;
 
        /**
         * If $format ends with 'fm', pretty-print the output in HTML.
@@ -107,6 +108,34 @@ abstract class ApiFormatBase extends ApiBase {
                return true;
        }
 
+       /**
+        * Ignore request parameters, force a default.
+        *
+        * Used as a fallback if errors are being thrown.
+        * @since 1.26
+        */
+       public function forceDefaultParams() {
+               $this->mForceDefaultParams = true;
+       }
+
+       /**
+        * Overridden to honor $this->forceDefaultParams(), if applicable
+        * @since 1.26
+        */
+       protected function getParameterFromSettings( $paramName, $paramSettings, $parseLimit ) {
+               if ( !$this->mForceDefaultParams ) {
+                       return parent::getParameterFromSettings( $paramName, $paramSettings, $parseLimit );
+               }
+
+               if ( !is_array( $paramSettings ) ) {
+                       return $paramSettings;
+               } elseif ( isset( $paramSettings[self::PARAM_DFLT] ) ) {
+                       return $paramSettings[self::PARAM_DFLT];
+               } else {
+                       return null;
+               }
+       }
+
        /**
         * Initialize the printer function and prepare the output headers.
         * @param bool $unused Always false since 1.25
index 41d7051..43877b7 100644 (file)
@@ -40,7 +40,7 @@ class ApiFormatJson extends ApiFormatBase {
        public function getMimeType() {
                $params = $this->extractRequestParams();
                // callback:
-               if ( $params['callback'] ) {
+               if ( isset( $params['callback'] ) ) {
                        return 'text/javascript';
                }
 
@@ -91,7 +91,7 @@ class ApiFormatJson extends ApiFormatBase {
                                        break;
 
                                default:
-                                       self::dieUsage( __METHOD__ . ': Unknown value for \'formatversion\'' );
+                                       $this->dieUsage( __METHOD__ . ': Unknown value for \'formatversion\'', 'unknownformatversion' );
                        }
                }
                $data = $this->getResult()->getResultData( null, $transform );
@@ -106,9 +106,8 @@ class ApiFormatJson extends ApiFormatBase {
                        );
                }
 
-               $callback = $params['callback'];
-               if ( $callback !== null ) {
-                       $callback = preg_replace( "/[^][.\\'\\\"_A-Za-z0-9]/", '', $callback );
+               if ( isset( $params['callback'] ) ) {
+                       $callback = preg_replace( "/[^][.\\'\\\"_A-Za-z0-9]/", '', $params['callback'] );
                        # Prepend a comment to try to avoid attacks against content
                        # sniffers, such as bug 68187.
                        $this->printText( "/**/$callback($json)" );
index a6a6f32..d88dd40 100644 (file)
@@ -55,7 +55,7 @@ class ApiFormatPhp extends ApiFormatBase {
                                break;
 
                        default:
-                               self::dieUsage( __METHOD__ . ': Unknown value for \'formatversion\'' );
+                               $this->dieUsage( __METHOD__ . ': Unknown value for \'formatversion\'', 'unknownformatversion' );
                }
                $text = serialize( $this->getResult()->getResultData( null, $transforms ) );
 
index 7b99921..865d39f 100644 (file)
@@ -42,7 +42,7 @@ class ApiImageRotate extends ApiBase {
                                $v = $val;
                        }
                        if ( $flag !== null ) {
-                               $v[$flag] = '';
+                               $v[$flag] = true;
                        }
                        $result[] = $v;
                }
@@ -71,7 +71,7 @@ class ApiImageRotate extends ApiBase {
                        $r['id'] = $title->getArticleID();
                        ApiQueryBase::addTitleInfo( $r, $title );
                        if ( !$title->exists() ) {
-                               $r['missing'] = '';
+                               $r['missing'] = true;
                        }
 
                        $file = wfFindFile( $title, array( 'latest' => true ) );
index 9d76a46..2e87d22 100644 (file)
@@ -155,7 +155,7 @@ class ApiImportReporter extends ImportReporter {
                if ( $title === null ) {
                        # Invalid or non-importable title
                        $r['title'] = $pageInfo['title'];
-                       $r['invalid'] = '';
+                       $r['invalid'] = true;
                } else {
                        ApiQueryBase::addTitleInfo( $r, $title );
                        $r['revisions'] = intval( $successCount );
index 7e3dcff..2ec3aa8 100644 (file)
@@ -495,7 +495,22 @@ class ApiMain extends ApiBase {
                // Reset and print just the error message
                ob_clean();
 
-               $this->printResult( true );
+               // Printer may not be initialized if the extractRequestParams() fails for the main module
+               $this->createErrorPrinter();
+
+               try {
+                       $this->printResult( true );
+               } catch ( UsageException $ex ) {
+                       // The error printer itself is failing. Try suppressing its request
+                       // parameters and redo.
+                       $this->setWarning(
+                               'Error printer failed (will retry without params): ' . $ex->getMessage()
+                       );
+                       $this->mPrinter = null;
+                       $this->createErrorPrinter();
+                       $this->mPrinter->forceDefaultParams();
+                       $this->printResult( true );
+               }
        }
 
        /**
@@ -792,22 +807,14 @@ class ApiMain extends ApiBase {
        }
 
        /**
-        * Replace the result data with the information about an exception.
-        * Returns the error code
-        * @param Exception $e
-        * @return string
+        * Create the printer for error output
         */
-       protected function substituteResultWithError( $e ) {
-               $result = $this->getResult();
-
-               // Printer may not be initialized if the extractRequestParams() fails for the main module
+       private function createErrorPrinter() {
                if ( !isset( $this->mPrinter ) ) {
-                       // The printer has not been created yet. Try to manually get formatter value.
                        $value = $this->getRequest()->getVal( 'format', self::API_DEFAULT_FORMAT );
                        if ( !$this->mModuleMgr->isDefined( $value, 'format' ) ) {
                                $value = self::API_DEFAULT_FORMAT;
                        }
-
                        $this->mPrinter = $this->createPrinterByName( $value );
                }
 
@@ -816,10 +823,16 @@ class ApiMain extends ApiBase {
                if ( !$this->mPrinter->canPrintErrors() ) {
                        $this->mPrinter = $this->createPrinterByName( self::API_DEFAULT_FORMAT );
                }
+       }
 
-               // Update raw mode flag for the selected printer.
-               $result->setRawMode( $this->mPrinter->getNeedsRawData() );
-
+       /**
+        * Replace the result data with the information about an exception.
+        * Returns the error code
+        * @param Exception $e
+        * @return string
+        */
+       protected function substituteResultWithError( $e ) {
+               $result = $this->getResult();
                $config = $this->getConfig();
 
                if ( $e instanceof UsageException ) {
index 80317d3..240d350 100644 (file)
@@ -49,8 +49,8 @@ class ApiManageTags extends ApiBase {
                if ( !$status->isGood() ) {
                        $ret['warnings'] = $this->getErrorFormatter()->arrayFromStatus( $status, 'warning' );
                }
-               if ( $status->value !== null ) {
-                       $ret['success'] = '';
+               $ret['success'] = $status->value !== null;
+               if ( $ret['success'] ) {
                        $ret['logid'] = $status->value;
                }
                $result->addValue( null, $this->getModuleName(), $ret );
index 0db18e7..e42958b 100644 (file)
@@ -83,18 +83,14 @@ class ApiMove extends ApiBase {
                        'reason' => $params['reason']
                );
 
-               if ( $fromTitle->exists() ) {
-                       //NOTE: we assume that if the old title exists, it's because it was re-created as
-                       // a redirect to the new title. This is not safe, but what we did before was
-                       // even worse: we just determined whether a redirect should have been created,
-                       // and reported that it was created if it should have, without any checks.
-                       // Also note that isRedirect() is unreliable because of bug 37209.
-                       $r['redirectcreated'] = '';
-               }
+               //NOTE: we assume that if the old title exists, it's because it was re-created as
+               // a redirect to the new title. This is not safe, but what we did before was
+               // even worse: we just determined whether a redirect should have been created,
+               // and reported that it was created if it should have, without any checks.
+               // Also note that isRedirect() is unreliable because of bug 37209.
+               $r['redirectcreated'] = $fromTitle->exists();
 
-               if ( $toTitleExists ) {
-                       $r['moveoverredirect'] = '';
-               }
+               $r['moveoverredirect'] = $toTitleExists;
 
                // Move the talk page
                if ( $params['movetalk'] && $fromTalk->exists() && !$fromTitle->isTalkPage() ) {
@@ -103,9 +99,7 @@ class ApiMove extends ApiBase {
                        if ( $status->isOK() ) {
                                $r['talkfrom'] = $fromTalk->getPrefixedText();
                                $r['talkto'] = $toTalk->getPrefixedText();
-                               if ( $toTalkExists ) {
-                                       $r['talkmoveoverredirect'] = '';
-                               }
+                               $r['talkmoveoverredirect'] = $toTalkExists;
                        } else {
                                // We're not gonna dieUsage() on failure, since we already changed something
                                $error = $this->getErrorFromStatus( $status );
index 33790f9..8c03dce 100644 (file)
@@ -212,6 +212,7 @@ class ApiOpenSearch extends ApiBase {
                switch ( $this->getFormat() ) {
                        case 'json':
                                // http://www.opensearch.org/Specifications/OpenSearch/Extensions/Suggestions/1.1
+                               $result->addArrayType( null, 'array' );
                                $result->addValue( null, 0, strval( $search ) );
                                $terms = array();
                                $descriptions = array();
index 02a25fe..e6f218d 100644 (file)
@@ -96,7 +96,7 @@ class ApiPageSet extends ApiBase {
                                $v = $val;
                        }
                        if ( $flag !== null ) {
-                               $v[$flag] = '';
+                               $v[$flag] = true;
                        }
                        $result[] = $v;
                }
index bb661b2..25069d9 100644 (file)
@@ -216,7 +216,7 @@ class ApiParamInfo extends ApiBase {
                $this->formatHelpMessages( $ret, 'description', $module->getFinalDescription() );
 
                foreach ( $module->getHelpFlags() as $flag ) {
-                       $ret[$flag] = '';
+                       $ret[$flag] = true;
                }
 
                $ret['helpurls'] = (array)$module->getHelpUrls();
@@ -265,12 +265,10 @@ class ApiParamInfo extends ApiBase {
                                $this->formatHelpMessages( $item, 'description', $paramDesc[$name], true );
                        }
 
-                       if ( !empty( $settings[ApiBase::PARAM_REQUIRED] ) ) {
-                               $item['required'] = '';
-                       }
+                       $item['required'] = !empty( $settings[ApiBase::PARAM_REQUIRED] );
 
                        if ( !empty( $settings[ApiBase::PARAM_DEPRECATED] ) ) {
-                               $item['deprecated'] = '';
+                               $item['deprecated'] = true;
                        }
 
                        if ( $name === 'token' && $module->needsToken() ) {
@@ -307,8 +305,8 @@ class ApiParamInfo extends ApiBase {
                                }
                        }
 
-                       if ( !empty( $settings[ApiBase::PARAM_ISMULTI] ) ) {
-                               $item['multi'] = '';
+                       $item['multi'] = !empty( $settings[ApiBase::PARAM_ISMULTI] );
+                       if ( $item['multi'] ) {
                                $item['limit'] = $this->getMain()->canApiHighLimits() ?
                                        ApiBase::LIMIT_SML2 :
                                        ApiBase::LIMIT_SML1;
@@ -317,14 +315,14 @@ class ApiParamInfo extends ApiBase {
                        }
 
                        if ( !empty( $settings[ApiBase::PARAM_ALLOW_DUPLICATES] ) ) {
-                               $item['allowsduplicates'] = '';
+                               $item['allowsduplicates'] = true;
                        }
 
                        if ( isset( $settings[ApiBase::PARAM_TYPE] ) ) {
                                if ( $settings[ApiBase::PARAM_TYPE] === 'submodule' ) {
                                        $item['type'] = $module->getModuleManager()->getNames( $name );
                                        sort( $item['type'] );
-                                       $item['submodules'] = '';
+                                       $item['submodules'] = true;
                                } else {
                                        $item['type'] = $settings[ApiBase::PARAM_TYPE];
                                }
index 267bced..fc004cf 100644 (file)
@@ -225,21 +225,17 @@ class ApiParse extends ApiBase {
                        if ( $params['onlypst'] ) {
                                // Build a result and bail out
                                $result_array = array();
-                               $result_array['text'] = array();
-                               ApiResult::setContentValue( $result_array['text'], 'text', $this->pstContent->serialize( $format ) );
+                               $result_array['text'] = $this->pstContent->serialize( $format );
+                               $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'text';
                                if ( isset( $prop['wikitext'] ) ) {
-                                       $result_array['wikitext'] = array();
-                                       ApiResult::setContentValue( $result_array['wikitext'], 'wikitext', $this->content->serialize( $format ) );
+                                       $result_array['wikitext'] = $this->content->serialize( $format );
+                                       $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'wikitext';
                                }
                                if ( !is_null( $params['summary'] ) ||
                                        ( !is_null( $params['sectiontitle'] ) && $this->section === 'new' )
                                ) {
-                                       $result_array['parsedsummary'] = array();
-                                       ApiResult::setContentValue(
-                                               $result_array['parsedsummary'],
-                                               'parsedsummary',
-                                               $this->formatSummary( $titleObj, $params )
-                                       );
+                                       $result_array['parsedsummary'] = $this->formatSummary( $titleObj, $params );
+                                       $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'parsedsummary';
                                }
 
                                $result->addValue( null, $this->getModuleName(), $result_array );
@@ -272,19 +268,15 @@ class ApiParse extends ApiBase {
                }
 
                if ( isset( $prop['text'] ) ) {
-                       $result_array['text'] = array();
-                       ApiResult::setContentValue( $result_array['text'], 'text', $p_result->getText() );
+                       $result_array['text'] = $p_result->getText();
+                       $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'text';
                }
 
                if ( !is_null( $params['summary'] ) ||
                        ( !is_null( $params['sectiontitle'] ) && $this->section === 'new' )
                ) {
-                       $result_array['parsedsummary'] = array();
-                       ApiResult::setContentValue(
-                               $result_array['parsedsummary'],
-                               'parsedsummary',
-                               $this->formatSummary( $titleObj, $params )
-                       );
+                       $result_array['parsedsummary'] = $this->formatSummary( $titleObj, $params );
+                       $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'parsedsummary';
                }
 
                if ( isset( $prop['langlinks'] ) ) {
@@ -307,9 +299,8 @@ class ApiParse extends ApiBase {
                        $result_array['categories'] = $this->formatCategoryLinks( $p_result->getCategories() );
                }
                if ( isset( $prop['categorieshtml'] ) ) {
-                       $categoriesHtml = $this->categoriesHtml( $p_result->getCategories() );
-                       $result_array['categorieshtml'] = array();
-                       ApiResult::setContentValue( $result_array['categorieshtml'], 'categorieshtml', $categoriesHtml );
+                       $result_array['categorieshtml'] = $this->categoriesHtml( $p_result->getCategories() );
+                       $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'categorieshtml';
                }
                if ( isset( $prop['links'] ) ) {
                        $result_array['links'] = $this->formatLinks( $p_result->getLinks() );
@@ -349,12 +340,8 @@ class ApiParse extends ApiBase {
                        }
 
                        if ( isset( $prop['headhtml'] ) ) {
-                               $result_array['headhtml'] = array();
-                               ApiResult::setContentValue(
-                                       $result_array['headhtml'],
-                                       'headhtml',
-                                       $context->getOutput()->headElement( $context->getSkin() )
-                               );
+                               $result_array['headhtml'] = $context->getOutput()->headElement( $context->getSkin() );
+                               $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'headhtml';
                        }
                }
 
@@ -366,11 +353,8 @@ class ApiParse extends ApiBase {
                }
 
                if ( isset( $prop['indicators'] ) ) {
-                       foreach ( $p_result->getIndicators() as $name => $content ) {
-                               $indicator = array( 'name' => $name );
-                               ApiResult::setContentValue( $indicator, 'content', $content );
-                               $result_array['indicators'][] = $indicator;
-                       }
+                       $result_array['indicators'] = (array)$p_result->getIndicators();
+                       ApiResult::setArrayType( $result_array['indicators'], 'BCkvp', 'name' );
                }
 
                if ( isset( $prop['iwlinks'] ) ) {
@@ -378,15 +362,16 @@ class ApiParse extends ApiBase {
                }
 
                if ( isset( $prop['wikitext'] ) ) {
-                       $result_array['wikitext'] = array();
-                       ApiResult::setContentValue( $result_array['wikitext'], 'wikitext', $this->content->serialize( $format ) );
+                       $result_array['wikitext'] = $this->content->serialize( $format );
+                       $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'wikitext';
                        if ( !is_null( $this->pstContent ) ) {
-                               $result_array['psttext'] = array();
-                               ApiResult::setContentValue( $result_array['psttext'], 'psttext', $this->pstContent->serialize( $format ) );
+                               $result_array['psttext'] = $this->pstContent->serialize( $format );
+                               $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'psttext';
                        }
                }
                if ( isset( $prop['properties'] ) ) {
-                       $result_array['properties'] = $this->formatProperties( $p_result->getProperties() );
+                       $result_array['properties'] = (array)$p_result->getProperties();
+                       ApiResult::setArrayType( $result_array['properties'], 'BCkvp', 'name' );
                }
 
                if ( isset( $prop['limitreportdata'] ) ) {
@@ -394,9 +379,8 @@ class ApiParse extends ApiBase {
                                $this->formatLimitReportData( $p_result->getLimitReportData() );
                }
                if ( isset( $prop['limitreporthtml'] ) ) {
-                       $limitreportHtml = EditPage::getPreviewLimitReport( $p_result );
-                       $result_array['limitreporthtml'] = array();
-                       ApiResult::setContentValue( $result_array['limitreporthtml'], 'limitreporthtml', $limitreportHtml );
+                       $result_array['limitreporthtml'] = EditPage::getPreviewLimitReport( $p_result );
+                       $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'limitreporthtml';
                }
 
                if ( $params['generatexml'] ) {
@@ -411,8 +395,8 @@ class ApiParse extends ApiBase {
                        } else {
                                $xml = $dom->__toString();
                        }
-                       $result_array['parsetree'] = array();
-                       ApiResult::setContentValue( $result_array['parsetree'], 'parsetree', $xml );
+                       $result_array['parsetree'] = $xml;
+                       $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'parsetree';
                }
 
                $result_mapping = array(
@@ -589,9 +573,9 @@ class ApiParse extends ApiBase {
                        $entry['sortkey'] = $sortkey;
                        ApiResult::setContentValue( $entry, 'category', $link );
                        if ( !isset( $hiddencats[$link] ) ) {
-                               $entry['missing'] = '';
+                               $entry['missing'] = true;
                        } elseif ( $hiddencats[$link] ) {
-                               $entry['hidden'] = '';
+                               $entry['hidden'] = true;
                        }
                        $result[] = $entry;
                }
@@ -613,9 +597,7 @@ class ApiParse extends ApiBase {
                                $entry = array();
                                $entry['ns'] = $ns;
                                ApiResult::setContentValue( $entry, 'title', Title::makeTitle( $ns, $title )->getFullText() );
-                               if ( $id != 0 ) {
-                                       $entry['exists'] = '';
-                               }
+                               $entry['exists'] = $id != 0;
                                $result[] = $entry;
                        }
                }
@@ -655,18 +637,6 @@ class ApiParse extends ApiBase {
                return $result;
        }
 
-       private function formatProperties( $properties ) {
-               $result = array();
-               foreach ( $properties as $name => $value ) {
-                       $entry = array();
-                       $entry['name'] = $name;
-                       ApiResult::setContentValue( $entry, 'value', $value );
-                       $result[] = $entry;
-               }
-
-               return $result;
-       }
-
        private function formatCss( $css ) {
                $result = array();
                foreach ( $css as $file => $link ) {
@@ -689,8 +659,7 @@ class ApiParse extends ApiBase {
                        if ( !is_array( $value ) ) {
                                $value = array( $value );
                        }
-                       ApiResult::setIndexedTagName( $value, 'param' );
-                       ApiResult::setIndexedTagNameOnSubarrays( $value, 'param' );
+                       ApiResult::setIndexedTagNameRecursive( $value, 'param' );
                        $entry = array_merge( $entry, $value );
                        $result[] = $entry;
                }
index 496db8f..c07aaca 100644 (file)
@@ -123,7 +123,7 @@ class ApiProtect extends ApiBase {
                        'reason' => $params['reason']
                );
                if ( $cascade ) {
-                       $res['cascade'] = '';
+                       $res['cascade'] = true;
                }
                $res['protections'] = $resultProtections;
                $result = $this->getResult();
index 67f7834..a22be49 100644 (file)
@@ -53,7 +53,7 @@ class ApiPurge extends ApiBase {
                        ApiQueryBase::addTitleInfo( $r, $title );
                        $page = WikiPage::factory( $title );
                        $page->doPurge(); // Directly purge and skip the UI part of purge().
-                       $r['purged'] = '';
+                       $r['purged'] = true;
 
                        if ( $forceLinkUpdate || $forceRecursiveLinkUpdate ) {
                                if ( !$this->getUser()->pingLimiter( 'linkpurge' ) ) {
@@ -74,7 +74,7 @@ class ApiPurge extends ApiBase {
                                                $title, null, $forceRecursiveLinkUpdate, $p_result );
                                        DataUpdate::runUpdates( $updates );
 
-                                       $r['linkupdate'] = '';
+                                       $r['linkupdate'] = true;
 
                                        if ( $enableParserCache ) {
                                                $pcache = ParserCache::singleton();
index b1069c7..082fccb 100644 (file)
@@ -403,18 +403,18 @@ class ApiQuery extends ApiBase {
                foreach ( $pageSet->getMissingTitles() as $fakeId => $title ) {
                        $vals = array();
                        ApiQueryBase::addTitleInfo( $vals, $title );
-                       $vals['missing'] = '';
+                       $vals['missing'] = true;
                        $pages[$fakeId] = $vals;
                }
                // Report any invalid titles
                foreach ( $pageSet->getInvalidTitles() as $fakeId => $title ) {
-                       $pages[$fakeId] = array( 'title' => $title, 'invalid' => '' );
+                       $pages[$fakeId] = array( 'title' => $title, 'invalid' => true );
                }
                // Report any missing page ids
                foreach ( $pageSet->getMissingPageIDs() as $pageid ) {
                        $pages[$pageid] = array(
                                'pageid' => $pageid,
-                               'missing' => ''
+                               'missing' => true
                        );
                }
                // Report special pages
@@ -422,15 +422,15 @@ class ApiQuery extends ApiBase {
                foreach ( $pageSet->getSpecialTitles() as $fakeId => $title ) {
                        $vals = array();
                        ApiQueryBase::addTitleInfo( $vals, $title );
-                       $vals['special'] = '';
+                       $vals['special'] = true;
                        if ( $title->isSpecialPage() &&
                                !SpecialPageFactory::exists( $title->getDBkey() )
                        ) {
-                               $vals['missing'] = '';
+                               $vals['missing'] = true;
                        } elseif ( $title->getNamespace() == NS_MEDIA &&
                                !wfFindFile( $title )
                        ) {
-                               $vals['missing'] = '';
+                               $vals['missing'] = true;
                        }
                        $pages[$fakeId] = $vals;
                }
@@ -445,6 +445,7 @@ class ApiQuery extends ApiBase {
 
                if ( count( $pages ) ) {
                        $pageSet->populateGeneratorData( $pages );
+                       ApiResult::setArrayType( $pages, 'BCarray' );
 
                        if ( $this->mParams['indexpageids'] ) {
                                $pageIDs = array_keys( $pages );
@@ -525,9 +526,8 @@ class ApiQuery extends ApiBase {
                        $result->addValue( null, 'text', $exportxml, ApiResult::NO_SIZE_CHECK );
                        $result->addValue( null, 'mime', 'text/xml', ApiResult::NO_SIZE_CHECK );
                } else {
-                       $r = array();
-                       ApiResult::setContentValue( $r, 'xml', $exportxml );
-                       $result->addValue( 'query', 'export', $r, ApiResult::NO_SIZE_CHECK );
+                       $result->addValue( 'query', 'export', $exportxml, ApiResult::NO_SIZE_CHECK );
+                       $result->addValue( 'query', ApiResult::META_BC_SUBELEMENTS, array( 'export' ) );
                }
        }
 
index 4ecc4b7..cc0b71a 100644 (file)
@@ -135,8 +135,8 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
                                        $item['files'] = intval( $row->cat_files );
                                        $item['subcats'] = intval( $row->cat_subcats );
                                }
-                               if ( isset( $prop['hidden'] ) && $row->cat_hidden ) {
-                                       $item['hidden'] = '';
+                               if ( isset( $prop['hidden'] ) ) {
+                                       $item['hidden'] = (bool)$row->cat_hidden;
                                }
                                $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $item );
                                if ( !$fit ) {
index 1a4a4d9..fadecfb 100644 (file)
@@ -200,7 +200,9 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                        }
 
                        if ( is_null( $resultPageSet ) ) {
-                               $vals = array();
+                               $vals = array(
+                                       ApiResult::META_TYPE => 'assoc',
+                               );
                                if ( $fld_ids ) {
                                        $vals['fromid'] = intval( $row->pl_from );
                                }
index 00816a3..44af83d 100644 (file)
@@ -146,7 +146,7 @@ class ApiQueryAllMessages extends ApiQueryBase {
                                        $messageIsCustomised = isset( $customisedMessages['pages'][$langObj->ucfirst( $message )] );
                                        if ( $customised === $messageIsCustomised ) {
                                                if ( $customised ) {
-                                                       $a['customised'] = '';
+                                                       $a['customised'] = true;
                                                }
                                        } else {
                                                continue;
@@ -156,7 +156,7 @@ class ApiQueryAllMessages extends ApiQueryBase {
                                $msg = wfMessage( $message, $args )->inLanguage( $langObj );
 
                                if ( !$msg->exists() ) {
-                                       $a['missing'] = '';
+                                       $a['missing'] = true;
                                } else {
                                        // Check if the parser is enabled:
                                        if ( $params['enableparser'] ) {
@@ -170,7 +170,7 @@ class ApiQueryAllMessages extends ApiQueryBase {
                                        if ( isset( $prop['default'] ) ) {
                                                $default = wfMessage( $message )->inLanguage( $langObj )->useDatabase( false );
                                                if ( !$default->exists() ) {
-                                                       $a['defaultmissing'] = '';
+                                                       $a['defaultmissing'] = true;
                                                } elseif ( $default->plain() != $msgString ) {
                                                        $a['default'] = $default->plain();
                                                }
index 8c9e1ba..d7354e2 100644 (file)
@@ -253,7 +253,7 @@ class ApiQueryAllUsers extends ApiQueryBase {
                                $data['blockexpiry'] = $row->ipb_expiry;
                        }
                        if ( $row->ipb_deleted ) {
-                               $data['hidden'] = '';
+                               $data['hidden'] = true;
                        }
                        if ( $fld_editcount ) {
                                $data['editcount'] = intval( $row->user_editcount );
index 92cf62d..1df14e0 100644 (file)
@@ -194,7 +194,7 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                                $a = array( 'pageid' => intval( $row->page_id ) );
                                ApiQueryBase::addTitleInfo( $a, $t );
                                if ( $row->page_is_redirect ) {
-                                       $a['redirect'] = '';
+                                       $a['redirect'] = true;
                                }
                                // Put all the results in an array first
                                $this->resultArr[$a['pageid']] = $a;
@@ -313,7 +313,7 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                                $a['pageid'] = intval( $row->page_id );
                                ApiQueryBase::addTitleInfo( $a, Title::makeTitle( $row->page_namespace, $row->page_title ) );
                                if ( $row->page_is_redirect ) {
-                                       $a['redirect'] = '';
+                                       $a['redirect'] = true;
                                }
                                $parentID = $this->pageMap[$ns][$row->{$this->bl_title}];
                                // Put all the results in an array first
index b4752ae..8e271e7 100644 (file)
@@ -287,8 +287,8 @@ class ApiQueryBacklinksprop extends ApiQueryGeneratorBase {
                                if ( $fld_fragment && $row->rd_fragment !== null && $row->rd_fragment !== '' ) {
                                        $vals['fragment'] = $row->rd_fragment;
                                }
-                               if ( $fld_redirect && $row->page_is_redirect ) {
-                                       $vals['redirect'] = '';
+                               if ( $fld_redirect ) {
+                                       $vals['redirect'] = (bool)$row->page_is_redirect;
                                }
                                $fit = $this->addPageSubItem( $id, $vals );
                                if ( !$fit ) {
index 72e4fef..4a7023b 100644 (file)
@@ -187,7 +187,9 @@ class ApiQueryBlocks extends ApiQueryBase {
                                $this->setContinueEnumParameter( 'continue', "$row->ipb_timestamp|$row->ipb_id" );
                                break;
                        }
-                       $block = array();
+                       $block = array(
+                               ApiResult::META_TYPE => 'assoc',
+                       );
                        if ( $fld_id ) {
                                $block['id'] = $row->ipb_id;
                        }
@@ -218,27 +220,13 @@ class ApiQueryBlocks extends ApiQueryBase {
                        }
                        if ( $fld_flags ) {
                                // For clarity, these flags use the same names as their action=block counterparts
-                               if ( $row->ipb_auto ) {
-                                       $block['automatic'] = '';
-                               }
-                               if ( $row->ipb_anon_only ) {
-                                       $block['anononly'] = '';
-                               }
-                               if ( $row->ipb_create_account ) {
-                                       $block['nocreate'] = '';
-                               }
-                               if ( $row->ipb_enable_autoblock ) {
-                                       $block['autoblock'] = '';
-                               }
-                               if ( $row->ipb_block_email ) {
-                                       $block['noemail'] = '';
-                               }
-                               if ( $row->ipb_deleted ) {
-                                       $block['hidden'] = '';
-                               }
-                               if ( $row->ipb_allow_usertalk ) {
-                                       $block['allowusertalk'] = '';
-                               }
+                               $block['automatic'] = (bool)$row->ipb_auto;
+                               $block['anononly'] = (bool)$row->ipb_anon_only;
+                               $block['nocreate'] = (bool)$row->ipb_create_account;
+                               $block['autoblock'] = (bool)$row->ipb_enable_autoblock;
+                               $block['noemail'] = (bool)$row->ipb_block_email;
+                               $block['hidden'] = (bool)$row->ipb_deleted;
+                               $block['allowusertalk'] = (bool)$row->ipb_allow_usertalk;
                        }
                        $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $block );
                        if ( !$fit ) {
index 6aa714e..35fa56e 100644 (file)
@@ -150,8 +150,8 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
                                if ( isset( $prop['timestamp'] ) ) {
                                        $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $row->cl_timestamp );
                                }
-                               if ( isset( $prop['hidden'] ) && !is_null( $row->pp_propname ) ) {
-                                       $vals['hidden'] = '';
+                               if ( isset( $prop['hidden'] ) ) {
+                                       $vals['hidden'] = !is_null( $row->pp_propname );
                                }
 
                                $fit = $this->addPageSubItem( $row->cl_from, $vals );
index 5c67ebf..9f6c604 100644 (file)
@@ -86,9 +86,7 @@ class ApiQueryCategoryInfo extends ApiQueryBase {
                        $vals['pages'] = $row->cat_pages - $row->cat_subcats - $row->cat_files;
                        $vals['files'] = intval( $row->cat_files );
                        $vals['subcats'] = intval( $row->cat_subcats );
-                       if ( $row->cat_hidden ) {
-                               $vals['hidden'] = '';
-                       }
+                       $vals['hidden'] = (bool)$row->cat_hidden;
                        $fit = $this->addPageSubItems( $catids[$row->cat_title], $vals );
                        if ( !$fit ) {
                                $this->setContinueEnumParameter( 'continue', $row->cat_title );
index 82ab939..ec0c1d1 100644 (file)
@@ -246,7 +246,9 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
                        }
 
                        if ( is_null( $resultPageSet ) ) {
-                               $vals = array();
+                               $vals = array(
+                                       ApiResult::META_TYPE => 'assoc',
+                               );
                                if ( $fld_ids ) {
                                        $vals['pageid'] = intval( $row->page_id );
                                }
index b2c59d8..72a331f 100644 (file)
@@ -320,7 +320,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                        }
                        if ( $fld_user || $fld_userid ) {
                                if ( $row->ar_deleted & Revision::DELETED_USER ) {
-                                       $rev['userhidden'] = '';
+                                       $rev['userhidden'] = true;
                                        $anyHidden = true;
                                }
                                if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_USER, $user ) ) {
@@ -335,7 +335,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
 
                        if ( $fld_comment || $fld_parsedcomment ) {
                                if ( $row->ar_deleted & Revision::DELETED_COMMENT ) {
-                                       $rev['commenthidden'] = '';
+                                       $rev['commenthidden'] = true;
                                        $anyHidden = true;
                                }
                                if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_COMMENT, $user ) ) {
@@ -349,15 +349,15 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                                }
                        }
 
-                       if ( $fld_minor && $row->ar_minor_edit == 1 ) {
-                               $rev['minor'] = '';
+                       if ( $fld_minor ) {
+                               $rev['minor'] = $row->ar_minor_edit == 1;
                        }
                        if ( $fld_len ) {
                                $rev['len'] = $row->ar_len;
                        }
                        if ( $fld_sha1 ) {
                                if ( $row->ar_deleted & Revision::DELETED_TEXT ) {
-                                       $rev['sha1hidden'] = '';
+                                       $rev['sha1hidden'] = true;
                                        $anyHidden = true;
                                }
                                if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_TEXT, $user ) ) {
@@ -370,7 +370,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                        }
                        if ( $fld_content ) {
                                if ( $row->ar_deleted & Revision::DELETED_TEXT ) {
-                                       $rev['texthidden'] = '';
+                                       $rev['texthidden'] = true;
                                        $anyHidden = true;
                                }
                                if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_TEXT, $user ) ) {
@@ -394,7 +394,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                        }
 
                        if ( $anyHidden && ( $row->ar_deleted & Revision::DELETED_RESTRICTED ) ) {
-                               $rev['suppressed'] = '';
+                               $rev['suppressed'] = true;
                        }
 
                        if ( !isset( $pageMap[$row->ar_namespace][$row->ar_title] ) ) {
index 010f8d5..4d0bcfe 100644 (file)
@@ -137,11 +137,9 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
                                        $r = array(
                                                'name' => $dupName,
                                                'user' => $dupFile->getUser( 'text' ),
-                                               'timestamp' => wfTimestamp( TS_ISO_8601, $dupFile->getTimestamp() )
+                                               'timestamp' => wfTimestamp( TS_ISO_8601, $dupFile->getTimestamp() ),
+                                               'shared' => !$dupFile->isLocal(),
                                        );
-                                       if ( !$dupFile->isLocal() ) {
-                                               $r['shared'] = '';
-                                       }
                                        $fit = $this->addPageSubItem( $pageId, $r );
                                        if ( !$fit ) {
                                                $this->setContinueEnumParameter( 'continue', $image . '|' . $dupName );
index a26eff2..3f65a19 100644 (file)
@@ -112,7 +112,9 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
                        }
 
                        if ( is_null( $resultPageSet ) ) {
-                               $vals = array();
+                               $vals = array(
+                                       ApiResult::META_TYPE => 'assoc',
+                               );
                                if ( $fld_ids ) {
                                        $vals['pageid'] = intval( $row->page_id );
                                }
index 8896140..9ad7e27 100644 (file)
@@ -56,6 +56,8 @@ class ApiQueryFileRepoInfo extends ApiQueryBase {
 
                $result = $this->getResult();
                ApiResult::setIndexedTagName( $repos, 'repo' );
+               ApiResult::setArrayTypeRecursive( $repos, 'assoc' );
+               ApiResult::setArrayType( $repos, 'array' );
                $result->addValue( array( 'query' ), 'repos', $repos );
        }
 
index cba3b73..4d357a7 100644 (file)
@@ -218,17 +218,17 @@ class ApiQueryFilearchive extends ApiQueryBase {
                        }
 
                        if ( $row->fa_deleted & File::DELETED_FILE ) {
-                               $file['filehidden'] = '';
+                               $file['filehidden'] = true;
                        }
                        if ( $row->fa_deleted & File::DELETED_COMMENT ) {
-                               $file['commenthidden'] = '';
+                               $file['commenthidden'] = true;
                        }
                        if ( $row->fa_deleted & File::DELETED_USER ) {
-                               $file['userhidden'] = '';
+                               $file['userhidden'] = true;
                        }
                        if ( $row->fa_deleted & File::DELETED_RESTRICTED ) {
                                // This file is deleted for normal admins
-                               $file['suppressed'] = '';
+                               $file['suppressed'] = true;
                        }
 
                        $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $file );
index 61928c3..618387d 100644 (file)
@@ -132,7 +132,7 @@ class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
                                ApiQueryBase::addTitleInfo( $entry, $title );
 
                                if ( $row->page_is_redirect ) {
-                                       $entry['redirect'] = '';
+                                       $entry['redirect'] = true;
                                }
 
                                if ( $iwprefix ) {
index d5da495..94b4bbd 100644 (file)
@@ -373,7 +373,9 @@ class ApiQueryImageInfo extends ApiQueryBase {
                        );
                }
                $version = $opts['version'];
-               $vals = array();
+               $vals = array(
+                       ApiResult::META_TYPE => 'assoc',
+               );
                // Timestamp is shown even if the file is revdelete'd in interface
                // so do same here.
                if ( isset( $prop['timestamp'] ) ) {
@@ -397,7 +399,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
 
                if ( $user || $userid ) {
                        if ( $file->isDeleted( File::DELETED_USER ) ) {
-                               $vals['userhidden'] = '';
+                               $vals['userhidden'] = true;
                                $anyHidden = true;
                        }
                        if ( $canShowField( File::DELETED_USER ) ) {
@@ -408,7 +410,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                        $vals['userid'] = $file->getUser( 'id' );
                                }
                                if ( !$file->getUser( 'id' ) ) {
-                                       $vals['anon'] = '';
+                                       $vals['anon'] = true;
                                }
                        }
                }
@@ -438,7 +440,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
 
                if ( $pcomment || $comment ) {
                        if ( $file->isDeleted( File::DELETED_COMMENT ) ) {
-                               $vals['commenthidden'] = '';
+                               $vals['commenthidden'] = true;
                                $anyHidden = true;
                        }
                        if ( $canShowField( File::DELETED_COMMENT ) ) {
@@ -469,7 +471,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                }
 
                if ( $file->isDeleted( File::DELETED_FILE ) ) {
-                       $vals['filehidden'] = '';
+                       $vals['filehidden'] = true;
                        $anyHidden = true;
                }
 
index db28df7..66178d4 100644 (file)
@@ -395,10 +395,10 @@ class ApiQueryInfo extends ApiQueryBase {
                        $pageInfo['length'] = intval( $this->pageLength[$pageid] );
 
                        if ( isset( $this->pageIsRedir[$pageid] ) && $this->pageIsRedir[$pageid] ) {
-                               $pageInfo['redirect'] = '';
+                               $pageInfo['redirect'] = true;
                        }
                        if ( $this->pageIsNew[$pageid] ) {
-                               $pageInfo['new'] = '';
+                               $pageInfo['new'] = true;
                        }
                }
 
@@ -431,8 +431,8 @@ class ApiQueryInfo extends ApiQueryBase {
                        ApiResult::setIndexedTagName( $pageInfo['restrictiontypes'], 'rt' );
                }
 
-               if ( $this->fld_watched && isset( $this->watched[$ns][$dbkey] ) ) {
-                       $pageInfo['watched'] = '';
+               if ( $this->fld_watched ) {
+                       $pageInfo['watched'] = isset( $this->watched[$ns][$dbkey] );
                }
 
                if ( $this->fld_watchers ) {
@@ -464,8 +464,8 @@ class ApiQueryInfo extends ApiQueryBase {
                        $pageInfo['editurl'] = wfExpandUrl( $title->getFullURL( 'action=edit' ), PROTO_CURRENT );
                        $pageInfo['canonicalurl'] = wfExpandUrl( $title->getFullURL(), PROTO_CANONICAL );
                }
-               if ( $this->fld_readable && $title->userCan( 'read', $this->getUser() ) ) {
-                       $pageInfo['readable'] = '';
+               if ( $this->fld_readable ) {
+                       $pageInfo['readable'] = $title->userCan( 'read', $this->getUser() );
                }
 
                if ( $this->fld_preload ) {
@@ -497,9 +497,7 @@ class ApiQueryInfo extends ApiQueryBase {
                        $pageInfo['actions'] = array();
                        foreach ( $this->params['testactions'] as $action ) {
                                $this->countTestedActions++;
-                               if ( $title->userCan( $action, $user ) ) {
-                                       $pageInfo['actions'][$action] = '';
-                               }
+                               $pageInfo['actions'][$action] = $title->userCan( $action, $user );
                        }
                }
 
@@ -532,7 +530,7 @@ class ApiQueryInfo extends ApiQueryBase {
                                        'expiry' => $wgContLang->formatExpiry( $row->pr_expiry, TS_ISO_8601 )
                                );
                                if ( $row->pr_cascade ) {
-                                       $a['cascade'] = '';
+                                       $a['cascade'] = true;
                                }
                                $this->protections[$title->getNamespace()][$title->getDBkey()][] = $a;
                        }
index 885d10c..7be18b2 100644 (file)
@@ -131,7 +131,7 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase {
                                ApiQueryBase::addTitleInfo( $entry, $title );
 
                                if ( $row->page_is_redirect ) {
-                                       $entry['redirect'] = '';
+                                       $entry['redirect'] = true;
                                }
 
                                if ( $lllang ) {
index 553747e..7b2381f 100644 (file)
@@ -230,9 +230,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        }
 
                        $vals = $this->extractRowInfo( $row );
-                       if ( !$vals ) {
-                               continue;
-                       }
                        $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $vals );
                        if ( !$fit ) {
                                $this->setContinueEnumParameter( 'continue', "$row->log_timestamp|$row->log_id" );
@@ -270,7 +267,9 @@ class ApiQueryLogEvents extends ApiQueryBase {
 
        private function extractRowInfo( $row ) {
                $logEntry = DatabaseLogEntry::newFromRow( $row );
-               $vals = array();
+               $vals = array(
+                       ApiResult::META_TYPE => 'assoc',
+               );
                $anyHidden = false;
                $user = $this->getUser();
 
@@ -284,7 +283,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
 
                if ( $this->fld_title || $this->fld_ids || $this->fld_details && $row->log_params !== '' ) {
                        if ( LogEventsList::isDeleted( $row, LogPage::DELETED_ACTION ) ) {
-                               $vals['actionhidden'] = '';
+                               $vals['actionhidden'] = true;
                                $anyHidden = true;
                        }
                        if ( LogEventsList::userCan( $row, LogPage::DELETED_ACTION, $user ) ) {
@@ -308,7 +307,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
 
                if ( $this->fld_user || $this->fld_userid ) {
                        if ( LogEventsList::isDeleted( $row, LogPage::DELETED_USER ) ) {
-                               $vals['userhidden'] = '';
+                               $vals['userhidden'] = true;
                                $anyHidden = true;
                        }
                        if ( LogEventsList::userCan( $row, LogPage::DELETED_USER, $user ) ) {
@@ -320,7 +319,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
                                }
 
                                if ( !$row->log_user ) {
-                                       $vals['anon'] = '';
+                                       $vals['anon'] = true;
                                }
                        }
                }
@@ -330,7 +329,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
 
                if ( ( $this->fld_comment || $this->fld_parsedcomment ) && isset( $row->log_comment ) ) {
                        if ( LogEventsList::isDeleted( $row, LogPage::DELETED_COMMENT ) ) {
-                               $vals['commenthidden'] = '';
+                               $vals['commenthidden'] = true;
                                $anyHidden = true;
                        }
                        if ( LogEventsList::userCan( $row, LogPage::DELETED_COMMENT, $user ) ) {
@@ -355,7 +354,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
                }
 
                if ( $anyHidden && LogEventsList::isDeleted( $row, LogPage::DELETED_RESTRICTED ) ) {
-                       $vals['suppressed'] = '';
+                       $vals['suppressed'] = true;
                }
 
                return $vals;
index 269afb1..dd19bf2 100644 (file)
@@ -110,6 +110,7 @@ class ApiQueryPageProps extends ApiQueryBase {
         * @return bool True if it fits in the result
         */
        private function addPageProps( $result, $page, $props ) {
+               ApiResult::setArrayType( $props, 'assoc' );
                $fit = $result->addValue( array( 'query', 'pages', $page ), 'pageprops', $props );
 
                if ( !$fit ) {
index 143bc06..7bcaf24 100644 (file)
@@ -99,7 +99,9 @@ class ApiQueryPagesWithProp extends ApiQueryGeneratorBase {
                        }
 
                        if ( $resultPageSet === null ) {
-                               $vals = array();
+                               $vals = array(
+                                       ApiResult::META_TYPE => 'assoc',
+                               );
                                if ( $fld_ids ) {
                                        $vals['pageid'] = (int)$row->page_id;
                                }
index 35942ca..8eb644f 100644 (file)
@@ -69,7 +69,7 @@ class ApiQueryPrefixSearch extends ApiQueryGeneratorBase {
                                        'title' => $title->getPrefixedText(),
                                );
                                if ( $title->isSpecialPage() ) {
-                                       $vals['special'] = '';
+                                       $vals['special'] = true;
                                } else {
                                        $vals['pageid'] = intval( $title->getArticleId() );
                                }
index 062a44f..650ac8f 100644 (file)
@@ -68,9 +68,9 @@ class ApiQueryQueryPage extends ApiQueryGeneratorBase {
                $r = array( 'name' => $params['page'] );
                if ( $qp->isCached() ) {
                        if ( !$qp->isCacheable() ) {
-                               $r['disabled'] = '';
+                               $r['disabled'] = true;
                        } else {
-                               $r['cached'] = '';
+                               $r['cached'] = true;
                                $ts = $qp->getCachedTimestamp();
                                if ( $ts ) {
                                        $r['cachedtimestamp'] = wfTimestamp( TS_ISO_8601, $ts );
index 28f8b7d..f6a6478 100644 (file)
@@ -384,9 +384,6 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                $vals = $this->extractRowInfo( $row );
 
                                /* Add that row's data to our final output. */
-                               if ( !$vals ) {
-                                       continue;
-                               }
                                $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $vals );
                                if ( !$fit ) {
                                        $this->setContinueEnumParameter( 'continue', "$row->rc_timestamp|$row->rc_id" );
@@ -428,7 +425,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                /* Create a new entry in the result for the title. */
                if ( $this->fld_title || $this->fld_ids ) {
                        if ( $type === RC_LOG && ( $row->rc_deleted & LogPage::DELETED_ACTION ) ) {
-                               $vals['actionhidden'] = '';
+                               $vals['actionhidden'] = true;
                                $anyHidden = true;
                        }
                        if ( $type !== RC_LOG ||
@@ -452,7 +449,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                /* Add user data and 'anon' flag, if user is anonymous. */
                if ( $this->fld_user || $this->fld_userid ) {
                        if ( $row->rc_deleted & Revision::DELETED_USER ) {
-                               $vals['userhidden'] = '';
+                               $vals['userhidden'] = true;
                                $anyHidden = true;
                        }
                        if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_USER, $user ) ) {
@@ -465,22 +462,16 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                }
 
                                if ( !$row->rc_user ) {
-                                       $vals['anon'] = '';
+                                       $vals['anon'] = true;
                                }
                        }
                }
 
                /* Add flags, such as new, minor, bot. */
                if ( $this->fld_flags ) {
-                       if ( $row->rc_bot ) {
-                               $vals['bot'] = '';
-                       }
-                       if ( $row->rc_type == RC_NEW ) {
-                               $vals['new'] = '';
-                       }
-                       if ( $row->rc_minor ) {
-                               $vals['minor'] = '';
-                       }
+                       $vals['bot'] = (bool)$row->rc_bot;
+                       $vals['new'] = $row->rc_type == RC_NEW;
+                       $vals['minor'] = (bool)$row->rc_minor;
                }
 
                /* Add sizes of each revision. (Only available on 1.10+) */
@@ -497,7 +488,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                /* Add edit summary / log summary. */
                if ( $this->fld_comment || $this->fld_parsedcomment ) {
                        if ( $row->rc_deleted & Revision::DELETED_COMMENT ) {
-                               $vals['commenthidden'] = '';
+                               $vals['commenthidden'] = true;
                                $anyHidden = true;
                        }
                        if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_COMMENT, $user ) ) {
@@ -512,23 +503,18 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                }
 
                if ( $this->fld_redirect ) {
-                       if ( $row->page_is_redirect ) {
-                               $vals['redirect'] = '';
-                       }
+                       $vals['redirect'] = (bool)$row->page_is_redirect;
                }
 
                /* Add the patrolled flag */
-               if ( $this->fld_patrolled && $row->rc_patrolled == 1 ) {
-                       $vals['patrolled'] = '';
-               }
-
-               if ( $this->fld_patrolled && ChangesList::isUnpatrolled( $row, $user ) ) {
-                       $vals['unpatrolled'] = '';
+               if ( $this->fld_patrolled ) {
+                       $vals['patrolled'] = $row->rc_patrolled == 1;
+                       $vals['unpatrolled'] = ChangesList::isUnpatrolled( $row, $user );
                }
 
                if ( $this->fld_loginfo && $row->rc_type == RC_LOG ) {
                        if ( $row->rc_deleted & LogPage::DELETED_ACTION ) {
-                               $vals['actionhidden'] = '';
+                               $vals['actionhidden'] = true;
                                $anyHidden = true;
                        }
                        if ( LogEventsList::userCanBitfield( $row->rc_deleted, LogPage::DELETED_ACTION, $user ) ) {
@@ -551,7 +537,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
 
                if ( $this->fld_sha1 && $row->rev_sha1 !== null ) {
                        if ( $row->rev_deleted & Revision::DELETED_TEXT ) {
-                               $vals['sha1hidden'] = '';
+                               $vals['sha1hidden'] = true;
                                $anyHidden = true;
                        }
                        if ( Revision::userCanBitfield( $row->rev_deleted, Revision::DELETED_TEXT, $user ) ) {
@@ -577,7 +563,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                }
 
                if ( $anyHidden && ( $row->rc_deleted & Revision::DELETED_RESTRICTED ) ) {
-                       $vals['suppressed'] = '';
+                       $vals['suppressed'] = true;
                }
 
                return $vals;
index 1805f40..64f6120 100644 (file)
@@ -168,13 +168,13 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
                        }
                }
 
-               if ( $this->fld_flags && $revision->isMinor() ) {
-                       $vals['minor'] = '';
+               if ( $this->fld_flags ) {
+                       $vals['minor'] = $revision->isMinor();
                }
 
                if ( $this->fld_user || $this->fld_userid ) {
                        if ( $revision->isDeleted( Revision::DELETED_USER ) ) {
-                               $vals['userhidden'] = '';
+                               $vals['userhidden'] = true;
                                $anyHidden = true;
                        }
                        if ( $revision->userCan( Revision::DELETED_USER, $user ) ) {
@@ -183,7 +183,7 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
                                }
                                $userid = $revision->getUser( Revision::RAW );
                                if ( !$userid ) {
-                                       $vals['anon'] = '';
+                                       $vals['anon'] = true;
                                }
 
                                if ( $this->fld_userid ) {
@@ -206,7 +206,7 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
 
                if ( $this->fld_sha1 ) {
                        if ( $revision->isDeleted( Revision::DELETED_TEXT ) ) {
-                               $vals['sha1hidden'] = '';
+                               $vals['sha1hidden'] = true;
                                $anyHidden = true;
                        }
                        if ( $revision->userCan( Revision::DELETED_TEXT, $user ) ) {
@@ -224,7 +224,7 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
 
                if ( $this->fld_comment || $this->fld_parsedcomment ) {
                        if ( $revision->isDeleted( Revision::DELETED_COMMENT ) ) {
-                               $vals['commenthidden'] = '';
+                               $vals['commenthidden'] = true;
                                $anyHidden = true;
                        }
                        if ( $revision->userCan( Revision::DELETED_COMMENT, $user ) ) {
@@ -267,10 +267,10 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
                                }
                        }
                        if ( $revision->isDeleted( Revision::DELETED_TEXT ) ) {
-                               $vals['texthidden'] = '';
+                               $vals['texthidden'] = true;
                                $anyHidden = true;
                        } elseif ( !$content ) {
-                               $vals['textmissing'] = '';
+                               $vals['textmissing'] = true;
                        }
                }
                if ( $this->fld_content && $content ) {
@@ -293,7 +293,7 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
                                        }
                                        $vals['parsetree'] = $xml;
                                } else {
-                                       $vals['badcontentformatforparsetree'] = '';
+                                       $vals['badcontentformatforparsetree'] = true;
                                        $this->setWarning( "Conversion to XML is supported for wikitext only, " .
                                                $title->getPrefixedDBkey() .
                                                " uses content model " . $content->getModel() );
@@ -314,7 +314,7 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
                                        $this->setWarning( "Template expansion is supported for wikitext only, " .
                                                $title->getPrefixedDBkey() .
                                                " uses content model " . $content->getModel() );
-                                       $vals['badcontentformat'] = '';
+                                       $vals['badcontentformat'] = true;
                                        $text = false;
                                }
                        }
@@ -335,7 +335,7 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
                                        $name = $title->getPrefixedDBkey();
                                        $this->setWarning( "The requested format {$this->contentFormat} is not " .
                                                "supported for content model $model used by $name" );
-                                       $vals['badcontentformat'] = '';
+                                       $vals['badcontentformat'] = true;
                                        $text = false;
                                } else {
                                        $text = $content->serialize( $format );
@@ -369,7 +369,7 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
                                                $name = $title->getPrefixedDBkey();
                                                $this->setWarning( "The requested format {$this->contentFormat} is not " .
                                                        "supported for content model $model used by $name" );
-                                               $vals['diff']['badcontentformat'] = '';
+                                               $vals['diff']['badcontentformat'] = true;
                                                $engine = null;
                                        } else {
                                                $difftocontent = ContentHandler::makeContent(
@@ -395,12 +395,12 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
                                        }
                                }
                        } else {
-                               $vals['diff']['notcached'] = '';
+                               $vals['diff']['notcached'] = true;
                        }
                }
 
                if ( $anyHidden && $revision->isDeleted( Revision::DELETED_RESTRICTED ) ) {
-                       $vals['suppressed'] = '';
+                       $vals['suppressed'] = true;
                }
 
                return $vals;
index 22447f7..b81e993 100644 (file)
@@ -150,9 +150,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                $allowFrom = array( '' );
                $allowException = true;
                if ( !$config->get( 'AllowExternalImages' ) ) {
-                       if ( $config->get( 'EnableImageWhitelist' ) ) {
-                               $data['imagewhitelistenabled'] = '';
-                       }
+                       $data['imagewhitelistenabled'] = (bool)$config->get( 'EnableImageWhitelist' );
                        $allowFrom = $config->get( 'AllowExternalImagesFrom' );
                        $allowException = !empty( $allowFrom );
                }
@@ -161,13 +159,8 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                        ApiResult::setIndexedTagName( $data['externalimages'], 'prefix' );
                }
 
-               if ( !$config->get( 'DisableLangConversion' ) ) {
-                       $data['langconversion'] = '';
-               }
-
-               if ( !$config->get( 'DisableTitleConversion' ) ) {
-                       $data['titleconversion'] = '';
-               }
+               $data['langconversion'] = !$config->get( 'DisableLangConversion' );
+               $data['titleconversion'] = !$config->get( 'DisableTitleConversion' );
 
                if ( $wgContLang->linkPrefixExtension() ) {
                        $linkPrefixCharset = $wgContLang->linkPrefixCharset();
@@ -180,11 +173,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                }
 
                $linktrail = $wgContLang->linkTrail();
-               if ( $linktrail ) {
-                       $data['linktrail'] = $linktrail;
-               } else {
-                       $data['linktrail'] = '';
-               }
+               $data['linktrail'] = $linktrail ?: '';
 
                $data['legaltitlechars'] = Title::legalChars();
 
@@ -224,18 +213,14 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                        ApiResult::setIndexedTagName( $data['variants'], 'lang' );
                }
 
-               if ( $wgContLang->isRTL() ) {
-                       $data['rtl'] = '';
-               }
+               $data['rtl'] = $wgContLang->isRTL();
                $data['fallback8bitEncoding'] = $wgContLang->fallback8bitEncoding();
 
-               if ( wfReadOnly() ) {
-                       $data['readonly'] = '';
+               $data['readonly'] = wfReadOnly();
+               if ( $data['readonly'] ) {
                        $data['readonlyreason'] = wfReadOnlyReason();
                }
-               if ( $config->get( 'EnableWriteAPI' ) ) {
-                       $data['writeapi'] = '';
-               }
+               $data['writeapi'] = (bool)$config->get( 'EnableWriteAPI' );
 
                $tz = $config->get( 'Localtimezone' );
                $offset = $config->get( 'LocalTZoffset' );
@@ -251,20 +236,21 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                $data['scriptpath'] = $config->get( 'ScriptPath' );
                $data['script'] = $config->get( 'Script' );
                $data['variantarticlepath'] = $config->get( 'VariantArticlePath' );
+               $data[ApiResult::META_BC_BOOLS][] = 'variantarticlepath';
                $data['server'] = $config->get( 'Server' );
                $data['servername'] = $config->get( 'ServerName' );
                $data['wikiid'] = wfWikiID();
                $data['time'] = wfTimestamp( TS_ISO_8601, time() );
 
-               if ( $config->get( 'MiserMode' ) ) {
-                       $data['misermode'] = '';
-               }
+               $data['misermode'] = (bool)$config->get( 'MiserMode' );
 
                $data['maxuploadsize'] = UploadBase::getMaxUploadSize();
 
                $data['thumblimits'] = $config->get( 'ThumbLimits' );
+               ApiResult::setArrayType( $data['thumblimits'], 'BCassoc' );
                ApiResult::setIndexedTagName( $data['thumblimits'], 'limit' );
                $data['imagelimits'] = array();
+               ApiResult::setArrayType( $data['imagelimits'], 'BCassoc' );
                ApiResult::setIndexedTagName( $data['imagelimits'], 'limit' );
                foreach ( $config->get( 'ImageLimits' ) as $k => $limit ) {
                        $data['imagelimits'][$k] = array( 'width' => $limit[0], 'height' => $limit[1] );
@@ -284,7 +270,9 @@ class ApiQuerySiteinfo extends ApiQueryBase {
 
        protected function appendNamespaces( $property ) {
                global $wgContLang;
-               $data = array();
+               $data = array(
+                       ApiResult::META_TYPE => 'assoc',
+               );
                foreach ( $wgContLang->getFormattedNamespaces() as $ns => $title ) {
                        $data[$ns] = array(
                                'id' => intval( $ns ),
@@ -293,21 +281,14 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                        ApiResult::setContentValue( $data[$ns], 'name', $title );
                        $canonical = MWNamespace::getCanonicalName( $ns );
 
-                       if ( MWNamespace::hasSubpages( $ns ) ) {
-                               $data[$ns]['subpages'] = '';
-                       }
+                       $data[$ns]['subpages'] = MWNamespace::hasSubpages( $ns );
 
                        if ( $canonical ) {
                                $data[$ns]['canonical'] = strtr( $canonical, '_', ' ' );
                        }
 
-                       if ( MWNamespace::isContent( $ns ) ) {
-                               $data[$ns]['content'] = '';
-                       }
-
-                       if ( MWNamespace::isNonincludable( $ns ) ) {
-                               $data[$ns]['nonincludable'] = '';
-                       }
+                       $data[$ns]['content'] = MWNamespace::isContent( $ns );
+                       $data[$ns]['nonincludable'] = MWNamespace::isNonincludable( $ns );
 
                        $contentmodel = MWNamespace::getNamespaceContentModel( $ns );
                        if ( $contentmodel ) {
@@ -367,9 +348,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                foreach ( $wgContLang->getMagicWords() as $magicword => $aliases ) {
                        $caseSensitive = array_shift( $aliases );
                        $arr = array( 'name' => $magicword, 'aliases' => $aliases );
-                       if ( $caseSensitive ) {
-                               $arr['case-sensitive'] = '';
-                       }
+                       $arr['case-sensitive'] = (bool)$caseSensitive;
                        ApiResult::setIndexedTagName( $arr['aliases'], 'alias' );
                        $data[] = $arr;
                }
@@ -402,20 +381,20 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                        $val = array();
                        $val['prefix'] = $prefix;
                        if ( isset( $row['iw_local'] ) && $row['iw_local'] == '1' ) {
-                               $val['local'] = '';
+                               $val['local'] = true;
                        }
                        if ( isset( $row['iw_trans'] ) && $row['iw_trans'] == '1' ) {
-                               $val['trans'] = '';
+                               $val['trans'] = true;
                        }
 
                        if ( isset( $langNames[$prefix] ) ) {
                                $val['language'] = $langNames[$prefix];
                        }
                        if ( in_array( $prefix, $localInterwikis ) ) {
-                               $val['localinterwiki'] = '';
+                               $val['localinterwiki'] = true;
                        }
                        if ( in_array( $prefix, $extraLangPrefixes ) ) {
-                               $val['extralanglink'] = '';
+                               $val['extralanglink'] = true;
 
                                $linktext = wfMessage( "interlanguage-link-$prefix" );
                                if ( !$linktext->isDisabled() ) {
@@ -429,9 +408,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                        }
 
                        $val['url'] = wfExpandUrl( $row['iw_url'], PROTO_CURRENT );
-                       if ( substr( $row['iw_url'], 0, 2 ) == '//' ) {
-                               $val['protorel'] = '';
-                       }
+                       $val['protorel'] = substr( $row['iw_url'], 0, 2 ) == '//';
                        if ( isset( $row['iw_wikiid'] ) && $row['iw_wikiid'] !== '' ) {
                                $val['wikiid'] = $row['iw_wikiid'];
                        }
@@ -747,10 +724,10 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                        $skin = array( 'code' => $name );
                        ApiResult::setContentValue( $skin, 'name', $displayName );
                        if ( !isset( $allowed[$name] ) ) {
-                               $skin['unusable'] = '';
+                               $skin['unusable'] = true;
                        }
                        if ( $name === $default ) {
-                               $skin['default'] = '';
+                               $skin['default'] = true;
                        }
                        $data[] = $skin;
                }
@@ -793,7 +770,9 @@ class ApiQuerySiteinfo extends ApiQueryBase {
        }
 
        public function appendDefaultOptions( $property ) {
-               return $this->getResult()->addValue( 'query', $property, User::getDefaultOptions() );
+               $options = User::getDefaultOptions();
+               $options[ApiResult::META_BC_BOOLS] = array_keys( $options );
+               return $this->getResult()->addValue( 'query', $property, $options );
        }
 
        private function formatParserTags( $item ) {
index aa91216..45f73b2 100644 (file)
@@ -108,8 +108,8 @@ class ApiQueryTags extends ApiQueryBase {
                        $isExtension = isset( $extensionDefinedTags[$tagName] );
                        $isExplicit = isset( $explicitlyDefinedTags[$tagName] );
 
-                       if ( $fld_defined && ( $isExtension || $isExplicit ) ) {
-                               $tag['defined'] = '';
+                       if ( $fld_defined ) {
+                               $tag['defined'] = $isExtension || $isExplicit;
                        }
 
                        if ( $fld_source ) {
@@ -122,10 +122,8 @@ class ApiQueryTags extends ApiQueryBase {
                                }
                        }
 
-                       if ( $fld_active &&
-                               ( $isExplicit || isset( $extensionActivatedTags[$tagName] ) )
-                       ) {
-                               $tag['active'] = '';
+                       if ( $fld_active ) {
+                               $tag['active'] = $isExplicit || isset( $extensionActivatedTags[$tagName] );
                        }
 
                        $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $tag );
index f8eee8d..65a08a3 100644 (file)
@@ -35,7 +35,9 @@ class ApiQueryTokens extends ApiQueryBase {
 
        public function execute() {
                $params = $this->extractRequestParams();
-               $res = array();
+               $res = array(
+                       ApiResult::META_TYPE => 'assoc',
+               );
 
                if ( $this->lacksSameOriginSecurity() ) {
                        $this->setWarning( 'Tokens may not be obtained when the same-origin policy is not applied' );
index f6c6356..e5ec67d 100644 (file)
@@ -335,7 +335,7 @@ class ApiQueryContributions extends ApiQueryBase {
                $anyHidden = false;
 
                if ( $row->rev_deleted & Revision::DELETED_TEXT ) {
-                       $vals['texthidden'] = '';
+                       $vals['texthidden'] = true;
                        $anyHidden = true;
                }
 
@@ -343,7 +343,7 @@ class ApiQueryContributions extends ApiQueryBase {
                $vals['userid'] = $row->rev_user;
                $vals['user'] = $row->rev_user_text;
                if ( $row->rev_deleted & Revision::DELETED_USER ) {
-                       $vals['userhidden'] = '';
+                       $vals['userhidden'] = true;
                        $anyHidden = true;
                }
                if ( $this->fld_ids ) {
@@ -367,20 +367,14 @@ class ApiQueryContributions extends ApiQueryBase {
                }
 
                if ( $this->fld_flags ) {
-                       if ( $row->rev_parent_id == 0 && !is_null( $row->rev_parent_id ) ) {
-                               $vals['new'] = '';
-                       }
-                       if ( $row->rev_minor_edit ) {
-                               $vals['minor'] = '';
-                       }
-                       if ( $row->page_latest == $row->rev_id ) {
-                               $vals['top'] = '';
-                       }
+                       $vals['new'] = $row->rev_parent_id == 0 && !is_null( $row->rev_parent_id );
+                       $vals['minor'] = (bool)$row->rev_minor_edit;
+                       $vals['top'] = $row->page_latest == $row->rev_id;
                }
 
                if ( ( $this->fld_comment || $this->fld_parsedcomment ) && isset( $row->rev_comment ) ) {
                        if ( $row->rev_deleted & Revision::DELETED_COMMENT ) {
-                               $vals['commenthidden'] = '';
+                               $vals['commenthidden'] = true;
                                $anyHidden = true;
                        }
 
@@ -400,8 +394,8 @@ class ApiQueryContributions extends ApiQueryBase {
                        }
                }
 
-               if ( $this->fld_patrolled && $row->rc_patrolled ) {
-                       $vals['patrolled'] = '';
+               if ( $this->fld_patrolled ) {
+                       $vals['patrolled'] = (bool)$row->rc_patrolled;
                }
 
                if ( $this->fld_size && !is_null( $row->rev_len ) ) {
@@ -429,7 +423,7 @@ class ApiQueryContributions extends ApiQueryBase {
                }
 
                if ( $anyHidden && $row->rev_deleted & Revision::DELETED_RESTRICTED ) {
-                       $vals['suppressed'] = '';
+                       $vals['suppressed'] = true;
                }
 
                return $vals;
index fd095fc..3d3590c 100644 (file)
@@ -61,7 +61,7 @@ class ApiQueryUserInfo extends ApiQueryBase {
                $vals['name'] = $user->getName();
 
                if ( $user->isAnon() ) {
-                       $vals['anon'] = '';
+                       $vals['anon'] = true;
                }
 
                if ( isset( $this->prop['blockinfo'] ) ) {
@@ -78,23 +78,26 @@ class ApiQueryUserInfo extends ApiQueryBase {
                        }
                }
 
-               if ( isset( $this->prop['hasmsg'] ) && $user->getNewtalk() ) {
-                       $vals['messages'] = '';
+               if ( isset( $this->prop['hasmsg'] ) ) {
+                       $vals['messages'] = $user->getNewtalk();
                }
 
                if ( isset( $this->prop['groups'] ) ) {
                        $vals['groups'] = $user->getEffectiveGroups();
+                       ApiResult::setArrayType( $vals['groups'], 'array' ); // even if empty
                        ApiResult::setIndexedTagName( $vals['groups'], 'g' ); // even if empty
                }
 
                if ( isset( $this->prop['implicitgroups'] ) ) {
                        $vals['implicitgroups'] = $user->getAutomaticGroups();
+                       ApiResult::setArrayType( $vals['implicitgroups'], 'array' ); // even if empty
                        ApiResult::setIndexedTagName( $vals['implicitgroups'], 'g' ); // even if empty
                }
 
                if ( isset( $this->prop['rights'] ) ) {
                        // User::getRights() may return duplicate values, strip them
                        $vals['rights'] = array_values( array_unique( $user->getRights() ) );
+                       ApiResult::setArrayType( $vals['rights'], 'array' ); // even if empty
                        ApiResult::setIndexedTagName( $vals['rights'], 'r' ); // even if empty
                }
 
@@ -108,6 +111,7 @@ class ApiQueryUserInfo extends ApiQueryBase {
 
                if ( isset( $this->prop['options'] ) ) {
                        $vals['options'] = $user->getOptions();
+                       $vals['options'][ApiResult::META_BC_BOOLS] = array_keys( $vals['options'] );
                }
 
                if ( isset( $this->prop['preferencestoken'] ) ) {
@@ -191,9 +195,13 @@ class ApiQueryUserInfo extends ApiQueryBase {
        }
 
        protected function getRateLimits() {
+               $retval = array(
+                       ApiResult::META_TYPE => 'assoc',
+               );
+
                $user = $this->getUser();
                if ( !$user->isPingLimitable() ) {
-                       return array(); // No limits
+                       return $retval; // No limits
                }
 
                // Find out which categories we belong to
@@ -213,7 +221,6 @@ class ApiQueryUserInfo extends ApiQueryBase {
                $categories = array_merge( $categories, $user->getGroups() );
 
                // Now get the actual limits
-               $retval = array();
                foreach ( $this->getConfig()->get( 'RateLimits' ) as $action => $limits ) {
                        foreach ( $categories as $cat ) {
                                if ( isset( $limits[$cat] ) && !is_null( $limits[$cat] ) ) {
index e2c47f5..f22c213 100644 (file)
@@ -110,7 +110,7 @@ class ApiQueryUsers extends ApiQueryBase {
                foreach ( $users as $u ) {
                        $n = User::getCanonicalName( $u );
                        if ( $n === false || $n === '' ) {
-                               $vals = array( 'name' => $u, 'invalid' => '' );
+                               $vals = array( 'name' => $u, 'invalid' => true );
                                $fit = $result->addValue( array( 'query', $this->getModuleName() ),
                                        null, $vals );
                                if ( !$fit ) {
@@ -190,7 +190,7 @@ class ApiQueryUsers extends ApiQueryBase {
                                        $data[$name]['rights'] = $user->getRights();
                                }
                                if ( $row->ipb_deleted ) {
-                                       $data[$name]['hidden'] = '';
+                                       $data[$name]['hidden'] = true;
                                }
                                if ( isset( $this->prop['blockinfo'] ) && !is_null( $row->ipb_by_text ) ) {
                                        $data[$name]['blockid'] = $row->ipb_id;
@@ -201,8 +201,8 @@ class ApiQueryUsers extends ApiQueryBase {
                                        $data[$name]['blockexpiry'] = $row->ipb_expiry;
                                }
 
-                               if ( isset( $this->prop['emailable'] ) && $user->canReceiveEmail() ) {
-                                       $data[$name]['emailable'] = '';
+                               if ( isset( $this->prop['emailable'] ) ) {
+                                       $data[$name]['emailable'] = $user->canReceiveEmail();
                                }
 
                                if ( isset( $this->prop['gender'] ) ) {
@@ -237,7 +237,7 @@ class ApiQueryUsers extends ApiQueryBase {
                                $iwUser = $urPage->fetchUser( $u );
 
                                if ( $iwUser instanceof UserRightsProxy ) {
-                                       $data[$u]['interwiki'] = '';
+                                       $data[$u]['interwiki'] = true;
 
                                        if ( !is_null( $params['token'] ) ) {
                                                $tokenFunctions = $this->getTokenFunctions();
@@ -252,16 +252,19 @@ class ApiQueryUsers extends ApiQueryBase {
                                                }
                                        }
                                } else {
-                                       $data[$u]['missing'] = '';
+                                       $data[$u]['missing'] = true;
                                }
                        } else {
                                if ( isset( $this->prop['groups'] ) && isset( $data[$u]['groups'] ) ) {
+                                       ApiResult::setArrayType( $data[$u]['groups'], 'array' );
                                        ApiResult::setIndexedTagName( $data[$u]['groups'], 'g' );
                                }
                                if ( isset( $this->prop['implicitgroups'] ) && isset( $data[$u]['implicitgroups'] ) ) {
+                                       ApiResult::setArrayType( $data[$u]['implicitgroups'], 'array' );
                                        ApiResult::setIndexedTagName( $data[$u]['implicitgroups'], 'g' );
                                }
                                if ( isset( $this->prop['rights'] ) && isset( $data[$u]['rights'] ) ) {
+                                       ApiResult::setArrayType( $data[$u]['rights'], 'array' );
                                        ApiResult::setIndexedTagName( $data[$u]['rights'], 'r' );
                                }
                        }
index bd1ed0a..9f7387c 100644 (file)
@@ -307,7 +307,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                if ( $this->fld_title || $this->fld_ids ) {
                        // These should already have been filtered out of the query, but just in case.
                        if ( $type === RC_LOG && ( $row->rc_deleted & LogPage::DELETED_ACTION ) ) {
-                               $vals['actionhidden'] = '';
+                               $vals['actionhidden'] = true;
                                $anyHidden = true;
                        }
                        if ( $type !== RC_LOG ||
@@ -327,7 +327,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                /* Add user data and 'anon' flag, if user is anonymous. */
                if ( $this->fld_user || $this->fld_userid ) {
                        if ( $row->rc_deleted & Revision::DELETED_USER ) {
-                               $vals['userhidden'] = '';
+                               $vals['userhidden'] = true;
                                $anyHidden = true;
                        }
                        if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_USER, $user ) ) {
@@ -342,22 +342,16 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                                }
 
                                if ( !$row->rc_user ) {
-                                       $vals['anon'] = '';
+                                       $vals['anon'] = true;
                                }
                        }
                }
 
                /* Add flags, such as new, minor, bot. */
                if ( $this->fld_flags ) {
-                       if ( $row->rc_bot ) {
-                               $vals['bot'] = '';
-                       }
-                       if ( $row->rc_type == RC_NEW ) {
-                               $vals['new'] = '';
-                       }
-                       if ( $row->rc_minor ) {
-                               $vals['minor'] = '';
-                       }
+                       $vals['bot'] = (bool)$row->rc_bot;
+                       $vals['new'] = $row->rc_type == RC_NEW;
+                       $vals['minor'] = (bool)$row->rc_minor;
                }
 
                /* Add sizes of each revision. (Only available on 1.10+) */
@@ -380,7 +374,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                /* Add edit summary / log summary. */
                if ( $this->fld_comment || $this->fld_parsedcomment ) {
                        if ( $row->rc_deleted & Revision::DELETED_COMMENT ) {
-                               $vals['commenthidden'] = '';
+                               $vals['commenthidden'] = true;
                                $anyHidden = true;
                        }
                        if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_COMMENT, $user ) ) {
@@ -395,17 +389,14 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                }
 
                /* Add the patrolled flag */
-               if ( $this->fld_patrol && $row->rc_patrolled == 1 ) {
-                       $vals['patrolled'] = '';
-               }
-
-               if ( $this->fld_patrol && ChangesList::isUnpatrolled( $row, $user ) ) {
-                       $vals['unpatrolled'] = '';
+               if ( $this->fld_patrol ) {
+                       $vals['patrolled'] = $row->rc_patrolled == 1;
+                       $vals['unpatrolled'] = ChangesList::isUnpatrolled( $row, $user );
                }
 
                if ( $this->fld_loginfo && $row->rc_type == RC_LOG ) {
                        if ( $row->rc_deleted & LogPage::DELETED_ACTION ) {
-                               $vals['actionhidden'] = '';
+                               $vals['actionhidden'] = true;
                                $anyHidden = true;
                        }
                        if ( LogEventsList::userCanBitfield( $row->rc_deleted, LogPage::DELETED_ACTION, $user ) ) {
@@ -417,7 +408,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                }
 
                if ( $anyHidden && ( $row->rc_deleted & Revision::DELETED_RESTRICTED ) ) {
-                       $vals['suppressed'] = '';
+                       $vals['suppressed'] = true;
                }
 
                return $vals;
index 490b831..345cf43 100644 (file)
@@ -140,8 +140,7 @@ class ApiResult implements ApiSerializable {
         */
        public function __construct( $maxSize ) {
                if ( $maxSize instanceof ApiMain ) {
-                       /// @todo: After fixing Wikidata unit tests, warn
-                       //wfDeprecated( 'Passing ApiMain to ' . __METHOD__ . ' is deprecated', '1.25' );
+                       wfDeprecated( 'ApiMain to ' . __METHOD__, '1.25' );
                        $this->errorFormatter = $maxSize->getErrorFormatter();
                        $this->mainForContinuation = $maxSize;
                        $maxSize = $maxSize->getConfig()->get( 'APIMaxResultSize' );
@@ -180,7 +179,9 @@ class ApiResult implements ApiSerializable {
         * Clear the current result data.
         */
        public function reset() {
-               $this->data = array();
+               $this->data = array(
+                       self::META_TYPE => 'assoc', // Usually what's desired
+               );
                $this->size = 0;
        }
 
@@ -1130,7 +1131,7 @@ class ApiResult implements ApiSerializable {
         * @return array
         */
        public function getData() {
-               /// @todo: Warn after fixing remaining callers: Wikibase, Gather
+               wfDeprecated( __METHOD__, '1.25' );
                return $this->getResultData( null, array(
                        'BC' => array(),
                        'Types' => array(),
@@ -1172,7 +1173,7 @@ class ApiResult implements ApiSerializable {
         *    new method signature.
         */
        public static function setElement( &$arr, $name, $value, $flags = 0 ) {
-               /// @todo: Warn after fixing remaining callers: Wikibase
+               wfDeprecated( __METHOD__, '1.25' );
                return self::setValue( $arr, $name, $value, $flags );
        }
 
@@ -1187,7 +1188,7 @@ class ApiResult implements ApiSerializable {
         *  format "<elem>text</elem>" without attributes.
         */
        public static function setContent( &$arr, $value, $subElemName = null ) {
-               /// @todo: Warn after fixing remaining callers: Wikibase
+               wfDeprecated( __METHOD__, '1.25' );
                if ( is_array( $value ) ) {
                        throw new InvalidArgumentException( __METHOD__ . ': Bad parameter' );
                }
@@ -1211,44 +1212,29 @@ class ApiResult implements ApiSerializable {
         * @param string $tag Tag name
         */
        public function setIndexedTagName_recursive( &$arr, $tag ) {
-               /// @todo: Warn after fixing remaining callers: Wikibase
+               wfDeprecated( __METHOD__, '1.25' );
                if ( !is_array( $arr ) ) {
                        return;
                }
-               self::setIndexedTagNameOnSubarrays( $arr, $tag );
-       }
-
-       /**
-        * Set indexed tag name on all subarrays of $arr
-        *
-        * Does not set the tag name for $arr itself.
-        *
-        * @since 1.25
-        * @deprecated For backwards compatibility, do not use
-        * @todo: Remove after updating callers to use self::setIndexedTagNameRecursive
-        * @param array &$arr
-        * @param string $tag Tag name
-        */
-       public static function setIndexedTagNameOnSubarrays( array &$arr, $tag ) {
                if ( !is_string( $tag ) ) {
                        throw new InvalidArgumentException( 'Bad tag name' );
                }
                foreach ( $arr as $k => &$v ) {
                        if ( !self::isMetadataKey( $k ) && is_array( $v ) ) {
                                $v[self::META_INDEXED_TAG_NAME] = $tag;
-                               self::setIndexedTagNameOnSubarrays( $v, $tag );
+                               $this->setIndexedTagName_recursive( $v, $tag );
                        }
                }
        }
 
        /**
-        * Alias for self::defineIndexedTagName()
+        * Alias for self::addIndexedTagName()
         * @deprecated since 1.25, use $this->addIndexedTagName() instead
         * @param array $path Path to the array, like addValue()'s $path
         * @param string $tag
         */
        public function setIndexedTagName_internal( $path, $tag ) {
-               /// @todo: Warn after fixing remaining callers: Wikibase, Gather
+               wfDeprecated( __METHOD__, '1.25' );
                $this->addIndexedTagName( $path, $tag );
        }
 
@@ -1288,7 +1274,7 @@ class ApiResult implements ApiSerializable {
        public function beginContinuation(
                $continue, array $allModules = array(), array $generatedModules = array()
        ) {
-               /// @todo: Warn after fixing remaining callers: Gather
+               wfDeprecated( __METHOD__, '1.25' );
                if ( $this->mainForContinuation->getContinuationManager() ) {
                        throw new UnexpectedValueException(
                                __METHOD__ . ': Continuation already in progress from ' .
@@ -1368,7 +1354,7 @@ class ApiResult implements ApiSerializable {
         *   the style used in 1.20 and earlier.
         */
        public function endContinuation( $style = 'standard' ) {
-               /// @todo: Warn after fixing remaining callers: Gather
+               wfDeprecated( __METHOD__, '1.25' );
                if ( !$this->mainForContinuation->getContinuationManager() ) {
                        return;
                }
@@ -1413,76 +1399,10 @@ class ApiResult implements ApiSerializable {
         * @return array
         */
        public function convertStatusToArray( $status, $errorType = 'error' ) {
-               /// @todo: Warn after fixing remaining callers: CentralAuth
+               wfDeprecated( __METHOD__, '1.25' );
                return $this->errorFormatter->arrayFromStatus( $status, $errorType );
        }
 
-       /**
-        * Alias for self::addIndexedTagName
-        *
-        * A bunch of extensions were updated for an earlier version of this
-        * extension which used this name.
-        * @deprecated For backwards compatibility, do not use
-        * @todo: Remove after updating callers to use self::addIndexedTagName
-        */
-       public function defineIndexedTagName( $path, $tag ) {
-               return $this->addIndexedTagName( $path, $tag );
-       }
-
-       /**
-        * Alias for self::stripMetadata
-        *
-        * A bunch of extensions were updated for an earlier version of this
-        * extension which used this name.
-        * @deprecated For backwards compatibility, do not use
-        * @todo: Remove after updating callers to use self::stripMetadata
-        */
-       public static function removeMetadata( $data ) {
-               return self::stripMetadata( $data );
-       }
-
-       /**
-        * Alias for self::stripMetadataNonRecursive
-        *
-        * A bunch of extensions were updated for an earlier version of this
-        * extension which used this name.
-        * @deprecated For backwards compatibility, do not use
-        * @todo: Remove after updating callers to use self::stripMetadataNonRecursive
-        */
-       public static function removeMetadataNonRecursive( $data, &$metadata = null ) {
-               return self::stripMetadataNonRecursive( $data, $metadata );
-       }
-
-       /**
-        * @deprecated For backwards compatibility, do not use
-        * @todo: Remove after updating callers
-        */
-       public static function transformForBC( array $data ) {
-               return self::applyTransformations( $data, array(
-                       'BC' => array(),
-               ) );
-       }
-
-       /**
-        * @deprecated For backwards compatibility, do not use
-        * @todo: Remove after updating callers
-        */
-       public static function transformForTypes( $data, $options = array() ) {
-               $transforms = array(
-                       'Types' => array(),
-               );
-               if ( isset( $options['assocAsObject'] ) ) {
-                       $transforms['Types']['AssocAsObject'] = $options['assocAsObject'];
-               }
-               if ( isset( $options['armorKVP'] ) ) {
-                       $transforms['Types']['ArmorKVP'] = $options['armorKVP'];
-               }
-               if ( !empty( $options['BC'] ) ) {
-                       $transforms['BC'] = array( 'nobool', 'no*', 'nosub' );
-               }
-               return self::applyTransformations( $data, $transforms );
-       }
-
        /**@}*/
 }
 
index e41ee07..86a3f6a 100644 (file)
@@ -115,21 +115,21 @@ class ApiSetNotificationTimestamp extends ApiBase {
                        foreach ( $pageSet->getInvalidTitles() as $title ) {
                                $r = array();
                                $r['title'] = $title;
-                               $r['invalid'] = '';
+                               $r['invalid'] = true;
                                $result[] = $r;
                        }
                        foreach ( $pageSet->getMissingPageIDs() as $p ) {
                                $page = array();
                                $page['pageid'] = $p;
-                               $page['missing'] = '';
-                               $page['notwatched'] = '';
+                               $page['missing'] = true;
+                               $page['notwatched'] = true;
                                $result[] = $page;
                        }
                        foreach ( $pageSet->getMissingRevisionIDs() as $r ) {
                                $rev = array();
                                $rev['revid'] = $r;
-                               $rev['missing'] = '';
-                               $rev['notwatched'] = '';
+                               $rev['missing'] = true;
+                               $rev['notwatched'] = true;
                                $result[] = $rev;
                        }
 
@@ -163,7 +163,7 @@ class ApiSetNotificationTimestamp extends ApiBase {
                                                'title' => $title->getPrefixedText(),
                                        );
                                        if ( !$title->exists() ) {
-                                               $r['missing'] = '';
+                                               $r['missing'] = true;
                                        }
                                        if ( isset( $timestamps[$ns] ) && array_key_exists( $dbkey, $timestamps[$ns] ) ) {
                                                $r['notificationtimestamp'] = '';
@@ -171,7 +171,7 @@ class ApiSetNotificationTimestamp extends ApiBase {
                                                        $r['notificationtimestamp'] = wfTimestamp( TS_ISO_8601, $timestamps[$ns][$dbkey] );
                                                }
                                        } else {
-                                               $r['notwatched'] = '';
+                                               $r['notwatched'] = true;
                                        }
                                        $result[] = $r;
                                }
index 9eb4020..4d7fc5a 100644 (file)
@@ -37,7 +37,9 @@ class ApiTokens extends ApiBase {
                $this->logFeatureUsage( "action=tokens" );
 
                $params = $this->extractRequestParams();
-               $res = array();
+               $res = array(
+                       ApiResult::META_TYPE => 'assoc',
+               );
 
                $types = $this->getTokenTypes();
                foreach ( $params['type'] as $type ) {
index 6a585d4..85d051d 100644 (file)
@@ -109,15 +109,15 @@ class ApiWatch extends ApiBase {
 
                if ( $params['unwatch'] ) {
                        $status = UnwatchAction::doUnwatch( $title, $user );
+                       $res['unwatched'] = $status->isOK();
                        if ( $status->isOK() ) {
-                               $res['unwatched'] = '';
                                $res['message'] = $this->msg( 'removedwatchtext', $title->getPrefixedText() )
                                        ->title( $title )->parseAsBlock();
                        }
                } else {
                        $status = WatchAction::doWatch( $title, $user );
+                       $res['watched'] = $status->isOK();
                        if ( $status->isOK() ) {
-                               $res['watched'] = '';
                                $res['message'] = $this->msg( 'addedwatchtext', $title->getPrefixedText() )
                                        ->title( $title )->parseAsBlock();
                        }
index 035b7a9..f42f549 100644 (file)
        "api-help-permissions": "{{PLURAL:$1|Permiso|Permisos}}:",
        "api-help-permissions-granted-to": "{{PLURAL:$1|Concedido a|Concedidos a}}: $2",
        "api-credits-header": "Créditos",
-       "api-credits": "Desarrolladores de la API:\n* Roan Kattouw (desarrollador principal sep 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (creador, desarrollador principal sep 2006–sep 2007)\n* Brad Jorsch (desarrollador principal 2013–actualidad)\n\nEnvía comentarios, sugerencias y preguntas a mediawiki-api@lists.wikimedia.org\no reporta un error en https://phabricator.wikimedia.org/."
+       "api-credits": "Desarrolladores de la API:\n* Roan Kattouw (desarrollador principal, sep. 2007-2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (creador y desarrollador principal, sep. 2006-sep. 2007)\n* Brad Jorsch (desarrollador principal, 2013-actualidad)\n\nEnvía comentarios, sugerencias y preguntas a mediawiki-api@lists.wikimedia.org\no informa de un error en https://phabricator.wikimedia.org/."
 }
index 962bec4..3eb939f 100644 (file)
        "api-help-parameters": "{{PLURAL:$1|Parámetro|Parámetros}}:",
        "api-help-param-deprecated": "Obsoleto.",
        "api-help-param-required": "Este parámetro é obrigatorio.",
+       "api-help-datatypes-header": "Tipos de datos",
        "api-help-param-type-limit": "Tipo: enteiro ou <kbd>max</kbd>",
        "api-help-param-type-integer": "Tipo: {{PLURAL:$1|1=enteiro|2=lista de enteiros}}",
        "api-help-param-type-boolean": "Tipo: booleano ([[Special:ApiHelp/main#main/datatypes|detalles]])",
index a68efc4..2a5838a 100644 (file)
        "apihelp-edit-param-sectiontitle": "新しい節の名前です。",
        "apihelp-edit-param-text": "ページの本文。",
        "apihelp-edit-param-minor": "細部の編集",
+       "apihelp-edit-param-notminor": "細部の編集ではない。",
        "apihelp-edit-param-createonly": "すでにそのページが存在する場合は編集を行いません。",
        "apihelp-edit-param-nocreate": "そのページが存在しない場合にエラーを返します。",
        "apihelp-edit-param-watch": "そのページを現在の利用者のウォッチリストに追加します。",
        "apihelp-edit-param-unwatch": "そのページを現在の利用者のウォッチリストから除去します。",
+       "apihelp-edit-param-prependtext": "このテキストをページの先頭に追加します。$1text をオーバーライドします。",
+       "apihelp-edit-param-undo": "この版を取り消します。$1text, $1prependtext および $1appendtext をオーバーライドします。",
+       "apihelp-edit-param-undoafter": "$1undo からこの版までのすべての版を取り消します。設定しない場合、ひとつの版のみ取り消されます。",
        "apihelp-edit-param-token": "このトークンは常に最後のパラメーターとして、または少なくとも $1text パラメーターより後に送信されるべきです。",
        "apihelp-edit-example-edit": "ページを編集",
        "apihelp-edit-example-prepend": "<kbd>_&#95;NOTOC_&#95;</kbd> をページの先頭に挿入する。",
+       "apihelp-edit-example-undo": "版 13579 から 13585 まで要約を自動入力して取り消す。",
        "apihelp-emailuser-description": "利用者に電子メールを送信します。",
        "apihelp-emailuser-param-target": "送信先の利用者名。",
        "apihelp-emailuser-param-text": "電子メールの本文。",
@@ -75,6 +80,7 @@
        "apihelp-expandtemplates-description": "ウィキテキストに含まれるすべてのテンプレートを展開します。",
        "apihelp-expandtemplates-param-title": "ページの名前です。",
        "apihelp-expandtemplates-param-text": "変換するウィキテキストです。",
+       "apihelp-expandtemplates-param-includecomments": "HTMLコメントを出力に含めるかどうか。",
        "apihelp-expandtemplates-example-simple": "ウィキテキスト <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd> を展開する。",
        "apihelp-feedcontributions-param-deletedonly": "削除された投稿記録のみ表示します。",
        "apihelp-feedcontributions-param-toponly": "最新版の編集のみ表示します。",
        "apihelp-feedrecentchanges-param-hidepatrolled": "巡回済みの変更を隠す。",
        "apihelp-feedrecentchanges-example-simple": "最近の更新を表示する。",
        "apihelp-feedrecentchanges-example-30days": "最近30日間の変更を表示する。",
+       "apihelp-feedwatchlist-description": "ウォッチリストのフィードを返します。",
+       "apihelp-feedwatchlist-param-feedformat": "フィードの形式。",
+       "apihelp-feedwatchlist-example-default": "ウォッチリストのフィードを表示する。",
+       "apihelp-feedwatchlist-example-all6hrs": "ウォッチ中のページに対する過去6時間の更新をすべて表示する。",
+       "apihelp-filerevert-description": "ファイルを古い版に差し戻します。",
+       "apihelp-filerevert-param-filename": "対象のファイル名 (File: 接頭辞を含めない)。",
+       "apihelp-filerevert-param-comment": "アップロードのコメント。",
        "apihelp-filerevert-example-revert": "<kbd>Wiki.png</kbd> を <kbd>2011-03-05T15:27:40Z</kbd> の版に差し戻す。",
        "apihelp-help-description": "指定したモジュールのヘルプを表示します。",
        "apihelp-help-param-modules": "ヘルプを表示するモジュールです (<var>action</var> パラメーターおよび <var>format</var> パラメーターの値、または <kbd>main</kbd>)。<kbd>+</kbd> を使用して下位モジュールを指定できます。",
        "apihelp-login-example-login": "ログイン",
        "apihelp-logout-description": "ログアウトしてセッションデータを消去します。",
        "apihelp-logout-example-logout": "現在の利用者をログアウトする。",
+       "apihelp-managetags-example-create": "<kbd>spam</kbd> という名前のタグを <kbd>For use in edit patrolling</kbd> という理由で作成する",
+       "apihelp-managetags-example-delete": "<kbd>vandlaism</kbd> タグを <kbd>Misspelt</kbd> という理由で削除する",
+       "apihelp-managetags-example-activate": "<kbd>spam</kbd> という名前のタグを <kbd>For use in edit patrolling</kbd> という理由で有効化する",
        "apihelp-move-description": "ページを移動します。",
        "apihelp-move-param-from": "移動するページのページ名です。<var>$1fromid</var> とは同時に使用できません。",
        "apihelp-move-param-fromid": "移動するページのページIDです。<var>$1from</var> とは同時に使用できません。",
        "apihelp-move-param-unwatch": "そのページと転送ページを現在の利用者のウォッチリストから除去します。",
        "apihelp-move-param-ignorewarnings": "あらゆる警告を無視",
        "apihelp-move-example-move": "<kbd>Badtitle</kbd> を <kbd>Goodtitle</kbd> に転送ページを残さず移動",
+       "apihelp-opensearch-description": "OpenSearch プロトコルを使用してWiki内を検索します。",
        "apihelp-opensearch-param-search": "検索文字列。",
        "apihelp-opensearch-param-limit": "返す結果の最大数。",
        "apihelp-opensearch-param-namespace": "検索する名前空間。",
        "apihelp-opensearch-param-suggest": "<var>[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> が false の場合、何もしません。",
        "apihelp-opensearch-param-format": "出力する形式。",
        "apihelp-opensearch-example-te": "<kbd>Te</kbd> から始まるページを検索する。",
+       "apihelp-options-example-reset": "すべて初期設定に戻す。",
+       "apihelp-options-example-change": "<kbd>skin</kbd> および <kbd>hideminor</kbd> の個人設定を変更する。",
+       "apihelp-options-example-complex": "すべての個人設定を初期化し、<kbd>skin</kbd> および <kbd> nickname </kbd> を設定する。",
        "apihelp-paraminfo-description": "API モジュールに関する情報を取得します。",
        "apihelp-paraminfo-param-modules": "モジュールの名前のリスト (<var>action</var> および <var>format</var> パラメーターの値, または <kbd>main</kbd>). <kbd>+</kbd> を使用して下位モジュールを指定できます。",
        "apihelp-patrol-description": "ページまたは版を巡回済みにします。",
        "apihelp-patrol-param-revid": "巡回済みにする版ID。",
        "apihelp-patrol-example-rcid": "最近の更新を巡回",
        "apihelp-protect-description": "ページの保護レベルを変更します。",
-       "apihelp-protect-param-title": "保護(解除)するページ名です。$1pageid とは同時に指定できません。",
-       "apihelp-protect-param-pageid": "保護(解除)するページIDです。$1title とは同時に指定できません。",
+       "apihelp-protect-param-title": "保護(解除)するページ名です。$1pageid とは同時に使用できません。",
+       "apihelp-protect-param-pageid": "保護(解除)するページIDです。$1title とは同時に使用できません。",
        "apihelp-protect-param-expiry": "有効期限です。タイムスタンプがひとつだけ指定された場合は、それがすべての保護に適用されます。無期限の保護を行う場合は<kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd>, または <kbd>never</kbd> を指定します。",
        "apihelp-protect-param-reason": "保護(解除)の理由。",
        "apihelp-protect-param-watch": "指定されると、保護(解除)するページが現在の利用者のウォッチリストに追加されます。",
        "apihelp-protect-example-protect": "ページを保護する。",
-       "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "<var>$3user</var> と同時に指定できません。",
+       "apihelp-purge-example-simple": "ページ <kbd>Main Page</kbd> および <kbd>API</kbd> をパージする。",
+       "apihelp-purge-example-generator": "標準名前空間にある最初の10ページをパージする。",
+       "apihelp-query+allcategories-description": "すべてのカテゴリを一覧表示します。",
+       "apihelp-query+allcategories-param-from": "列挙を開始するカテゴリ。",
+       "apihelp-query+allcategories-param-to": "列挙を終了するカテゴリ。",
+       "apihelp-query+allcategories-param-prefix": "この値で始まるタイトルのカテゴリを検索します。",
+       "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "<var>$3user</var> と同時に使用できません。",
        "apihelp-query+alldeletedrevisions-param-user": "この利用者による版のみを一覧表示する。",
        "apihelp-query+alldeletedrevisions-param-excludeuser": "この利用者による版を一覧表示しない。",
        "apihelp-query+alldeletedrevisions-param-namespace": "この名前空間に含まれるページのみを一覧表示します。",
        "apihelp-query+alldeletedrevisions-example-ns-main": "標準名前空間にある削除された最初の50版を一覧表示する。",
+       "apihelp-query+allimages-param-limit": "返す画像の総数。",
+       "apihelp-query+allimages-example-mimetypes": "MIMEタイプが <kbd>image/png</kbd> または <kbd>image/gif</kbd> であるファイルの一覧を表示する",
+       "apihelp-query+alllinks-description": "与えられた名前空間へのすべてのリンクを一覧表示します。",
+       "apihelp-query+alllinks-param-from": "列挙を開始するリンクのタイトル。",
+       "apihelp-query+alllinks-param-to": "列挙を終了するリンクのタイトル。",
        "apihelp-query+allmessages-param-args": "メッセージ中に展開される引数。",
        "apihelp-query+allmessages-param-filter": "この文字列を含んだ名前のメッセージのみを返す。",
        "apihelp-query+allmessages-param-customised": "変更された状態のメッセージのみを返す。",
        "apihelp-query+allmessages-param-lang": "返すメッセージの言語。",
+       "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-prefix": "この値で始まるすべてのページ名を検索します。",
+       "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+allusers-param-activeusers": "最近 $1 {{PLURAL:$1|日間}}のアクティブな利用者のみを一覧表示する。",
        "apihelp-query+allusers-example-Y": "<kbd>Y</kbd> で始まる利用者を一覧表示する。",
        "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-ids": "一覧表示するブロックIDのリスト (任意)。",
+       "apihelp-query+blocks-param-limit": "一覧表示するブロックの最大数。",
        "apihelp-query+blocks-example-simple": "ブロックを一覧表示する。",
        "apihelp-query+blocks-example-users": "利用者<kbd>Alice</kbd> および <kbd>Bob</kbd> のブロックを一覧表示する。",
        "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-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-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-example-simple": "<kbd>Main Page</kbd> への投稿者を表示する。",
+       "apihelp-query+deletedrevisions-param-tag": "このタグが付与された版のみ表示します。",
        "apihelp-query+deletedrevisions-param-user": "この利用者による版のみを一覧表示。",
        "apihelp-query+deletedrevisions-param-excludeuser": "この利用者による版を一覧表示しない。",
        "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+embeddedin-param-title": "検索するページ名。$1pageid とは同時に使用できません。",
+       "apihelp-query+embeddedin-param-pageid": "検索するページID. $1titleとは同時に使用できません。",
+       "apihelp-query+embeddedin-example-generator": "<kbd>Template:Stub</kbd> をトランスクルードしているページに関する情報を取得する。",
+       "apihelp-query+extlinks-description": "与えられたページにあるすべての外部URL (インターウィキを除く) を返します。",
+       "apihelp-query+extlinks-param-limit": "返すリンクの数。",
+       "apihelp-query+extlinks-param-protocol": "URLのプロトコル。このパラメータが空であり、かつ<var>$1query</var> が設定されている場合, protocol は <kbd>http</kbd> となります。すべての外部リンクを一覧表示するためにはこのパラメータと <var>$1query</var> の両方を空にしてください。",
+       "apihelp-query+extlinks-example-simple": "<kbd>Main Page<kbd> の外部リンクの一覧を取得する。",
+       "apihelp-query+exturlusage-description": "与えられたURLを含むページを一覧表示します。",
+       "apihelp-query+filearchive-example-simple": "削除されたファイルの一覧を表示する。",
+       "apihelp-query+fileusage-example-simple": "[[:File:Example.jpg]] を使用しているページの一覧を取得する。",
+       "apihelp-query+fileusage-example-generator": "[[:File:Example.jpg]] を使用しているページの情報を取得する。",
+       "apihelp-query+images-description": "与えられたページに含まれるすべてのファイルを返します。",
+       "apihelp-query+images-param-limit": "返す画像の数。",
+       "apihelp-query+images-example-simple": "[[Main Page]] で使用されているファイルの一覧を取得する。",
+       "apihelp-query+images-example-generator": "[[Main Page]] で使用されているファイルに関する情報を取得する。",
+       "apihelp-query+imageusage-param-title": "検索するページ名。$1pageid とは同時に使用できません。",
+       "apihelp-query+imageusage-param-pageid": "検索するページID. $1titleとは同時に使用できません。",
+       "apihelp-query+imageusage-example-simple": "[[:File:Albert Einstein Head.jpg]] を使用しているページを表示する。",
+       "apihelp-query+imageusage-example-generator": "[[:File:Albert Einstein Head.jpg]] を使用しているページに関する情報を取得する。",
        "apihelp-query+info-description": "ページの基本的な情報を取得します。",
        "apihelp-query+info-paramvalue-prop-protection": "それぞれのページの保護レベルを一覧表示する。",
        "apihelp-query+info-example-simple": "<kbd>Main Page</kbd> に関する情報を取得する。",
        "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+logevents-param-user": "与えられた利用者による記録項目に絞り込む。",
+       "apihelp-query+logevents-param-title": "そのページに関連する記録項目に絞り込む。",
+       "apihelp-query+logevents-param-namespace": "与えられた名前空間内の記録項目に絞り込む。",
+       "apihelp-query+logevents-param-prefix": "この接頭辞ではじまる記録項目に絞り込む。",
+       "apihelp-query+logevents-param-tag": "このタグが付与された記録項目のみ表示する。",
+       "apihelp-query+logevents-param-limit": "返す記録項目の総数。",
+       "apihelp-query+logevents-example-simple": "最近の記録項目を一覧表示する。",
+       "apihelp-query+pagepropnames-description": "Wiki内で使用されているすべてのページプロパティ名を一覧表示します。",
+       "apihelp-query+pagepropnames-param-limit": "返す名前の最大数。",
+       "apihelp-query+pagepropnames-example-simple": "最初の10個のプロパティ名を取得する。",
+       "apihelp-query+pageswithprop-description": "与えられたページプロパティが使用されているすべてのページを一覧表示します。",
+       "apihelp-query+pageswithprop-param-limit": "返すページの最大数。",
+       "apihelp-query+prefixsearch-description": "ページ名の先頭一致検索を行います。",
+       "apihelp-query+prefixsearch-param-search": "検索文字列。",
+       "apihelp-query+prefixsearch-param-namespace": "検索する名前空間。",
+       "apihelp-query+prefixsearch-param-limit": "返す結果の最大数。",
+       "apihelp-query+prefixsearch-example-simple": "<kbd>meaning</kbd> で始まるページ名を検索する。",
+       "apihelp-query+protectedtitles-description": "作成保護が掛けられているページを一覧表示します。",
+       "apihelp-query+protectedtitles-param-namespace": "この名前空間に含まれるページのみを一覧表示します。",
+       "apihelp-query+protectedtitles-param-level": "この保護レベルのページのみを一覧表示します。",
+       "apihelp-query+protectedtitles-param-limit": "返すページの総数。",
+       "apihelp-query+protectedtitles-example-simple": "保護されているページを一覧表示する。",
+       "apihelp-query+protectedtitles-example-generator": "標準名前空間にある保護されたページへのリンクを検索する。",
+       "apihelp-query+querypage-param-page": "特別ページの名前です。これは大文字小文字を区別することに注意。",
+       "apihelp-query+querypage-param-limit": "返す結果の数。",
+       "apihelp-query+querypage-example-ancientpages": "[[Special:Ancientpages]] の結果を返す。",
+       "apihelp-query+random-param-namespace": "この名前空間にあるページのみを返します。",
+       "apihelp-query+random-example-simple": "標準名前空間から2つのページを無作為に返す。",
+       "apihelp-query+recentchanges-description": "最近の更新を一覧表示します。",
+       "apihelp-query+recentchanges-param-start": "一覧表示を開始するタイムスタンプ。",
+       "apihelp-query+recentchanges-param-end": "一覧表示を終了するタイムスタンプ。",
+       "apihelp-query+recentchanges-param-namespace": "この名前空間の変更のみに絞り込む。",
+       "apihelp-query+recentchanges-param-user": "この利用者による変更のみを一覧表示する。",
+       "apihelp-query+recentchanges-param-excludeuser": "この利用者による変更を一覧表示しない。",
+       "apihelp-query+recentchanges-param-tag": "このタグが付与された版のみ一覧表示する。",
+       "apihelp-query+recentchanges-param-limit": "返す変更の総数。",
+       "apihelp-query+recentchanges-example-simple": "最近の更新を一覧表示する。",
+       "apihelp-query+redirects-example-simple": "[[Main Page]] への転送の一覧を取得する。",
+       "apihelp-query+redirects-example-generator": "[[Main Page]] へのすべての転送ページに関する情報を取得する。",
+       "apihelp-query+tags-description": "変更タグを一覧表示します。",
+       "apihelp-query+tags-param-limit": "一覧表示するタグの最大数。",
+       "apihelp-query+tags-example-simple": "利用可能なタグを一覧表示する。",
+       "apihelp-query+templates-description": "与えられたページでトランスクルードされているすべてのページを返します。",
+       "apihelp-query+templates-param-namespace": "この名前空間のテンプレートのみ表示する。",
+       "apihelp-query+templates-param-limit": "返すテンプレートの数。",
+       "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-param-type": "リクエストするトークンの種類。",
+       "apihelp-query+tokens-example-simple": "csrfトークンを取得する (既定)。",
+       "apihelp-query+tokens-example-types": "ウォッチトークンおよび巡回トークンを取得する。",
+       "apihelp-query+transcludedin-description": "与えられたページをトランスクルードしているすべてのページを検索します。",
+       "apihelp-query+usercontribs-description": "利用者によるすべての編集を取得します。",
+       "apihelp-query+usercontribs-param-limit": "返す投稿記録の最大数。",
+       "apihelp-query+usercontribs-param-user": "投稿記録を取得する利用者。",
+       "apihelp-query+usercontribs-param-userprefix": "この値で始まる名前のすべての利用者の投稿記録を取得します。$1user をオーバーライドします。",
+       "apihelp-query+usercontribs-param-namespace": "この名前空間への投稿記録のみを一覧表示する。",
+       "apihelp-query+usercontribs-param-tag": "このタグが付与された版のみを一覧表示する。",
+       "apihelp-query+usercontribs-param-toponly": "最新の版である変更のみを一覧表示する。",
+       "apihelp-query+usercontribs-example-user": "利用者 <kbd>Example</kbd> の投稿記録を表示する。",
+       "apihelp-query+users-example-simple": "利用者 <kbd>Example</kbd> の情報を返す。",
+       "apihelp-query+watchlist-description": "現在の利用者のウォッチリストにあるページへの最近の更新を取得します。",
+       "apihelp-query+watchlist-param-namespace": "この名前空間の変更のみに絞り込む。",
+       "apihelp-query+watchlist-param-user": "この利用者による変更のみを一覧表示する。",
+       "apihelp-query+watchlist-param-excludeuser": "この利用者による変更を一覧表示しない。",
+       "apihelp-query+watchlistraw-description": "現在の利用者のウォッチリストにあるすべてのページを取得します。",
+       "apihelp-query+watchlistraw-param-namespace": "この名前空間に含まれるページのみを一覧表示します。",
        "apihelp-revisiondelete-description": "版の削除および復元を行います。",
        "apihelp-revisiondelete-param-reason": "削除または復元の理由。",
        "apihelp-revisiondelete-example-revision": "<kbd>Main Page</kbd> の版 <kbd>12345</kbd> の本文を隠す。",
        "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-example-log": "<kbd>Wrongly applied</kbd> という理由で <kbd>spam</kbd> タグを 記録項目ID 123 から取り除く",
+       "apihelp-tokens-param-type": "リクエストするトークンの種類。",
+       "apihelp-tokens-example-edit": "編集トークンを取得する (既定)。",
        "apihelp-unblock-description": "利用者のブロックを解除します。",
        "apihelp-unblock-param-id": "解除するブロックのID (<kbd>list=blocks</kbd>で取得できます)。<var>$1user</var> とは同時に使用できません。",
        "apihelp-unblock-param-user": "ブロックを解除する利用者名、IPアドレスまたはIPレンジ。<var>$1id</var>とは同時に使用できません。",
        "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-userrights-param-user": "利用者名。",
+       "apihelp-userrights-param-userid": "利用者ID。",
+       "apihelp-userrights-param-add": "利用者をこのグループに追加します。",
        "apihelp-format-example-generic": "クエリの結果を $1 形式に整形します",
        "apihelp-dbg-description": "データを PHP の <code>var_export()</code> 形式で出力します。",
        "apihelp-dbgfm-description": "データを PHP の <code>var_export()</code> 形式 (HTML に埋め込んだ形式) で出力します。",
index 468f1c9..7d24c4a 100644 (file)
        "apihelp-query+allfileusages-param-to": "De Övverschreff vun dä Dattei, woh de Leß medd ophühre sull.",
        "apihelp-query+allfileusages-param-prefix": "Söhk noh alle Övverschreffte, di met heh däm Täx aanfange.",
        "apihelp-query+allfileusages-param-unique": "Donn blohß ongerscheidlijje Övverschreffte vun Datteije aanzeije. Kammer nit zesamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1prop=ids<code>“ bruche.\nWann als ene  Jenerahtor enjesaz, bräng Zihlsigge un kein Kwällsigge.",
-       "apihelp-query+allfileusages-param-prop": "Which pieces of information to include:\n;ids:Adds the page ID of the using page (cannot be used with $1unique).\n;title:Adds the title of the file.\n<!-- \nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-query%2Ballfileusages-param-prop/ksh\n-->",
+       "apihelp-query+allfileusages-param-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-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+templates-param-limit": "Wi vill Schablohne sulle ußjejovve wähde?",
        "apihelp-query+templates-param-dir": "En wälsche Reihjefollsch opleßte.",
        "apihelp-query+usercontribs-param-limit": "De hühßte Aanzahl vun Meddeilonge för zeröck ze jävve",
+       "apihelp-tag-description": "Donn Makkehronge vun einzel Väsjohne udder Enndraähsch em Logbohch fott nämme udder se verjävve.",
+       "apihelp-tag-param-revid": "Ein Kännong udder mieh, woh di Makkehrong derbei jedonn udder fott jenumme wähde sull.",
+       "apihelp-tag-param-add": "De Makkehrong zom Zohföhje. Bloß de vun Hand aanjelaat Makkehronge künne heh zohjeföhsch wähde.",
        "apihelp-tag-param-reason": "Dä Jrond för di Änderong.",
+       "apihelp-tag-example-rev": "Donn de Makkehrong „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">vandalism</kbd>“ vun dä Väsjohn met dä Kännong „<kbd>123</kbd>“ fott nämme, der ohne ene Jrond ze nänne.",
+       "apihelp-tag-example-log": "Donn de Makkehrong „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">spam</kbd>“ vun dämm Enndrahch met dä Kännong „<kbd>123</kbd>“ em Logbohch fott nämme un als Jrond draaach „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Wrongly applied</kbd>“ enn.",
        "api-help-source": "Quäll: $1",
        "api-help-source-unknown": "Quäll: <span class=\"apihelp-unknown\">onbikannt</span>",
        "api-help-license": "Lezänz: [[$1|$2]]",
index 1efb45f..7ef2370 100644 (file)
        "apihelp-block-param-nocreate": "Оневозможи создавање кориснички сметки.",
        "apihelp-block-param-autoblock": "Автоматски блокирај ја последно употребената IP-адреса и сите понатамошни IP-адреси од кои лицето ќе се обиде да се најави.",
        "apihelp-block-param-noemail": "Оневозможи му на корисникот да испаќа е-пошта преку викито. (Го бара правото „блокирање е-пошта“).",
-       "apihelp-block-param-hidename": "Скриј го корисничкото име од дневникот на блокирања. (Го бара правото „скривање корисник“)",
+       "apihelp-block-param-hidename": "Скриј го корисничкото име од дневникот на блокирања. (Го бара правото <code>hideuser</code>)",
        "apihelp-block-param-allowusertalk": "Овозможи му на корисникот да си ја уредува сопствената страница за разговор (зависи од <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "Ако корисникот е веќе блокиран, наметни врз постоечкиот блок.",
        "apihelp-block-param-watchuser": "Набљудувај ја корисничката страница и страницата за разговор на овој корисник или IP-адреса",
-       "apihelp-block-example-ip-simple": "Блокирај ја IP-адресата 192.0.2.5 три дена со причината „Прва опомена“",
+       "apihelp-block-example-ip-simple": "Блокирај ја IP-адресата <kbd>192.0.2.5</kbd> три дена со причината <kbd>Прва опомена</kbd>.",
        "apihelp-block-example-user-complex": "Блокирај го корисникот Вандал (Vandal) бесконечно со причината „Вандализам“ и оневозможи создавање на нови сметки и праќање е-пошта",
        "apihelp-clearhasmsg-description": "Ја отстранува ознаката „<code>hasmsg</code>“ од тековниот корисник.",
        "apihelp-clearhasmsg-example-1": "Отстрани ја ознаката „<code>hasmsg</code>“ од тековниот корисник",
index 72816b9..1b63f93 100644 (file)
@@ -55,6 +55,7 @@
        "api-help-flag-writerights": "Voor deze module zijn schrijfrechten nodig.",
        "api-help-parameters": "{{PLURAL:$1|Parameter|Parameters}}:",
        "api-help-param-deprecated": "Verouderd.",
+       "api-help-datatypes-header": "Gegevenstypen",
        "api-help-param-default": "Standaard: $1",
        "api-credits-header": "Vermeldingen",
        "api-credits": "API-ontwikkelaars:\n* Roan Kattouw (hoofdontwikkelaar september 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (oorspronkelijke ontwikkelaar, hoofdontwikkelaar september 2006 – september 2007)\n* Brad Jorsch (hoofdontwikkelaar 2013 – heden)\n\nStuur uw opmerkingen, suggesties en vragen naar mediawiki-api@lists.wikimedia.org\nof maak een melding aan op https://phabricator.wikimedia.org/."
index 416df79..22fa657 100644 (file)
        "api-help-parameters": "{{PLURAL:$1|Parametr|Parametry}}:",
        "api-help-param-deprecated": "Przestarzałe.",
        "api-help-param-required": "Ten parametr jest wymagany.",
+       "api-help-datatypes-header": "Typy danych",
+       "api-help-param-type-boolean": "Typ: wartość logiczna ([[Special:ApiHelp/main#main/datatypes|szczegóły]])",
+       "api-help-param-type-timestamp": "Typ: {{PLURAL:$1|1=znacznik czasu|2=lista znaczników czasu}} ([[Special:ApiHelp/main#main/datatypes|dozwolone formaty]])",
+       "api-help-param-type-user": "Typ: {{PLURAL:$1|1=nazwa użytkownika|2=lista nazw uzytkowników}}",
        "api-help-param-list": "{{PLURAL:$1|1=Jedna wartość|2=Wartości (oddziel za pomocą <kbd>{{!}}</kbd>)}}: $2",
        "api-help-param-limit": "Nie więcej niż $1 dozwolone.",
        "api-help-param-limit2": "Nie więcej niż $1 ($2 dla botów) dozwolone.",
index 13ce490..528f0b6 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Ата",
-                       "A1"
+                       "A1",
+                       "Ahonc"
                ]
        },
        "apihelp-main-param-action": "Яку дію виконати.",
@@ -26,5 +27,6 @@
        "apihelp-expandtemplates-description": "Розгортає усі шаблони у вікітекст.",
        "apihelp-expandtemplates-param-title": "Заголовок сторінки.",
        "apihelp-expandtemplates-param-text": "Вікітекст для перетворення.",
-       "apihelp-move-param-ignorewarnings": "Ігнорувати всі попередження"
+       "apihelp-move-param-ignorewarnings": "Ігнорувати всі попередження",
+       "api-help-datatypes-header": "Типи даних"
 }
index 78dd4c2..e548643 100644 (file)
@@ -85,6 +85,7 @@
        "apihelp-edit-param-sectiontitle": "新小节的标题。",
        "apihelp-edit-param-text": "页面内容。",
        "apihelp-edit-param-summary": "编辑摘要。当$1section=new且未设置$1sectiontitle时,还包括小节标题。",
+       "apihelp-edit-param-tags": "更改标签以应用修订。",
        "apihelp-edit-param-minor": "小编辑。",
        "apihelp-edit-param-notminor": "不是小编辑。",
        "apihelp-edit-param-bot": "标记此编辑为机器人编辑。",
        "apihelp-query+allfileusages-param-prop": "要包含的信息束:\n;ids:添加使用中的页面的页面ID(不能与$1unique一起使用)。\n;title:添加文件的标题。",
        "apihelp-query+allfileusages-param-limit": "要返回的总计项目。",
        "apihelp-query+allfileusages-param-dir": "罗列所采用的方向。",
-       "apihelp-query+allfileusages-example-unique": "列出唯一性的文件标题",
-       "apihelp-query+allfileusages-example-unique-generator": "获取所有文件标题,并标记出缺失者",
-       "apihelp-query+allfileusages-example-generator": "获取包含这些文件的页面",
+       "apihelp-query+allfileusages-example-B": "列举文件标题,包含丢失的文件、它们来自的页面ID,以<kbd>B</kbd>开头。",
+       "apihelp-query+allfileusages-example-unique": "列出唯一文件标题。",
+       "apihelp-query+allfileusages-example-unique-generator": "获取所有文件标题,并标记出缺失者。",
+       "apihelp-query+allfileusages-example-generator": "获取包含这些文件的页面。",
        "apihelp-query+allimages-description": "按顺序枚举所有图像。",
        "apihelp-query+allimages-param-sort": "要作为排序方式的属性。",
        "apihelp-query+allimages-param-dir": "罗列所采用的方向。",
        "apihelp-rsd-example-simple": "导出RSD架构",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "工作于所有已监视页面。",
        "apihelp-setnotificationtimestamp-example-all": "重置整个监视列表的通知状态。",
+       "apihelp-setnotificationtimestamp-example-page": "重置用于<kbd>Main page</kbd>的通知状态。",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "设置<kbd>Main page</kbd>的通知时间戳,这样所有从2012年1月1日起的编辑都会是未复核的。",
        "apihelp-setnotificationtimestamp-example-allpages": "重置在<kbd>{{ns:user}}</kbd>名字空间中的页面的通知状态。",
+       "apihelp-tag-param-rcid": "要添加或移除标签的一个或更多的最近更改ID。",
+       "apihelp-tag-param-revid": "要添加或移除标签的一个或更多的修订ID。",
+       "apihelp-tag-param-logid": "要添加或移除标签的一个或更多的日志记录ID。",
        "apihelp-tag-param-add": "要添加的标签。只有手动定义的标签可以添加。",
        "apihelp-tag-param-remove": "要移除的标签。只有手动定义或完全不明确的标签可以被移除。",
+       "apihelp-tag-param-reason": "更改原因。",
+       "apihelp-tag-example-rev": "从修订ID 123添加<kbd>vandalism</kbd>标签,而不指定原因",
+       "apihelp-tag-example-log": "从日志记录ID 123移除<kbd>spam</kbd>标签,原因为<kbd>Wrongly applied</kbd>",
        "apihelp-tokens-param-type": "要请求的令牌类型。",
        "apihelp-unblock-description": "解封一位用户。",
        "apihelp-unblock-param-id": "解封时需要的封禁ID(通过<kbd>list=blocks</kbd>获得)。不能与<var>$1user</var>一起使用。",
        "apihelp-dump-description": "输出数据为PHP的<code>var_dump()</code>格式。",
        "apihelp-dumpfm-description": "输出数据为PHP的<code>var_dump()</code>格式(HTML优质打印效果)。",
        "apihelp-json-description": "输出数据为JSON格式。",
+       "apihelp-json-param-formatversion": "输出格式:\n;1:向后兼容格式(XML样式布尔值、用于内容节点的<samp>*</samp>键等)。\n;2:实验现代格式。细节可以更改!\n;latest:使用最新格式(当前为<kbd>2</kbd>),可以在没有警告的情况下更改。",
        "apihelp-jsonfm-description": "输出数据为JSON格式(HTML优质打印效果)。",
        "apihelp-none-description": "不输出任何东西。",
        "apihelp-php-description": "输出数据为序列化PHP格式。",
+       "apihelp-php-param-formatversion": "输出格式:\n;1:向后兼容格式(XML样式布尔值、用于内容节点的<samp>*</samp>键等)。\n;2:实验现代格式。细节可以更改!\n;latest:使用最新格式(当前为<kbd>2</kbd>),可以在没有警告的情况下更改。",
        "apihelp-phpfm-description": "输出数据为序列化PHP格式(HTML优质打印效果)。",
        "apihelp-rawfm-description": "输出数据为JSON格式,带调试元素(HTML优质打印效果)。",
        "apihelp-txt-description": "输出数据为PHP的<code>print_r()</code>格式。",
index 371b267..9c2435a 100644 (file)
@@ -1057,6 +1057,24 @@ abstract class ContentHandler {
                return false;
        }
 
+       /**
+        * Return true if this content model supports direct editing, such as via EditPage.
+        *
+        * @return bool Default is false, and true for TextContent and it's derivatives.
+        */
+       public function supportsDirectEditing() {
+               return false;
+       }
+
+       /**
+        * Whether or not this content model supports direct editing via ApiEditPage
+        *
+        * @return bool Default is false, and true for TextContent and derivatives.
+        */
+       public function supportsDirectApiEditing() {
+               return $this->supportsDirectEditing();
+       }
+
        /**
         * Logs a deprecation warning, visible if $wgDevelopmentWarnings, but only if
         * self::$enableDeprecationWarnings is set to true.
index ffe1acb..f5e8783 100644 (file)
@@ -134,4 +134,13 @@ class TextContentHandler extends ContentHandler {
                return new $class( '' );
        }
 
+       /**
+        * @see ContentHandler::supportsDirectEditing
+        *
+        * @return bool Default is true for TextContent and derivatives.
+        */
+       public function supportsDirectEditing() {
+               return true;
+       }
+
 }
index ae2d995..1249eba 100644 (file)
@@ -432,10 +432,8 @@ class MWDebug {
 
                        // Cannot use OutputPage::addJsConfigVars because those are already outputted
                        // by the time this method is called.
-                       $html = Html::inlineScript(
-                               ResourceLoader::makeLoaderConditionalScript(
-                                       ResourceLoader::makeConfigSetScript( array( 'debugInfo' => $debugInfo ) )
-                               )
+                       $html = ResourceLoader::makeInlineScript(
+                               ResourceLoader::makeConfigSetScript( array( 'debugInfo' => $debugInfo ) )
                        );
                }
 
index 77bbd36..2c63dfb 100644 (file)
@@ -1077,10 +1077,11 @@ class DifferenceEngine extends ContextSource {
                // is often in a different language, mostly the page content language/dir
                $tableClass = 'diff diff-contentalign-' . htmlspecialchars( $this->getDiffLang()->alignStart() );
                $header = "<table class='$tableClass'>";
+               $userLang = htmlspecialchars( $this->getLanguage()->getHtmlCode() );
 
                if ( !$diff && !$otitle ) {
                        $header .= "
-                       <tr style='vertical-align: top;'>
+                       <tr style='vertical-align: top;' lang='{$userLang}'>
                        <td class='diff-ntitle'>{$ntitle}</td>
                        </tr>";
                        $multiColspan = 1;
@@ -1099,7 +1100,7 @@ class DifferenceEngine extends ContextSource {
                        }
                        if ( $otitle || $ntitle ) {
                                $header .= "
-                               <tr style='vertical-align: top;'>
+                               <tr style='vertical-align: top;' lang='{$userLang}'>
                                <td colspan='$colspan' class='diff-otitle'>{$otitle}</td>
                                <td colspan='$colspan' class='diff-ntitle'>{$ntitle}</td>
                                </tr>";
@@ -1108,10 +1109,11 @@ class DifferenceEngine extends ContextSource {
 
                if ( $multi != '' ) {
                        $header .= "<tr><td colspan='{$multiColspan}' style='text-align: center;' " .
-                               "class='diff-multi'>{$multi}</td></tr>";
+                               "class='diff-multi' lang='{$userLang}'>{$multi}</td></tr>";
                }
                if ( $notice != '' ) {
-                       $header .= "<tr><td colspan='{$multiColspan}' style='text-align: center;'>{$notice}</td></tr>";
+                       $header .= "<tr><td colspan='{$multiColspan}' style='text-align: center;' " .
+                               "lang='{$userLang}'>{$notice}</td></tr>";
                }
 
                return $header . $diff . "</table>";
index 0cffa94..1178a1a 100644 (file)
@@ -87,6 +87,6 @@
        "config-download-localsettings": "Чуяккха <code>LocalSettings.php</code>",
        "config-help": "гӀо",
        "config-nofile": "Файл \"$1\" каро цаелира. И дӀаяьккхина ярий?",
-       "mainpagetext": "'''Вики-белха гlирс «MediaWiki» кхочуш дика дlахlоттийна.'''",
+       "mainpagetext": "'''Вики-белхан гӀирс «MediaWiki» кхочуш дика дӀахӀоттийна.'''",
        "mainpagedocfooter": "Викийца болх бан хаамаш карор бу хӀокху чохь [//meta.wikimedia.org/wiki/Help:Contents нисвохааман куьйгаллица].\n\n== Цхьаболу пайде гӀирсаш ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings ГӀирс нисбан тарлушболу могӀам];\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Сих сиха лушдолу хаттарш а жоьпаш оцу MediaWiki];\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Хаам бохьуьйту араяларца башхонца керла MediaWiki].\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]"
 }
index ef718e0..7df85ff 100644 (file)
@@ -359,7 +359,7 @@ abstract class JobQueue {
                // Flag this job as an old duplicate based on its "root" job...
                try {
                        if ( $job && $this->isRootJobOldDuplicate( $job ) ) {
-                               JobQueue::incrStats( 'job-pop-duplicate', $this->type, 1, $this->wiki );
+                               JobQueue::incrStats( 'job-pop-duplicate', $this->type );
                                $job = DuplicateJob::newFromJob( $job ); // convert to a no-op
                        }
                } catch ( Exception $e ) {
@@ -703,15 +703,11 @@ abstract class JobQueue {
         * @param string $key Event type
         * @param string $type Job type
         * @param int $delta
-        * @param string $wiki Wiki ID (added in 1.23)
         * @since 1.22
         */
-       public static function incrStats( $key, $type, $delta = 1, $wiki = null ) {
+       public static function incrStats( $key, $type, $delta = 1 ) {
                wfIncrStats( $key, $delta );
                wfIncrStats( "{$key}-{$type}", $delta );
-               if ( $wiki !== null ) {
-                       wfIncrStats( "{$key}-{$type}-{$wiki}", $delta );
-               }
        }
 
        /**
index 9e85e40..320b1b1 100644 (file)
@@ -256,12 +256,11 @@ class JobQueueDB extends JobQueue {
                        foreach ( array_chunk( $rows, 50 ) as $rowBatch ) {
                                $dbw->insert( 'job', $rowBatch, $method );
                        }
-                       JobQueue::incrStats( 'job-insert', $this->type, count( $rows ), $this->wiki );
+                       JobQueue::incrStats( 'job-insert', $this->type, count( $rows ) );
                        JobQueue::incrStats(
                                'job-insert-duplicate',
                                $this->type,
-                               count( $rowSet ) + count( $rowList ) - count( $rows ),
-                               $this->wiki
+                               count( $rowSet ) + count( $rowList ) - count( $rows )
                        );
                } catch ( DBError $e ) {
                        if ( $flags & self::QOS_ATOMIC ) {
@@ -312,7 +311,7 @@ class JobQueueDB extends JobQueue {
                                        $this->cache->set( $this->getCacheKey( 'empty' ), 'true', self::CACHE_TTL_LONG );
                                        break; // nothing to do
                                }
-                               JobQueue::incrStats( 'job-pop', $this->type, 1, $this->wiki );
+                               JobQueue::incrStats( 'job-pop', $this->type );
                                // Get the job object from the row...
                                $title = Title::makeTitle( $row->job_namespace, $row->job_title );
                                $job = Job::factory( $row->job_cmd, $title,
@@ -680,7 +679,7 @@ class JobQueueDB extends JobQueue {
                                        );
                                        $affected = $dbw->affectedRows();
                                        $count += $affected;
-                                       JobQueue::incrStats( 'job-recycle', $this->type, $affected, $this->wiki );
+                                       JobQueue::incrStats( 'job-recycle', $this->type, $affected );
                                        // The tasks recycled jobs or release delayed jobs into the queue
                                        $this->cache->set( $this->getCacheKey( 'empty' ), 'false', self::CACHE_TTL_LONG );
                                        $this->aggr->notifyQueueNonEmpty( $this->wiki, $this->type );
@@ -709,7 +708,7 @@ class JobQueueDB extends JobQueue {
                                $dbw->delete( 'job', array( 'job_id' => $ids ), __METHOD__ );
                                $affected = $dbw->affectedRows();
                                $count += $affected;
-                               JobQueue::incrStats( 'job-abandon', $this->type, $affected, $this->wiki );
+                               JobQueue::incrStats( 'job-abandon', $this->type, $affected );
                        }
 
                        $dbw->unlock( "jobqueue-recycle-{$this->type}", __METHOD__ );
index 0f87df7..275d027 100644 (file)
@@ -222,9 +222,9 @@ class JobQueueRedis extends JobQueue {
 
                                throw new RedisException( "Could not insert {$failed} {$this->type} job(s)." );
                        }
-                       JobQueue::incrStats( 'job-insert', $this->type, count( $items ), $this->wiki );
+                       JobQueue::incrStats( 'job-insert', $this->type, count( $items ) );
                        JobQueue::incrStats( 'job-insert-duplicate', $this->type,
-                               count( $items ) - $failed - $pushed, $this->wiki );
+                               count( $items ) - $failed - $pushed );
                } catch ( RedisException $e ) {
                        $this->throwRedisException( $conn, $e );
                }
@@ -300,7 +300,7 @@ LUA;
                                        break; // no jobs; nothing to do
                                }
 
-                               JobQueue::incrStats( 'job-pop', $this->type, 1, $this->wiki );
+                               JobQueue::incrStats( 'job-pop', $this->type );
                                $item = $this->unserialize( $blob );
                                if ( $item === false ) {
                                        wfDebugLog( 'JobQueueRedis', "Could not unserialize {$this->type} job." );
index 1725b74..85f9c2c 100644 (file)
@@ -123,8 +123,9 @@ class JobRunner implements LoggerAwareInterface {
                $trxProfiler->setExpectation( 'maxAffected', 500, __METHOD__ );
 
                // Bail out if there is too much DB lag
-               list( , $maxLag ) = wfGetLBFactory()->getMainLB( wfWikiID() )->getMaxLag();
-               if ( $maxLag >= 5 ) {
+               $maxAllowedLag = 3;
+               list( , $maxLag ) = wfGetLB( wfWikiID() )->getMaxLag();
+               if ( $maxLag >= $maxAllowedLag ) {
                        $response['reached'] = 'slave-lag-limit';
                        return $response;
                }
@@ -140,10 +141,9 @@ class JobRunner implements LoggerAwareInterface {
                $jobsRun = 0;
                $timeMsTotal = 0;
                $flags = JobQueueGroup::USE_CACHE;
-               $checkPeriod = 5.0; // seconds
-               $checkPhase = mt_rand( 0, 1000 * $checkPeriod ) / 1000; // avoid stampedes
                $startTime = microtime( true ); // time since jobs started running
-               $lastTime = microtime( true ) - $checkPhase; // time since last slave check
+               $checkLagPeriod = 1.0; // check slave lag this many seconds
+               $lastCheckTime = 1; // timestamp of last slave check
                do {
                        // Sync the persistent backoffs with concurrent runners
                        $backoffs = $this->syncBackoffDeltas( $backoffs, $backoffDeltas, $wait );
@@ -234,13 +234,13 @@ class JobRunner implements LoggerAwareInterface {
                                // Don't let any of the main DB slaves get backed up.
                                // This only waits for so long before exiting and letting
                                // other wikis in the farm (on different masters) get a chance.
-                               $timePassed = microtime( true ) - $lastTime;
-                               if ( $timePassed >= 3 || $timePassed < 0 ) {
-                                       if ( !wfWaitForSlaves( $lastTime, false, '*', 5 ) ) {
+                               $timePassed = microtime( true ) - $lastCheckTime;
+                               if ( $timePassed >= $checkLagPeriod || $timePassed < 0 ) {
+                                       if ( !wfWaitForSlaves( $lastCheckTime, false, '*', $maxAllowedLag ) ) {
                                                $response['reached'] = 'slave-lag-limit';
                                                break;
                                        }
-                                       $lastTime = microtime( true );
+                                       $lastCheckTime = microtime( true );
                                }
                                // Don't let any queue slaves/backups fall behind
                                if ( $jobsRun > 0 && ( $jobsRun % 100 ) == 0 ) {
index fb2daa6..8e5c17d 100644 (file)
@@ -58,8 +58,8 @@ class MultiHttpClient {
 
        /**
         * @param array $options
-        *   - connTimeout     : default connection timeout
-        *   - reqTimeout      : default request timeout
+        *   - connTimeout     : default connection timeout (seconds)
+        *   - reqTimeout      : default request timeout (seconds)
         *   - proxy           : HTTP proxy to use
         *   - usePipelining   : whether to use HTTP pipelining if possible (for all hosts)
         *   - maxConnsPerHost : maximum number of concurrent connections (per host)
@@ -95,8 +95,8 @@ class MultiHttpClient {
         *  </code>
         * @param array $req HTTP request array
         * @param array $opts
-        *   - connTimeout    : connection timeout per request
-        *   - reqTimeout     : post-connection timeout per request
+        *   - connTimeout    : connection timeout per request (seconds)
+        *   - reqTimeout     : post-connection timeout per request (seconds)
         * @return array Response array for request
         */
        final public function run( array $req, array $opts = array() ) {
@@ -123,8 +123,8 @@ class MultiHttpClient {
         *
         * @param array $reqs Map of HTTP request arrays
         * @param array $opts
-        *   - connTimeout     : connection timeout per request
-        *   - reqTimeout      : post-connection timeout per request
+        *   - connTimeout     : connection timeout per request (seconds)
+        *   - reqTimeout      : post-connection timeout per request (seconds)
         *   - usePipelining   : whether to use HTTP pipelining if possible
         *   - maxConnsPerHost : maximum number of concurrent connections (per host)
         * @return array $reqs With response array populated for each
index 0b791e5..150a7ce 100644 (file)
@@ -47,6 +47,7 @@ use Psr\Log\NullLogger;
 abstract class BagOStuff implements LoggerAwareInterface {
        private $debugMode = false;
 
+       /** @var integer */
        protected $lastError = self::ERR_NONE;
 
        /**
@@ -109,8 +110,9 @@ abstract class BagOStuff implements LoggerAwareInterface {
 
        /**
         * Merge changes into the existing cache value (possibly creating a new one).
-        * The callback function returns the new value given the current value (possibly false),
-        * and takes the arguments: (this BagOStuff object, cache key, current value).
+        * The callback function returns the new value given the current value
+        * (which will be false if not present), and takes the arguments:
+        * (this BagOStuff, cache key, current value).
         *
         * @param string $key
         * @param callable $callback Callback method to be executed
@@ -334,7 +336,7 @@ abstract class BagOStuff implements LoggerAwareInterface {
         * Decrease stored value of $key by $value while preserving its TTL
         * @param string $key
         * @param int $value
-        * @return int
+        * @return int|bool New value or false on failure
         */
        public function decr( $key, $value = 1 ) {
                return $this->incr( $key, - $value );
index f69530c..352bda5 100644 (file)
@@ -116,8 +116,13 @@ class RightsLogFormatter extends LogFormatter {
                        }
                }
 
-               $params['4:array:oldgroups'] = $this->makeGroupArray( $params['4:array:oldgroups'] );
-               $params['5:array:newgroups'] = $this->makeGroupArray( $params['5:array:newgroups'] );
+               // Really old entries does not have log params
+               if ( isset( $params['4:array:oldgroups'] ) ) {
+                       $params['4:array:oldgroups'] = $this->makeGroupArray( $params['4:array:oldgroups'] );
+               }
+               if ( isset( $params['5:array:newgroups'] ) ) {
+                       $params['5:array:newgroups'] = $this->makeGroupArray( $params['5:array:newgroups'] );
+               }
 
                return $params;
        }
index 3d5cc51..f8d8d2f 100644 (file)
@@ -1346,6 +1346,7 @@ MESSAGE;
         * Returns JS code which runs given JS code if the client-side framework is
         * present.
         *
+        * @deprecated since 1.25; use makeInlineScript instead
         * @param string $script JavaScript code
         * @return string
         */
@@ -1353,6 +1354,20 @@ MESSAGE;
                return "if(window.mw){\n" . trim( $script ) . "\n}";
        }
 
+       /**
+        * Construct an inline script tag with given JS code.
+        *
+        * The code will be wrapped in a closure, and it will be executed by ResourceLoader
+        * only if the client has adequate support for MediaWiki JavaScript code.
+        *
+        * @param string $script JavaScript code
+        * @return string HTML
+        */
+       public static function makeInlineScript( $script ) {
+               $js = self::makeLoaderConditionalScript( $script );
+               return Html::inlineScript( $js );
+       }
+
        /**
         * Returns JS code which will set the MediaWiki configuration array to
         * the given value.
index ac7a85b..07a2e87 100644 (file)
@@ -365,8 +365,8 @@ abstract class Skin extends ContextSource {
         */
        static function makeVariablesScript( $data ) {
                if ( $data ) {
-                       return Html::inlineScript(
-                               ResourceLoader::makeLoaderConditionalScript( ResourceLoader::makeConfigSetScript( $data ) )
+                       return ResourceLoader::makeInlineScript(
+                               ResourceLoader::makeConfigSetScript( $data )
                        );
                } else {
                        return '';
index 3ed3c04..babb315 100644 (file)
@@ -92,14 +92,14 @@ class SpecialChangeEmail extends FormSpecialPage {
                        'NewEmail' => array(
                                'type' => 'email',
                                'label-message' => 'changeemail-newemail',
+                               'autofocus' => true
                        ),
                );
 
                if ( $this->getConfig()->get( 'RequirePasswordforEmailChange' ) ) {
                        $fields['Password'] = array(
                                'type' => 'password',
-                               'label-message' => 'changeemail-password',
-                               'autofocus' => true,
+                               'label-message' => 'changeemail-password'
                        );
                }
 
index 14850ff..bfd1717 100644 (file)
@@ -408,8 +408,6 @@ class SpecialEditTags extends UnlistedSpecialPage {
                        $tagsToRemove = array_diff( $existingTags, $tagList );
                }
 
-               //var_dump( array( 'add' => $tagsToAdd, 'remove' => $tagsToRemove ) );
-
                if ( !$tagsToAdd && !$tagsToRemove ) {
                        $status = Status::newFatal( 'tags-edit-none-selected' );
                } else {
@@ -431,7 +429,7 @@ class SpecialEditTags extends UnlistedSpecialPage {
         */
        protected function success() {
                $this->getOutput()->setPageTitle( $this->msg( 'actioncomplete' ) );
-               $this->getOutput()->wrapWikiMsg( "<span class=\"success\">\n$1\n</span>",
+               $this->getOutput()->wrapWikiMsg( "<div class=\"successbox\">\n$1\n</div>",
                        'tags-edit-success' );
                $this->wasSaved = true;
                $this->revList->reloadFromMaster();
@@ -445,7 +443,10 @@ class SpecialEditTags extends UnlistedSpecialPage {
         */
        protected function failure( $status ) {
                $this->getOutput()->setPageTitle( $this->msg( 'actionfailed' ) );
-               $this->getOutput()->addWikiText( $status->getWikiText( 'tags-edit-failure' ) );
+               $this->getOutput()->addWikiText( '<div class="errorbox">' .
+                       $status->getWikiText( 'tags-edit-failure' ) .
+                       '</div>'
+               );
                $this->showForm();
        }
 
index ecb166a..e9639e1 100644 (file)
@@ -168,15 +168,13 @@ HTML;
                // The testrunner configures QUnit and essentially depends on it. However, test suites
                // are reusable in environments that preload QUnit (or a compatibility interface to
                // another framework). Therefore we have to load it ourselves.
-               $out->addHtml( Html::inlineScript(
-                       ResourceLoader::makeLoaderConditionalScript(
-                               Xml::encodeJsCall( 'mw.loader.using', array(
-                                       array( 'jquery.qunit', 'jquery.qunit.completenessTest' ),
-                                       new XmlJsCode(
-                                               'function () {' . Xml::encodeJsCall( 'mw.loader.load', array( $modules ) ) . '}'
-                                       )
-                               ) )
-                       )
+               $out->addHtml( ResourceLoader::makeInlineScript(
+                       Xml::encodeJsCall( 'mw.loader.using', array(
+                               array( 'jquery.qunit', 'jquery.qunit.completenessTest' ),
+                               new XmlJsCode(
+                                       'function () {' . Xml::encodeJsCall( 'mw.loader.load', array( $modules ) ) . '}'
+                               )
+                       ) )
                ) );
        }
 
index 368d491..b6cf8e4 100644 (file)
@@ -152,7 +152,7 @@ class SpecialMergeHistory extends SpecialPage {
 
                if ( count( $errors ) ) {
                        $this->showMergeForm();
-                       $out->addHTML( implode( "\n", $errors ) );
+                       $this->getOutput()->addHTML( implode( "\n", $errors ) );
                } else {
                        $this->showHistory();
                }
index bdfe911..62025e7 100644 (file)
@@ -606,7 +606,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                // Messages: revdelete-success, logdelete-success
                $this->getOutput()->setPageTitle( $this->msg( 'actioncomplete' ) );
                $this->getOutput()->wrapWikiMsg(
-                       "<span class=\"success\">\n$1\n</span>",
+                       "<div class=\"successbox\">\n$1\n</div>",
                        $this->typeLabels['success']
                );
                $this->wasSaved = true;
@@ -621,7 +621,10 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
        protected function failure( $status ) {
                // Messages: revdelete-failure, logdelete-failure
                $this->getOutput()->setPageTitle( $this->msg( 'actionfailed' ) );
-               $this->getOutput()->addWikiText( $status->getWikiText( $this->typeLabels['failure'] ) );
+               $this->getOutput()->addWikiText( '<div class="errorbox">' .
+                       $status->getWikiText( $this->typeLabels['failure'] ) .
+                       '</div>'
+               );
                $this->showForm();
        }
 
index c535e51..2603d59 100644 (file)
        "editfont-monospace": "خط ثابت العرض",
        "editfont-sansserif": "خط بلا زوائد",
        "editfont-serif": "خط بزوائد",
-       "sunday": "ela7ad",
-       "monday": "elithnaine",
-       "tuesday": "etholatha",
-       "wednesday": "elirbi3a",
-       "thursday": "el5amis",
-       "friday": "eljom3a",
-       "saturday": "essibt",
-       "sun": "ela7ad",
+       "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": "Janvi",
-       "february": "Fivri",
-       "march": "Mars",
-       "april": "Avril",
-       "may_long": "Mai",
-       "june": "Juin",
-       "july": "Juilia",
-       "august": "Août",
-       "september": "Septembre",
-       "october": "Octobre",
-       "november": "Novembre",
-       "december": "Décembre",
+       "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": "Fivri",
+       "february-gen": "Fîvrî",
        "march-gen": "Mars",
        "april-gen": "Avril",
        "may-gen": "Mai",
        "october-gen": "Octobre",
        "november-gen": "Novembre",
        "december-gen": "Décembre",
-       "jan": "Janv",
-       "feb": "Fivr",
-       "mar": "Mars",
-       "apr": "Avrl",
-       "may": "Mai",
-       "jun": "Juin",
-       "jul": "Juil",
-       "aug": "Août",
-       "sep": "Sept",
-       "oct": "Oct",
-       "nov": "Nov",
-       "dec": "Déc",
+       "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": "التصنيفات الفرعية",
        "mypage": "صفحتي",
        "mytalk": "نقاشي",
        "anontalk": "Tħaddeth mgħa ladrisa IP hadhi",
-       "navigation": "Ħawwes",
+       "navigation": "Ḩawwis",
        "and": "&#32;w",
        "qbfind": "Lawwej",
        "qbbrowse": "Navigi",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
        "actions": "Aksyonàt",
-       "namespaces": "Blàsʾàt làsàmi",
-       "variants": "Tanwigħà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": "Men {{SITENAME}}",
-       "help": "Mgħàwna",
-       "search": "Lawwej",
-       "searchbutton": "Lawwej",
+       "tagline": "Min {{SITENAME}}",
+       "help": "Mģâwne",
+       "search": "Lawwij",
+       "searchbutton": "Lawwij",
        "go": "Emchi",
-       "searcharticle": "Lawwej",
+       "searcharticle": "Imcî",
        "history": "Listorik mtagħ elpàj",
-       "history_short": "Listorik",
+       "history_short": "Il-istorîk",
        "updatedmarker": "tbaddlet melli jit àkher marra",
-       "printableversion": "Kopi bech tatʾbaħħa",
-       "permalink": "Rabtʾa għla tʾoul",
+       "printableversion": "Kopî bêc tiţbaģhê",
+       "permalink": "lieñ yoqģod dîme dîme",
        "print": "Atʾbagħ",
        "view": "Aqra",
-       "edit": "Baddel",
+       "edit": "Baddil",
        "create": "Agħmel",
        "editthispage": "Baddel f elpàj hadhi",
        "create-this-page": "Agħmel elpàj hadhi",
        "unprotectthispage": "Baddel elħimàya mtagħ elpàj hadhi",
        "newpage": "Pàj jdida",
        "talkpage": "Tħaddeth għal pàj hadhi",
-       "talkpagelinktext": "Ħdith",
+       "talkpagelinktext": "Ḩdîŧ",
        "specialpage": "Sʾafħa spesyàl",
-       "personaltools": "Magħounek",
+       "personaltools": "Mêģûnik",
        "articlepage": "Warri elpàj mtagħ elkontenu",
-       "talk": "Ħdith",
-       "views": "Mandhʾer",
-       "toolbox": "Magħoun",
+       "talk": "Ḩdiŧ",
+       "views": "Maner",
+       "toolbox": "Mêģûn",
        "userpage": "Chour elpàj mtagħ lutilizateur",
        "projectpage": "Chouf elpàj mtagħ leprojé",
        "imagepage": "Chouf elpàj mtagħ elfichyé",
        "viewhelppage": "Chouf elpàj mtagħ lemgħàwna",
        "categorypage": "Chouf elpàj mtagħ elkatégori",
        "viewtalkpage": "Chouf leħdith",
-       "otherlanguages": "B loughat okhra",
+       "otherlanguages": "B-lûğât okhrîne",
        "redirectedfrom": "(Tħawwelt men $1)",
        "redirectpagesub": "Pàj mtagħ taħwil",
-       "lastmodifiedat": "Elpàj hadhi tbaddlet àkher marra nhàr $1, mgħa $2.",
+       "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": "Emchi l:",
-       "jumptonavigation": "Ħawwes",
-       "jumptosearch": "Lawwej",
+       "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": "Fima ykhosʾ {{SITENAME}}",
-       "aboutpage": "Project:Fima ykhosʾ",
+       "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": "Tambihàt",
-       "disclaimerpage": "Project:Tambihàt għàmma",
+       "disclaimers": "Tambîhêt",
+       "disclaimerpage": "Project:Tambîhêt ģâmme",
        "edithelp": "Mgħàwna f elktiba",
-       "mainpage": "Elpàj Lawlàniya",
-       "mainpage-description": "Elpàj Lawlàniya",
+       "mainpage": "Il-pâj il-ewelêniye",
+       "mainpage-description": "Il-Pâj il-ewelêniye",
        "policy-url": "Project:Elpolitik",
-       "portal": "Dakhlet elmojtamagħ",
-       "portal-url": "Project:Mojtamagħ",
-       "privacy": "Elpolitik mtagħ elkonfidonsyalité",
-       "privacypage": "Project:Elpolitik mtagħ elkonfidonsyalité",
+       "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": "Tekhdhet men \"$1\"",
+       "retrievedfrom": "Tixđêt min- \"$1\"",
        "youhavenewmessages": "توجد لديك $1 ($2).",
        "youhavenewmessagesmulti": "لديك رسائل جديدة على $1",
-       "editsection": "Baddel essʾafħa",
-       "editold": "Baddel",
+       "editsection": "Baddil iş-şafḩa",
+       "editold": "Baddil",
        "viewsourceold": "Warri essours",
-       "editlink": "baddel",
-       "viewsourcelink": "Warri essource",
-       "editsectionhint": "Baddel essection: $1",
+       "editlink": "baddil",
+       "viewsourcelink": "Warri is-sûrs",
+       "editsectionhint": "Baddil is-sêksyioñ: $1",
        "toc": "Contenu",
        "showtoc": "Warri",
        "hidetoc": "Khabbi",
        "feed-invalid": "نوع اشتراك التلقيم غير صحيح.",
        "feed-unavailable": "التلقيمات غير متوفرة",
        "site-rss-feed": "$1 تلقيم أر إس إس",
-       "site-atom-feed": "Flux Atom mtaε $1",
+       "site-atom-feed": "Flü Atom mtêģ $1",
        "page-rss-feed": "\"$1\" تلقيم أر إس إس",
        "page-atom-feed": "$1 تلقيم أتوم",
-       "red-link-title": "$1 (Essafħa mouch mawjouda)",
+       "red-link-title": "$1 (Iş-Şafḩa mûc mawjûde)",
        "sort-descending": "ترتيب تنازلي",
        "sort-ascending": "ترتيب تصاعدي",
-       "nstab-main": "Sʾafħa",
+       "nstab-main": "Şafḩa",
        "nstab-user": "صفحة مستخدم",
        "nstab-media": "صفحة وسيط",
-       "nstab-special": "Sʾafħa spesyàl",
+       "nstab-special": "Safḩa spêsyâl",
        "nstab-project": "صفحة مشروع",
        "nstab-image": "Fichier",
        "nstab-mediawiki": "Messàj",
        "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للدخول بشكل نهائي، يجب عليك ضبط كلمة سر جديدة هنا:",
        "newarticle": "(جديد)",
        "newarticletext": "لقد تبعت وصلة لصفحة لم يتم إنشائها بعد.\nلإنشاء هذه الصفحة ابدأ الكتابة في الصندوق بالأسفل (انظر في [$1 صفحة المساعدة] للمزيد من المعلومات).\nإذا كانت زيارتك لهذه الصفحة بالخطأ، اضغط على زر ''رجوع'' في متصفح الإنترنت لديك.",
        "anontalkpagetext": "----''هذه صفحة نقاش لمستخدم مجهول لم يقم بإنشاء حساب بعد أو لا يستعمل ذلك الحساب.\nلذا فيجب علينا استعمال رقم الأيبي للتعرف عليه/عليها.\nمثل هذا العنوان يمكن أن يشترك فيه عدة مستخدمين.\nلو كنت مستخدما مجهولا وتشعر بأن تعليقات لا تخصك تم توجيهها إليك، من فضلك [[Special:UserLogin/signup|أنشئ حسابا]] أو [[Special:UserLogin|سجل الدخول]] لتجنب الارتباك المستقبلي مع مستخدمين مجهولين آخرين.''",
-       "noarticletext": "Mafamma ħatta texte tawa f'essafħa hedhi.\nTnajjem [[Special:Search/{{PAGENAME}}|tfarkes εal titre mtaε essafħa]] fi safħat okhrine, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tfarkes f'elhistoriques elli εandhom εaleqa], \nwalla [{{fullurl:{{FULLPAGENAME}}|action=edit}} tbaddel essafħa hedhi]</span>",
+       "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\" غير مسجل.",
        "difference-title": "«$1»: الفرق بين المراجعتين",
        "difference-title-multipage": "«$1» و«$2»: الفرق بين الصفحتين",
        "difference-multipage": "(الفرق بين الصفحتين)",
-       "lineno": "Star $1:",
+       "lineno": "Sţar $1:",
        "compareselectedversions": "قارن بين النسختين المختارتين",
        "showhideselectedversions": "أظهر/أخف المراجعات المختارة",
-       "editundo": "Rajjaε",
+       "editundo": "Rajjaģ",
        "diff-multi-manyusers": "({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتان أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} أكثر من {{PLURAL:$2||مستخدم واحد|مستخدمين|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)",
-       "searchresults": "Errézultʾa mtagħ ettalwij",
-       "searchresults-title": "Errézultʾa mtagħ ettalwij għla \"$1\"",
+       "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|نتيجة|نتيجة}} سابقة",
        "newuserlogpage": "سجل إنشاء المستخدمين",
        "action-edit": "modifi hal page",
        "nchanges": "{{PLURAL:$1|لا تغييرات|تغيير واحد|تغييران|$1 تغييرات|$1 تغييرا|$1 تغيير}}",
-       "recentchanges": "Ajad tabdilet",
+       "recentchanges": "Ajadd tabdîlêt",
        "recentchanges-legend": "خيارات أحدث التغييرات",
        "recentchanges-summary": "تابع أحدث التغييرات للويكي عبر هذه التلقيمة.",
        "recentchanges-feed-description": "تابع أحدث التغييرات للويكي عبر هذه التلقيمة.",
        "rcshowhidemine": "$1 تعديلاتي",
        "rclinks": "أظهر آخر $1 تعديل في آخر $2 يوم<br />$3",
        "diff": "Farq",
-       "hist": "Hist",
+       "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": "تغييرات ذات علاقة",
        "license": "ترخيص:",
        "license-header": "licence",
        "file-anchor-link": "milaf (Fichier)",
-       "filehist": "teri5 el milaf",
+       "filehist": "Têrîx il-mîlaf",
        "filehist-help": "اضغط على وقت/زمن لرؤية الملف كما بدا في هذا الزمن.",
        "filehist-revert": "استرجع",
        "filehist-current": "حالي",
        "linkstoimage": "{{PLURAL:$1||الصفحة التالية تصل|الصفحتان التاليتان تصلان|ال$1 صفحات التالية تصل|ال$1 صفحة التالية تصل}} إلى هذا الملف:",
        "nolinkstoimage": "لا توجد صفحات تصل لهذا الملف.",
        "sharedupload-desc-here": "هذا الملف من $1 ويمكن استخدامه بواسطة المشاريع الأخرى.\nالوصف على [$2 صفحة وصف الملف] هناك معروض بالأسفل.",
-       "randompage": "Sʾafħa elli tji",
+       "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 عضو}}",
        "undeleteviewlink": "اعرض",
        "namespace": "النطاق",
        "invert": "اعكس الاختيار",
-       "blanknamespace": "(Principal)",
+       "blanknamespace": "(Ra'îsî)",
        "contributions": "مساهماتي",
        "contributions-title": "مساهمات المستخدم $1",
        "mycontris": "مساهماتي",
        "sp-contributions-username": "عنوان أيبي أو اسم مستخدم:",
        "sp-contributions-toponly": "أظهر أعلى المراجعات فقط",
        "sp-contributions-submit": "lawwej",
-       "whatlinkshere": "Chnowa elli ywassel elhouni",
+       "whatlinkshere": "Cnûwwe illi ywassil l-hûnî",
        "whatlinkshere-title": "الصفحات التي تصل إلى \"$1\"",
        "whatlinkshere-page": "ss'af7a:",
        "linkshere": "الصفحات التالية تصل إلى '''[[:$1]]''':",
        "blocklink": "Bloqui",
        "unblocklink": "ارفع المنع",
        "change-blocklink": "تغيير المنع",
-       "contribslink": "Mousehmet",
+       "contribslink": "Mûsêhmêt",
        "blocklogpage": "سجل المنع",
        "blocklogentry": "منع \"[[$1]]\" لفترة زمنية مدتها $2 $3",
        "block-log-flags-nocreate": "إنشاء الحسابات ممنوع",
        "export": "تصدير صفحات",
        "allmessagesname": "الاسم",
        "allmessagesdefault": "النص الافتراضي",
-       "thumbnail-more": "Kabber",
+       "thumbnail-more": "Kabbir",
        "thumbnail_error": "خطأ في إنشاء صورة مصغرة: $1",
        "tooltip-pt-userpage": "صفحة المستخدم الخاصة بك",
        "tooltip-pt-mytalk": "صفحة نقاشك",
        "tooltip-pt-preferences": "تفضيلاتي",
        "tooltip-pt-watchlist": "قائمة الصفحات التي تراقب التغييرات التي تحدث بها",
        "tooltip-pt-mycontris": "قائمة مساهماتك",
-       "tooltip-pt-login": "Madhabina ken tconnecti, ama mouch bessif",
+       "tooltip-pt-login": "Međebîne kên itkoññektî, eme mûc bis-sîf",
        "tooltip-pt-logout": "خروج",
-       "tooltip-ca-talk": "Discussion εal contenu mtaε essafħa",
-       "tooltip-ca-edit": "Tannjem tbaddel essafħa hedhi. Aman enzel εal bouton mtaε elvue el msabqa qbal matsajjel.",
+       "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-move": "علم هذه الصفحة",
        "tooltip-ca-watch": "أضف هذه الصفحة إلى قائمة مراقبتك",
        "tooltip-ca-unwatch": "أزل هذه الصفحة من قائمة مراقبتك",
-       "tooltip-search": "Lawwej fi {{SITENAME}}",
-       "tooltip-search-go": "اذÙ\87ب Ø¥Ù\84Ù\89 ØµÙ\81حة Ø¨Ø§Ù\84اسÙ\85 Ù\86Ù\81سÙ\87 Ø¥Ù\86 Ù\88جدت",
-       "tooltip-search-fulltext": "Farkes f'essafħat εattexte hedha",
-       "tooltip-p-logo": "Emchi l'elpage principale",
-       "tooltip-n-mainpage": "Emchi l'elpage principale",
-       "tooltip-n-mainpage-description": "Emchi l'elpage principale",
-       "tooltip-n-portal": "Ɛ'almachrouε, chnowa tnajem taεmel, win talqa elli ħajtek bih",
+       "tooltip-search": "Lawwij fî- {{SITENAME}}",
+       "tooltip-search-go": "Imcî l-pâj b-nafs il-ism Ã®Ä\91ê 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": "Lista mtaε ajad ettabdilat f'elwiki",
-       "tooltip-n-randompage": "Ħell sʾafħa elli tji",
-       "tooltip-n-help": "Mouεawna",
-       "tooltip-t-whatlinkshere": "Lista mtaε safħat elwiki elkol elli twassel elhouni",
+       "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": "Lista mtaε essafħat esspéciales elkol",
-       "tooltip-t-print": "Version l'ettabεan mtaε essafħa hedhi.",
+       "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-diff": "اعرض التغييرات التي قمت بها للنص.",
        "tooltip-compareselectedversions": "شاهد الفروق بين النسختين المختارتين من هذه الصفحة.",
        "tooltip-watch": "أضف هذه الصفحة إلى قائمة مراقبتك",
-       "tooltip-rollback": "\"Rajjaε\" yrajjeε ettabdilet f'hassafħa el'ekher weħed baddel fi nazla waħda.",
+       "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": "دقة كاملة",
+       "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إذا كان الملف قد عدل عن حالته الأصلية، فبعض التفاصيل قد لا تعبر عن الملف المعدل.",
        "watchlisttools-edit": "اعرض قائمة المراقبة وعدلها",
        "watchlisttools-raw": "عدل قائمة المراقبة الخام",
        "duplicate-defaultsort": "'''تحذير:''' مفتاح الترتيب الافتراضي \"$2\" يتجاوز مفتاح الترتيب الافتراضي السابق \"$1\".",
-       "specialpages": "Safħat spéciales",
+       "specialpages": "Safḩât spêsyâl",
        "external_image_whitelist": " #<pre>اترك هذا السطر تماما كما هو\n#ضع منثورات التعبيرات المنتظمة (فقط الجزء الذي يذهب بين //) بالأسفل\n#هذه ستتم مطابقتها مع مسارات الصور الخرجية (الموصولة بشكل مباشر)\n#هذه التي تطابق سيتم عرضها كصور، غير ذلك فقط وصلة إلى الصورة سيتم عرضها\n#السطور التي تبدأ ب# تتم معاملتها كتعليقات\n#هذا لا يتأثر بحالة الحروف\n\n#ضع كل منثورات التعبيرات المنتظمة فوق هذا السطر. اترك هذا السطر تماما كما هو</pre>",
-       "tag-filter": "مرشح [[Special:Tags|الوسوم]]:"
+       "tag-filter": "مرشح [[Special:Tags|الوسوم]]:",
+       "searchsuggest-search": "Lawwij"
 }
index 2e17aaa..26efb35 100644 (file)
        "tags-edit-reason": "Motivu:",
        "tags-edit-revision-submit": "Aplicar los cambios a {{PLURAL:$1|esta revisión|$1 revisiones}}",
        "tags-edit-logentry-submit": "Aplicar los cambios a {{PLURAL:$1|esta entrada del rexistru|$1 entraes del rexistru}}",
-       "tags-edit-success": "<strong>Los cambios aplicáronse correutamente.</strong>",
-       "tags-edit-failure": "<strong>Nun pudieron aplicase los cambios:</strong>\n$1",
+       "tags-edit-success": "Los cambios aplicáronse correutamente.",
+       "tags-edit-failure": "Nun pudieron aplicase los cambios:\n$1",
        "tags-edit-nooldid-title": "Revisión de destín inválida",
        "tags-edit-nooldid-text": "O nun conseñasti una revisión sobre la qu'aplicar esta función, o la revisión conseñada nun esiste.",
        "tags-edit-none-selected": "Seleiciona polo menos una etiqueta p'amestar o desaniciar.",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|xubió}} una versión nueva de $3",
        "logentry-upload-revert": "$1 {{GENDER:$2|xubió}} $3",
        "log-name-managetags": "Rexistru de xestión d'etiquetes",
+       "log-description-managetags": "Esta páxina tien la llista de les xeres de xestión rellacionaes coles [[Special:Tags|etiquetes]]. El rexistru contien namái les aiciones feches manuamente por un alministrador; les etiquetes pueden crease o desaniciase pol software wiki ensin que quede grabada una entrada nesti rexistru.",
+       "logentry-managetags-create": "$1 {{GENDER:$2|creó}} la etiqueta «$4»",
+       "logentry-managetags-delete": "$1 {{GENDER:$2|desanició}} la etiqueta «$4» (quitada de $5 {{PLURAL:$5|revisión o entrada del rexistru|revisiones o entraes del rexistru}})",
+       "logentry-managetags-activate": "$1 {{GENDER:$2|activó}} la etiqueta «$4» pa que la usen los usuarios y bots",
+       "logentry-managetags-deactivate": "$1 {{GENDER:$2|desactivó}} la etiqueta «$4» pa torgar que la usen los usuarios y bots",
+       "log-name-tag": "Rexistru d'etiquetes",
+       "log-description-tag": "Esta páxina amuesa cuándo los usuarios amestaron o desaniciaron [[Special:Tags|etiquetes]] de revisiones individuales o entraes del rexistru. El rexistru nun recueye les aiciones d'etiquetáu cuando asoceden como parte d'una edición, desaniciu o aición asemeyada.",
+       "logentry-tag-update-add-revision": "$1 {{GENDER:$2|amestó}} {{PLURAL:$7|la etiqueta|les etiquetes}} $6 a la revisión $4 de la páxina $3",
+       "logentry-tag-update-add-logentry": "$1 {{GENDER:$2|amestó}} {{PLURAL:$7|la etiqueta|les etiquetes}} $6 a la entrada del rexistru $5 de la páxina $3",
+       "logentry-tag-update-remove-revision": "$1 {{GENDER:$2|desanició}} {{PLURAL:$9|la etiqueta|les etiquetes}} $8 de la revisión $4 de la páxina $3",
+       "logentry-tag-update-remove-logentry": "$1 {{GENDER:$2|desanició}} {{PLURAL:$9|la etiqueta|les etiquetes}} $8 de la entrada del rexistru $5 de la páxina $3",
+       "logentry-tag-update-revision": "$1 {{GENDER:$2|anovó}} etiquetes na revisión $4 de la páxina $3 ({{PLURAL:$7|amestó}} $6; {{PLURAL:$9|desanició}} $8)",
+       "logentry-tag-update-logentry": "$1 {{GENDER:$2|anovó}} etiquetes na entrada del rexistru $5 de la páxina $3 ({{PLURAL:$7|amestó}} $6; {{PLURAL:$9|desanició}} $8)",
        "rightsnone": "(nengún)",
        "revdelete-summary": "editar resume",
        "feedback-adding": "Amestando el comentariu a la páxina...",
+       "feedback-back": "Anterior",
        "feedback-bugcheck": "¡Perfeuto! Comprueba que nun tea yá ente los [$1 fallos conocíos].",
        "feedback-bugnew": "Yá lo comprobé. Informar d'esti fallu nuevu",
        "feedback-bugornote": "Si tas preparáu pa describir un problema técnicu en detalle, [$1 informa del fallu].\nD'otra miente, pues usar el formulariu cenciellu d'abaxo. El to comentariu apaecerá na páxina \"[$3 $2]\" xunto col to nome d'usuariu y el restolador qu'uses.",
        "feedback-cancel": "Encaboxar",
        "feedback-close": "Fecho",
+       "feedback-external-bug-report-button": "Rexistrar una xera técnica",
+       "feedback-dialog-title": "Unviar opinión",
+       "feedback-dialog-intro": "Puedes usar el formulariu fácil de más abaxo pa unviar comentarios. Estos amestaránse a la páxina «$1», xunto col to nome d'usuariu.",
+       "feedback-error-title": "Error",
        "feedback-error1": "Fallu: Resultáu de la API non reconocíu",
        "feedback-error2": "Fallu: Falló la edición",
        "feedback-error3": "Fallu: Ensin respuesta de la API",
+       "feedback-error4": "Error: Nun pudo espublizase nel títulu de comentarios dau",
        "feedback-message": "Mensaxe:",
        "feedback-subject": "Asuntu:",
        "feedback-submit": "Unviar",
+       "feedback-terms": "Entiendo que la información del mio axente d'usuariu incluye información sobro la versión exauta del mio restolador y sistema operativu, y que se compartirá públicamente xunto colos comentarios.",
+       "feedback-termsofuse": "Acepto dar la mio opinión acordies colos Términos d'usu.",
        "feedback-thanks": "¡Gracies! La to opinión s'espublizó na páxina «[$2  $1]».",
+       "feedback-thanks-title": "¡Gracies!",
+       "feedback-useragent": "Axente d'usuariu:",
        "searchsuggest-search": "Buscar",
        "searchsuggest-containing": "que contién...",
        "api-error-badaccess-groups": "Nun tienes permisu pa xubir ficheros a esta wiki.",
        "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-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.",
+       "api-error-stashwrongowner": "El ficheru al qu'intentabes acceder nel depósitu nun te pertenez.",
+       "api-error-stashnosuchfilekey": "La clave de ficheru a la qu'intentabes acceder nel depósitu nun esiste.",
        "api-error-timeout": "El sirvidor nun respondió nel tiempu esperáu.",
        "api-error-unclassified": "Hebo un fallu desconocíu",
        "api-error-unknown-code": "Fallu desconocíu: «$1»",
index 218fa2e..741e455 100644 (file)
        "readonly_lag": "उपमुख्य डाटाबेस सर्वर मुख्य डाटाबेस सर्वर के बराबर अद्यातानीत होने तक मुख्य डाटाबेस सर्वर लॉक हो गया है।",
        "internalerror": "आन्तरिक त्रुटि",
        "internalerror_info": "आन्तरिक त्रुटि: $1",
+       "internalerror-fatal-exception": "प्रकार की गंभीर अपवाद \"$1\"",
        "filecopyerror": "\"$1\" फ़ाइल कय \"$2\" पे प्रतिलिपि नाई बनी पाए।",
        "filerenameerror": "\"$1\" फ़ाइल कय नावँ बदली कय \"$2\" नाई राखी गय।",
        "filedeleteerror": "\"$1\" फ़ाइल कय नाइ मेटाई  गय।",
        "wrongpassword": "आप जवन कूटशब्द लिखा गा है उ गलत है। कृपया फिरसे प्रयास करा जाय।",
        "wrongpasswordempty": "गुप्त कुंजी खाली है।\nफिरसे लिखो।",
        "passwordtooshort": "आप कय गुप्त कुंजी  कम से कम {{PLURAL:$1|1 अक्षर|$1 अक्षरन्}} कय होएक चाहि।",
+       "passwordtoolong": "गुप्त-शब्द {{PLURAL:$1|$1 अक्षर}} से ढेर लम्मा नाइ होइ सकत है।",
        "password-name-match": "आप कय गुप्त कुंजी आप कय सदस्यनावँ से फरक होएक चाहि।",
        "password-login-forbidden": "इ सदस्यनाँव अउर गुप्त कुंजी कय उपयोग नाई कै सका जात अहै।",
        "mailmypassword": "गुप्त कुंजी पुनःस्थापित करा जाय",
        "missingcommentheader": "'''ध्यान दिहा जाय:''' आप इ टिप्पणी कय कवनो शिर्षक नाइ दिहा गा है।\nअगर आप दुबारा \"{{int:savearticle}}\" पे क्लिक करा जाई तव आप कय बदलाव बिना शिर्षक कय सहेज जाई।",
        "summary-preview": "सारांश कय झलक:",
        "subject-preview": "विषय/शीर्षक कय झलक:",
+       "previewerrortext": "आपके परिवर्तनों का पूर्वावलोकन करने का प्रयास करते समय एक त्रुटि हुई।",
        "blockedtitle": "सदस्य अवरुद्ध है",
        "blockedtext": "'''आप कय सदस्यनाँव या आइ॰पी ठहर पे रोक लाग है ।'''\n\nरोक $1 लगायँ रहें।\nरोक कय कारण ''$2'' होय \n\n* रोक कय सुरुवात भय: $8\n* रोक खतम होइ: $6\n* रोक इकाई: $7\n\nइ रोक कय बारे में चर्चा करेक लिए आप $1 या कवनो दुसर [[{{MediaWiki:Grouppage-sysop}}|प्रबन्धक]] से संपर्क कै सका जात है।\nअगर आप [[Special:Preferences|आपन पसंद]] में वैध ई-मेल पता देवा गा है तब्बै आप 'ई-मेल भेजय' वाला सुविधा कय इस्तेमाल कई सका जात है औ आप कय एकर इस्तेमाल करै कय कवनो रोक नाइ लगावा है।\nआप कय अभीन कय आइ॰पी ठहर $3 होय अव रोक क्रमांक #$5 होय।\nआपन कवनो भी प्रश्न में कृपया इ कुल जानकारी शामिल करा जाइ।",
        "autoblockedtext": "एक्ठु अउर सदस्य आपय कय आइ॰पी कय प्रयोग करत रहें औ ओन्है $1 रोक लगाए रहें। इही कय नाते आपो कय आइ॰पी ठहर स्वचालित रूप से रुक गा है।\nरोक करय कय कारण होय:\n\n:''$2''\n\n* रोक कय सुरुवात : $8\n* रोक खतम होइ: $6\n* रोकि जाय वाले सदस्य: $7\n\nरोक कय चर्चा करय कय लिए आप $1 या कवनो दुसर [[{{MediaWiki:Grouppage-sysop}}|प्रबंधक]] से संपर्क कै सका जात है।\n\nकृपया ध्यान देवा जाय कि यदि आप कय \"इ सदस्य कय ई-मेल भेजा जाय\" वाला सुविधा कय प्रयोग करय चाहा जात है तव आपकय [[Special:Preferences|पसंद]] में वैध ई-मेल ठहर होएक चाहि औ एकर प्रयोग आपकय खर्तिन खुला होएक चाही।\n\nआपकय मौजूदा आइ॰पी ठहर $3 होय औ अवरोध क्रमांक #$5 होय।\nआप कय कवनो प्रश्न में कृपया ई कुल जानकारी शामिल होएक चाही।",
        "content-model-javascript": "जावास्क्रिप्ट",
        "content-json-empty-object": "खाली चिज",
        "content-json-empty-array": "खाली एरे",
+       "duplicate-args-category": "टेम्पलेट कॉल में डुप्लिकेट तर्क का उपयोग करते हुए पन्ने",
+       "duplicate-args-category-desc": "पेज जैसे तर्कों के डुप्लिकेट का उपयोग करने वाले टेम्पलेट कॉल, जैसे <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> ओैर <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "'''चेतावनी:''' इ पन्ना पे बहुत ढेर संख्या में कीमती पार्सर फ़ंक्शनों कय प्रयोग कई गा है।\n\nएकर प्रयोग $2 से कम दाइ होएक चाहि, इ समय प्रयोग $1 दाइ कै गा {{PLURAL:$1|है}}।",
        "expensive-parserfunction-category": "अईसन पन्ना जवन महङा पार्सर फ़ंक्शनन् कय ढेर प्रयोग करत हैं",
        "post-expand-template-inclusion-warning": "'''चेतावनी:''' साँचा जोडे कय सीमा पार होई चुका है।\nकवनो-कवनो साँचा नाई जुड़ी।",
        "parser-template-recursion-depth-warning": "साँचा पुनरावर्ती गहराई सीमा पार ($1)",
        "language-converter-depth-warning": "भाषा कन्वर्टर गहीराई सीमा से बहरे गय ( $1 )",
        "node-count-exceeded-category": "पन्ना जवनन् में नोड-संख्या सीमा पार कई गा है",
+       "node-count-exceeded-category-desc": "यह पृष्ठ नोड-संख्या सीमा पार करता है।",
+       "node-count-exceeded-warning": "पृष्ठ ने नोड संख्या पार की है",
        "expansion-depth-exceeded-category": "पन्ना जवनेमें विस्तार गहिराई पार कई गा है",
        "expansion-depth-exceeded-category-desc": "ई पन्ना विस्तार गहराई पार करत है।",
        "expansion-depth-exceeded-warning": "पन्ना में विस्तार गहराई पार कई गा है",
        "rev-showdeleted": "देखावा जाय",
        "revisiondelete": "अवतरण हटावा जाय/पुनर्स्थापित करा जाय",
        "revdelete-nooldid-title": "अमान्य लक्ष्य अवतरण",
-       "revdelete-nooldid-text": "à¤\87स à¤\95à¥\8dरिया को करने के लिये आपने लक्ष्य अवतरण नहीं दिये हैं, या फिर आपने दिया हुआ अवतरण अस्तित्व में नहीं हैं या फिर आप सद्य अवतरण को छुपाने का प्रयत्न कर रहे हैं।",
+       "revdelete-nooldid-text": "à¤\87स à¤\95ाम को करने के लिये आपने लक्ष्य अवतरण नहीं दिये हैं, या फिर आपने दिया हुआ अवतरण अस्तित्व में नहीं हैं या फिर आप सद्य अवतरण को छुपाने का प्रयत्न कर रहे हैं।",
        "revdelete-no-file": "निर्दिष्ट फ़ाइल मौजूद नाई है।",
        "revdelete-show-file-confirm": "का आप सही में फ़ाइल \"<nowiki>$1</nowiki>\" कय $2 कय $3 बजे बना, हटावल अवतरण कय देखय चाहा जात है?",
        "revdelete-show-file-submit": "हाँ",
        "revdelete-selected-text": "[[:$2]] {{PLURAL:$1|कय}} चयनित अवतरण:",
        "revdelete-selected-file": "[[:$2]] {{PLURAL:$1|कय}} चयनित फ़ाइल अवतरण:",
        "logdelete-selected": "{{PLURAL:$1|चुनल}} लॉग इवेंट:",
+       "revdelete-text-text": "हटाए गए अवतरण पृष्ठ इतिहास में दर्शाए जाएँगे परन्तु उनकी सामग्री सार्वजनिक रूप से नहीं देखी जा सकेगी।",
+       "revdelete-text-file": "हटाए गए फ़ाइल अवतरण फ़ाइल इतिहास में दर्शाए जायेंगे परन्तु सामग्री सार्वजनिक रूप से नहीं देखी जा सकेगी।",
+       "logdelete-text": "हटाए गए प्रवेश घटनाओं अभी भी लॉग में दिखाई देंगे, लेकिन उनकी सामग्री के कुछ हिस्सों को सार्वजनिक करने के लिए दुर्गम हो जाएगा।",
+       "revdelete-text-others": "अन्य प्रशासकों अभी भी छिपा सामग्री का उपयोग करने के लिए और अतिरिक्त प्रतिबंध सेट कर रहे हैं, जब तक यह अ-नष्ट करने में सक्षम हो जाएगा।",
        "revdelete-confirm": "यकिन करावा जाय कि आप इ काम करय चाहा जात है, आप एकर परिणाम समझा जात है, औ आप इ [[{{MediaWiki:Policy-url}}|नीति]] कय अनुसार करा जात है।",
        "revdelete-suppress-text": "लुकुआवेक प्रयोग <strong>खाली</strong> इ परिस्थितन् में होएक चाहि:\n* संभावित अपमानजनक जानकारी\n* अनुपयुक्त निजी जानकारी\n*: <em>घर कय ठहर या दूरभाष, राष्ट्रीय पहिचान क्रमांक आदि।</em>",
        "revdelete-legend": "दृश्य प्रतिबंध निश्चित करा जाय",
        "mergehistory-empty": "कवनो भी अवतरण नाई मिलाई सका जात अहै।",
        "mergehistory-success": "[[:$1]] {{PLURAL:$3|कय}} $3 अवतरण [[:$2]] में एकट्ठा कई {{PLURAL:$3|गय}}।",
        "mergehistory-fail": "इतिहास एकट्ठा नाई कई सका जात है, कृपया पन्ना औ समय कय फिरसे जाँच करा जाय।",
+       "mergehistory-fail-toobig": "इतिहास विलय करना संभव नहीं है क्योंकि अवतरण सीमा $1 से अधिक {{PLURAL:$1|अवतरण|अवतरणों}} को स्थानांतरित करना होगा।",
        "mergehistory-no-source": "स्रोत पन्ना $1 मौजूद नाई है।",
        "mergehistory-no-destination": "लक्ष्य पन्ना $1 मौजूद नाई है।",
        "mergehistory-invalid-source": "स्रोत पन्ना कय शीर्षक वैध होब आवश्यक है।",
        "notextmatches": "कवनो भी पन्ना में ई सामान नाई मिला",
        "prevn": "पहिलका {{PLURAL:$1|$1}}",
        "nextn": "अगला {{PLURAL:$1|$1}}",
+       "prev-page": "पिछलका पन्ना",
+       "next-page": "अगला पन्ना",
        "prevn-title": "{{PLURAL:$1|पहिलका|}} $1 परिणाम",
        "nextn-title": "{{PLURAL:$1|अगला}} $1 परिणाम",
        "shown-title": "हर पन्ना पे $1 {{PLURAL:$1|परिणाम}} देखावा जाय",
        "searchrelated": "सम्बंधित",
        "searchall": "कुल",
        "showingresults": "नीचे क्रमांक '''$2''' से सुरु कै कय सबसे ढेर '''$1''' परिणाम {{PLURAL:$1|देखाइ गा है}}।",
+       "search-showingresults": "{{PLURAL:$4|<strong>$3</strong> में से <strong>$1</strong> परिणाम|<strong>$3</strong> में से परिणाम <strong>$1 - $2</strong>}}",
        "search-nonefound": "आप कय खोज से मिलत जुलत कवनो परिणाम नाई मिला।",
        "powersearch-legend": "उन्नत खोज",
        "powersearch-ns": "नामस्थानन् में खोजा जाय:",
        "prefs-watchlist": "अवलोकन सुची",
        "prefs-editwatchlist": "ध्यानसूची संपादन करा जाय",
        "prefs-editwatchlist-label": "अपने धियान सुचीमा एन्ट्रि सम्पादन कीन जाय",
+       "prefs-editwatchlist-edit": "अपने धियानसूची कय टाइटिल देखा जाय अव हटावा जाय",
        "prefs-editwatchlist-raw": "कच्चा निगरानी सूची सम्पादन करा जाय",
        "prefs-editwatchlist-clear": "आपन ध्यानसूची साफ करा जाय",
        "prefs-watchlist-days": "ध्यानसूची में दिखावै कय दिन:",
        "prefs-emailconfirm-label": "ईमेल सुनीश्चित करा जाय:",
        "youremail": "ई-मेल:",
        "username": "{{GENDER:$1|सदस्यनाँव}}:",
-       "prefs-memberingroups": "निचे दिहा {{PLURAL:$1|समूह|समूहन्}} कय {{GENDER:$2|सदस्य}}:",
+       "prefs-memberingroups": "{{GENDER:$2|सदस्य}} {{PLURAL:$1|समूह}}:",
        "prefs-registration": "रजिष्ट्रेसन समय:",
        "yourrealname": "वास्तविक नाँव:",
        "yourlanguage": "भाषा",
        "right-deletedtext": "हटावल पाठ औ हटावल अवतरणन् कय बीचे अंतर देखा जाय",
        "right-browsearchive": "हटावल पन्ना खोजा जाय",
        "right-undelete": "ई पन्ना कय पुनर्स्थापित करा जाय।",
+       "right-suppressrevision": "किसी भी सदस्य से छुपे हुए अवतरण देखें, छुपायें और पुनर्स्थापित करें",
        "right-viewsuppressed": "कवनो भि सदस्य कय लुकुआवल अवतरण देखा जाय",
        "right-suppressionlog": "खासगी लॉग देखा जाय",
        "right-block": "अउर सदस्यन् कय सम्पादन करय से ब्लॉक करा जाय",
        "right-override-export-depth": "पन्ना निर्यात करा जाय, पाँच स्तर कय गहराई तक जुड़ल पन्ना लइकय",
        "right-sendemail": "अउर सदस्यन् कय ई-मेल पठवा जाय",
        "right-passwordreset": "गुप्तकुंजी रीसेट ई-मेल देखा जाय",
+       "right-managechangetags": "डेटाबेस से [[Special:Tags|चिप्पियाँ]] बनायें और हटायें",
        "newuserlogpage": "सदस्य खाता बनावे कय लॉग",
        "newuserlogpagetext": "ई सदस्य खाता बनावे कय लॉग होय।",
        "rightslog": "सदस्य अधिकार लॉग",
        "action-viewmyprivateinfo": "आपन व्यक्तिगत जानकारी देखा जाय",
        "action-editmyprivateinfo": "आपन व्यक्तिगत जानकारी बदला जाय",
        "action-editcontentmodel": "पन्ना कय सामग्री नमुना कय बदला जाय",
+       "action-managechangetags": "डेटाबेस से चिप्पि बनायें और हटायें",
        "nchanges": "$1 {{PLURAL:$1|बदलाव}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|अंतिम दाइ देखय कय बाद से}}",
        "enhancedrc-history": "इतिहास",
        "recentchanges-label-plusminus": "पन्ना कय आकार इ बाइट संख्या से बदला",
        "recentchanges-legend-heading": "'''कुंजी:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नवा पन्नन् कय सूची]] कय भी देखा जाय)",
+       "rcnotefrom": "नीचे <strong>$2</strong> के बाद से (<strong>$1</strong> तक) {{PLURAL:$5|हुआ बदलाव दर्शाया गया है|हुए बदलाव दर्शाए गये हैं}}।",
        "rclistfrom": "$3 $2 से नँवा बदलाव देखावा जाय",
        "rcshowhideminor": "छोट बदलाव $1",
        "rcshowhideminor-show": "देखावा जाय",
        "largefileserver": "इ फ़ाइल कय आकार निर्धारित आकार सीमा कय पार है।",
        "emptyfile": "आप कय अपलोड करल फ़ाइल खाली है।इ फ़ाइल कय नाँव लिखय में गलती होएक कारण होइ सकत है। कृपया जाँचा जाय कि का आप इहय फ़ाइल अपलोड करय चाहा जात है।",
        "windows-nonascii-filename": "इ विकि विशेष कैरैक्टरन् कय वाले फ़ाइलनाँव नाइ स्वीकार करि।",
+       "fileexists": "इस नाम की फ़ाइल पहले से मौजूद है, यदि यह फ़ाइल बदलने में आप साशंक हैं तो कृपया <strong>[[:$1]]</strong> देखें। [[$1|thumb]]",
        "filepageexists": "इ फ़ाइल कय लिए विवरण पृष्ठ पहलवे <strong>[[:$1]]</strong> पे बनाइ गा है, लेकिन इ नाँव कय कवनो फ़ाइल अभीन उपस्थित नाइ है। \nआप जवन विवरण दिहा जाइ उ विवरण पन्ना पे नाइ देखाइ। \nआप कय आपन विवरण कय उहाँ डारए कय लिए ओकर हस्त्य सम्पादन करेक परि।\n[[$1|thumb]]",
        "fileexists-extension": "इ नाँव से मिलत-जुलत नाँव कय एकठु फ़ाइल पहलवे से है: [[$2|thumb]]\n* अपलोड होए वाला फ़ाइल कय नाँव: <strong>[[:$1]]</strong>\n* मौजूदा फ़ाइल कय नावँ: <strong>[[:$2]]</strong>\nशायद आप कवनो विशिष्ट नाँव कय प्रयोग करय चाहा जाइ?",
        "fileexists-thumbnail-yes": "इ फ़ाइल बड़ा चित्र कय छोटा आकार ''(अंगूठाकार)'' जैसन लागत है। [[$1|thumb]]\n<strong>[[:$1]]</strong> फ़ाइल कय देखा जाय।\nअगर जाँचल फ़ाइल इही आकार कय है तव छोट आकार कय फ़ाइल अपलोड करेक आवश्यकता नाइ है।",
        "nolicense": "कवनो नाइ चुना गय",
        "licenses-edit": "लाइसेंस विकल्प सम्पादन",
        "license-nopreview": "(झलक उपलब्ध नाइ है)",
+       "upload_source_url": "(आपकी चुनी फ़ाइल एक वैध, सार्वजनिक रूप से उपलब्ध यू॰आर॰एल से)",
        "upload_source_file": "(आप कय कम्प्युटरसे लिहल फाइल)",
        "listfiles-delete": "मिटावा जाय",
        "listfiles-summary": "इ विशेष पन्ना अपलोड करल कुल फ़ाइल देखावत है।",
        "listfiles_search_for": "मीडिया नाँव कय खर्तिन खोजा जाय:",
+       "listfiles-userdoesnotexist": "सदस्य \"$1\" पंजीकृत नाइ है।",
        "imgfile": "फ़ाइल",
        "listfiles": "फ़ाइल सूची",
        "listfiles_thumb": "अंगूठाकार",
        "unwatchedpages": "ध्यान ना दिहल पन्ना",
        "listredirects": "पुनर्निर्देशन कय सूची",
        "listduplicatedfiles": "डुप्लिकेट वाले फाइल",
+       "listduplicatedfiles-summary": "यह एैसे फ़ाइलों की सूची है जिनका नवीनतम संस्करण दूसरे फ़ाइलों के नवीनतम संस्करण की प्रतिलिपि हैं। सिर्फ़ स्थानीय फ़ाइलों को विचारा गया है।",
        "listduplicatedfiles-entry": "[[:फाइल:$1|$1]] कय लगे [[$3|{{PLURAL:$2|एक्ठु डुप्लिकेट|$2 डुप्लिकेट}}]].",
        "unusedtemplates": "अप्रयुक्त साँचा",
        "unusedtemplatestext": "इस पृष्ठ पर {{ns:template}} नामस्थान वाले वे सभी पृष्ठ इंगित है जो किसी अन्य पृष्ठ में शामिल नहीं हैं।\nइन्हें हटाने के पहले इन साँचों की और कड़ियाँ जाँच लें।",
        "doubleredirects": "दुईठु पुनर्निर्देश",
        "doubleredirectstext": "यह पृष्ठ उन पृष्ठों की सूची देता है जो अन्य पुनर्निर्देशित पृष्ठों की ओर पुनर्निर्देशित हैं।\nहर कतार में पहले और दूसरे पुनर्निर्देशन की कड़ियाँ, तथा दूसरे पुनर्निर्देशन का लक्ष्य भी है, आमतौर पर यही \"वास्तविक\" लक्ष्यित पृष्ठ होगा, और पहला पुनर्देशन वास्तव में इसी को लक्ष्यित होना चाहिए।\n<del>काटी गई</del> प्रविष्टियाँ सुलझा दी गई हैं।",
        "double-redirect-fixed-move": "[[$1]] कय घुस्काइ गय । इ अपने आप अपडेट होइ गवा है अव [[$2]] पे पुनर्निर्देशीत होइ ।",
+       "double-redirect-fixed-maintenance": "[[$1]] से [[$2]] को दुगुने पुनर्प्रेषण को रखरखाव कार्य में स्वतः ठीक कर रहा है।",
        "double-redirect-fixer": "पुनर्निर्देशन मिस्त्री",
        "brokenredirects": "टूटल पुनर्निर्देशन पन्ना",
        "brokenredirectstext": "ई कुल पुनर्निर्देश नामौजुद पन्नन मा लैजात हैं :",
        "ancientpages": "सबसे पुरान पन्ना",
        "move": "घुस्कावा जाय",
        "movethispage": "ई पन्ना कय नाँव बदला जाय",
+       "unusedimagestext": "निम्न फ़ाइलें मौजूद हैं, पर किसी भी पृष्ठ में प्रयुक्त नहीं हैं।\nकृपया ध्यान दें कि अन्य वेब साइट एक सीधी कड़ी से फ़ाइल से जुड़ी हो सकती हैं, और सक्रिय उपयोग में होने के बावजूद यहाँ दिखाई जा सकती है।",
        "unusedcategoriestext": "निचे दिहा श्रेणी पन्ना मौजूद है लेकिन कवनो भी पन्ना या अउर श्रेणि एकर प्रयोग नाँइ करत हैं।",
        "notargettitle": "लक्ष्य नाइ",
        "notargettext": "इ काम कय करेक लिये आप लक्ष्य पन्ना या सदस्य नाइ बतावा गा है।",
        "speciallogtitlelabel": "प्रयोजन (शीर्षक या सदस्यनाँव):",
        "log": "लॉग",
        "all-logs-page": "कुल सार्वजनिक लॉग",
+       "alllogstext": "{{SITENAME}} की सभी उपलब्ध लॉगों की प्रविष्टियों का मिला-जुला प्रदर्शन।\nआप और बारीकी के लिए लॉग का प्रकार, सदस्य नाम (लघु-दीर्घ-अक्षर संवेदी), या प्रभावित पृष्ठ (लघु-दीर्घ-अक्षर संवेदी) चुन सकते हैं।",
        "logempty": "लॉग में अइसन कवनो चिज नाइ है।",
        "log-title-wildcard": "इ पाठ से शुरू होय वाला शीर्षक खोजा जाय",
        "showhideselectedlogentries": "चुनल लाग प्रविष्टि देखावा जाय/लुकुआवा जाय",
        "watchlist-details": "बातचीत पन्ना कय अलावा {{PLURAL:$1|$1 पन्ना}} आप कय ध्यानसूची में है।",
        "wlheader-enotif": "ई-मेल नोटिफ़िकेशन सक्षम है।",
        "wlheader-showupdated": "पन्ना जवन आपकय द्वारा देखय जाएक बाद बदलि गा है '''बोल्ड''' मे देखाइ।",
+       "wlnote": "$3 को $4 बजे तक पिछले <strong>$2</strong> {{PLURAL:$2|घंटे|घंटों}} में {{PLURAL:$1|हुआ एक|हुए <strong>$1</strong>}} परिवर्तन निम्न {{PLURAL:$1|है|हैं}}।",
        "wlshowlast": "पिछला $1 घंटा $2 दिन  देखा जाय",
        "watchlist-options": "ध्यानसूची विकल्प",
        "watching": "ध्यान देत हँय...",
        "exbeforeblank": "खाली करय से पहिले पाठ रहा: '$1'",
        "delete-confirm": "\"$1\" मिटावा जाय",
        "delete-legend": "मेटावा जाय",
+       "historywarning": "<strong>चेतावनी:<strong> आप जो पृष्ठ हटाने जा रहे हैं उसके इतिहास में $1 {{PLURAL:$1|अवतरण}} हैं:",
        "confirmdeletetext": "आप एकठु पन्ना कय अव ओकरे कुल अवतरण सहित हटावे जावा जात है।\nजाँच लीन जाय कि आप इ करय चाहा जात है, आप एकरे परिणाम कय जाना जात है, औ आप इ [[{{MediaWiki:Policy-url}}|नीति]] कय अनुसार करा जात है।",
        "actioncomplete": "काम पुरा होइ गवा",
        "actionfailed": "काम असफल",
        "protect-othertime": "कवनो अउर समय:",
        "protect-othertime-op": "कवनो अउर समय",
        "protect-existing-expiry": "वर्तमान समय सीमा :$3, $2",
+       "protect-existing-expiry-infinity": "मौजुदा समाप्ति समय: अनंत",
        "protect-otherreason": "अउर/दुसर कारण:",
        "protect-otherreason-op": "दुसर कारण",
        "protect-dropdown": "*सुरक्षा कय आम कारण\n**ढेर बर्बरता \n**ढेर स्पैम\n**अफलदायी सम्पादन युद्ध\n**ढेर खोल जाय वाला पृष्ठ",
        "sunday-at": "अत्तवार कय $1",
        "yesterday-at": "कल्हीँया",
        "metadata": "मेटाडाटा",
+       "metadata-help": "इस फ़ाइल में बढ़ाई हुई जानकारी हैं, हो सकता है कि यह फ़ाइल बनाने में इस्तेमाल किये गए स्कैनर अथवा कैमेरा से यह प्राप्त हुई हैं। अगर यह फ़ाइल बदलदी गई है तो यह जानकारी नई फ़ाइल से मेल नहीं खाने की आशंका है।",
        "metadata-expand": "अउर विवरण देखावा जाय",
        "metadata-collapse": "अउर विवरण लुकुआवा जाय",
        "metadata-fields": "Image metadata fields listed in this message will be included on image page display when the metadata table is collapsed.\nOthers will be hidden by default.\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",
        "revdelete-restricted": "प्रबंधक पे प्रतिबंध लागू",
        "revdelete-unrestricted": "प्रबंधक कय प्रबंधन हटावा जाय",
        "logentry-move-move": "$1 ने $3 पृष्ठ $4 पर {{GENDER:$2|स्थानांतरित}} कै गय",
+       "logentry-newusers-create": "सदस्य खाता $1 {{GENDER:$2|बनावा}} गय",
+       "logentry-upload-upload": "$1 {{GENDER:$2|ने}} $3 अपलोड किया",
        "rightsnone": "(कउनो नाहीं)",
        "revdelete-summary": "संपादन सारांश",
        "feedback-adding": "पृष्ठ पे प्रतिक्रिया जोडत है ...",
index 836a20c..6389670 100644 (file)
        "revdelete-unsuppress": "Зняць абмежаванні на адноўленыя версіі",
        "revdelete-log": "Прычына:",
        "revdelete-submit": "Прымяніць да азначан{{PLURAL:$1|ай ерсіі|ых версій}}",
-       "revdelete-success": "<strong>Паспяхова абноўлена бачнасць версіі.</strong>",
+       "revdelete-success": "Паспяхова абноўлена бачнасць версіі.",
        "revdelete-failure": "'''Не ўдалося абнавіць бачнасць версіі:'''\n$1",
        "logdelete-success": "'''Бачнасць падзеі настаўленая паспяхова.'''",
        "logdelete-failure": "'''Бачнасць журнала не ўсталявана:'''\n$1",
index 32587a0..637a2e5 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Baloch Afghanistan",
-                       "Ibrahim khashrowdi"
+                       "Ibrahim khashrowdi",
+                       "Rachitrali"
                ]
        },
        "tog-underline": "لینکانی جهلگا خط کشیتین",
@@ -77,7 +78,7 @@
        "september": "سیپٹمبر",
        "october": "اکتوبر",
        "november": "نوامبر",
-       "december": "ڈ\tسمبر",
+       "december": "ڈسمبر",
        "january-gen": "جنوری",
        "february-gen": "فیبروری",
        "march-gen": "مارچ",
        "revdelete-submit": "اعمال بئ {{PLURAL:$1|نخسه|نخسه هان}} ئی سرا انتخاب بوته",
        "revdelete-success": "'''نخسه ئی ودی بوتین گو کامیابیا اپڈیٹ بوت.'''",
        "revdelete-failure": "'''نخسه ئی ودی بوتینئ اپڈیٹ بوتن امکان وجود نداریت :'''\n$1",
-       "logdelete-success": "<strong>لوگین ئی قابلیت دیست گو کامیابیا انجام بوت.</strong>",
+       "logdelete-success": "لوگین ئی قابلیت دیست گو کامیابیا انجام بوت.",
        "logdelete-failure": "'''لوگین ئی قابلیت دیست تنظیم ئه نه بیئنت:'''\n$1",
        "revdel-restore": "نمایش/نهفتن",
        "pagehist": "تاکدیمی تاریخچه",
index 73074b5..e4ac6ea 100644 (file)
        "recentchangeslinked-page": "पन्ना नाम:",
        "upload": "फाईल अपलोड करीं",
        "uploadlogpage": "लदनी (अपलोड) के लॉग",
+       "uploadlogpagetext": "नीचे हाल में अपलोड करल गइल फाइलन के सूची बा।\nदृश्य अवलोकन खातिर [[Special:NewFiles|नया फाइलन के गैलरी]] देखीं।",
        "filename": "फाइलनाँव",
        "filedesc": "सारांश",
        "fileuploadsummary": "सारांश:",
        "nolicense": "कौनों नइखे",
        "licenses-edit": "लाइसेंस बिकल्प संपादन",
        "license-nopreview": "(नमूना देखल उपलब्ध नइखे)",
+       "listfiles": "फाइल सूची",
        "listfiles_thumb": "चिप्पी",
        "listfiles_date": "तिथि",
        "listfiles_name": "नाँव",
        "filehist-current": "मौजूदा",
        "filehist-datetime": "तारिख/समय",
        "filehist-thumb": "थम्बनेल",
+       "filehist-thumbtext": "$1 संस्करण के अंगूठाकार प्रारूप।",
        "filehist-nothumb": "बिन थम्बनेल",
        "filehist-user": "प्रयोगकर्ता",
        "filehist-dimensions": "आयाम",
        "filedelete-submit": "मिटाईं",
        "filedelete-success": "'''$1''' के मिटा दिहल गईल बा।",
        "filedelete-nofile": "'''$1''' उपलब्ध नईखे।",
+       "mimesearch": "MIME खोज",
        "unwatchedpages": "ध्यान न दिहल गइल पन्ना",
+       "listredirects": "पुनर्निर्देशन के सूची",
        "unusedtemplates": "बिना प्रयोग के खाँचा",
        "randompage": "अविशिष्ट पन्ना",
        "randomincategory": "श्रेणी में अनियमित पन्ना",
        "randomincategory-nopages": "[[:Category:$1|$1]] श्रेणी में कउनो पन्ना नइखे।",
        "randomincategory-legend": "श्रेणी में अनियमित पन्ना",
+       "statistics": "तथ्यांकसभ",
+       "statistics-header-edits": "तथ्यांक सम्पादन",
+       "statistics-header-hooks": "अन्य तथ्यांक",
+       "pageswithprop": "पन्ना-गुण वाला पन्नासभ",
        "doubleredirects": "दोहरा पुननिर्देशित पन्ना",
        "brokenredirects": "टूटल पुनर्निर्देशन पन्ना",
        "withoutinterwiki": "बिना अंतरविकि जोड़ वाला पन्ना",
        "deadendpages": "मरल-खपल पन्ना",
        "protectedpages": "सुरक्षित पन्ना",
        "protectedtitles": "सुरक्षित शीर्षक",
+       "listusers": "सदस्यसूची",
        "newpages": "नवका पन्ना",
        "ancientpages": "सभन से पुरान पन्नासभ",
        "move": "स्थान्तरण",
        "movethispage": "ई पन्ना के स्थांतरण करीं",
        "apihelp-no-such-module": "मॉड्युल $1 ना मिलल।",
        "booksources": "किताबी स्रोत",
+       "booksources-search-legend": "किताबी स्रोत के खोज",
        "allarticles": "सभी पन्ना",
        "allpagessubmit": "जाईं",
        "allpagesprefix": "उपसर्ग के साथे पन्ना प्रदर्शन:",
        "categories": "श्रेणीसभ",
+       "activeusers": "सक्रिय सदस्यन के सूची",
+       "listgrouprights": "सदस्य समूह अधिकारसभ",
+       "trackingcategories": "नजर रखे वाला श्रेणीसभ",
        "emailuser": "ई प्रयोगकर्ता के ईमेल करीं",
        "watchlist": "ध्यानसूची",
        "mywatchlist": "ध्यानसूची",
        "watching": "ध्यानसूची में जाते हुए",
        "unwatching": "ध्यानसूची से हटते हुए",
        "created": "बनावल गईल",
+       "actioncomplete": "काम पुरा भइल",
        "rollbacklink": "वापिस लीं",
        "protectlogtext": "नीचे पन्ना सुरक्षा में भइल बदलावकुल के सूची बा।\nहाल में सुरक्षित पन्नन के सूची खातिर [[Special:ProtectedPages|सुरक्षित पन्नन के सूची]] देखीं।",
        "undeletelink": "देखीं/बहाल करीं",
        "whatlinkshere-filters": "फिल्टर",
        "blockip": "{{GENDER:$1|सदस्य}} अवरोधित करीं",
        "ipboptions": "२ घंटे:2 hours,१ दिन:1 day,३ दिन:3 days,१ हफ्ता:1 week,२ हफ्ते:2 weeks,१ महिना:1 month,३ महिने:3 months,६ महिने:6 months,१ साल:1 year,हमेशा खातिर:infinite",
+       "blocklist": "अवरोधित प्रयोगकर्तासभ",
        "blocklink": "निष्क्रिय",
        "unblocklink": "ताला खोलीं",
        "change-blocklink": "ब्लॉक बदलीं",
        "file-info-gif-looped": "लूप्ड",
        "file-info-gif-frames": "$1 {{PLURAL:$1|फ्रेम}}",
        "file-info-png-looped": "लूप्ड",
+       "newimages": "नया फाईलन के गैलरी",
        "bad_image_list": "फोर्मेट निम्न अनुसार बा:\nखाली सूची सामग्री (* से शुरु होवे वाला पंक्ति ) मानल गईल बा।\nपंक्ति पर पहिला लिंक एगो खराब फाईल के साथ जुड़ल होवे के चाहीं।\nकोई भी बाद वाला लिंक ओही पंक्ति पर अईला पर उ के अपवाद मानल जाई, अर्थात जौन पन्ना पर फाईल इनलाईन हो सकत बा।",
        "metadata": "मेटाडाटा",
        "metadata-help": "इ फाईल में अतिरिक्त जानकारी उपलब्ध बा, हो सकत बा कि इ डिजीटल कैमरा या स्कैनर से लेवल गईल होखे। यदि इ फाईल एकर मूल फाईल में से संशोधित करल गईल बा त कुछ जानकारी उजागर ना हो सकी।",
        "monthsall": "सब",
        "confirmemail": "इ-मेल पता कन्फर्म करीं",
        "version-no-ext-name": "[अज्ञात नाम]",
+       "fileduplicatesearch": "नकल प्रति फाइल खोजीं",
        "specialpages": "ख़ाश पन्ना",
+       "specialpages-group-login": "प्रवेश / खाता निर्माण",
+       "specialpages-group-changes": "तुरंत भइल परिवर्तन आ लॉगसभ",
+       "specialpages-group-media": "मीडिया रिपोर्ट आ अपलोडसभ",
+       "specialpages-group-users": "सदस्य अउर अधिकार",
+       "specialpages-group-pages": "पन्नन के सूचीसभ",
+       "specialpages-group-wiki": "डेटा अउर औजार",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|टैग|टैग कुल}}]]: $2)",
        "logentry-delete-delete": "$1 द्वारा पन्ना $3 {{GENDER:$2|हटा}} दिहल गईल",
        "revdelete-restricted": "प्रबंधक पर प्रतिबंध लागू",
        "revdelete-summary": "सारांश संपादन",
        "searchsuggest-search": "खोजीं",
        "api-error-nomodule": "भितरी त्रुटी:कउनो अपलोड मॉड्युल सेट नइखे",
-       "expandtemplates": "फैलल खाँचा"
+       "expandtemplates": "फैलल खाँचा",
+       "mediastatistics": "मिडिया तथ्यांक"
 }
index 15dcbad..42acaf6 100644 (file)
        "revdelete-log": "কারণ:",
        "revdelete-submit": "নির্বাচিত {{PLURAL:$1|সংশোধনে|সংশোধসমূহে}} প্রয়োগ করো",
        "revdelete-success": "'''সংশোধন দৃশ্যমানতা সফলভাবে হালনাগাদ করা হয়েছে।'''",
-       "revdelete-failure": "<strong>সংশোধনের দৃশ্যমানতা হালনাগাদ করা যায়নি:</strong>\n$1",
+       "revdelete-failure": "সংশোধনের দৃশ্যমানতা হালনাগাদ করা যায়নি:\n$1",
        "logdelete-success": "'''ঘটনা দৃশ্যমানতা সফলভাবে স্থাপন করা হয়েছে।'''",
        "logdelete-failure": "'''লগ-এর দৃশ্যমানতা নির্ধারণ সম্ভব হচ্ছে না:'''\n$1",
        "revdel-restore": "দৃশ্যমানতা পরিবর্তন করো",
        "rightslog": "ব্যবহারকারীর অধিকার লগ",
        "rightslogtext": "এটি ব্যবহারকারী অধিকারে আনা পরিবর্তনগুলির একটি লগ।",
        "action-read": "এই পাতাটি পড়ুন",
-       "action-edit": "এই পাতাটি সম্পাদনা করুন",
+       "action-edit": "এই পাতাটি সম্পাদনা",
        "action-createpage": "পাতা তৈরি করো",
        "action-createtalk": "আলাপের পাতা তৈরি করো",
        "action-createaccount": "এই ব্যবহারকারী একাউন্টটি তৈরি করো",
index 1e27db8..dc2ee15 100644 (file)
@@ -47,7 +47,7 @@
        "tog-ccmeonemails": "Дlадахьийта суна исанна кехат, аса дохьуьйтуш долу кхечу декъашхошна.",
        "tog-diffonly": "Ма гайта агlон чулацам шина башхонца цхьатерра йолуш",
        "tog-showhiddencats": "Гайта къайлаха йолу категореш",
-       "tog-norollbackdiff": "Юха яккхиначул тӀаьхьа ма гайта версийн башхо",
+       "tog-norollbackdiff": "Юха яьккхиначул тӀаьхьа ма гайта версийн башхо",
        "tog-useeditwarning": "Хаамбе бина хийцамаш дӀаязцабеш аса болх дӀатосучу хенахь",
        "tog-prefershttps": "Даима лела йе лардина системин чудалар",
        "underline-always": "Даимна",
        "newpage": "Керла агӀо",
        "talkpage": "Дийцаре йила хӀара агӀо",
        "talkpagelinktext": "Дийцаре",
-       "specialpage": "Белха агӀо",
+       "specialpage": "Белхан агӀо",
        "personaltools": "Долахь болу гӀирсаш",
        "articlepage": "Хьажа яззаме",
        "talk": "Дийцаре",
        "nstab-main": "Яззам",
        "nstab-user": "Декъашхо",
        "nstab-media": "Медиа агӀо",
-       "nstab-special": "Белха агӀо",
+       "nstab-special": "Белхан агӀо",
        "nstab-project": "Проектах лаьцна",
        "nstab-image": "Файл",
        "nstab-mediawiki": "Хаам",
        "localtime": "Меттигера хан:",
        "timezoneuseserverdefault": "Серверан ($1) гӀирс лелабе",
        "timezoneuseoffset": "Кхин (билгалде дӀахилар)",
-       "servertime": "Сервера хан:",
+       "servertime": "Серверан хан:",
        "guesstimezone": "Юза браузеран чура",
        "timezoneregion-africa": "Африка",
        "timezoneregion-america": "Америка",
        "filehist-filesize": "Файлан барам",
        "filehist-comment": "Билгалдаккхар",
        "imagelinks": "Файл лелор",
-       "linkstoimage": "{{PLURAL:$1|ТӀаьхьа йогӀу $1 агӀо тӀетевжина|ТӀаьхьа йогӀу $1 агӀонаш тӀетевжина}} хӀокху файлан:",
+       "linkstoimage": "ХӀара файл лахарчу {{PLURAL:$1|$1 агӀонгахь}} лелош ю:",
        "linkstoimage-more": "$1 дукха {{PLURAL:$1|агӀонаш}} чохь лелош ю хӀара файл.\nХӀокху могӀам чохь {{PLURAL:$1|гойтуш ю $1 хьажорг|гойтуш ю $1 хьажоргаш}} хӀокху файланца.\nКхин хьажа йиш ю [[Special:WhatLinksHere/$2|буьззина могӀаме]].",
        "nolinkstoimage": "АгӀонашчохь файл лелош яц.",
        "linkstoimage-redirect": "$1 (файлан дӀасахьажораг) $2",
        "tooltip-t-contributions": "ХӀокху декъашхочо хийцина йолу агӀонийн могӀам",
        "tooltip-t-emailuser": "ДӀабахьийта хаам оцу декъашхона",
        "tooltip-t-upload": "Чуйаха файлаш",
-       "tooltip-t-specialpages": "Белха агӀонанийн могӀам",
+       "tooltip-t-specialpages": "Белхан агӀонанийн могӀам",
        "tooltip-t-print": "Хlокху агlонна зорба туху башхо",
        "tooltip-t-permalink": "Даима йолу хьажорг хӀокху башха агӀонна",
        "tooltip-ca-nstab-main": "Яззамна чулацам",
        "tooltip-ca-nstab-user": "ХӀора декъашхочун долахь йолу агӀо ю",
        "tooltip-ca-nstab-media": "Медиа-файл",
-       "tooltip-ca-nstab-special": "ХӀара белха агӀо ю, хӀара тая луш яц",
+       "tooltip-ca-nstab-special": "ХӀара белхан агӀо ю, хӀара тая луш яц",
        "tooltip-ca-nstab-project": "Кхолламан дакъа",
        "tooltip-ca-nstab-image": "Хlуман агlо",
        "tooltip-ca-nstab-mediawiki": "Хааман агlо MediaWiki",
index ca5bf07..1901c2f 100644 (file)
        "tags-edit-reason": "Důvod:",
        "tags-edit-revision-submit": "Aplikovat změny na {{PLURAL:$1|tuto revizi|tyto $1 revize|těchto $1 revizí}}",
        "tags-edit-logentry-submit": "Aplikovat změny na {{PLURAL:$1|tento protokolovací záznam|tyto $1 protokolovací záznamy|těchto $1 protokolovacích záznamů}}",
-       "tags-edit-success": "<strong>Změny byly úspěšně aplikovány.</strong>",
-       "tags-edit-failure": "<strong>Změny se nepodařilo provést:</strong>\n$1",
+       "tags-edit-success": "Změny byly úspěšně aplikovány.",
+       "tags-edit-failure": "Změny se nepodařilo provést:\n$1",
        "tags-edit-nooldid-title": "Neplatná cílová revize",
        "tags-edit-nooldid-text": "Buď jste nezadali žádnou cílovou revizi, na kterou by se tato funkce měla použít, nebo uvedená revize neexistuje.",
        "tags-edit-none-selected": "Vyberte prosím nejméně jednu značku, kterou chcete přidat či odebrat.",
index e30ac30..d410fd9 100644 (file)
        "create": "Çĕннине ту",
        "editthispage": "Страницăна тӳрлетесси",
        "create-this-page": "Ку страницăна хатĕрле",
-       "delete": "Кăларса пăрахасси",
+       "delete": "Кăларса пăрах",
        "deletethispage": "Хурат ăна",
        "undelete_short": "$1 тӳрлетӳсене каялла тавăр",
        "protect": "хӳтĕле",
        "editing": "$1 тӳрлетни",
        "creating": "$1 туни",
        "editingsection": "$1 тӳрлетни (статья пайĕ)",
-       "editingcomment": "$1 тӳрлетни (кӗске анлантарӑвӗ)",
+       "editingcomment": "$1 тӳрлетни (çĕнĕ пай)",
        "editconflict": "Тӳрлетнĕ вăхăтра тавлашу тухрĕ: $1",
        "yourtext": "Сирĕн текст",
        "storedversion": "Астуса хăварнă верси",
        "protectedpagewarning": "'''АСĂРХАТТАРНИ: ку страницăна улшăнусем кĕртессинчен хӳтĕленĕ, ăна тӳрлетме администраторсем кăна пултараççĕ.'''",
        "titleprotectedwarning": "'''Асăрхаттару. Ку страницăпа ĕçлеме чарнă, ăна хăш-пĕр хутшăнакан кăна хатерлеме пултарать.'''",
        "templatesused": "Ку страницă çинче усă курнă {{PLURAL:$1|шаблон|шаблонсем}}:",
-       "templatesusedpreview": "Ð\9fÄ\83Ñ\85акан Ñ\81Ñ\82Ñ\80аниÑ\86а Ã§Ð¸Ð½Ñ\87е Ñ\83Ñ\81Ä\83 ÐºÑ\83Ñ\80нÄ\83 Ñ\88аблонÑ\81ем:",
-       "templatesusedsection": "Ку пайра усă курнă шаблонсем:",
+       "templatesusedpreview": "Ð\9cалаÑ\80аÑ\85 Ð¿Ä\83Ñ\85нинÑ\87е Ñ\83Ñ\81Ä\83 ÐºÑ\83Ñ\80акан {{PLURAL:$1|Ñ\88аблон|Ñ\88аблонÑ\81ем}}:",
+       "templatesusedsection": "Ку пайĕнче усă куракан {{PLURAL:$1|шаблон|шаблонсем}}:",
        "template-protected": "(сыхланă)",
        "template-semiprotected": "(пĕр пайне сыхланă)",
        "expensive-parserfunction-category": "Кунта эсир чылай ресурс ыйтакан функцисемпе нумай ĕçлекен страницăсене куратăр",
        "contributions-title": "Усă куракан $1 хушни",
        "mycontris": "Ӳсĕм",
        "contribsub2": "{{GENDER:$3|$1}} валли ($2)",
-       "uctop": " (пуçламăш)",
+       "uctop": "(хальхи)",
        "month": "Уйăхран (тата маларах):",
        "year": "Çултан (тата маларах):",
        "sp-contributions-blocklog": "Чарса лартнисен журналĕ",
        "sp-contributions-logs": "логсем",
        "sp-contributions-talk": "сӳтсе яв",
        "sp-contributions-userrights": "Хутшăнакансен прависемпе ĕçлесси",
-       "sp-contributions-search": "Тӳпе Ñ\88Ñ\8bÑ\80авÄ\95",
+       "sp-contributions-search": "Ð¥Ñ\83Ñ\88нине Ñ\88Ñ\8bÑ\80амалли",
        "sp-contributions-username": "IP адрес е усă куракан ят:",
        "sp-contributions-submit": "Шыра",
        "whatlinkshere": "Кунта килекен каçăсем",
index e3f86bf..c1991a3 100644 (file)
        "prefs-rc": "Letzte Änderungen",
        "prefs-watchlist": "Beobachtungsliste",
        "prefs-editwatchlist": "Beobachtungsliste bearbeiten",
-       "prefs-editwatchlist-label": "Einträge auf deiner Beobachtungsliste bearbeiten:",
-       "prefs-editwatchlist-edit": "Titel auf deiner Beobachtungsliste ansehen und entfernen",
-       "prefs-editwatchlist-raw": "Rohe Beobachtungsliste bearbeiten",
-       "prefs-editwatchlist-clear": "Deine Beobachtungsliste leeren",
+       "prefs-editwatchlist-label": "Einträge auf der Beobachtungsliste bearbeiten:",
+       "prefs-editwatchlist-edit": "ansehen und selektiv entfernen",
+       "prefs-editwatchlist-raw": "unformatiert bearbeiten",
+       "prefs-editwatchlist-clear": "vollständig entfernen",
        "prefs-watchlist-days": "Maximale Anzahl der einbezogenen Tage:",
        "prefs-watchlist-days-max": "Maximal {{PLURAL:$1|ein Tag|$1 Tage}}",
        "prefs-watchlist-edits": "Maximale Anzahl der angezeigten Einträge:",
        "watchlist": "Beobachtungsliste",
        "mywatchlist": "Beobachtungsliste",
        "watchlistfor2": "Von $1 $2",
-       "nowatchlist": "Es befinden sich keine Einträge auf deiner Beobachtungsliste.",
+       "nowatchlist": "Es befinden sich keine Einträge auf der Beobachtungsliste.",
        "watchlistanontext": "Du musst dich anmelden, um deine Beobachtungsliste sehen oder Einträge auf ihr bearbeiten zu können.",
        "watchnologin": "Du bist nicht angemeldet",
        "addwatch": "Zur Beobachtungsliste hinzufügen",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Ein Eintrag wurde|$1 Einträge wurden}} entfernt:",
        "watchlistedit-clear-title": "Beobachtungsliste leeren",
        "watchlistedit-clear-legend": "Beobachtungsliste leeren",
-       "watchlistedit-clear-explain": "Alle Seitennamen werden von deiner Beobachtungsliste entfernt.",
+       "watchlistedit-clear-explain": "Alle Seiten werden ausnahmslos von deiner Beobachtungsliste entfernt.",
        "watchlistedit-clear-titles": "Seitennamen:",
-       "watchlistedit-clear-submit": "Beobachtungsliste leeren (Dies ist dauerhaft!)",
+       "watchlistedit-clear-submit": "Beobachtungsliste unwiderruflich leeren",
        "watchlistedit-clear-done": "Deine Beobachtungsliste wurde geleert.",
        "watchlistedit-clear-removed": "{{PLURAL:$1|Ein Seitenname wurde|$1 Seitennamen wurden}} entfernt:",
        "watchlistedit-too-many": "Es gibt hier zu viele Seiten zum Anzeigen.",
        "tags-edit-reason": "Grund:",
        "tags-edit-revision-submit": "Änderungen an {{PLURAL:$1|diese Version|$1 Versionen}} anwenden",
        "tags-edit-logentry-submit": "Änderungen an {{PLURAL:$1|diesen Logbucheintrag|$1 Logbucheinträgen}} anwenden",
-       "tags-edit-success": "<strong>Die Änderungen wurden erfolgreich angewandt.</strong>",
-       "tags-edit-failure": "<strong>Die Änderungen konnten nicht angewandt werden:</strong>\n$1",
+       "tags-edit-success": "Die Änderungen wurden erfolgreich angewandt.",
+       "tags-edit-failure": "Die Änderungen konnten nicht angewandt werden:\n$1",
        "tags-edit-nooldid-title": "Ungültige Zielversion",
        "tags-edit-nooldid-text": "Du hast entweder keine Zielversion angegeben, für die diese Funktion ausgeführt werden soll oder die angegebene Version ist nicht vorhanden.",
        "tags-edit-none-selected": "Bitte wähle mindestens eine hinzuzufügende oder zu entfernende Markierung aus.",
index e788f0d..81a622b 100644 (file)
        "revdelete-unsuppress": "Tó via i lémit al revisiòun armési",
        "revdelete-log": "Mutîv:",
        "revdelete-submit": "Drōva {{PLURAL:$1|int la revisiòun sernîda|int al revisiòun sernîdi}}",
-       "revdelete-success": "<strong>Vésta ed la revisòun arnuvêda int al môd gióst.</strong>",
-       "revdelete-failure": "<strong>La vésta 'd la versiòun l'an pōl mìa èser arnuvêda:</strong>\n$1",
-       "logdelete-success": "<strong>Vésta dal fât impustêda int al môd gióst.</strong>",
-       "logdelete-failure": "<strong>La vésta dal fât l'an pōl mìa èser impustêda:</strong>\n$1",
+       "revdelete-success": "Vésta ed la revisòun arnuvêda int al môd gióst.",
+       "revdelete-failure": "La vésta 'd la versiòun l'an pōl mìa èser arnuvêda:\n$1",
+       "logdelete-success": "Vésta dal fât impustêda int al môd gióst.",
+       "logdelete-failure": "La vésta dal fât l'an pōl mìa èser impustêda:\n$1",
        "revdel-restore": "Câmbia la vidûda.",
        "pagehist": "Stòria 'd la pàgina",
        "deletedhist": "Stòria scanşlêda",
index 93eb6c5..b8cda24 100644 (file)
        "revdelete-unsuppress": "Remove restrictions on restored revisions",
        "revdelete-log": "Reason:",
        "revdelete-submit": "Apply to selected {{PLURAL:$1|revision|revisions}}",
-       "revdelete-success": "<strong>Revision visibility successfully updated.</strong>",
-       "revdelete-failure": "<strong>Revision visibility could not be updated:</strong>\n$1",
-       "logdelete-success": "<strong>Log visibility successfully set.</strong>",
-       "logdelete-failure": "<strong>Log visibility could not be set:</strong>\n$1",
+       "revdelete-success": "Revision visibility successfully updated.",
+       "revdelete-failure": "Revision visibility could not be updated:\n$1",
+       "logdelete-success": "Log visibility successfully set.",
+       "logdelete-failure": "Log visibility could not be set:\n$1",
        "revdel-restore": "change visibility",
        "pagehist": "Page history",
        "deletedhist": "Deleted history",
        "tags-edit-reason": "Reason:",
        "tags-edit-revision-submit": "Apply changes to {{PLURAL:$1|this revision|$1 revisions}}",
        "tags-edit-logentry-submit": "Apply changes to {{PLURAL:$1|this log entry|$1 log entries}}",
-       "tags-edit-success": "<strong>The changes were successfully applied.</strong>",
-       "tags-edit-failure": "<strong>The changes could not be applied:</strong>\n$1",
+       "tags-edit-success": "The changes were successfully applied.",
+       "tags-edit-failure": "The changes could not be applied:\n$1",
        "tags-edit-nooldid-title": "Invalid target revision",
        "tags-edit-nooldid-text": "You have either not specified any target revision on which to perform this function, or the specified revision does not exist.",
        "tags-edit-none-selected": "Please select at least one tag to add or remove.",
index 324748e..969338e 100644 (file)
        "revdelete-unsuppress": "Eliminar restricciones de las revisiones restauradas",
        "revdelete-log": "Motivo:",
        "revdelete-submit": "Aplicar a {{PLURAL:$1|la revisión seleccionada|las revisiones seleccionadas}}",
-       "revdelete-success": "<strong>Se ha cambiado con éxito la visibilidad de las revisiones.</strong>",
-       "revdelete-failure": "<strong>No se ha podido cambiar la visibilidad de las revisiones:</strong>\n$1",
-       "logdelete-success": "<strong>Se ha cambiado con éxito la visibilidad de los eventos.</strong>",
-       "logdelete-failure": "<strong>No se ha podido cambiar la visibilidad de los eventos:'''\n$1",
+       "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",
        "revdel-restore": "mostrar/ocultar",
        "pagehist": "Historial de la página",
        "deletedhist": "Historial borrado",
        "listfiles-delete": "borrar",
        "listfiles-summary": "Esta página especial muestra todos los archivos subidos.\nCuando el usuario la filtra, solo se muestran los archivos cargados por el usuario en su versión más reciente.",
        "listfiles_search_for": "Buscar por nombre de imagen:",
-       "listfiles-userdoesnotexist": "El usuario «$1» no está registrado.",
+       "listfiles-userdoesnotexist": "La cuenta de usuario «$1» no está registrada.",
        "imgfile": "archivo",
        "listfiles": "Lista de archivos",
        "listfiles_thumb": "Miniatura",
        "fileduplicatesearch-noresults": "Ningún archivo con el nombre «$1» encontrado.",
        "specialpages": "Páginas especiales",
        "specialpages-note-top": "Leyenda",
-       "specialpages-note": "* Páginas especiales normales\n* <span class=\"mw-specialpagerestricted\">Páginas especiales restringidas.</span>\n* <span class=\"mw-specialpagecached\">Páginas especiales en caché (podrían ser obsoletas).</span>",
+       "specialpages-note": "* Páginas especiales normales.\n* <span class=\"mw-specialpagerestricted\">Páginas especiales restringidas.</span>",
        "specialpages-group-maintenance": "Informes de mantenimiento",
        "specialpages-group-other": "Otras páginas especiales",
        "specialpages-group-login": "Acceder/crear cuenta",
        "tags-deactivate-not-allowed": "No es posible desactivar la etiqueta «$1».",
        "tags-deactivate-submit": "Desactivar",
        "tags-apply-no-permission": "No tienes permiso para aplicar etiquetas de cambios, junto con tus cambios.",
-       "tags-apply-not-allowed-one": "La etiqueta \"$1\" no se puede aplicar manualmente.",
+       "tags-apply-not-allowed-one": "No se permite aplicar manualmente la etiqueta «$1».",
        "tags-apply-not-allowed-multi": "{{PLURAL:$2|La siguiente etiqueta no se puede|Las siguientes etiquetas no se pueden}} aplicar manualmente: $1",
        "tags-update-no-permission": "No tienes permiso para agregar o quitar etiquetas de cambio de las revisiones individuales o las entradas del registro.",
-       "tags-update-add-not-allowed-one": "La etiqueta \"$1\" no se puede agregar manualmente.",
+       "tags-update-add-not-allowed-one": "No se permite la adición manual de la etiqueta «$1».",
        "tags-update-add-not-allowed-multi": "{{PLURAL:$2|La siguiente etiqueta no se puede|Las siguientes etiquetas no se pueden}} agregar manualmente: $1",
-       "tags-update-remove-not-allowed-one": "La etiqueta \"$1\" no se puede eliminar.",
+       "tags-update-remove-not-allowed-one": "No se permite eliminar la etiqueta «$1».",
        "tags-update-remove-not-allowed-multi": "{{PLURAL:$2|La siguiente etiqueta no se puede|Las siguientes etiquetas no se pueden}} eliminar manualmente: $1",
        "tags-edit-title": "Editar etiquetas",
        "tags-edit-manage-link": "Administrar etiquetas",
        "tags-edit-remove": "Eliminar estas etiquetas:",
        "tags-edit-remove-all-tags": "(eliminar todas las etiquetas)",
        "tags-edit-chosen-placeholder": "Selecciona algunas etiquetas",
-       "tags-edit-chosen-no-results": "No se encontraron etiquetas que coincidan",
+       "tags-edit-chosen-no-results": "No se encontraron etiquetas que coincidan con",
        "tags-edit-reason": "Motivo:",
        "tags-edit-revision-submit": "Aplicar los cambios a {{PLURAL:$1|esta revisión|$1 revisiones}}",
        "tags-edit-logentry-submit": "Aplicar los cambios a {{PLURAL:$1|esta entrada del registro|$1 entradas del registro}}",
-       "tags-edit-success": "<strong>Los cambios se aplicaron con éxito.</strong>",
-       "tags-edit-failure": "<strong>no se pudieron aplicar los cambios:</strong>\n$1",
+       "tags-edit-success": "Los cambios se aplicaron con éxito.",
+       "tags-edit-failure": "no se pudieron aplicar los cambios:\n$1",
        "tags-edit-none-selected": "Selecciona al menos una etiqueta que añadir o quitar.",
        "comparepages": "Comparar páginas",
        "compare-page1": "Página 1",
        "feedback-error1": "Error: No se reconoce resultado de API",
        "feedback-error2": "Error: Falló la edición",
        "feedback-error3": "Error: No hay respuesta de la API",
-       "feedback-error4": "Error: correo no enviado por título no avalado",
+       "feedback-error4": "Error: no se pudo publicar con el argumento de título proporcionado",
        "feedback-message": "Mensaje:",
        "feedback-subject": "Asunto:",
        "feedback-submit": "Enviar",
index fa32b72..cd7475f 100644 (file)
        "cantcreateaccounttitle": "Ei saa kontot luua",
        "cantcreateaccount-text": "[[User:$3|$3]] on blokeerinud konto loomise sellelt IP-aadressilt (<strong>$1</strong>).\n\n$3 märkis järgmise põhjuse: <em>$2</em>",
        "cantcreateaccount-range-text": "Kontode loomine IP-aadressidelt vahemikus '''$1''', millesse jääb sinu IP-aadress ('''$4'''), on blokeeritud. Blokeeris kasutaja [[User:$3|$3]].\n\n$3 tõi järgmise põhjuse: ''$2''",
-       "viewpagelogs": "Vaata selle lehe logisid",
+       "viewpagelogs": "Vaata selle lehekülje logisissekandeid",
        "nohistory": "Sellel leheküljel ei ole eelmisi redaktsioone.",
        "currentrev": "Viimane redaktsioon",
        "currentrev-asof": "Viimane redaktsioon: $1",
        "tags-edit-manage-link": "halda märgiseid",
        "tags-edit-revision-selected": "Lehekülje \"[[:$2]]\" valitud {{PLURAL:$1|redaktsioon|redaktsioonid}}:",
        "tags-edit-logentry-selected": "Valitud {{PLURAL:$1|logisündmus|logisündmused}}:",
-       "tags-edit-revision-legend": "Märgiste lisamine või nende eemaldamine {{PLURAL:$1|sellelt|kõigilt $1}} redaktsioonilt",
-       "tags-edit-logentry-legend": "Märgiste lisamine või nende eemaldamine {{PLURAL:$1|sellelt|kõigilt $1}} logisissekandelt",
+       "tags-edit-revision-legend": "Märgiste lisamine või eemaldamine {{PLURAL:$1|selle|kõigi $1}} redaktsiooni juures",
+       "tags-edit-logentry-legend": "Märgiste lisamine või eemaldamine {{PLURAL:$1|selle|kõigi $1}} logisissekande juures",
        "tags-edit-existing-tags": "Senised märgised:",
        "tags-edit-existing-tags-none": "''puuduvad''",
        "tags-edit-new-tags": "Uued märgised:",
        "tags-edit-reason": "Põhjus:",
        "tags-edit-revision-submit": "Rakenda {{PLURAL:$1|selle|$1}} redaktsiooni suhtes",
        "tags-edit-logentry-submit": "Rakenda {{PLURAL:$1|selle|$1}} logisissekande suhtes",
-       "tags-edit-success": "<strong>Muudatused on edukalt rakendatud.</strong>",
-       "tags-edit-failure": "<strong>Muudatusi ei õnnestunud rakendada:</strong>\n$1",
+       "tags-edit-success": "Muudatused on edukalt rakendatud.",
+       "tags-edit-failure": "Muudatusi ei õnnestunud rakendada:\n$1",
        "tags-edit-nooldid-title": "Vigane sihtredaktsioon",
        "tags-edit-nooldid-text": "Selle toimingu jaoks pole määratud ühtegi sihtredaktsiooni või määratud redaktsiooni pole olemas.",
        "tags-edit-none-selected": "Palun vali vähemalt üks märgis, mida lisada või eemaldada.",
index 3e8499a..cc3107f 100644 (file)
        "tags-edit-reason": "Syy:",
        "tags-edit-revision-submit": "Lähetä tekemäsi muutokset {{PLURAL:$1|tähän versioon|$1 versioon}}",
        "tags-edit-logentry-submit": "Lähetä muutoksesi {{PLURAL:$1|tähän lokimerkintään|$1 lokimerkintään}}",
-       "tags-edit-success": "<strong>Muutokset on onnistuneesti toteutettu.</strong>",
-       "tags-edit-failure": "<strong>Muutoksia ei voitu toteuttaa:</strong> $1",
+       "tags-edit-success": "Muutokset on onnistuneesti toteutettu.",
+       "tags-edit-failure": "Muutoksia ei voitu toteuttaa: $1",
        "tags-edit-nooldid-title": "Kohdeversio ei ole kelvollinen",
        "tags-edit-nooldid-text": "Et ole joko määrittänyt sitä kohdeversiota, johon tämä toimenpide kohdistuu, tai sitten määrättyä versiota ei ole olemassa.",
        "tags-edit-none-selected": "Valitse ainakin yksi merkkaus, jonka lisäät tai poistat.",
index c8d21dc..953d696 100644 (file)
        "rev-showdeleted": "afficher",
        "revisiondelete": "Supprimer ou restaurer des événements",
        "revdelete-nooldid-title": "Version cible non valide",
-       "revdelete-nooldid-text": "Vous n'avez pas précisé la version cible de cette fonction, elle n'existe pas, ou il s'agit de la version actuelle.",
+       "revdelete-nooldid-text": "Vous n’avez pas précisé de révision(s) cible(s) pour cette fonction, ou bien la révision spécifiée n’existe pas, ou bien vous tentez de masquer la révision actuelle.",
        "revdelete-no-file": "Le fichier spécifié n'existe pas.",
        "revdelete-show-file-confirm": "Êtes-vous sûr{{GENDER:||e|(e)}} de vouloir voir la révision supprimée du fichier « <nowiki>$1</nowiki> » datant du $2 à $3 ?",
        "revdelete-show-file-submit": "Oui",
        "right-sendemail": "Envoyer un courriel aux autres utilisateurs",
        "right-passwordreset": "Voir les courriels de réinitialisation des mots de passe",
        "right-managechangetags": "Créer et supprimer des [[Spécial:Balises|balises]] de la base de données",
+       "right-applychangetags": "Appliquer [[Special:Tags|les balises]] avec ses propres modifications",
+       "right-changetags": "Ajouter et supprimer de façon arbitraire [[Special:Tags|des balises]] sur des révisions individuelles et des entrées de journal",
        "newuserlogpage": "Journal des créations de comptes utilisateur",
        "newuserlogpagetext": "Cette page affiche l’historique des créations de comptes utilisateur.",
        "rightslog": "Journal des modifications de droits d’utilisateurs",
        "action-editmyprivateinfo": "modifier vos informations personnelles",
        "action-editcontentmodel": "modifier le modèle de contenu d’une page",
        "action-managechangetags": "créer et supprimer des balises de la base de données",
+       "action-applychangetags": "appliquer les balises avec vos modifications",
+       "action-changetags": "ajouter et supprimer de façon arbitraire des balises sur des révisions individuelles et des entrées de journal",
        "nchanges": "$1 modification{{PLURAL:$1||s}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|depuis la dernière visite}}",
        "enhancedrc-history": "historique",
        "logempty": "Aucune opération correspondante dans les journaux.",
        "log-title-wildcard": "Chercher parmi les titres commençant par ce texte",
        "showhideselectedlogentries": "Afficher/masquer les entrées de journal sélectionnées",
+       "log-edit-tags": "Modifier les balises des entrées de journal sélectionnées",
        "allpages": "Toutes les pages",
        "nextpage": "Page suivante ($1)",
        "prevpage": "Page précédente ($1)",
        "pageinfo-protect-cascading-yes": "Oui",
        "pageinfo-protect-cascading-from": "Les protections sont déduites depuis",
        "pageinfo-category-info": "Informations sur la catégorie",
+       "pageinfo-category-total": "Nombre total de membres",
        "pageinfo-category-pages": "Nombre de pages",
        "pageinfo-category-subcats": "Nombre de sous-catégories",
        "pageinfo-category-files": "Nombre de fichiers",
        "patrol-log-page": "Journal des relectures",
        "patrol-log-header": "Voici l’historique des versions relues.",
        "log-show-hide-patrol": "$1 l’historique des relectures",
+       "log-show-hide-tag": "balise de journal $1",
        "deletedrevision": "Ancienne version $1 supprimée",
        "filedeleteerror-short": "Erreur lors de la suppression du fichier : $1",
        "filedeleteerror-long": "Des erreurs ont été rencontrées lors de la suppression du fichier :\n\n$1",
        "tags-deactivate-reason": "Motif :",
        "tags-deactivate-not-allowed": "Il n'est pas possible de désactiver la balise « $1 ».",
        "tags-deactivate-submit": "Désactiver",
+       "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-edit-existing-tags-none": "\"Aucun\"",
        "tags-edit-reason": "Motif :",
-       "tags-edit-success": "<strong>Les modifications ont été appliquées avec succès.</strong>",
+       "tags-edit-success": "Les modifications ont été appliquées avec succès.",
        "comparepages": "Comparer des pages",
        "compare-page1": "Page 1",
        "compare-page2": "Page 2",
index 28daf16..da9d973 100644 (file)
        "revdelete-unsuppress": "Beheinings op tebeksette feroarings fuorthelje",
        "revdelete-log": "Reden:",
        "revdelete-submit": "Tapasse op selektearre bewurking",
-       "revdelete-success": "<strong>Sichtberens fan 'e feroaring mei sukses ynsteld.</strong>",
-       "logdelete-success": "<strong>Sichtberens fan it barren mei sukses ynsteld.</strong>",
+       "revdelete-success": "Sichtberens fan 'e feroaring mei sukses ynsteld.",
+       "logdelete-success": "Sichtberens fan it barren mei sukses ynsteld.",
        "revdel-restore": "Sichtberens feroarje",
        "pagehist": "Sideskiednis",
        "deletedhist": "Wiske skiednis",
index 3969199..c13e35d 100644 (file)
        "revdelete-unsuppress": "Thoir air falbh na bacaidhean air mùthaidhean a chaidh aiseag",
        "revdelete-log": "Adhbhar:",
        "revdelete-submit": "Cuir an sàs e air {{PLURAL:$1|am mùthadh|na mùthaidhean}} a thagh thu",
-       "revdelete-success": "<strong>Chaidh so-fhaicsinneachd a' mhùthaidh ùrachadh.</strong>",
-       "revdelete-failure": "<strong>Cha b' urrainn dhuinn so-fhaicsinneachd a' mhùthaidh ùrachadh:</strong>\n$1",
-       "logdelete-success": "<strong>Chaidh faicsinneachd an loga a shuidheachadh.</strong>",
-       "logdelete-failure": "<strong>Cha b' urrainn dhuinn faicsinneachd an loga a shuidheachadh:</strong>\n$1",
+       "revdelete-success": "Chaidh so-fhaicsinneachd a' mhùthaidh ùrachadh.",
+       "revdelete-failure": "Cha b' urrainn dhuinn so-fhaicsinneachd a' mhùthaidh ùrachadh:\n$1",
+       "logdelete-success": "Chaidh faicsinneachd an loga a shuidheachadh.",
+       "logdelete-failure": "Cha b' urrainn dhuinn faicsinneachd an loga a shuidheachadh:\n$1",
        "revdel-restore": "mùth follaiseachd",
        "pagehist": "Eachdraidh na duilleige",
        "deletedhist": "Eachdraidh a chaidh a sguabadh às",
index af4176f..f9734eb 100644 (file)
        "policy-url": "Project:Políticas e normas",
        "portal": "Portal da comunidade",
        "portal-url": "Project:Portal da comunidade",
-       "privacy": "Política de privacidade",
+       "privacy": "Política de protección de datos",
        "privacypage": "Project:Política de protección de datos",
        "badaccess": "Erro de permisos",
        "badaccess-group0": "Non ten os permisos necesarios para executar a acción que solicitou.",
        "tags-edit-reason": "Motivo:",
        "tags-edit-revision-submit": "Aplicar os cambios a {{PLURAL:$1|esta revisión|$1 revisións}}",
        "tags-edit-logentry-submit": "Aplicar os cambios a {{PLURAL:$1|esta entrada do rexistro|$1 entradas do rexistro}}",
-       "tags-edit-success": "<strong>Os cambios aplicáronse con éxito.</strong>",
-       "tags-edit-failure": "<strong>Non se puideron aplicar os cambios:</strong>\n$1",
+       "tags-edit-success": "Os cambios aplicáronse con éxito.",
+       "tags-edit-failure": "Non se puideron aplicar os cambios:\n$1",
        "tags-edit-nooldid-title": "Revisión inválida",
        "tags-edit-nooldid-text": "Non indicou a revisión sobre a que realizar esta función, ou a revisión especificada non existe.",
        "tags-edit-none-selected": "Por favor, seleccione polo menos unha etiqueta que engadir ou quitar.",
index 681e60d..535cec2 100644 (file)
        "revdelete-submit": "પસંદ કરેલા {{PLURAL:$1|ફેરફાર|ફેરફારો}} પર લગાડો",
        "revdelete-success": "પુનરાવર્તન દ્રશ્યતા સફળતા પૂર્વક અદ્યતન બનાવાઈ",
        "revdelete-failure": "'''પુનરાવર્તનની દ્રશ્યતા બદલીન શકાઈ:'''\n$1",
-       "logdelete-success": "<strong>લોગની દ્રશ્યતા સફળતાપૂર્વક ગોઠવાઈ</strong>",
+       "logdelete-success": "લોગની દ્રશ્યતા સફળતાપૂર્વક ગોઠવાઈ",
        "logdelete-failure": "'''લોગની દ્રશ્યતા ગોઠવી ન શકાઈ :'''\n$1",
        "revdel-restore": "દૃષ્ટિક્ષમતા બદલો",
        "pagehist": "પાનાનો ઇતિહાસ",
index 9164e40..d468d32 100644 (file)
        "tags-edit-reason": "סיבה:",
        "tags-edit-revision-submit": "החלת שינויים {{PLURAL:$1|לגרסה הזאת|ל־$1 גרסאות}}",
        "tags-edit-logentry-submit": "החלת שינויים {{PLURAL:$1|לרשומת היומן הזאת|ל־$1 רשומת היומן}}",
-       "tags-edit-success": "<strong>השינויים הוחלו בהצלחה.</strong>",
-       "tags-edit-failure": "<strong>החלת השינויים נכשלה:</strong>\n$1",
+       "tags-edit-success": "השינויים הוחלו בהצלחה.",
+       "tags-edit-failure": "החלת השינויים נכשלה:\n$1",
        "tags-edit-nooldid-title": "גרסת היעד אינה תקינה",
        "tags-edit-nooldid-text": "או שלא ציינת שום גרסה שהפעולה תבוצע עליה, או שהגרסה שציינת אינה קיימת.",
        "tags-edit-none-selected": "יש לבחור לפחות תגית אחת להוספה או להסרה.",
index 5d3842a..7e86a58 100644 (file)
                ]
        },
        "tog-underline": "कड़ियाँ अधोरेखन:",
-       "tog-hideminor": "हाल à¤®à¥\87à¤\82 à¤¹à¥\81à¤\8f à¤¬à¤¦à¤²à¤¾à¤µà¥\8bà¤\82 में छोटे बदलाव छिपाएँ",
-       "tog-hidepatrolled": "हाल à¤®à¥\87à¤\82 à¤¹à¥\81à¤\8f à¤¬à¤¦à¤²à¤¾à¤µà¥\8bà¤\82 में परीक्षित बदलाव छिपाएँ",
-       "tog-newpageshidepatrolled": "नà¤\8f पृष्ठों की सूची में परीक्षित पृष्ठ छिपाएँ",
+       "tog-hideminor": "हाल à¤®à¥\87à¤\82 à¤¹à¥\81à¤\8f à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन में छोटे बदलाव छिपाएँ",
+       "tog-hidepatrolled": "हाल à¤®à¥\87à¤\82 à¤¹à¥\81à¤\8f à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन में परीक्षित बदलाव छिपाएँ",
+       "tog-newpageshidepatrolled": "नयà¥\87 पृष्ठों की सूची में परीक्षित पृष्ठ छिपाएँ",
        "tog-extendwatchlist": "केवल हालिया ही नहीं, बल्कि सभी परिवर्तनों को दिखाने के लिए ध्यानसूची को विस्तारित करें",
-       "tog-usenewrc": "हाल à¤®à¥\87à¤\82 à¤¹à¥\81à¤\8f à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनà¥\8bà¤\82 à¤®à¥\87à¤\82 à¤\94र à¤§à¥\8dयानसà¥\82à¤\9aà¥\80 à¤®à¥\87à¤\82 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनà¥\8bà¤\82 à¤\95à¥\8b à¤ªà¥\83षà¥\8dठ à¤\85नà¥\81सार à¤¸à¤®à¥\82हà¥\8bà¤\82 à¤®à¥\87à¤\82 à¤¬à¤¾à¤\81à¤\9fà¥\87à¤\82",
+       "tog-usenewrc": "हाल में हुए परिवर्तनों और ध्यानसूची में परिवर्तनों को पृष्ठ अनुसार समूहों में बाँटें",
        "tog-numberheadings": "शीर्षक स्व-क्रमांकित करें",
        "tog-showtoolbar": "सम्पादन उपकरण पट्टी दिखाएँ",
-       "tog-editondblclick": "दà¥\81à¤\97à¥\81नà¥\87 क्लिक पर पृष्ठ संपादित करें",
+       "tog-editondblclick": "दà¥\8bà¤\97à¥\81ना क्लिक पर पृष्ठ संपादित करें",
        "tog-editsectiononrightclick": "अनुभाग शीर्षक पर दायाँ क्लिक करने पर अनुभाग सम्पादित करें",
        "tog-watchcreations": "मेरे द्वारा निर्मित पृष्ठों और मेरी अपलोड की फ़ाइलों को मेरी ध्यानसूची में जोड़ें",
        "tog-watchdefault": "मेरे द्वारा सम्पादित पृष्ठों और फ़ाइलों को मेरी ध्यानसूची में जोड़ें",
        "tog-watchmoves": "मेरे द्वारा स्थानांतरित पृष्ठों एवं फ़ाइलों को मेरी ध्यानसूची में जोड़ें",
        "tog-watchdeletion": "मेरे द्वारा हटाए गए पृष्ठों एवं फ़ाइलों को मेरी ध्यानसूची में जोड़ें",
        "tog-watchrollback": "मेरे द्वारा प्रत्यापन्न (रोलबैक) किये हुये पृष्ठों को मेरी ध्यानसूची में जोड़ें।",
-       "tog-minordefault": "मेरे सभी सम्पादन छोटे बदलाव हैं",
-       "tog-previewontop": "समà¥\8dपादन à¤¬à¤\95à¥\8dसà¥\87 à¤\95à¥\87 à¤\8aपर à¤\9dलà¤\95 à¤¦à¤¿à¤\96ाà¤\8fà¤\81",
-       "tog-previewonfirst": "पà¥\8dरथम à¤¸à¤®à¥\8dपादन à¤\95à¥\87 à¤¬à¤¾à¤¦ à¤\9dलà¤\95 à¤¦à¤¿à¤\96ाà¤\8fà¤\81",
-       "tog-enotifwatchlistpages": "मेरी ध्यानसूची में दर्ज किसी भी पृष्ठ अथवा फ़ाइल में परिवर्तन होने पर मुझे ई-मेल करें",
-       "tog-enotifusertalkpages": "मेरा वार्ता पृष्ठ परिवर्तित होने पर मुझे ई-मेल करें",
-       "tog-enotifminoredits": "छोटे परिवर्तनों के लिए भी मुझे ई-मेल भेजें",
-       "tog-enotifrevealaddr": "अधिसूचना ई-मेल में मेरा ई-मेल पता दर्शाएँ",
-       "tog-shownumberswatching": "धà¥\8dयान à¤°à¤\96नà¥\87 à¤µà¤¾à¤²à¥\87 à¤¸à¤¦à¤¸à¥\8dयà¥\8bà¤\82 à¤\95à¥\80 à¤¸à¤\82à¤\96à¥\8dया à¤¦à¤¿à¤\96ाà¤\8fà¤\81",
+       "tog-minordefault": "मेरे सभी सम्पादनों को छोटे बदलाव के रूप में चिह्नित करें",
+       "tog-previewontop": "समà¥\8dपादन à¤¸à¤¨à¥\8dदà¥\82à¤\95 à¤¸à¥\87 à¤ªà¤¹à¤²à¥\87 à¤\9dलà¤\95 à¤¦à¤¿à¤\96ायà¥\87à¤\82",
+       "tog-previewonfirst": "पà¥\8dरथम à¤¸à¤®à¥\8dपादन à¤\95à¥\87 à¤¬à¤¾à¤¦ à¤\9dलà¤\95 à¤¦à¤¿à¤\96ायà¥\87à¤\82",
+       "tog-enotifwatchlistpages": "मेरी ध्यानसूची में दर्ज किसी भी पृष्ठ अथवा फ़ाइल में परिवर्तन होने पर मुझे ईमेल करें",
+       "tog-enotifusertalkpages": "मेरा वार्ता पृष्ठ परिवर्तित होने पर मुझे ईमेल करें",
+       "tog-enotifminoredits": "छोटे परिवर्तनों के लिए भी मुझे ईमेल भेजें",
+       "tog-enotifrevealaddr": "अधिसूचना ईमेल में मेरा ईमेल पता दर्शायें",
+       "tog-shownumberswatching": "धà¥\8dयान à¤°à¤\96नà¥\87 à¤µà¤¾à¤²à¥\87 à¤¸à¤¦à¤¸à¥\8dयà¥\8bà¤\82 à¤\95à¥\80 à¤¸à¤\82à¤\96à¥\8dया à¤¦à¤¿à¤\96ायà¥\87à¤\82",
        "tog-oldsig": "वर्तमान हस्ताक्षर:",
        "tog-fancysig": "हस्ताक्षर का विकिपाठ के समान मानें (बिना स्वचालित कड़ी के)",
        "tog-uselivepreview": "सजीवन झलक का उपयोग करें",
        "tog-forceeditsummary": "यदि सम्पादन सारांश ना दिया गया हो तो मुझे सूचित करें",
        "tog-watchlisthideown": "मेरी ध्यानसूची से मेरे किए परिवर्तन छिपाएँ",
-       "tog-watchlisthidebots": "मेरी ध्यानसूची से बॉटों द्वारा किए परिवर्तन छिपाएँ",
+       "tog-watchlisthidebots": "मेरी ध्यानसूची से बॉट द्वारा किए परिवर्तन छिपाएँ",
        "tog-watchlisthideminor": "मेरी ध्यानसूची से छोटे परिवर्तन छिपाएँ",
        "tog-watchlisthideliu": "मेरी ध्यानसूची में सत्रारम्भित सदस्यों के सम्पादन न दिखाएँ",
-       "tog-watchlisthideanons": "à¤\86à¤\87॰पà¥\80 à¤¸à¤¦à¤¸à¥\8dयà¥\8bà¤\82 à¤¦à¥\8dवारा à¤\95िà¤\8f à¤¸à¤®à¥\8dपादनà¥\8bà¤\82 à¤\95à¥\8b à¤®à¥\87रà¥\80 à¤§à¥\8dयानसà¥\82à¤\9aà¥\80 à¤®à¥\87à¤\82 à¤¨ à¤¦à¤¿à¤\96ाà¤\8fà¤\81",
+       "tog-watchlisthideanons": "à¤\86à¤\88॰पà¥\80॰ à¤¸à¤¦à¤¸à¥\8dयà¥\8bà¤\82 à¤¦à¥\8dवारा à¤\95िà¤\8f à¤¸à¤®à¥\8dपादनà¥\8bà¤\82 à¤\95à¥\8b à¤®à¥\87रà¥\80 à¤§à¥\8dयानसà¥\82à¤\9aà¥\80 à¤®à¥\87à¤\82 à¤¨ à¤¦à¤¿à¤\96ायà¥\87à¤\82",
        "tog-watchlisthidepatrolled": "परीक्षित सम्पादन मेरी ध्यानसूची में छुपाएँ",
-       "tog-ccmeonemails": "मà¥\87रà¥\87 à¤¦à¥\8dवारा à¤\85नà¥\8dय à¤¸à¤¦à¤¸à¥\8dयà¥\8bà¤\82 à¤\95à¥\8b à¤­à¥\87à¤\9cà¥\87 à¤\88-मà¥\87लà¥\8bà¤\82 की प्रतियाँ मुझे भी भेजें",
-       "tog-diffonly": "à¤\85वतरणà¥\8bà¤\82 à¤®à¥\87à¤\82 à¤\85नà¥\8dतर à¤¦à¤°à¥\8dशातà¥\87 à¤¸à¤®à¤¯ à¤ªà¥\81रानà¥\87 à¤\85वतरण à¤¨ à¤¦à¤¿à¤\96ाà¤\8fà¤\81",
-       "tog-showhiddencats": "à¤\9bिपाà¤\88 à¤¹à¥\81à¤\88 à¤¶à¥\8dरà¥\87णियाà¤\81 à¤¦à¤¿à¤\96ाà¤\8fà¤\81",
-       "tog-norollbackdiff": "समà¥\8dपादन à¤µà¤¾à¤ªà¤¸ à¤²à¥\87नà¥\87 à¤\95à¥\87 à¤¬à¤¾à¤¦ à¤\85नà¥\8dतर à¤¨ à¤¦à¤¿à¤\96ाà¤\8fà¤\81",
+       "tog-ccmeonemails": "मà¥\87रà¥\87 à¤¦à¥\8dवारा à¤\85नà¥\8dय à¤¸à¤¦à¤¸à¥\8dयà¥\8bà¤\82 à¤\95à¥\8b à¤­à¥\87à¤\9cà¥\80 à¤\9cानà¥\87 à¤µà¤¾à¤²à¥\80 à¤\88मà¥\87ल की प्रतियाँ मुझे भी भेजें",
+       "tog-diffonly": "à¤\85वतरणà¥\8bà¤\82 à¤®à¥\87à¤\82 à¤\85नà¥\8dतर à¤¦à¤°à¥\8dशातà¥\87 à¤¸à¤®à¤¯ à¤ªà¥\81रानà¥\87 à¤\85वतरण à¤¨ à¤¦à¤¿à¤\96ायà¥\87à¤\82",
+       "tog-showhiddencats": "à¤\9bिपाà¤\88 à¤¹à¥\81à¤\88 à¤¶à¥\8dरà¥\87णियाà¤\81 à¤¦à¤¿à¤\96ायà¥\87à¤\82",
+       "tog-norollbackdiff": "समà¥\8dपादन à¤µà¤¾à¤ªà¤¸ à¤²à¥\87नà¥\87 à¤\95à¥\87 à¤¬à¤¾à¤¦ à¤\85नà¥\8dतर à¤¨ à¤¦à¤¿à¤\96ायà¥\87à¤\82",
        "tog-useeditwarning": "जब मैं किसी सम्पादन पृष्ठ को बिना सहेजे बदलावों के साथ छोड़ूँ तो मुझे सूचित करें।",
        "tog-prefershttps": "लॉगिन करने के पश्चात् सदैव सुरक्षित कनेक्शन का प्रयोग करें",
        "underline-always": "सदैव",
        "underline-never": "कभी नहीं",
-       "underline-default": "तà¥\8dवà¤\9aा à¤¯à¤¾ à¤¬à¥\8dराà¤\89à¤\9c़र à¤¡à¤¿à¤«à¤¼à¥\89लà¥\8dà¤\9f",
+       "underline-default": "पà¥\8dराथमिà¤\95 à¤¤à¥\8dवà¤\9aा à¤¯à¤¾ à¤¬à¥\8dराà¤\89à¤\9c़र",
        "editfont-style": "सम्पादन क्षेत्र की मुद्रलिपि शैली:",
-       "editfont-default": "बà¥\8dराà¤\89à¤\9c़र à¤¡à¤¿à¤«à¤¼à¥\89लà¥\8dà¤\9f",
+       "editfont-default": "पà¥\8dराथमिà¤\95 à¤¬à¥\8dराà¤\89à¤\9c़र",
        "editfont-monospace": "एकल स्थल मुद्रलिपि",
        "editfont-sansserif": "बिना नोकों वाली मुद्रलिपि",
        "editfont-serif": "नोकों वाली मुद्रलिपि",
        "oct": "अक्टू॰",
        "nov": "नव॰",
        "dec": "दिस॰",
-       "january-date": "जनवरी $1",
-       "february-date": "फ़रवरी $1",
-       "march-date": "मार्च $1",
-       "april-date": "अप्रैल $1",
-       "may-date": "मई $1",
-       "june-date": "जून $1",
-       "july-date": "जुलाई $1",
-       "august-date": "अगस्त $1",
-       "september-date": "सितम्बर $1",
-       "october-date": "अक्टूबर $1",
-       "november-date": "नवम्बर $1",
-       "december-date": "दिसम्बर $1",
+       "january-date": "$1 जनवरी",
+       "february-date": "$1 फ़रवरी",
+       "march-date": "$1 मार्च",
+       "april-date": "$1 अप्रैल",
+       "may-date": "$1 मई",
+       "june-date": "$1 जून",
+       "july-date": "$1 जुलाई",
+       "august-date": "$1 अगस्त",
+       "september-date": "$1 सितम्बर",
+       "october-date": "$1 अक्टूबर",
+       "november-date": "$1 नवम्बर",
+       "december-date": "$1 दिसम्बर",
        "pagecategories": "{{PLURAL:$1|श्रेणी|श्रेणियाँ}}",
        "category_header": "\"$1\" श्रेणी में पृष्ठ",
        "subcategories": "उपश्रेणियाँ",
        "category-media-header": "\"$1\" श्रेणी में मीडिया",
-       "category-empty": "''इस श्रेणी में इस समय कोई पृष्ठ या मीडिया नहीं हैं।''",
+       "category-empty": "<em>इस श्रेणी में इस समय कोई पृष्ठ या मीडिया नहीं हैं।</em>",
        "hidden-categories": "{{PLURAL:$1|छुपाई हुई श्रेणी|छुपाई हुई श्रेणियाँ}}",
        "hidden-category-category": "छुपाई हुई श्रेणियाँ",
-       "category-subcat-count": "{{PLURAL:$2|इस श्रेणी में केवल निम्नलिखित उपश्रेणी है|इस श्रेणी में निम्नलिखित {{PLURAL:$1|उपश्रेणी|$1 उपश्रेणियाँ}} हैं, कुल उपश्रेणियाँ $2}}",
+       "category-subcat-count": "{{PLURAL:$2|इस श्रेणी में केवल निम्नलिखित उपश्रेणी है।|इस श्रेणी की कुल $2 में से {{PLURAL:$1|उपश्रेणी निम्नलिखित है।|$1 उपश्रेणियाँ निम्नलिखित हैं।}}}}",
        "category-subcat-count-limited": "इस श्रेणी में निम्नलिखित {{PLURAL:$1|उपश्रेणी है|$1 उपश्रेणियाँ हैं}}।",
        "category-article-count": "{{PLURAL:$2|इस श्रेणी में केवल निम्नलिखित पृष्ठ है।|इस श्रेणी में निम्नलिखित {{PLURAL:$1|पृष्ठ है|$1 पृष्ठ हैं}}, कुल पृष्ठ $2}}",
        "category-article-count-limited": "निम्नलिखित {{PLURAL:$1|पृष्ठ|$1 पृष्ठ}} इस श्रेणी में हैं।",
        "category-file-count": "{{PLURAL:$2|इस श्रेणी में केवल निम्नलिखित फ़ाइल है।|इस श्रेणी में निम्नलिखित {{PLURAL:$1|फ़ाइल|$1 फ़ाइलें}} हैं, कुल फ़ाइलें $2}}",
        "category-file-count-limited": "इस श्रेणी में निम्नलिखित {{PLURAL:$1|फ़ाइल है।|फ़ाइलें हैं।}}",
-       "listingcontinuesabbrev": "à¤\86à¤\97à¥\87.",
+       "listingcontinuesabbrev": "à¤\9cारà¥\80",
        "index-category": "सूचीबद्ध पृष्ठ",
        "noindex-category": "असूचीबद्ध पृष्ठ",
        "broken-file-category": "टूटी हुई फ़ाइल कड़ियों वाले पृष्ठ",
        "about": "के बारे में",
-       "article": "लेख",
+       "article": "सामà¤\97à¥\8dरà¥\80 à¤²à¥\87à¤\96",
        "newwindow": "(नई विंडो में खुलता है)",
        "cancel": "रद्द करें",
        "moredotdotdot": "और...",
-       "morenotlisted": "यह à¤ªà¥\82रà¥\80 à¤¸à¥\82à¤\9aà¥\80 नहीं है।",
+       "morenotlisted": "यह à¤¸à¥\82à¤\9aà¥\80 à¤ªà¥\82रà¥\8dण नहीं है।",
        "mypage": "पृष्ठ",
        "mytalk": "वार्ता",
-       "anontalk": "à¤\87स à¤\86à¤\87॰पी के लिये वार्ता",
+       "anontalk": "à¤\87स à¤\86à¤\88॰पी के लिये वार्ता",
        "navigation": "भ्रमण",
        "and": "&#32;और",
        "qbfind": "खोजें",
        "qbedit": "सम्पादन",
        "qbpageoptions": "यह पृष्ठ",
        "qbmyoptions": "मेरे पृष्ठ",
-       "faq": "बहà¥\81धा à¤ªà¥\82à¤\9bे प्रश्न",
+       "faq": "à¤\85à¤\95à¥\8dसर à¤ªà¥\82à¤\9bà¥\87 à¤\9cानà¥\87 à¤µà¤¾à¤²े प्रश्न",
        "faqpage": "Project:अक्सर पूछे जाने वाले सवाल",
        "actions": "क्रियाएँ",
        "namespaces": "नामस्थान",
        "updatedmarker": "मेरे अन्तिम बार पधारने के बाद के अद्यतन",
        "printableversion": "छापने योग्य संस्करण",
        "permalink": "स्थायी कड़ी",
-       "print": "पà¥\8dरिà¤\82à¤\9f करें",
-       "view": "दरà¥\8dशाव",
+       "print": "मà¥\81दà¥\8dरित करें",
+       "view": "à¤\85वलà¥\8bà¤\95न",
        "view-foreign": "$1 पर देखें",
        "edit": "सम्पादन",
        "edit-local": "स्थानीय विवरण सम्पादन करें",
        "articlepage": "सामग्री पृष्ठ देखें",
        "talk": "चर्चा",
        "views": "दर्शाव",
-       "toolbox": "साधन à¤ªà¥\87à¤\9fà¥\80",
+       "toolbox": "à¤\89पà¤\95रण",
        "userpage": "सदस्य पृष्ठ देखें",
        "projectpage": "परियोजना पृष्ठ देखें",
        "imagepage": "फ़ाइल पृष्ठ देखें",
index ff46e1e..78103cf 100644 (file)
        "delete-edit-reasonlist": "Přičiny za wušmórnjenje wobdźěłać",
        "delete-toobig": "Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje tajkich stronow bu wobmjezowane, zo by připadne přetorhnjenje {{SITENAME}} wobešło.",
        "delete-warning-toobig": "Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje móže operacije datoweje banki {{SITENAME}} přetorhnyć; pokročuj z kedźbliwosću.",
+       "deleteprotected": "Njemóžeš tutu stronu zhašeć, dokelž je so škitała.",
        "deleting-backlinks-warning": "'''Warnowanje:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Druhe strony]] wotkazuja k stronje abo strona je druhdźe zapřijata, kotruž chceš zhašeć.",
        "rollback": "Změny cofnyć",
        "rollbacklink": "Cofnyć",
        "thumbnail-temp-create": "Temporerna dataja za miniaturny wobrazk njeda so wutworić",
        "thumbnail-dest-create": "Miniaturny wobrazk njeda so na cilowym městnje składować",
        "thumbnail_invalid_params": "Njepłaćiwe parametry miniaturki",
+       "thumbnail_toobigimagearea": "Dataja z wotměrami, kotrež su wjetše hač $1",
        "thumbnail_dest_directory": "Njemóžno cilowy zapis wutworić.",
        "thumbnail_image-type": "Wobrazowy typ so njepodpěruje",
        "thumbnail_gd-library": "Njedospołna konfiguracija GD-biblioteki: falowaca funkcija $1",
        "tags-delete-reason": "Přičina:",
        "tags-activate-reason": "Přičina:",
        "tags-activate-submit": "Aktiwizować",
+       "tags-deactivate-reason": "Přičina:",
+       "tags-deactivate-submit": "Znjemóžnić",
+       "tags-edit-revision-selected": "{{PLURAL:$1|Wubrana wersija|Wubranej wersiji|Wubrane wersije}} wot [[:$2]]:",
+       "tags-edit-logentry-selected": "{{PLURAL:$1|Wubrany protokolowy podawk|Wubranej protokolowej podawkaj|Wubrane protokolowe podawki}}",
+       "tags-edit-existing-tags-none": "\"Žadyn\"",
        "tags-edit-reason": "Přičina:",
+       "tags-edit-revision-submit": "Změny na {{PLURAL:$1|tutu wersiju|$1 wersiji|$1 wersije|$1 wersijow}} nałožić",
+       "tags-edit-logentry-submit": "Změny na {{PLURAL:$1|tutón protokolowy zapisk|$1 protokolowej zapiskaj|$1 protokolowe zapiski|$1 protokolowych zapiskow}}",
+       "tags-edit-success": "Změny su so wuspěšnje nałožili.",
+       "tags-edit-failure": "Změny njehodźa so nałožować:\n$1",
        "tags-edit-nooldid-title": "Njepłaćiwa cilowa wersija",
        "comparepages": "Strony přirunać",
        "compare-page1": "Strona 1",
        "revdelete-uname-unhid": "wužiwarske mjeno widźomne",
        "revdelete-restricted": "na administratorow nałožene wobmjezowanja",
        "revdelete-unrestricted": "Wobmjezowanja za administratorow wotstronjene",
+       "logentry-import-upload": "$1 je $3 přez datajowe nahraće {{GENDER:$2|importował|importowała}}",
+       "logentry-import-interwiki": "$1je $3 z druheho wikija {{GENDER:$2|importował|importowała}}",
+       "logentry-merge-merge": "$1 je $3 do $4 {{GENDER:$2|zjednoćił|zjednoćiła}} (wersije hač do $5)",
        "logentry-move-move": "$1 je stronu $3 do $4 {{GENDER:$2|přesunył|přesunyła}}",
        "logentry-move-move-noredirect": "$1 je stronu $3 do $4 {{GENDER:$2|přesunył|přesunyła}}, bjeztoho zo by dalesposrědkowanje {{GENDER:$2|wutworił|wutworiła}}",
        "logentry-move-move_redir": "$1 je stronu $3 do $4 {{GENDER:$2|přesunył|přesunyła}} přepisujo dalesposrědkowanje",
        "logentry-pagelang-pagelang": "$1 je rěč strony za $3 wot $4 do $5 {{GENDER:$2|změnił|změniła}}.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (zmóžnjeny)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''znjemóžnjeny''')",
+       "mediastatistics": "Medijowe statistiki",
+       "mediastatistics-nbytes": "{{PLURAL:$1|$1 bajt|$1 bajtaj|$1 bajty|$1 bajtow}} ($2; $3%)",
        "mediastatistics-table-mimetype": "MIME-typ",
        "mediastatistics-table-extensions": "Móžne rozšěrjenja",
        "mediastatistics-table-count": "Ličba datajow",
        "mediastatistics-header-text": "Tekst",
        "mediastatistics-header-executable": "Wuwjedźomne formaty",
        "mediastatistics-header-archive": "Komprimowane formaty",
+       "json-error-unknown": "Je problem z JSON był. Zmylk: $1",
+       "json-error-state-mismatch": "Njepłaćiwy JSON abo JSON ze zmylkami",
+       "json-error-ctrl-char": "Zmylk z wodźenskim znamješkom, snano wopak zakodowane",
        "json-error-syntax": "Syntaksowy zmylk",
+       "json-error-utf8": "UTF-8-znamješka ze zmylkami, snano wopak zakodowane",
+       "json-error-recursion": "Jedna rekursiwna referenca abo wjacore rekursiwne referency w hódnoće, kotrež maja so kodować",
+       "json-error-unsupported-type": "Hódnota typa, kotryž njeda so kodować, je so podała",
+       "headline-anchor-title": "Wotkaz k tutomu wotrězkej",
        "special-characters-group-latin": "Łaćonske",
        "special-characters-group-latinextended": "Łaćonske rozšěrjene",
        "special-characters-group-ipa": "IPA",
index d5d575f..30d972b 100644 (file)
        "revdelete-log": "Պատճառ.",
        "revdelete-submit": "Կիրառել ընտրված {{PLURAL:$1|տարբերակի|տարբերակների}} վրա",
        "revdelete-success": "'''Տարբերակի տեսանելիությունը բարեհաջող թարմացված է։'''",
-       "revdelete-failure": "<strong>Խմբագրման տեսանելիություն հնարավոր չէր փոփոխել՝</strong>\n$1",
+       "revdelete-failure": "Խմբագրման տեսանելիություն հնարավոր չէր փոփոխել՝\n$1",
        "logdelete-success": "'''Իրադարձության տեսանելիությունը փոփոխված է։'''",
        "revdel-restore": "Փոխել տեսանելիությունը",
        "pagehist": "Էջի պատմություն",
        "duration-decades": "$1 {{PLURAL:$1|տասնամյակ}}",
        "duration-centuries": "$1 {{PLURAL:$1|դար}}",
        "duration-millennia": "$1 {{PLURAL:$1|հազարամյակ}}",
-       "expandtemplates": "Կաղապարների ընդարձակում"
+       "expandtemplates": "Կաղապարների ընդարձակում",
+       "special-characters-group-latin": "Լատիներեն",
+       "special-characters-group-latinextended": "Լատիներեն ընդլայնված",
+       "special-characters-group-ipa": "IPA",
+       "special-characters-group-symbols": "Սիմվոլներ",
+       "special-characters-group-greek": "Հունարեն",
+       "special-characters-group-cyrillic": "Կիրիլիցա",
+       "special-characters-group-arabic": "Արաբերեն",
+       "special-characters-group-arabicextended": "Արաբերեն ընդլայնված",
+       "special-characters-group-persian": "Պարսկերեն",
+       "special-characters-group-hebrew": "Եբրայերեն",
+       "special-characters-group-bangla": "Բենգալերեն",
+       "special-characters-group-tamil": "Թամիլերեն",
+       "special-characters-group-telugu": "Տելուգու",
+       "special-characters-group-sinhala": "Սինհալերեն",
+       "special-characters-group-gujarati": "Գուջարատի",
+       "special-characters-group-devanagari": "Դեվանգարի",
+       "special-characters-group-thai": "Թայերեն",
+       "special-characters-group-lao": "Լաոերեն",
+       "special-characters-group-khmer": "Կխմեր",
+       "special-characters-title-endash": "ո գծիկ (en dash)",
+       "special-characters-title-emdash": "ա գծիկ (em dash)",
+       "special-characters-title-minus": "հանածի նշան"
 }
index 5fc0be2..044c4af 100644 (file)
        "revdelete-unsuppress": "Ikkaten dagiti panangigawid kadagiti naipulang a rebision",
        "revdelete-log": "Rason:",
        "revdelete-submit": "Ipakat {{PLURAL:$1|ti napili a rebision|dagiti napili a rebision}}",
-       "revdelete-success": "<strong>Balligi ti panagpabaro ti panagkita ti rebision.</strong>",
-       "revdelete-failure": "<strong>Saan a napabaro ti panagkita ti rebision.</strong>\n$1",
-       "logdelete-success": "<strong>Balligi ti pannakaisaad ti listaan ti panagkita.</strong>",
-       "logdelete-failure": "<strong>Napaay ti pannakaisaad ti listaan ti panagkita:</strong>\n$1",
+       "revdelete-success": "Balligi ti panagpabaro ti panagkita ti rebision.",
+       "revdelete-failure": "Saan a napabaro ti panagkita ti rebision.\n$1",
+       "logdelete-success": "Balligi ti pannakaisaad ti listaan ti panagkita.",
+       "logdelete-failure": "Napaay ti pannakaisaad ti listaan ti panagkita:\n$1",
        "revdel-restore": "sukatan ti panagkita",
        "pagehist": "Pakasaritaan ti panid",
        "deletedhist": "Naikkat a pakasaritaan",
        "import-rootpage-nosubpage": "Ti nagan ti espasio ti \"$1\" iti ramut ti panid ket saan a mangpalubos kadagiti subpanid.",
        "importlogpage": "Listaan ti panagala",
        "importlogpagetext": "Dagiti administratibo a panagala kadagiti panid nga addaan iti pakasaritaan ti panag-urnos manipud kadagiti sabali a wiki.",
-       "import-logentry-upload": "innala ti [[$1]] babaen ti panagikarga ti papeles",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|a rebision|kadagiti rebision}} ti naala",
-       "import-logentry-interwiki": "nai-transwiki iti $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|rebision|dagiti rebision}} ti naala manipud ti $2",
        "javascripttest": "Panagsubok ti JavaScript",
        "javascripttest-pagetext-noframework": "Daytoy a panid ket naireserba para iti panagpataray kadagiti panagsubok ti JavaScript.",
        "mediastatistics-table-totalbytes": "Naitiptipon a kadakkel",
        "mediastatistics-header-unknown": "Di ammo",
        "mediastatistics-header-bitmap": "Ladladawan ti bitmap",
-       "mediastatistics-header-office": "Opisina"
+       "mediastatistics-header-office": "Opisina",
+       "special-characters-group-latin": "Latin",
+       "special-characters-group-latinextended": "Latin napaatiddog",
+       "special-characters-group-ipa": "IPA",
+       "special-characters-group-symbols": "Dagiti simbolo",
+       "special-characters-group-greek": "Griego",
+       "special-characters-group-cyrillic": "Siriliko",
+       "special-characters-group-arabic": "Arabiko",
+       "special-characters-group-arabicextended": "Arabiko a napaatiddog",
+       "special-characters-group-persian": "Persiano",
+       "special-characters-group-hebrew": "Hebreo",
+       "special-characters-group-bangla": "Bangla",
+       "special-characters-group-tamil": "Tamil",
+       "special-characters-group-telugu": "Telugu",
+       "special-characters-group-sinhala": "Sinhala",
+       "special-characters-group-gujarati": "Gujarati",
+       "special-characters-group-devanagari": "Devanagari",
+       "special-characters-group-thai": "Thai",
+       "special-characters-group-lao": "Lao",
+       "special-characters-group-khmer": "Khmer",
+       "special-characters-title-endash": "en dash",
+       "special-characters-title-emdash": "em dash",
+       "special-characters-title-minus": "senial a panagkissay"
 }
index 18a5891..096a490 100644 (file)
        "history-feed-description": "Cronologia della pagina su questo sito",
        "history-feed-item-nocomment": "$1 il $2",
        "history-feed-empty": "La pagina richiesta non esiste; potrebbe essere stata cancellata dal sito o rinominata. Verificare con la [[Special:Search|pagina di ricerca]] se vi sono nuove pagine.",
-       "history-edit-tags": "Modifica le etichette delle revisioni selezioniate",
+       "history-edit-tags": "Modifica le etichette delle versioni selezioniate",
        "rev-deleted-comment": "(Oggetto della modifica rimosso)",
        "rev-deleted-user": "(nome utente rimosso)",
        "rev-deleted-event": "(dettagli del registro rimossi)",
        "right-sendemail": "Invia email ad altri utenti",
        "right-passwordreset": "Vede i messaggi di reimpostazione della password",
        "right-managechangetags": "Crea ed elimina dal database i [[Special:Tags|tag]]",
-       "right-applychangetags": "Applica delle [[Special:Tags|etichette]] ad una modifica",
-       "right-changetags": "Aggiungi e rimuovi specifiche [[Special:Tags|etichette]] su revisioni singole o voci di registro",
+       "right-applychangetags": "Applica delle [[Special:Tags|etichette]] alle proprie modifiche",
+       "right-changetags": "Aggiunge e rimuove specifiche [[Special:Tags|etichette]] su singole versioni o voci di registro",
        "newuserlogpage": "Nuovi utenti",
        "newuserlogpagetext": "Di seguito sono elencate le utenze di nuova creazione.",
        "rightslog": "Diritti degli utenti",
        "action-editmyprivateinfo": "modificare i propri dati personali",
        "action-editcontentmodel": "modificare il modello di contenuto di una pagina",
        "action-managechangetags": "crea ed elimina i tag dal database",
-       "action-applychangetags": "Applica delle etichette alle tue modifiche",
-       "action-changetags": "Aggiungi o rimuovi specifiche etichette su revisioni singole e voci di registro",
+       "action-applychangetags": "applicare delle etichette alle tue modifiche",
+       "action-changetags": "aggiungere o rimuovere specifiche etichette su singole versioni o voci di registro",
        "nchanges": "$1 {{PLURAL:$1|modifica|modifiche}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|dall'ultima visita}}",
        "enhancedrc-history": "cronologia",
        "pageinfo-protect-cascading-yes": "Sì",
        "pageinfo-protect-cascading-from": "Protezione ricorsiva ereditata da",
        "pageinfo-category-info": "Informazioni sulla categoria",
+       "pageinfo-category-total": "Numero totale di membri",
        "pageinfo-category-pages": "Numero di pagine",
        "pageinfo-category-subcats": "Numero di sottocategorie",
        "pageinfo-category-files": "Numero di file",
        "patrol-log-page": "Modifiche verificate",
        "patrol-log-header": "Di seguito sono elencate le verifiche delle modifiche.",
        "log-show-hide-patrol": "$1 registro delle modifiche verificate",
+       "log-show-hide-tag": "$1 registro delle etichiette",
        "deletedrevision": "Cancellata la vecchia versione di $1.",
        "filedeleteerror-short": "Errore nella cancellazione del file: $1",
        "filedeleteerror-long": "Si sono verificati degli errori nel tentativo di cancellare il file:\n\n$1",
        "tags-deactivate-reason": "Motivo:",
        "tags-deactivate-not-allowed": "Non è possibile disattivare il tag \"$1\".",
        "tags-deactivate-submit": "Disattiva",
+       "tags-apply-not-allowed-one": "L'etichetta \"$1\" non può essere applicata manualmente.",
+       "tags-apply-not-allowed-multi": "{{PLURAL:$2|La seguente etichetta non può essere applicata|Le seguenti etichette non possono essere applicate}}  manualmente: $1",
+       "tags-edit-title": "Modifica etichette",
+       "tags-edit-manage-link": "Gestisci etichette",
+       "tags-edit-existing-tags": "Etichette esistenti:",
+       "tags-edit-existing-tags-none": "''Nessuna''",
+       "tags-edit-new-tags": "Nuove etichette:",
+       "tags-edit-add": "Aggiungi queste etichette:",
+       "tags-edit-remove": "Rimuovi queste etichette:",
+       "tags-edit-chosen-placeholder": "Seleziona alcune etichette",
+       "tags-edit-reason": "Motivo:",
        "comparepages": "Confronta le pagine",
        "compare-page1": "Pagina 1",
        "compare-page2": "Pagina 2",
        "logentry-managetags-delete": "$1 {{GENDER:$2|ha rimosso}} l'etichetta \"$4\" (da $5 {{PLURAL:$5|versione o voce di registro|versioni o voci di registro}})",
        "logentry-managetags-activate": "$1 {{GENDER:$2|ha inserito}} l'etichetta \"$4\" per l'uso da parte d'utenti e bot",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|ha disattivato}} l'etichetta \"$4\" per l'uso da parte d'utenti e bot",
+       "log-name-tag": "Etichette",
        "rightsnone": "(nessuno)",
        "revdelete-summary": "oggetto della modifica",
        "feedback-adding": "Inserimento del feedback nella pagina...",
index 6c89b74..0234112 100644 (file)
        "revdelete-unsuppress": "復元版に対する制限を除去",
        "revdelete-log": "理由:",
        "revdelete-submit": "選択された{{PLURAL:$1|版}}に適用",
-       "revdelete-success": "<strong>版の閲覧レベルを更新しました。</strong>",
-       "revdelete-failure": "<strong>版の閲覧レベルを更新できませんでした:</strong>\n$1",
-       "logdelete-success": "<strong>記録の閲覧レベルを変更しました。</strong>",
-       "logdelete-failure": "<strong>記録の閲覧レベルを設定できませんでした。</strong>\n$1",
+       "revdelete-success": "版の閲覧レベルを更新しました。",
+       "revdelete-failure": "版の閲覧レベルを更新できませんでした:\n$1",
+       "logdelete-success": "記録の閲覧レベルを変更しました。",
+       "logdelete-failure": "記録の閲覧レベルを設定できませんでした。\n$1",
        "revdel-restore": "閲覧レベルを変更",
        "pagehist": "ページの履歴",
        "deletedhist": "削除された履歴",
        "tags-deactivate-reason": "理由:",
        "tags-deactivate-not-allowed": "タグ「$1」は無効化できません。",
        "tags-deactivate-submit": "無効化",
+       "tags-edit-reason": "理由:",
        "comparepages": "ページの比較",
        "compare-page1": "ページ 1",
        "compare-page2": "ページ 2",
index 5f9aa77..007134b 100644 (file)
        "view-foreign": "$1 لوڑے",
        "edit": "ترمیم",
        "create": "ساوزاوے",
-       "create-local": "ادخال مقامی وضاحت",
+       "create-local": "مقامی وضاحتو داخل کورے",
        "editthispage": "ھی صفحہا ترمیم کورے",
        "create-this-page": "ھیہ صفحو ساوزاوے",
        "delete": "بوغاوے",
        "categorypage": "زمرہ‌جاتی صفحہو لوڑے",
        "viewtalkpage": "تبادلۂ خیالو صفحہو لوڑے",
        "otherlanguages": "خور زبانا",
-       "redirectedfrom": "'($1 خور ژاغار گنونو ھوی)',",
+       "redirectedfrom": "'($1 خور ژاغار گنونو ھوئے)',",
        "redirectpagesub": "ھیہ صفحو خور ژاغا آلونو بیتی شیر",
        "redirectto": "ری ڈائرکٹ کاردو صفحہ:",
-       "lastmodifiedat": "آخرÛ\8c Ø¨Ø§Ø± ØªØ¯Ù\88Û\8cÙ\86 $2, $1 Ú©Ù\88رÙ\88Ù\86Ù\88 Ú¾Ù\88Û\8c",
+       "lastmodifiedat": "آخرÛ\8c Ø¨Ø§Ø± Ø§Û\8cÚ\88Ù¹ $2, $1 Ú©Ù\88رÙ\88Ù\86Ù\88 Ú¾Ù\88ئÛ\92",
        "viewcount": "ھیہ صفحہ گیونو ھوی {{PLURAL:$1|ای‌بار|$1 مرتبہ}}",
        "protectedpage": "محفوظ شدہ صفحہ",
        "jumpto": "ھیہ ووݰکی څروٹھاوے",
        "badarticleerror": "ھیہ صفحہا ھیہ عمل انجام دیونو نو ھوی۔",
        "cannotdelete": "صفحہو $1 ڈیلیٹ کورونو نو ھوی۔ (ھیہ منکھن شیر کہ ھمو پروشٹی تان کا ڈیلیٹ کوری آسور۔)",
        "badtitle": "خراب عنوان",
-       "badtitletext": "'درخاس شدہ صفحہو عنوان ناقص، خالی، یا کیہ غلط ربط شدہ بین لسانی یا بین ویکی عنوان شیر.\nشاید ھیارا ای یا زیات ھش حروف موجود شینی کہ ھیت عنوانا استعمال نو بونیان.',",
+       "badtitletext": "'درخاس شدہ صفحہو عنوان ناقص، خالی، یا کیہ غلط ربط شدہ بین لسانی یا بین ویکی عنوان شیر.\nشاید ھیارا ای یا زیات ھݰ حروف موجود شینی کہ ھیت عنوانا استعمال نو بونیان.',",
        "perfcached": "ذیلی ڈیٹا ابطن شدہ شیر وا ھمو بیکا امکان شیر A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
        "perfcachedts": "ذیلی ڈیٹا ابطن شدہ شیر وا آخری بار ھمو بتاریخیت $1 کورونو ہوئے. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
        "querypage-no-updates": "ھیہ صفحہو بچے بتاریخات فی الحال ناقابل ساوزینو بیتی شینی. \nھمو ڈیٹا ھنیسے تازہ کورونو نو بوئے",
        "headline_tip": "شہ سرخی درجہ دوم",
        "nowiki_sample": "غیرشکلبندشدہ متنو ھیارا درج کورور",
        "nowiki_tip": "ویکی شکلبندیو نظرانداز کورے",
-       "image_tip": "پیوستہ مسل",
+       "image_tip": "ݯوکیرو فائل",
        "media_tip": "مسلو لنک",
        "sig_tip": "تہ دستخط بمع مہرِ وخت",
        "hr_tip": "تھروسکی لکیر (زیادہ استعمال مو کورے)",
        "loginreqpagetext": "خور صفحاتن لوڑیکو بچے تہ $1 ضروری شیر.",
        "accmailtitle": "کلمہ شناخت(پاسورڈ) انځینو ھوی",
        "newarticle": "(نوغ)",
-       "newarticletext": "↓تو ای ھس صفحو ربطو پیرویو کوری اسوس کہ ھسے ھنیسے موجود نیکی.\nھیہ صفحہو تخلیق کوریکو بچے درج ذیل خانا متنو درج کورے (مزید معلوماتو بچے [$1 صفحۂ معاونت] ملاحظہ کورے).\nاگر تو ھیا غلطیو سورا کہ گیتی اسوس تھے اچھو صفحا آچی بیکو بچے تان کمپیوٹرا '''back''' بٹنو ٹک کورے.",
+       "newarticletext": "↓تو ای ھݰ صفحو ربطو پیرویو کوری اسوس کہ ھسے ھنیسے موجود نیکی.\nھیہ صفحہو تخلیق کوریکو بچے درج ذیل خانا متنو درج کورے (مزید معلوماتو بچے [$1 صفحۂ معاونت] ملاحظہ کورے).\nاگر تو ھیا غلطیو سورا کہ گیتی اسوس تھے اچھو صفحا آچی بیکو بچے تان کمپیوٹرا '''back''' بٹنو ٹک کورے.",
        "noarticletext": " ھیہ صفحہا فی الحال کیہ متن موجود نیکی.\nتو دیگر صفحاتا [[Special:Search/{{PAGENAME}}|ھیہ صفحہو عنوانو بچے تلاش کوریکو بوس]]، <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} متعلقہ نوشتہ جات تلاش کوریکو بوس],\nیا [{{fullurl:{{FULLPAGENAME}}|action=edit}} تو ھیہ صفحہا ترمیم کوریکو بوس]</span>",
        "noarticletext-nopermission": "ھیہ صفحہا فی الحال کیہ متن موجود نیکی.\nتو دیگر صفحاتا [[Special:Search/{{PAGENAME}}|ھیہ صفحہو عنوانو بچے تلاش کوریکو بوس]]، <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} متعلقہ نوشتہ جات تلاش کوریکو بوس],\nیا [{{fullurl:{{FULLPAGENAME}}|action=edit}} تو ھیہ صفحہا ترمیم کوریکو بوس]</span>",
        "updated": "(اپ ڈیٹڈ)",
        "yourtext": "تہ تحریر",
        "storedversion": "ذخیرہ شدہ نظرثانی",
        "yourdiff": "تضادات",
-       "templatesused": "ھیہ صفحا استعمال باک  {{PLURAL:$1|سانچہ|سانچے}}:",
+       "templatesused": "ھیہ صفحا استعمال باک {{PLURAL:$1|سانچہ|سانچہ}}:",
        "templatesusedpreview": " ھیہ پیش منظرا مستعمل {{PLURAL:$1|سانچہ|سانچے}}:",
        "template-protected": "(محفوظ شدہ)",
        "template-semiprotected": "(نیم محفوظ)",
        "viewpagelogs": "ھیہ صفحہو بچے نوشتہ جاتن لوڑے",
        "currentrev-asof": "حالیہ نظرثانی بمطابق $1",
        "revisionasof": "تـجدید بـمطابق $1",
-       "revision-info": "$2 $1 ھموش نیویشیتای",
+       "revision-info": "$2 $1 ھموݰ نیویشیتائے",
        "previousrevision": "←پرانو تدوین",
        "nextrevision": "→پروشٹیو اعادہ",
        "currentrevisionlink": "حالیہ نظرثانی",
        "search-result-category-size": "{{PLURAL:$1|1 رُکن|$1 اراکین}} ({{PLURAL:$2|1 ذیلی زمرہ|$2 ذیلی زمرہ جات}}, {{PLURAL:$3|1 ملف|$3 ملفات}})",
        "search-redirect": "(رجوع مکرر $1)",
        "search-section": "(حصہ $1)",
-       "search-suggest": "تہ مطلب ھیہ تھے نو اوشوی: $1",
+       "search-suggest": "تہ مطلب ھیہ تھے نو اوشوئے؟: $1",
        "search-interwiki-caption": "ملگیری منصوبہ",
        "search-interwiki-default": "$1 نتائج:",
        "search-interwiki-more": "(مزید)",
        "powersearch-ns": "جائے ناما تلاش:",
        "powersearch-toggleall": "سف",
        "preferences": "ترجیحات",
-       "mypreferences": "مہ ترجیہات",
+       "mypreferences": "ترجیحات",
        "skin-preview": "نمائش",
        "youremail": "بشلی کغاز",
        "username": "ممبارو نم",
        "recentchanges-feed-description": "کھوارا ترجمہ",
        "recentchanges-label-newpage": "ھیہ ترمیم نوغ صفحہ تخلیق آریر",
        "recentchanges-label-minor": "ھیہ ای معمولی ترمیم شیر",
-       "recentchanges-label-bot": "ھیہ ایڈیٹو خود کار بوٹو زریعا انجام دیونو ہوی",
+       "recentchanges-label-bot": "ھیہ ایڈیٹو خود کار بوٹو زریعا انجام دیونو ہوئے",
        "recentchanges-label-unpatrolled": "ھیہ ترمیمو ھمونیہ پت مراجعت(Patrolled) کورونو نو بیتی شیر",
        "recentchanges-label-plusminus": "صفحو سائز تبدیل شدہ بلحاظ بائٹ مقدار",
        "recentchanges-legend-heading": "'''لیجنڈ:'''",
        "diff": "فرق",
        "hist": "تاریخچہ",
        "hide": "مو پشاوے",
-       "show": "Ù\88Û\8cرÛ\8cغ Ú©Ù\88رے",
+       "show": "پشاÙ\88ے",
        "minoreditletter": "م",
        "newpageletter": "نوغ",
        "boteditletter": "خودکار",
        "recentchangeslinked": "متعلقہ تبدیلی",
        "recentchangeslinked-toolbox": "موقعی تبدیلی",
        "recentchangeslinked-title": "متعلقہ تبدیلی \"$1\"",
-       "recentchangeslinked-summary": "ھیہ ھتے تبدیلیان لسٹ شیر کہ ھیتان پھوک مدا پروشٹی ساوزینو بیتی شینی وا ھے صفحان سوم جستہ خور کیہ صفحہ چوکی شینی یا کیہ خاص زمرہ جاتو ممبرانن سوم چوکی شینی<br />\nساوزیرو [[Special:Watchlist|موڑا صفحہ]] '''بولڈ''' شینی",
+       "recentchangeslinked-summary": "ھیہ ھتے تبدیلیان لسٹ شیر کہ ھیتان پھوک مدا پروشٹی ساوزینو بیتی شینی وا ھے صفحان سوم جستہ خور کیہ صفحہ ݯوکی شینی یا کیہ خاص زمرہ جاتو ممبرانن سوم ݯوکی شینی<br />\nساوزیرو [[Special:Watchlist|موڑا صفحہ]] '''بولڈ''' شینی",
        "recentchangeslinked-page": "کھوار ویکیپیڈیو منصوبو صفحو لوڑے",
-       "recentchangeslinked-to": "کھولاو بیرو صفحو بجایا ھمو سوم چوکیرو صفحو نوغ تبدیلیان پشاوے",
+       "recentchangeslinked-to": "کھولاو بیرو صفحو بجایا ھمو سوم ݯوکیرو صفحو نوغ تبدیلیان پشاوے",
        "upload": "فائل انځاوے",
        "uploadlogpage": "نوشتۂ زبراثقال (اپ لوڈ لاگ)",
        "filename": "فایلو نام",
        "imgfile": "فائل",
        "file-anchor-link": "فائل",
        "filehist": "مسلو تاریخ",
-       "filehist-help": "ھیہ لوڑیکو بچے  کہ کیہ خاص وختہ فایل کیہ قسمہ ظاہر باو اوشتای ھتے  تاریخ یا وختہ طق(کلک) کورے",
+       "filehist-help": "ھمو لوڑیکو بچے  کہ کیہ خاص وختہ فائل کیہ قسمہ ظاہر باو اوشتائے ھتے  تاریخ یا وختہ طق(کلک) کورے",
        "filehist-revert": "آچی",
        "filehist-current": "حالیہ",
        "filehist-datetime": "تاریخ/وخت",
        "filehist-thumb": "اظفورہ",
        "filehist-thumbtext": "$1 صارفو څیق ھوٹو",
        "filehist-user": "صارف",
-       "filehist-dimensions": "ابعاد",
+       "filehist-dimensions": "ڈائیمنشنز",
        "filehist-comment": "تبصرہ",
        "imagelinks": "مسلو روابط",
        "linkstoimage": "ھیہ مسلو سوم درج ذیل {{PLURAL:$1|صفحہ مربوط شیر|$1 صفحات مربوط شینی}}",
        "pager-newer-n": "{{PLURAL:$1|نوغ1|نوغ $1}}",
        "pager-older-n": "{{PLURAL:$1|قدیم1|قدیم ترین $1}}",
        "booksources": "کتابی وسائل",
-       "booksources-search-legend": "کتابی وسایلان تلاش",
+       "booksources-search-legend": "کتابی وسائلان تلاش",
        "booksources-search": "Search/تلاش",
        "specialloguserlabel": "یوزر",
        "speciallogtitlelabel": "عنوان:",
        "prevpage": "آچھو صفحہ ($1)",
        "allpagesfrom": "مطلوبہ حرفاری شروع باک صفحاتن نمائش:",
        "allpagesto": "مطلوبہ حرفاری ختم باک صفحاتن نمائش:",
-       "allarticles": "تمام مقالات",
+       "allarticles": "کھل آرٹیکل",
        "allpagessubmit": "بوغے لا",
        "categories": "زمرہ جات",
        "sp-deletedcontributions-contribs": "حصہ",
        "listgrouprights-members": "ممبارانن فھرست",
        "emailuser": "ممباروت بشلی کغاز انڅاوے",
        "watchlist": "مہ واچ لسٹ",
-       "mywatchlist": "مہ زیرنظرفہرست",
+       "mywatchlist": "زیرنظرفہرست",
        "watchlistfor2": "براۓ $1 ($2)",
        "removedwatchtext": "ھیہ صفحہ \"[[:$1]]\" خارج کورونو ھوی[[Special:Watchlist|تہ زیر نظر فہرستاری]].",
        "watch": "زیرنظر",
        "tooltip-feed-atom": "ھیہ صفحو بچے آٹوم فیڈ",
        "tooltip-t-contributions": "نوغ تدوین",
        "tooltip-t-emailuser": "ھیہ ممباروت بشلی کغاز(ای میل) انڅاوے",
-       "tooltip-t-upload": "اپلوڈ فایل",
+       "tooltip-t-upload": "فائلو اپلوڈ کورے",
        "tooltip-t-specialpages": "سف خاص صفحاتن فہرست",
        "tooltip-t-print": "ھیہ صفحو قابل طبع نسخہ",
        "tooltip-t-permalink": "صفحہعو موجودہ نظرثانیو مستقل لنک",
        "tooltip-compareselectedversions": "منتخب متـنو موازنہ",
        "tooltip-watch": "ھیہ صفحہو تان زیرِنظرفہرستہ شامل کورے",
        "tooltip-rollback": "\"رول بیک\" ای کلکا صفحو واپس سابقہ حالتہ گنی آلوی",
-       "tooltip-undo": "\"واپس\" یا لوظ آچیا کلک کوریکو سوم جستہ تہ صفحہ کچا تہ پشینو بوی ھے سوم جستہ تو واپس کوریکو وجہ نیویشیکو بوس",
+       "tooltip-undo": "\"Undo\" یا لوظ آچیا کلک کوریکو سوم جستہ تہ صفحہ کچا تہ پشینو بوئے ھے سوم جستہ تو واپس کوریکو وجہ نیویشیکو بوس",
        "tooltip-summary": "ای مختصار سمری ساوزاوے",
        "simpleantispam-label": "اینٹی ایسپم چیک. Do <strong>NOT</strong> fill this in!",
        "pageinfo-toolboxlink": "معلومات صفحہ",
        "metadata-help": "ھیہ فائلا خور دی معلومات شینی، شاید ھتیت ڈیجیٹل کیمرو یا سکینران زریعا کمپیوٹرو درینو بیتی شینی وا ھیتان زریعا ھمیتان ڈیجیٹل ساوزینو بیتی شیر\n\nاگر فائلو ھمو اصلی حالتہ  تبدیل کہ کورونو ھوی تھے ای کما تفصیلات تبدیل بیرو فائلو باریا موجود نیکی",
        "metadata-expand": "تفصیلان پشاوے",
        "metadata-collapse": "درونگار تفصیلان کھوشتاوے",
-       "metadata-fields": "ایگزف میٹاڈیٹا ھیارا دیونو بیرو ھوٹوان صفحا دیونو بونی وا کیاوتکہ میٹاڈیٹا ٹیبل کھولاو ھوی باقی اشناری بائی ڈیفالٹ کھوشت تان بہچونی\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "ایگزف میٹاڈیٹا ھیارا دیونو بیرو ھوٹوان صفحا دیونو بونی وا کیاوتکہ میٹاڈیٹا ٹیبل کھولاو ھوئَ باقی اشناری بائی ڈیفالٹ کھوشت تان بہچونی\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-orientation": "پیشکش",
        "exif-xresolution": "تھروسکی ریزولوشن",
        "exif-yresolution": "ݯوکتو ریزولوشن",
        "external_image_whitelist": " #ھیہ لاینو ھموش تان شیکو لاکے کیچہ کہ ھیہ شیر<pre>\n#موڑا ریگولر لوان دیور((صرف ھتیتان کیاغ ھمیتان موژی شینی //) //) \n#بیریو ھوٹوان آر ایلان سوم ھمیتان میچ کورنو بوی\n# کیاغ کہ میچ ھونی ھیتان ھوٹوان سوم پشینو بوی بصورت دیگر ھیتان لنک کیاغ کی شینی ھتیتان پشینو بوی\n#لاین کیاغ کی شروع بویان  # کومنٹ جوشونو بوی۔\n#ھیہ کیس سینسیٹو شیر۔\n\n#لینو سورا ریجیکس فریگمنٹو لاکھے. ھیہ لاینو ھموش تان شیکو لاکے کیچہ کہ ھیہ شیر۔</pre>",
        "tag-filter": "[[Special:Tags|Tag]] filter:",
        "tag-filter-submit": "فلٹر",
-       "tag-list-wrapper": "([[اسپیشل:ٹیگز|{{PLURAL:$1|Tag|Tags}}]]: $2)",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)",
        "tags-title": "Tags/ٹیگز",
        "compare-page1": "صفحہ 1",
        "logentry-delete-delete": "$1 {{GENDER:$2|حذف کورونو ہوئے}} صفحہ $3",
index 65c117d..ae07379 100644 (file)
        "tags-edit-title": "Makehronge ändere",
        "tags-edit-manage-link": "makehronge verwallde",
        "tags-edit-revision-selected": "Ußjesöhk {{PLURAL:$1|Väsjohn|Väsjohne|Nix}} vun [[:$2]]:",
+       "tags-edit-logentry-selected": "{{PLURAL:$1|Der ußjewählte Vörfall|De ußjewählte Vörfäll|kein ußjewählte Vörfäll}} uss em Logbohch:",
+       "tags-edit-revision-legend": "Donn Makkehronge för heh di {{PLURAL:$1|Väsjohn|Väsjohne|kein Väsjohne}} verjävve udder wälsche fott nämme",
+       "tags-edit-logentry-legend": "Donn Makkehronge för {{PLURAL:$1|heh dä Enndraach|heh di Enndrähsch|keine Enndraach}} em Logbohch verjävve udder fott nämme",
        "tags-edit-existing-tags": "Makehronge, di mer han:",
        "tags-edit-existing-tags-none": "<tt>-&nbsp;nix&nbsp;-</tt>",
        "tags-edit-new-tags": "Neuje Makehronge:",
        "tags-edit-chosen-placeholder": "Donn heh Makehronge aanjävve",
        "tags-edit-chosen-no-results": "Mer han kein zerpaß Makehronge jefonge",
        "tags-edit-reason": "Jrond:",
-       "tags-edit-success": "<strong>De Änderuoge sin jemaat.</strong>",
+       "tags-edit-revision-submit": "Maach Änderongea an heh dä {{PLURAL:$1|Väsjohn|Väsjohne|kein Väsjohne}}",
+       "tags-edit-logentry-submit": "Maach Änderongea an {{PLURAL:$1|heh däm Enndraach|heh dä Enndrähsch|keine Enndrähch}} em Logbohch",
+       "tags-edit-success": "De Änderuoge sin jemaat.",
+       "tags-edit-failure": "De jewollte Änderonge lehße sesch nit maache:\n$1",
        "tags-edit-nooldid-title": "Onjöltijje Väsjohn för et Zihl",
+       "tags-edit-nooldid-text": "De Väsjohn derför wohd nit aanjejovve udder et jit se nit.",
        "tags-edit-none-selected": "Söhk winneschßdens ein Makehrong uß för derbei ze donn udder fott ze nämme.",
        "comparepages": "Sigge verjliesche",
        "compare-page1": "De ein Sigg",
        "logentry-managetags-activate": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät dat Kännzeijsche „$4“ aanjeschalldt för de Metmaacher un de Bots.",
        "logentry-managetags-deactivate": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät dat Kännzeijsche „$4“ för de Metmaacher un de Bots afjeschalldt.",
        "log-name-tag": "Et Logbohch vun de Makehronge",
+       "log-description-tag": "Heh di Sigg zeijsch aan, wann Metmaacher ußdröklesch [[Special:Tags|Makehronge]] vun einzel Väsjohne udder Enndrähsch em Logbohch fott jenumme hann udder wälsche verjovve han. Mer süht heh ävver nit, wat zersamme met ene Änderong aan ener Sigg, beim Fottschmiiße, udder esu, met Matkkehronge pasehrd es.",
+       "logentry-tag-update-add-revision": "{{GENDER:$2|dä|dat|dä Metmaacher|de|dat}} „$1“ hät {{PLURAL:$7|di Makehrong|di Makehronge|nix}} $6 för de Väsjohn $4 vun dä Sigg „$3“ verjovve.",
+       "logentry-tag-update-add-logentry": "{{GENDER:$2|dä|dat|dä Metmaacher|de|dat}} „$1“ hät {{PLURAL:$7|di Makehrong|di Makehronge|nix}} $6 för der Enndrahch $5 em Logbohch vun dä Sigg „$3“ verjovve.",
+       "logentry-tag-update-remove-revision": "{{GENDER:$2|dä|dat|dä Metmaacher|de|dat}} „$1“ hät {{PLURAL:$9|di Makehrong|di Makehronge|nix}} $8 fun däVäsjohn $4 vun dä Sigg „$3“ fott jenumme.",
        "logentry-tag-update-remove-logentry": "{{GENDER:$2|dä|dat|dä Metmaacher|de|dat}} „$1“ hät {{PLURAL:$9|di Makehrong|di Makehronge|nix}} $8 ussem Endraaach $5 em Logbohch vun dä Sigg „$3“ fott jenumme.",
+       "logentry-tag-update-revision": "{{GENDER:$2|dä|dat|dä Metmaacher|de|dat}} „$1“ hät {{PLURAL:$7|di Makehrong|di Makehronge|nix}} $6 för de Väsjohn $4 em Logbohch vun dä Sigg „$3“ verjovve un {{PLURAL:$9|di Makehrong|de Makehronge|nix}} $8 fott jenumme.",
        "logentry-tag-update-logentry": "{{GENDER:$2|dä|dat|dä Metmaacher|de|dat}} „$1“ hädd em Endraaach $5 em Logbohch vun dä Sigg „$3“{{PLURAL:$7|di Makehrong|di Makehronge|nix}} $6 derbei jedonn un {{PLURAL:$9|di Makehrong|di Makehronge|nix}} $8 fott jenumme.",
        "rightsnone": "(nix)",
        "revdelete-summary": "dä Täx en „{{int:summary}}“",
        "api-error-overwrite": "En Dattei ze övverschrieve es nit zohjelohße.",
        "api-error-stashfailed": "Fähler: Dä ẞööver hät kein Datteije zweschejeschpeischert.",
        "api-error-publishfailed": "Ene Fähler es em ẞööver opjetrodde. En zweschejescheischerte Dattei kunnt nit öffentlesch jemaat wääde.",
-       "api-error-stasherror": "Ene Fähler es opjetrodd, wi mer di Dattei en der <i lang=\"en\" xml:lang=\"en\">stash</i> huh aam lahde wohre.",
+       "api-error-stasherror": "Ene Fähler es opjetrodde, wi mer di Dattei en der <i lang=\"en\" xml:lang=\"en\">stash</i> huh aam lahde wohre.",
        "api-error-stashedfilenotfound": "Di Dattei wohd em <i lang=\"en\" xml:lang=\"en\">stash</i> nit jefonge, wi mer se vun doh huh lahde wullte.",
        "api-error-stashpathinvalid": "Di Dattei wohd em <i lang=\"en\" xml:lang=\"en\">stash</i> nit jefonge, weil dä Pad do hen nit jeschtemmp hät.",
        "api-error-stashfilestorage": "Ene Fähler es opjetrodd, wi mer di Dattei en der <i lang=\"en\" xml:lang=\"en\">stash</i> donn wullte.",
index a238915..5ad56c8 100644 (file)
        "tags-deactivate-submit": "Desaktivéieren",
        "tags-update-remove-not-allowed-one": "D'Markéierung (tag) \"$1\" däerf net ewechgeholl ginn.",
        "tags-update-remove-not-allowed-multi": "Dës {{PLURAL:$2|Markéierung däerf|Markéierungen däerfen}} net manuell ewechgeholl ginn: $1",
+       "tags-edit-revision-selected": "{{PLURAL:$1|Erausgesicht Versioun|Erausgesicht Versioune}} vu(n) [[:$2]]:",
        "tags-edit-existing-tags-none": "''Keng''",
        "tags-edit-new-tags": "Nei Markéierungen (tags):",
        "tags-edit-add": "Dës Markéierungen (tags) dobäisetzen:",
        "tags-edit-reason": "Grond:",
-       "tags-edit-success": "<strong>D'Ännerunge goufen applizéiert.</strong>",
+       "tags-edit-success": "D'Ännerunge goufen applizéiert.",
        "comparepages": "Säite vergläichen",
        "compare-page1": "Säit 1",
        "compare-page2": "Säit 2",
index 996172a..e2cb656 100644 (file)
        "revdelete-submit": "سی {{جمی:$1|وانیری|وانیریا}} انتخاو بیه وه کار بوریتو",
        "revdelete-success": "'''دیئن وانیری وه خوئی وه هنگوم بی.'''",
        "revdelete-failure": "'''دیئن وانیری وه خوئی وه هنگوم نبی:'''$1",
-       "logdelete-success": "<strong>پهرستنومه دیار بیین د خوئی میزونکاری بی.</strong>",
-       "logdelete-failure": "<strong>پهرستنومه دیار بیین نبوئه میزونکاری با.</strong> $1",
+       "logdelete-success": "پهرستنومه دیار بیین د خوئی میزونکاری بی.",
+       "logdelete-failure": "پهرستنومه دیار بیین نبوئه میزونکاری با. $1",
        "revdel-restore": "آلشت حال و بال ديئن",
        "pagehist": "ويرگار بلگه",
        "deletedhist": "ویرگار پاکسا بیه",
        "tags-edit-reason": "دلیل:",
        "tags-edit-revision-submit": "وه کار گرتن سردیسیا د {{PLURAL:$1|د ای وانئری|وانئریا $1}}",
        "tags-edit-logentry-submit": "وه کار گرتن سردیسیا د {{PLURAL:$1|د ای پهرستنومه|پهرستنومه یا $1}}",
-       "tags-edit-success": "<strong>آلشتکاریا وا خوش سرانجومی وه کار گرته بیین.</strong>",
-       "tags-edit-failure": "<strong>نبوئه آلشتکاریا وه کار گرته بان.</strong>",
+       "tags-edit-success": "آلشتکاریا وا خوش سرانجومی وه کار گرته بیین.",
+       "tags-edit-failure": "نبوئه آلشتکاریا وه کار گرته بان.",
        "tags-edit-nooldid-title": "وانیری حاستنی نامعتوره",
        "tags-edit-nooldid-text": "شما یه گل وانئری دالکاری بیه سی یه که ای پیوندگر نه انجوم بیه تیار کاری نکردیته، یا وانئری که تیار کاری نبیه.",
        "tags-edit-none-selected": "لطف بکیت یه حداقل یه گل سردیسی سی اضاف کردن یا جا وه جاکاری انتخاو بکیت.",
index 8f39d3d..f02af70 100644 (file)
        "revdelete-submit": "Hampiharina amin'ny versiona nofidiana {{PLURAL:$1}}",
        "revdelete-success": "'''Voaova soa aman-tsara ny fahitana ny versiona.'''",
        "revdelete-failure": "'''Ny fisehon'ity versiona ity dia tsy afaka natao update'''\n$1",
-       "logdelete-success": "<strong>Voaova soa aman-tsara ny fisehon'ny laogy.</strong>",
-       "logdelete-failure": "<strong>Tsy afaka novaina ny fisehon'ny laogy</strong>\n$1",
+       "logdelete-success": "Voaova soa aman-tsara ny fisehon'ny laogy.",
+       "logdelete-failure": "Tsy afaka novaina ny fisehon'ny laogy\n$1",
        "revdel-restore": "Ovay ny fahitàna",
        "pagehist": "Tantaran'ilay pejy",
        "deletedhist": "Tantara voafafa",
index 358f748..3179cbe 100644 (file)
        "tags-edit-reason": "Причина:",
        "tags-edit-revision-submit": "Примени измени врз {{PLURAL:$1|преработкава|$1 преработки}}",
        "tags-edit-logentry-submit": "Примени измени врз {{PLURAL:$1|овој дневнички запис|$1 дневнички записи}}",
-       "tags-edit-success": "<strong>Измените се успешно применети.</strong>",
-       "tags-edit-failure": "<strong>Не можев да ги применам измените:</strong>\n$1",
+       "tags-edit-success": "Измените се успешно применети.",
+       "tags-edit-failure": "Не можев да ги применам измените:\n$1",
        "tags-edit-nooldid-title": "Неважечка целна преработка",
        "tags-edit-nooldid-text": "Немате укажано целна преработка врз која би се примениле измените, или пак укажаната преработка не постои.",
        "tags-edit-none-selected": "Одберете барем една ознака за додавање или отстранување.",
index d787a4e..be60e36 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": "(രേഖാ വിവരങ്ങൾ ഒഴിവാക്കിയിരിക്കുന്നു)",
        "rev-showdeleted": "പ്രദർശിപ്പിക്കുക",
        "revisiondelete": "പതിപ്പുകൾ ഒഴിവാക്കുകയോ/പുനഃസ്ഥാപിക്കുകയോ ചെയ്യുക",
        "revdelete-nooldid-title": "അസാധുവായ ലക്ഷ്യ നാൾപ്പതിപ്പ്",
-       "revdelete-nooldid-text": "à´\88 à´ªàµ\8dà´°à´µàµ\83à´¤àµ\8dതി à´\9aàµ\86à´¯àµ\8dà´¯àµ\81വാനാവശàµ\8dയമായ à´\89à´¦àµ\8dദിഷàµ\8dà´\9f à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\8d/പതിപàµ\8dà´ªàµ\81à´\95ൾ à´¤à´¾à´\99àµ\8dà´\95ൾ à´¤à´¿à´°à´\9eàµ\8dà´\9eàµ\86à´\9fàµ\81à´¤àµ\8dതിà´\9fàµ\8dà´\9fà´¿à´²àµ\8dà´² à´\85à´²àµ\8dà´²àµ\86à´\99àµ\8dà´\95ിൽ à´\89à´¦àµ\8dദിഷàµ\8dà´\9f à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\8d à´¨à´¿à´²à´µà´¿à´²à´¿à´²àµ\8dà´² à´\85à´¤àµ\81മലàµ\8dà´²àµ\86à´\99àµ\8dà´\95ിൽ à´¤à´¾à´\99àµ\8dà´\95ൾ à´¨à´¿à´²à´µà´¿à´²àµ\81à´³àµ\8dà´³ à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\8d à´®à´±à´¯àµ\8dà´\95àµ\8dà´\95àµ\81വാൻ à´¶àµ\8dരമിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81.",
+       "revdelete-nooldid-text": "à´\88 à´ªàµ\8dà´°à´µàµ\83à´¤àµ\8dതി à´\9aàµ\86à´¯àµ\8dà´¯àµ\81വാനാവശàµ\8dയമായ à´²à´\95àµ\8dà´·àµ\8dà´¯ à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\8d à´¤à´¾à´\99àµ\8dà´\95ൾ à´¤à´¿à´°à´\9eàµ\8dà´\9eàµ\86à´\9fàµ\81à´¤àµ\8dതിà´\9fàµ\8dà´\9fà´¿à´²àµ\8dà´² à´\85à´²àµ\8dà´²àµ\86à´\99àµ\8dà´\95ിൽ à´\89à´¦àµ\8dദിഷàµ\8dà´\9f à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\8d à´¨à´¿à´²à´µà´¿à´²à´¿à´²àµ\8dà´² à´\85à´¤àµ\81മലàµ\8dà´²àµ\86à´\99àµ\8dà´\95ിൽ à´¤à´¾à´\99àµ\8dà´\95ൾ à´¨à´¿à´²à´µà´¿à´²àµ\81à´³àµ\8dà´³ à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\8d à´®à´±à´¯àµ\8dà´\95àµ\8dà´\95àµ\81വാൻ à´¶àµ\8dരമിà´\95àµ\8dà´\95àµ\81à´\95യാണàµ\8d.",
        "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": "താങ്കളുടെ മാറ്റങ്ങൾക്കൊപ്പം ടാഗുകൾ ബാധകമാക്കുക",
+       "action-changetags": "ഒറ്റയൊറ്റ നാൾപ്പതിപ്പുകൾക്കും രേഖയിലെ ഉൾപ്പെടുത്തലുകൾക്കും ഐച്ഛിക ടാഗുകൾ ചേർക്കുക അല്ലെങ്കിൽ നീക്കംചെയ്യുക",
        "nchanges": "{{PLURAL:$1|ഒരു മാറ്റം|$1 മാറ്റങ്ങൾ}}",
        "enhancedrc-since-last-visit": "കഴിഞ്ഞ സന്ദർശനത്തിനു ശേഷം {{PLURAL:$1|ഒരെണ്ണം|$1 എണ്ണം}}",
        "enhancedrc-history": "നാൾവഴി",
        "pageinfo-protect-cascading-yes": "അതെ",
        "pageinfo-protect-cascading-from": "സംരക്ഷണങ്ങൾ നിർഝരിതപ്പെടുത്തുന്നത്",
        "pageinfo-category-info": "വർഗ്ഗത്തിന്റെ വിവരങ്ങൾ",
+       "pageinfo-category-total": "ആകെ അംഗങ്ങളുടെ എണ്ണം",
        "pageinfo-category-pages": "താളുകളുടെ എണ്ണം",
        "pageinfo-category-subcats": "ഉപവർഗ്ഗങ്ങളുടെ എണ്ണം",
        "pageinfo-category-files": "പ്രമാണങ്ങളുടെ എണ്ണം",
        "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-create-reason": "കാരണം:",
        "tags-create-submit": "സൃഷ്ടിക്കുക",
        "tags-create-no-name": "റ്റാഗിന്റെ പേര് വ്യക്തമാക്കേണ്ടതുണ്ട്.",
+       "tags-create-invalid-chars": "ടാഗിന്റെ പേരിൽ അല്പവിരാമങ്ങളോ (<code>,</code>), മുന്നോട്ടുള്ള സ്ലാഷോ (<code>/</code>) ഉണ്ടായിരിക്കാൻ പാടുള്ളതല്ല.",
+       "tags-create-invalid-title-chars": "ടാഗിന്റെ പേരിൽ താളിന്റെ തലക്കെട്ടിൽ ഉൾപ്പെടുത്താൻ പാടില്ലാത്ത അക്ഷരങ്ങളൊന്നുമുണ്ടാവാൻ പാടില്ല.",
+       "tags-create-already-exists": "\"$1\" എന്ന ടാഗ് നിലവിലുണ്ട്.",
        "tags-create-warnings-above": "\"$1\" എന്ന ടാഗ് സൃഷ്ടിക്കാൻ ശ്രമിക്കുമ്പോൾ താഴെക്കൊടുത്തിരിക്കുന്ന {{PLURAL:$2|മുന്നറിയിപ്പ്|മുന്നറിയിപ്പുകൾ}} വന്നു:",
+       "tags-create-warnings-below": "ടാഗ് സൃഷ്ടിക്കൽ തുടരണോ?",
+       "tags-delete-title": "ടാഗ് മായ്ക്കുക",
+       "tags-delete-explanation-initial": "\"$1\" എന്ന ടാഗ് ഡേറ്റാബേസിൽ നിന്നും താങ്കൾ മായ്ക്കാൻ പോകുകയണ്.",
+       "tags-delete-explanation-in-use": "ഇപ്പോൾ നിലവിലുള്ള {{PLURAL:$2|$2 നാൾപ്പതിപ്പ് അല്ലെങ്കിൽ രേഖയിലെ ഉൾപ്പെടുത്തലിൽ|എല്ലാ $2 നാൾപ്പതിപ്പുകളിൽ ഒപ്പം/അല്ലെങ്കിൽ രേഖകളിലെ ഉൾപ്പെടുത്തലുക്കളിൽ}} നിന്ന് ഇത് നീക്കംചെയ്യപ്പെടുന്നതാണ്.",
+       "tags-delete-explanation-warning": "ഈ പ്രവൃത്തി ഡേറ്റാബേസ് കാര്യനിർവ്വഹകർക്ക് കൂടി <strong>പിൻവലിക്കാനാവാത്തതും</strong> <strong>പിന്നീട് തിരുത്താനാവാത്തതും</strong> ആണ്. താങ്കൾക്ക് മായ്ക്കേണ്ട ടാഗ് ഇതാണെന്ന് ഉറപ്പ് വരുത്തുക.",
        "tags-delete-reason": "കാരണം:",
+       "tags-delete-submit": "പിൻവലിക്കാനാവാത്തവിധം ഈ ടാഗ് മായ്ക്കുക",
+       "tags-delete-not-found": "\"$1\" എന്ന ടാഗ് നിലവിലില്ല.",
+       "tags-activate-title": "ടാഗ് സജ്ജമാക്കുക",
        "tags-activate-reason": "കാരണം:",
+       "tags-activate-not-found": "\"$1\" എന്ന ടാഗ് നിലവിലില്ല.",
        "tags-activate-submit": "സജ്ജമാക്കുക",
+       "tags-deactivate-title": "ടാഗ് പ്രവർത്തനരഹിതമാക്കുക",
+       "tags-deactivate-question": "താങ്കൾ \"$1\" എന്ന ടാഗ് പ്രവർത്തനരഹിതമാക്കാൻ പോവുകയാണ്.",
        "tags-deactivate-reason": "കാരണം:",
+       "tags-deactivate-not-allowed": "\"$1\" എന്ന ടാഗ് പ്രവർത്തനരഹിതമാക്കാൻ സാധിക്കുകയില്ല.",
        "tags-deactivate-submit": "പ്രവർത്തനരഹിതമാക്കുക",
+       "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-reason": "കാരണം:",
        "comparepages": "താളുകൾ താരതമ്യപ്പെടുത്തുക",
        "compare-page1": "താൾ 1",
        "compare-page2": "താൾ 2",
index e4e36fb..696438b 100644 (file)
        "tags-apply-not-allowed-multi": "{{PLURAL:$2|'O tag ccà abbascio nun è|'E tag ccà abbascio nun songo}} premmesse 'e s'apprecà manualmente: $1",
        "tags-update-no-permission": "Nun tenite premmesse pe' putè azzeccà o luvà tag 'e cagnamiento 'a 'e verziune nnividuale o entrate 'o log.",
        "tags-update-add-not-allowed-one": "'O tag \"$1\" nun è premmesso 'e s'azzeccà 'n manuale.",
+       "tags-update-add-not-allowed-multi": "{{PLURAL:$2|'O tag ccà abbascio nun è|'E tag ccà abbascio nu so'}} premmesse 'e s'azzeccà manualmente: $1",
        "tags-update-remove-not-allowed-one": "'O tag \"$1\" nun è permesso d' 'o luvà.",
        "tags-update-remove-not-allowed-multi": "{{PLURAL:$2|'O tag ccà abbascio|'E tag ccà abbascio}} nun so' premmesse 'e se luvà automatecamente: $1",
        "tags-edit-title": "Cagna 'e tag",
        "tags-edit-reason": "Mutivo:",
        "tags-edit-revision-submit": "Appreca cagnamiente a {{PLURAL:$1|sta verziona|$1 verziune}}",
        "tags-edit-logentry-submit": "Appreca cagnamiente a {{PLURAL:$1|sta entrata 'e riggistro|sti $1 entrate 'e riggistro}}",
-       "tags-edit-success": "<strong>'E cagnamiente se so' apprecate.</strong>",
-       "tags-edit-failure": "<strong>'E cagnamiente nun se putevano apprecà:</strong>\n$1",
+       "tags-edit-success": "'E cagnamiente se so' apprecate.",
+       "tags-edit-failure": "'E cagnamiente nun se putevano apprecà:\n$1",
        "tags-edit-nooldid-title": "Verziona nun specificata",
        "tags-edit-nooldid-text": "Nun avite specificato nu target 'e verziona addò s'avess'apprecà sta funzione, o 'a verziona specificata nun esiste.",
        "tags-edit-none-selected": "Pe' piacere sciglite minimo nu tag pe' luvà o azzeccà.",
        "logentry-managetags-activate": "$1 {{GENDER:$2|appicciaje}} 'o tag \"$4\" pe ll'uso 'a ll'utente e re bot",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|stutaje}} 'o tag \"$4\" pe' ll'uso d'utente e re bot",
        "log-name-tag": "Riggistro 'e tag",
+       "log-description-tag": "Sta paggena mmustasse quanno l'utente hanno azzeccato o luvato [[Special:Tags|'e tag]] 'a 'e verziune nnividuale o pure 'entrate 'e riggistro. 'O log o riggistro nun alencasse 'aziune 'e tag quanno succereno, fosse n'edit, scancellazione, o n'aziuna 'e chiste.",
+       "logentry-tag-update-add-revision": "$1 {{GENDER:$2|azzeccaje}} {{PLURAL:$7|'o tag|'e tag}} $6 'a verziune $4 d' 'a paggena $3",
+       "logentry-tag-update-add-logentry": "$1 {{GENDER:$2|azzeccaje}} {{PLURAL:$7|'o tag|'e tag}} $6 a l'entrata 'e riggistro $5 d' 'a paggena $3",
+       "logentry-tag-update-remove-revision": "$1 {{GENDER:$2|luvaje}} {{PLURAL:$9|'o tag|'e tag}} $8 d' 'a verziona $4 d' 'a paggena $3",
+       "logentry-tag-update-remove-logentry": "$1 {{GENDER:$2|luvaje}} {{PLURAL:$9|'o tag|'e tag}} $8 a l'entrata 'e riggistro $5 d' 'a paggena $3",
+       "logentry-tag-update-revision": "$1 {{GENDER:$2|agghiurnaje}} tag dint'a verziona $4 d' 'a paggena $3 ({{PLURAL:$7|azzeccaje}} $6; {{PLURAL:$9|luvaje}} $8)",
+       "logentry-tag-update-logentry": "$1 {{GENDER:$2|agghiurnaje}} tag dint'a ntrata 'e riggistro $5 d' 'a paggena $3 ({{PLURAL:$7|azzeccaje}} $6; {{PLURAL:$9|luvaje}} $8)",
        "rightsnone": "(nisciuno)",
        "revdelete-summary": "cagna 'o riepilego",
        "feedback-adding": "Azzecca nu feedback/na segnalazione â paggena..",
index 56b75d8..2e761fc 100644 (file)
        "badtitle": "Ugyldig tittel",
        "badtitletext": "Den ønskede tittelen var ugyldig, tom eller feilaktig lenket fra en annen wiki.\nDen inneholder kanskje ett eller flere tegn som ikke kan brukes i titler.",
        "perfcached": "Følgende data er en tidligere kopi og ikke nødvendigvis den siste versjonen i databasen. Maksimalt {{PLURAL:$1|ett resultat|$1 resultater}} er {{PLURAL:$1|tilgjengelig|tilgjengelige}} som tidligere kopier.",
-       "perfcachedts": "Følgende data er en tidligere kopi, og ble sist oppdatert $1. Maksimalt {{PLURAL:$4|ett resultat|$4 resultater}} er {{PLURAL:$4|tilgjengelig|tilgjengelige}} som tidligere kopier.",
+       "perfcachedts": "Listen ble sist oppdatert $1. Maksimalt {{PLURAL:$4|ett resultat|$4 resultater}} vises.",
        "querypage-no-updates": "Oppdateringer for denne siden er slått av. Data her blir ikke gjenoppfrisket.",
        "viewsource": "Vis kilde",
        "viewsource-title": "Vis kilden til $1",
        "notextmatches": "Inden sidetekst samsvarte med søket",
        "prevn": "forrige {{PLURAL:$1|$1}}",
        "nextn": "neste {{PLURAL:$1|$1}}",
+       "prev-page": "forrige side",
+       "next-page": "neste side",
        "prevn-title": "Forrige $1 {{PLURAL:$1|resultat|resultater}}",
        "nextn-title": "Neste $1 {{PLURAL:$1|resultat|resultater}}",
        "shown-title": "Vis $1 {{PLURAL:$1|resultat|resultater}} per side",
        "searchrelated": "relatert",
        "searchall": "alle",
        "showingresults": "Nedenfor vises opptil {{PLURAL:$1|'''ett''' resultat|'''$1''' resultater}} fra og med nummer <b>$2</b>.",
-       "showingresultsinrange": "Nedenfor vises opptil {{PLURAL:$1|<strong>1</strong> resultat|<strong>$1</strong> resulter}} i mellom nummer <strong>$2</strong> og nummer <strong>$3</strong>.",
+       "showingresultsinrange": "Nedenfor vises opptil {{PLURAL:$1|<strong>1</strong> resultat|<strong>$1</strong> resulter}} fra og med nummer <strong>$2</strong> til og med nummer <strong>$3</strong>.",
        "search-showingresults": "Resultat <strong>{{PLURAL:$4|$1|$1–$2}}</strong> av <strong>$3</strong>",
        "search-nonefound": "Ingen resultater passet til søket.",
        "powersearch-legend": "Avansert søk",
        "emailccsubject": "Kopi av din beskjed til $1: $2",
        "emailsent": "E-post sendt",
        "emailsenttext": "E-postbeskjeden er sendt",
-       "emailuserfooter": "E-posten ble sendt av $1 til $2 via «Send e-post»-funksjonen på {{SITENAME}}.",
+       "emailuserfooter": "Denne e-posten ble sendt av $1 til $2 via funksjonen «{{int:emailpage}}» på {{SITENAME}}.",
        "usermessage-summary": "Etterlater en systembeskjed.",
        "usermessage-editor": "Systembudbringer",
        "watchlist": "Overvåkningsliste",
index b0f2170..3d6735d 100644 (file)
        "revdelete-submit": "Toepassen op de geselecteerde {{PLURAL:$1|bewerking|bewerkingen}}",
        "revdelete-success": "'''De zichtbaarheid van de wijziging is bijgewerkt.'''",
        "revdelete-failure": "'''De zichtbaarheid van de wijziging kon niet bijgewerkt worden:'''\n$1",
-       "logdelete-success": "<strong>Zichtbaarheid van de gebeurtenis ingesteld.</strong>",
+       "logdelete-success": "Zichtbaarheid van de gebeurtenis ingesteld.",
        "logdelete-failure": "'''De zichtbaarheid van de logboekregel kon niet ingesteld worden:'''\n$1",
        "revdel-restore": "Zichtbaarheid wijzigen",
        "pagehist": "Geschiedenis",
        "pageinfo-protect-cascading-yes": "Ja",
        "pageinfo-protect-cascading-from": "Pagina is beveiligd vanuit een andere pagina",
        "pageinfo-category-info": "Categoriegegevens",
+       "pageinfo-category-total": "Totaal aantal leden",
        "pageinfo-category-pages": "Aantal pagina's",
        "pageinfo-category-subcats": "Aantal subcategorieën",
        "pageinfo-category-files": "Aantal bestanden",
index 01d0ed0..a5953d7 100644 (file)
        "prefs-rc": "Darrièrs cambiaments",
        "prefs-watchlist": "Lista de seguiment",
        "prefs-editwatchlist": "Modificar la lista de seguiment",
+       "prefs-editwatchlist-label": "Modificar de títols de vòstra lista de seguiment",
        "prefs-editwatchlist-raw": "Modificar la lista de seguiment en mòde brut",
        "prefs-editwatchlist-clear": "Escafar la lista de seguiment",
        "prefs-watchlist-days": "Nombre de jorns d'afichar dins la lista de seguiment :",
        "unblocked": "[[User:$1|$1]] es estat desblocat",
        "unblocked-range": "$1 es estat desblocat",
        "unblocked-id": "Lo blocatge $1 es estat levat",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] es estat desblocat.",
        "blocklist": "Utilizaires blocats",
        "ipblocklist": "Utilizaires blocats",
        "ipblocklist-legend": "Cercar un utilizaire blocat",
        "tooltip-feed-atom": "Flux Atom per aquesta pagina",
        "tooltip-t-contributions": "Veire la lista de las contribucions d'aqueste utilizaire",
        "tooltip-t-emailuser": "Mandar un corrièr electronic a aqueste utilizaire",
+       "tooltip-t-info": "Mai d’informacion sus aquesta pagina",
        "tooltip-t-upload": "Mandar un imatge o fichièr mèdia sul servidor",
        "tooltip-t-specialpages": "Lista de totas las paginas especialas",
        "tooltip-t-print": "Version imprimibla d'aquesta pagina",
        "pageinfo-protect-cascading-yes": "Òc",
        "pageinfo-protect-cascading-from": "Las proteccions son dedusidas dempuèi",
        "pageinfo-category-info": "Informacions sus la categoria",
+       "pageinfo-category-total": "Nombre total de membres",
        "pageinfo-category-pages": "Nombre de paginas",
        "pageinfo-category-subcats": "Nombre de soscategorias",
        "pageinfo-category-files": "Nombre de fichièrs",
        "tags-create-tag-name": "Nom de la balisa :",
        "tags-create-reason": "Rason :",
        "tags-create-submit": "Crear",
+       "tags-delete-title": "Suprimir la balisa",
        "tags-delete-reason": "Motiu :",
        "tags-activate-title": "Activar la balisa",
        "tags-activate-reason": "Motiu :",
        "tags-deactivate-title": "Desactivar la balisa",
        "tags-deactivate-reason": "Motiu :",
        "tags-deactivate-submit": "Desactivar",
+       "tags-edit-manage-link": "Gerir las balisas",
+       "tags-edit-existing-tags-none": "\"Pas cap\"",
        "comparepages": "Comparar de paginas",
        "compare-page1": "Pagina 1",
        "compare-page2": "Pagina 2",
        "revdelete-uname-unhid": "nom d’utilizaire afichat",
        "revdelete-restricted": "aplicar las restriccions als administrators",
        "revdelete-unrestricted": "restriccions levadas pels administrators",
+       "logentry-block-block": "$1 {{GENDER:$2|a blocat}} {{GENDER:$4|$3}} $5 $6",
        "logentry-block-unblock": "$1 {{GENDER:$2|a desblocat}} {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|a modificat}} los paramètres de blocatge per {{GENDER:$4|$3}} $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|a blocat}} {{GENDER:$4|$3}} $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|a modificat}} los paramètres de blocatge per {{GENDER:$4|$3}} $5 $6",
+       "logentry-import-upload": "$1 {{GENDER:$2|a importat}} $3 per telecargament de fichièr",
+       "logentry-import-interwiki": "$1 {{GENDER:$2|a importat}} $3 dempuèi un autre wiki",
        "logentry-merge-merge": "$1 {{GENDER:$2|a fusionat}} $3 en $4 (revisions fins a $5)",
        "logentry-move-move": "$1  {{GENDER:$2|a desplaçat}} la pagina $3 cap a $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|a desplaçat}} la pagina $3 cap a $4 sens daissar cap de redireccion",
        "logentry-upload-revert": "$1 {{GENDER:$2|a telecargat}} $3",
        "log-name-managetags": "Jornal de las modificacions de balisas",
        "logentry-managetags-create": "$1 {{GENDER:$2|a creat}} la balisa « $4 ».",
+       "logentry-managetags-delete": "$1 {{GENDER:$2|a suprimit}} la balisa « $4 » (levada {{PLURAL:$5|d'una revision o entrada de jornal|de $5 revisions o entradas de jornal}})",
+       "logentry-managetags-activate": "$1 {{GENDER:$2|a activat}} la balisa \"$4\" per l’usatge dels utilizaires e dels robòts",
+       "logentry-managetags-deactivate": "$1 {{GENDER:$2|a desactivat}} la balisa « $4 » per l’usatge dels utilizaires e dels robòts",
        "rightsnone": "(cap)",
        "revdelete-summary": "modificar lo somari",
        "feedback-adding": "Apondon de vòstres comentaris a la pagina...",
index 8a9977f..0ffe977 100644 (file)
        "pageinfo-protect-cascading-yes": "Tak",
        "pageinfo-protect-cascading-from": "Zabezpieczenie dziedziczone z",
        "pageinfo-category-info": "Informacje o kategorii",
+       "pageinfo-category-total": "Całkowita liczba członków",
        "pageinfo-category-pages": "Liczba stron",
        "pageinfo-category-subcats": "Liczba podkategorii",
        "pageinfo-category-files": "Liczba plików",
        "special-characters-group-thai": "Tajskie",
        "special-characters-group-lao": "Laotańskie",
        "special-characters-group-khmer": "Khmerskie",
-       "special-characters-title-endash": "krótka kreska",
-       "special-characters-title-emdash": "długa kreska",
+       "special-characters-title-endash": "półpauza",
+       "special-characters-title-emdash": "pauza",
        "special-characters-title-minus": "minus"
 }
index e2f4ed2..90a9efa 100644 (file)
        "invert": "ټاکنې سرچپه کول",
        "tooltip-invert": "په ټاکلو نومتشيالونو کې (او اړونده نومتشيال کې که په نښه شوی وي) د مخونو بدلونونو د پټولو لپاره دا بکس په نښه کړئ",
        "namespace_association": "مل نومتشيال",
-       "tooltip-namespace_association": "په دې خانه کې ټيک نښان ولګوئ که غواړئ خبري اتري او نيم سپيس د ټاکلي نيم سپيس سره کړئ",
+       "tooltip-namespace_association": "د ټاکلي نومتشيال سره د سکالو نومتشيال اړوندولو او يا هم د خبرو اترو مخ شاملولو لپاره دا چوکاټ په نښه کړئ",
        "blanknamespace": "(آرنی)",
        "contributions": "{{GENDER:$1|کارن}} ونډې",
        "contributions-title": "د $1 کارن ونډې",
        "autoblocker": "په اتوماتيک ډول ستاسو مخنيوی شوی دا ځکه چې ستاسو IP پته وروستی ځل د \"[[User:$1|$1]]\" له خوا کارېدلې. او د $1 د مخنيوي سبب دا دی: \"$2\"",
        "blocklogpage": "د بنديز يادښت",
        "blocklog-showlog": "په همدې کارن له پخوا څخه بنديز لگېدلی.\nد بنديز يادښت همدلته لاندې د سرچينې په توگه راغلی:",
+       "blocklog-showsuppresslog": "په همدې کارن له پخوا څخه بنديز لگېدلی او پټ شوی.\nد بنديز ځپل شوی يادښت همدلته لاندې د سرچينې په توگه راغلی:",
        "blocklogentry": "په [[$1]] بنديز لگېدلی چې د بنديز د پای وخت يې $2 $3 دی",
        "unblocklogentry": "بنديز ليرې شو $1",
        "block-log-flags-anononly": "يواځې ورکنومي کارنان",
        "logentry-newusers-newusers": "د $1 کارن گڼون {{GENDER:$2|جوړ شو}}",
        "logentry-newusers-create": "د $1 کارن گڼون {{GENDER:$2|جوړ شو}}",
        "logentry-newusers-autocreate": "د $1 گڼون په اتوماتيک ډول {{GENDER:$2|جوړ شو}}",
+       "logentry-rights-rights": "$1 د $3 لپاره د غړيتوب ډله له $4 څخه $5 ته {{GENDER:$2|بدله کړه}}",
+       "logentry-rights-rights-legacy": "$1 د $3 لپاره د غړيتوب ډله {{GENDER:$2|بدله کړه}}",
        "logentry-upload-upload": "$1 $3 {{GENDER:$2|ورپورته يې کړ}}",
        "rightsnone": "(هېڅ)",
        "revdelete-summary": "لنډيز سمول",
index 6374824..2c28c8c 100644 (file)
        "tags-edit-remove-all-tags": "(remover todas as etiquetas)",
        "tags-edit-chosen-placeholder": "Selecione algumas etiquetas",
        "tags-edit-reason": "Motivo:",
-       "tags-edit-success": "<strong>As alterações foram aplicadas com sucesso.</strong>",
-       "tags-edit-failure": "<strong>As alterações não puderam ser aplicadas:</strong>\n$1",
+       "tags-edit-success": "As alterações foram aplicadas com sucesso.",
+       "tags-edit-failure": "As alterações não puderam ser aplicadas:\n$1",
        "tags-edit-none-selected": "Por favor, selecione pelo menos uma etiqueta para adicionar ou remover.",
        "comparepages": "Comparar páginas",
        "compare-page1": "Página 1",
index 9c10465..0295c66 100644 (file)
        "tags-edit-reason": "Motiv:",
        "tags-edit-revision-submit": "Aplică modificările {{PLURAL:$1|acestei versiuni|celor $1 versiuni|celor $1 de versiuni}}",
        "tags-edit-logentry-submit": "Aplică modificările {{PLURAL:$1|acestei intrări din jurnal|celor $1 intrări din jurnal|celor $1 de intrări din jurnal}}",
-       "tags-edit-success": "<strong>Modificările au fost aplicate cu succes.</strong>",
-       "tags-edit-failure": "<strong>Modificările nu au putut fi aplicate:</strong>\n$1",
+       "tags-edit-success": "Modificările au fost aplicate cu succes.",
+       "tags-edit-failure": "Modificările nu au putut fi aplicate:\n$1",
        "tags-edit-nooldid-title": "Versiune-țintă nevalidă",
        "tags-edit-nooldid-text": "Fie nu ați indicat nicio versiune-țintă pe care să aplicați această funcție, fie versiunea indicată nu există.",
        "tags-edit-none-selected": "Alegeți cel puțin o etichetă pe care s-o adăugați sau s-o ștergeți.",
index 008ade3..9cdc9f0 100644 (file)
        "revdelete-unsuppress": "पुनस्स्थापितसंस्करणानां प्रतिबन्धः अपाक्रियताम्",
        "revdelete-log": "कारणम् :",
        "revdelete-submit": "{{PLURAL:$1|चित-संस्करणे|चित-संस्करणेषु}} प्रयोगं क्रियताम्",
-       "revdelete-success": "<strong>संस्करणस्य दृश्यता साफल्येन अद्यतनकृता </strong>",
-       "revdelete-failure": "<strong>संस्करणस्य दृश्यता अद्यतना नाभवत् </strong> $1",
-       "logdelete-success": "<strong>संरक्षिताऽऽवल्याः दृश्यता योग्यतया परिवर्तिता ।</strong>",
-       "logdelete-failure": "<strong>संरक्षिताऽऽवल्याः दृश्यता न परिवर्तिता ।</strong> $1",
+       "revdelete-success": "संस्करणस्य दृश्यता साफल्येन अद्यतनकृता",
+       "revdelete-failure": "संस्करणस्य दृश्यता अद्यतना नाभवत्  $1",
+       "logdelete-success": "संरक्षिताऽऽवल्याः दृश्यता योग्यतया परिवर्तिता ।",
+       "logdelete-failure": "संरक्षिताऽऽवल्याः दृश्यता न परिवर्तिता । $1",
        "revdel-restore": "दृश्यताम्/गोप्यताम्",
        "pagehist": "पृष्ठस्य इतिहासः",
        "deletedhist": "अपाकृतः इतिहासः",
        "action-siteadmin": "पाठमूलस्य निशेधनम् अनिशेधनं च ।",
        "action-sendemail": "विद्युन्मानपत्राणि प्रेषयतु ।",
        "nchanges": "$1 {{PLURAL:$1|परिवर्तनम्|परिवर्तनानि}}",
+       "enhancedrc-history": "इतिहासः",
        "recentchanges": "नूतनपरिवर्तनानि",
        "recentchanges-legend": "सद्यो जातानां परिवर्तनानां विकल्पाः",
        "recentchanges-summary": "अस्मिन् विकि-प्रकल्पे सद्यो जातानि परिवर्तनानि अत्र दृश्यन्ताम् ।",
        "uploadnewversion-linktext": "अस्य पृष्ठस्य नूतनाम् आवृत्तिं उद्भारयतु",
        "shared-repo-from": "$1 इत्यस्मात् ।",
        "shared-repo": "विभक्तः कोशः ।",
-       "upload-disallowed-here": "दà¥\81रदà¥\83षà¥\8dà¤\9fवशातà¥\8d à¤\85सà¥\8dय à¤\9aितà¥\8dरसà¥\8dय उपरि पुनर्लेखनम् अशक्यम् ।",
+       "upload-disallowed-here": "à¤\85सà¥\8dयाà¤\83 à¤¸à¤\9eà¥\8dà¤\9aिà¤\95ायाà¤\83 उपरि पुनर्लेखनम् अशक्यम् ।",
        "filerevert": "$1 अनुवर्तताम् ।",
        "filerevert-legend": "सञ्चिकाम् अनुवर्तताम् ।",
        "filerevert-intro": "भवान् '''[[Media:$1|$1]]''' इति सञ्चिकायाः  $4 इत्यवतरणं $3, $2 इति अनुवर्तमानः अस्ति ।",
        "tooltip-pt-mycontris": "भवतः/भवत्याः योगदानानाम् आवलिः",
        "tooltip-pt-login": "सम्प्रवेशाय प्रोत्सहामहे । परन्तु सम्प्रवेशः ऐच्छिकः ।",
        "tooltip-pt-logout": "निर्गमनम्",
+       "tooltip-pt-createaccount": "नूतनसदस्यतां प्राप्य प्रविश्यताम् इति सूच्यते किन्तु न एतद् अनिवार्यम्",
        "tooltip-ca-talk": "विषयसहितानां पृष्ठानां चर्चा",
        "tooltip-ca-edit": "इदं पृष्ठं सम्पादयितुं शक्यते । रक्षणात्पूर्वं कृपया प्राग्दृश्यं दृश्यताम् ।",
        "tooltip-ca-addsection": "नूतनविभागः आरभ्यताम्",
        "spam_reverting": "$1 इत्यनेन नानुबद्धनां प्राचीनपुनरावृत्तीनां पुनस्थापनं कुर्वन्ति ।",
        "spam_blanking": "सर्वाः पुनरावृत्तयः $1 इत्यस्य अनुबन्धाः पूर्णपाठाः अपनीयन्ते ।",
        "spam_deleting": "सर्वाः पुनरावृत्तयः $1 इत्यस्य अनुबन्धाः । पूर्णपाठाः अपनीयन्ते ।",
-       "simpleantispam-label": "अनिष्टसन्देशविरोधपरीक्षणम् ।\nअस्मिन् '''नहि''' पूर्यताम् !",
+       "simpleantispam-label": "अनिष्टसन्देशविरोधपरीक्षणम् ।\nअस्मिन् <strong>न</strong> पूर्यताम् !",
        "pageinfo-title": "\"$1\" कृते सूचनाः ।",
        "pageinfo-not-current": "क्षम्यताम्, पुरातनाभ्यः आवृत्तिभ्यः एषा सूचना दातुं न शक्यते।",
        "pageinfo-header-basic": "मूलसूचनाः",
index 35342e3..9b286de 100644 (file)
        "protect-othertime": "Атын кэм:",
        "protect-othertime-op": "атын кэм",
        "protect-existing-expiry": "Билиҥҥи болдьоҕо: $3, $2",
+       "protect-existing-expiry-infinity": "Бүтэр болдьоҕо билигин: болдьоҕо суох",
        "protect-otherreason": "Атын/эбии төрүөтэ:",
        "protect-otherreason-op": "Атын төрүөт",
        "protect-dropdown": "*Уларытыыны хааччахтааһын сүрүн төрүөттэрэ\n** дьаныардаах вандааллааһын\n** наһаалыыр спаамнааһын\n** уларытыы мөккүөрүгэр аһара барыы\n** элбэхтик туттуллар сирэй",
index 39bcc39..11d3f2f 100644 (file)
        "revdelete-unsuppress": "Elìmina le limitazzioni su li rivisioni ripristinati",
        "revdelete-log": "Mutivu:",
        "revdelete-submit": "Àpplica {{PLURAL:$1|â virsioni scigghiuta|ê virsioni scigghiuti}}",
-       "revdelete-success": "<strong>Visibbilitati dâ virsioni mpustata currittamenti.</strong>",
-       "revdelete-failure": "<strong>A visibbilitati dâ virsioni nun potti èssiri mpustata:</strong>\n$1",
-       "logdelete-success": "<strong>Visibbilitati di l'eventu mpustata currittamenti.</strong>",
+       "revdelete-success": "Visibbilitati dâ virsioni mpustata currittamenti.",
+       "revdelete-failure": "A visibbilitati dâ virsioni nun potti èssiri mpustata:\n$1",
+       "logdelete-success": "Visibbilitati di l'eventu mpustata currittamenti.",
        "logdelete-failure": "'''La visibilità dû eventu nun po essiri impustata:'''\n$1",
        "revdel-restore": "cancia la visibbilità",
        "pagehist": "Crunuluggìa dâ pàggina",
index 7fde9ab..6056a1d 100644 (file)
        "revdelete-unsuppress": "Remuiv restreections oan restored reveesions",
        "revdelete-log": "Raison:",
        "revdelete-submit": "Applie til selected {{PLURAL:$1|reveesion|reveesions}}",
-       "revdelete-success": "<strong>Reveesion veesibeelitie successfully updated.</strong>",
-       "revdelete-failure": "<strong>Reveesion veesibeelitie coudna be updated:</strong>\n$1",
-       "logdelete-success": "<strong>Log veesibeelitie successfully set.</strong>",
-       "logdelete-failure": "<strong>Log veesibddlitie coudna be set:</strong>\n$1",
+       "revdelete-success": "Reveesion veesibeelitie successfully updated.",
+       "revdelete-failure": "Reveesion veesibeelitie coudna be updated:\n$1",
+       "logdelete-success": "Log veesibeelitie successfully set.",
+       "logdelete-failure": "Log veesibddlitie coudna be set:\n$1",
        "revdel-restore": "chynge veesibeelitie",
        "pagehist": "Page histerie",
        "deletedhist": "Delytit histerie",
        "import-rootpage-nosubpage": "Namespace \"$1\" o the ruit page disna permit subpages.",
        "importlogpage": "The Import log",
        "importlogpagetext": "Admeenistrateeve imports o pages wi eedit histerie fae ither wikis.",
-       "import-logentry-upload": "imported [[$1]] bi file uplaid",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|reveesion|reveesions}} importit",
-       "import-logentry-interwiki": "transwikied $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|reveesion|reveesions}} importit fae $2",
        "javascripttest": "JavaScript testin",
        "javascripttest-pagetext-noframework": "This page is reserved fer rinnin JavaScript tests.",
        "json-error-utf8": "Malformed UTF-8 chairacters, possiblie wranglie encoded",
        "json-error-recursion": "Yin or mair recurseeve references in the value tae be encoded",
        "json-error-inf-or-nan": "Yin or mair NAN or INF values in the value tae be encoded",
-       "json-error-unsupported-type": "Ae value o ae type that canna be encoded wis gien"
+       "json-error-unsupported-type": "Ae value o ae type that canna be encoded wis gien",
+       "special-characters-group-ipa": "IPA"
 }
index 8ec5156..cae219a 100644 (file)
        "revdelete-unsuppress": "Kankamandey kaa  filla willantey ga",
        "revdelete-log": "Dalil:",
        "revdelete-submit": "Kanandi {PLURAL:$1|filla}} kanante ga",
-       "revdelete-success": "<strong>Filla diiyan alkadar taagandi ka boori.</strong>",
-       "revdelete-failure": "<strong> Filla diiyan alkdar mana hin ka taagandi:</strong>\n$1",
-       "logdelete-success": "<strong>Hantum ceebandu diiyan alkadar kayandi ka boori.</strong>",
-       "logdelete-failure": "<strong>Hantum ceebandu diiyan alkdar mana kayandi:</strong>\n$1",
+       "revdelete-success": "Filla diiyan alkadar taagandi ka boori.",
+       "revdelete-failure": " Filla diiyan alkdar mana hin ka taagandi:\n$1",
+       "logdelete-success": "Hantum ceebandu diiyan alkadar kayandi ka boori.",
+       "logdelete-failure": "Hantum ceebandu diiyan alkdar mana kayandi:\n$1",
        "revdel-restore": "diiyan alkadar barmay",
        "pagehist": "Moo taariki",
        "deletedhist": "Taariku tuusante",
index 7d278ec..1f7efc7 100644 (file)
        "tags-edit-reason": "Razlog:",
        "tags-edit-revision-submit": "Uveljavi spremembe na {{PLURAL:$1|redakciji|$1 redakcijah}}",
        "tags-edit-logentry-submit": "Uveljavi spremembe na {{PLURAL:$1|dnevniškem vnosu|$1 dnevniških vnosih}}",
-       "tags-edit-success": "<strong>Spremembe smo uspešno uveljavili.</strong>",
-       "tags-edit-failure": "<strong>Sprememb nismo mogli uveljaviti:</strong>\n$1",
+       "tags-edit-success": "Spremembe smo uspešno uveljavili.",
+       "tags-edit-failure": "Sprememb nismo mogli uveljaviti:\n$1",
        "tags-edit-nooldid-title": "Neveljavna ciljna redakcija",
        "tags-edit-nooldid-text": "Bodisi niste navedli ciljne redakcije, na kateri želite izvesti dejanje, bodisi navedena redakcija ne obstaja.",
        "tags-edit-none-selected": "Prosimo, izberite vsaj eno oznako, ki jo želite dodati ali odstraniti.",
index 01819be..db56461 100644 (file)
        "revdelete-unsuppress": "Hapus watesan kana révisi anu geus dipulangkeun",
        "revdelete-log": "Alesan:",
        "revdelete-submit": "Larapkeun kana {{PLURAL:$1|révisi|révisi}} nu dipilih",
-       "revdelete-success": "<strong>Visibilitas révisi geus dimutahirkeun.</strong>",
+       "revdelete-success": "Visibilitas révisi geus dimutahirkeun.",
        "revdelete-failure": "'''Visibilitas révisi teu bisa diapdét:'''\n$1",
        "logdelete-success": "Log pangatur nyumputkeun junun dilarapkeun.",
        "logdelete-failure": "'''Visibilitas log teu bisa disét:'''\n$1",
        "import-invalid-interwiki": "Teu bisa ngimpor ti wiki nu dipilih.",
        "importlogpage": "Log impor",
        "importlogpagetext": "Impor administratif kaca-kaca ti wiki séjén katut jujutanana.",
-       "import-logentry-upload": "Muatkeun [[$1]] make pamuatan koropak",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|vérsi heubeul}}",
-       "import-logentry-interwiki": "$1 geus ditranswikikeun",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|vérsi heubel}} ti $2",
        "javascripttest": "Nguji JavaScript",
        "tooltip-pt-userpage": "Kaca kontributor Anjeun",
        "expand_templates_output": "Hasil:",
        "expand_templates_xml_output": "Output XML",
        "expand_templates_ok": "Heug",
-       "expand_templates_preview": "Pramidang"
+       "expand_templates_preview": "Pramidang",
+       "special-characters-group-latin": "Latin",
+       "special-characters-group-ipa": "IPA",
+       "special-characters-group-symbols": "Lambang",
+       "special-characters-group-greek": "Yunani",
+       "special-characters-group-cyrillic": "Sirilik",
+       "special-characters-group-arabic": "Arab",
+       "special-characters-group-persian": "Parsi",
+       "special-characters-group-hebrew": "Ibrani",
+       "special-characters-group-bangla": "Bangla",
+       "special-characters-group-telugu": "Telugu",
+       "special-characters-group-sinhala": "Sinhala",
+       "special-characters-group-gujarati": "Gujarati",
+       "special-characters-group-thai": "Thai",
+       "special-characters-group-lao": "Lao",
+       "special-characters-group-khmer": "Khmer"
 }
index e081d23..ab0b0da 100644 (file)
        "history-feed-description": "Versionshistorik för denna sida på wikin",
        "history-feed-item-nocomment": "$1 den $2",
        "history-feed-empty": "Den begärda sidan finns inte.\nDen kan ha tagits bort från wikin eller bytt namn.\nProva att [[Special:Search|söka på wikin]] för relevanta nya sidor.",
+       "history-edit-tags": "Redigera märken för valda sidversioner",
        "rev-deleted-comment": "(redigeringssammanfattning togs bort)",
        "rev-deleted-user": "(användarnamn borttaget)",
        "rev-deleted-event": "(loggdetaljer borttagna)",
        "patrol-log-page": "Patrulleringslogg",
        "patrol-log-header": "Detta är en logg över patrullerade sidversioner.",
        "log-show-hide-patrol": "$1 patrulleringslogg",
+       "log-show-hide-tag": "$1 märkeslogg",
        "deletedrevision": "Raderade gammal sidversion $1",
        "filedeleteerror-short": "Fel vid radering av fil: $1",
        "filedeleteerror-long": "Fel inträffade vid raderingen av filen:\n\n$1",
        "tags-deactivate-reason": "Anledning:",
        "tags-deactivate-not-allowed": "Det är inte möjligt att inaktivera taggen \"$1\".",
        "tags-deactivate-submit": "Inaktivera",
+       "tags-apply-not-allowed-one": "Märket \"$1\" kan inte läggas till manuellt.",
+       "tags-apply-not-allowed-multi": "Följande {{PLURAL:$2|märke|märken}} kan inte läggas till manuellt: $1",
+       "tags-update-add-not-allowed-one": "Märket \"$1\" kan inte läggas till manuellt.",
+       "tags-update-add-not-allowed-multi": "Följande {{PLURAL:$2|märke|märken}} kan inte läggas till manuellt: $1",
        "tags-update-remove-not-allowed-one": "Märket \"$1\" får inte tas bort.",
        "tags-update-remove-not-allowed-multi": "Följande {{PLURAL:$2|märke|märken}} får inte tas bort manuellt: $1",
        "tags-edit-title": "Redigera märken",
        "tags-edit-reason": "Anledning:",
        "tags-edit-revision-submit": "Verkställ ändringar för {{PLURAL:$1|denna sidversion|$1 sidversioner}}",
        "tags-edit-logentry-submit": "Verkställ ändringar för {{PLURAL:$1|denna loggpost|$1 loggposter}}",
-       "tags-edit-success": "<strong>Ändringarna verkställdes.</strong>",
-       "tags-edit-failure": "<strong>Ändringarna kunde inte verkställas:</strong>\n$1",
+       "tags-edit-success": "Ändringarna verkställdes.",
+       "tags-edit-failure": "Ändringarna kunde inte verkställas:\n$1",
+       "tags-edit-nooldid-title": "Ogiltig målversion",
+       "tags-edit-none-selected": "Välj åtminstone ett märke att lägga till eller ta bort.",
        "comparepages": "Jämför sidor",
        "compare-page1": "Sida 1",
        "compare-page2": "Sida 2",
        "logentry-managetags-activate": "$1 {{GENDER:$2|aktiverade}} taggen \"$4\" för användning av användare och botar.",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|inaktiverade}} taggen \"$4\" för användning av användare och botar.",
        "log-name-tag": "Märkeslogg",
+       "logentry-tag-update-add-revision": "$1 {{GENDER:$2|lade till}} {{PLURAL:$7|märket|märkena}} $6 för sidversionen $4 av sidan $3",
+       "logentry-tag-update-add-logentry": "$1 {{GENDER:$2|lade till}} {{PLURAL:$7|märket|märkena}} $6 till loggposten $5 för siden $3",
+       "logentry-tag-update-remove-revision": "$1 {{GENDER:$2|tog bort}} {{PLURAL:$9|märket|märkena}} $8 från sidversionen $4 av sidan $3",
+       "logentry-tag-update-remove-logentry": "$1 {{GENDER:$2|tog bort}} {{PLURAL:$9|märket|märkena}} $8 från loggposten $5 för sidan $3",
+       "logentry-tag-update-revision": "$1 {{GENDER:$2|uppdaterade}} märken på sidversionen $4 för sidan $3 ({{PLURAL:$7|lade till}} $6; {{PLURAL:$9|tog bort}} $8)",
+       "logentry-tag-update-logentry": "$1 {{GENDER:$2|uppdaterade}} märken på loggposten $5 för sidan $3 ({{PLURAL:$7|lade till}} $6; {{PLURAL:$9|tog bort}} $8)",
        "rightsnone": "(inga)",
        "revdelete-summary": "sammanfattning",
        "feedback-adding": "Ge feedback till sida...",
index 8733158..c4be101 100644 (file)
        "disclaimers": "Prawne informacyje",
        "disclaimerpage": "Project:Prawne informacyje",
        "edithelp": "Půmoc we půmjyńańy",
-       "mainpage": "Przodniŏ zajta",
+       "mainpage": "Przodńo zajta",
        "mainpage-description": "Przodńo zajta",
        "policy-url": "Project:Prawidła",
        "portal": "Portal używoczůw",
index 9838a43..ebcdbfb 100644 (file)
        "revdelete-unsuppress": "పునస్థాపిత కూర్పులపై నిబంధనలను తీసివెయ్యి",
        "revdelete-log": "కారణం:",
        "revdelete-submit": "ఎంచుకున్న {{PLURAL:$1|కూర్పుకు|కూర్పులకు}} ఆపాదించు",
-       "revdelete-success": "<strong>కూర్పు కనబడే విధానాన్ని జయప్రదంగా తాజాకరించాం.</strong>",
-       "revdelete-failure": "<strong>కూర్పు కనబడే పద్ధతిని తాజాపరచలేకపోయాం:</strong>\n$1",
-       "logdelete-success": "<strong>ఘటన కనబడే విధానాన్ని జయప్రదంగా సెట్ చేసాం.</strong>",
+       "revdelete-success": "కూర్పు కనబడే విధానాన్ని జయప్రదంగా తాజాకరించాం.",
+       "revdelete-failure": "కూర్పు కనబడే పద్ధతిని తాజాపరచలేకపోయాం:\n$1",
+       "logdelete-success": "ఘటన కనబడే విధానాన్ని జయప్రదంగా సెట్ చేసాం.",
        "logdelete-failure": "'''చిట్టా కనబడే పద్ధతిని అమర్చలేకపోయాం:'''\n$1",
        "revdel-restore": "దృశ్యతని మార్చు",
        "pagehist": "పేజీ చరిత్ర",
index 44b6978..076825a 100644 (file)
        "revdelete-unsuppress": "Хотимаи маҳдудиятҳо дар мавриди нусхаҳои интихобшуда",
        "revdelete-log": "Сабаб:",
        "revdelete-submit": "Амалӣ кардан бар {{PLURAL:$1|нусхаи|нусхаҳои}} интихобшуда",
-       "revdelete-success": "<strong>Тағйири намоёнии нусха бо муваффақият анҷом шуд.</strong>",
+       "revdelete-success": "Тағйири намоёнии нусха бо муваффақият анҷом шуд.",
        "logdelete-success": "'''Тағйири намоёнии маврид бо муваффақият анҷом шуд.'''",
        "revdel-restore": "Тағйири падидорӣ",
        "pagehist": "Таърихи саҳифа",
index 0988de6..987b155 100644 (file)
        "content-model-text": "ข้อความธรรมดา",
        "content-model-javascript": "จาวาสคริปต์",
        "content-model-css": "CSS",
-       "duplicate-args-category": "หà¸\99à¹\89าà¸\97ีà¹\88à¹\83à¸\8aà¹\89อารà¹\8cà¸\81ิวà¹\80มà¸\99à¸\95à¹\8cà¸\88ำลอà¸\87ในการเรียกแม่แบบ",
+       "duplicate-args-category": "หà¸\99à¹\89าà¸\97ีà¹\88à¹\83à¸\8aà¹\89อารà¹\8cà¸\81ิวà¹\80มà¸\99à¸\95à¹\8cà¸\8bà¹\89ำในการเรียกแม่แบบ",
        "expensive-parserfunction-warning": "<strong>คำเตือน:</strong> หน้านี้มีการเรียกใช้ฟังก์ชันแจงส่วนมากเกินไป\n\nหน้านี้ควรมีการเรียกใช้น้อยกว่า $2  ครั้ง แต่ปัจจุบันมีการเรียกใช้ $1 ครั้ง",
        "expensive-parserfunction-category": "หน้าที่มีการเรียกใช้ฟังก์ชันแจงส่วนมากเกินไป",
        "post-expand-template-inclusion-warning": "<strong>คำเตือน:</strong> แม่แบบที่นำมารวมมีขนาดใหญ่เกินไป\nจะไม่รวมบางแม่แบบเข้ามา",
        "revdelete-unsuppress": "ลบการจำกัดแก่รุ่นปรับปรุงที่กู้คืน",
        "revdelete-log": "เหตุผล:",
        "revdelete-submit": "ใช้กับรุ่นปรับปรุง{{PLURAL:$1|}}ที่เลือก",
-       "revdelete-success": "<strong>ปรับทัศนวิสัยรุ่นปรับปรุงสำเร็จ</strong>",
-       "revdelete-failure": "<strong>ไม่สามารถปรับทัศนวิสัยของรุ่นปรับปรุงได้:</strong>\n$1",
-       "logdelete-success": "<strong>ตั้งทัศนวิสัยปูมสำเร็จ</strong>",
-       "logdelete-failure": "<strong>ไม่สามารถตั้งทัศนวิสัยของปูม:</strong>\n$1",
+       "revdelete-success": "ปรับทัศนวิสัยรุ่นปรับปรุงสำเร็จ",
+       "revdelete-failure": "ไม่สามารถปรับทัศนวิสัยของรุ่นปรับปรุงได้:\n$1",
+       "logdelete-success": "ตั้งทัศนวิสัยปูมสำเร็จ",
+       "logdelete-failure": "ไม่สามารถตั้งทัศนวิสัยของปูม:\n$1",
        "revdel-restore": "เปลี่ยนทัศนวิสัย",
        "pagehist": "ประวัติหน้า",
        "deletedhist": "ประวัติที่ถูกลบ",
index 2bf4340..e0f73c5 100644 (file)
@@ -57,7 +57,8 @@
                        "Ypryima",
                        "Purodha",
                        "Green Zero",
-                       "Macofe"
+                       "Macofe",
+                       "Alex Blokha"
                ]
        },
        "tog-underline": "Підкреслювання посилань:",
        "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": "(запис журналу вилучений)",
        "listfiles-delete": "видалити",
        "listfiles-summary": "Ця спеціальна сторінка показує всі завантажені файли.",
        "listfiles_search_for": "Пошук по назві зображення:",
+       "listfiles-userdoesnotexist": "Облыковий запис «$1» не зареэстровано.",
        "imgfile": "файл",
        "listfiles": "Список файлів",
        "listfiles_thumb": "Мініатюра",
        "pageinfo-protect-cascading-yes": "Так",
        "pageinfo-protect-cascading-from": "Каскадний захист починається тут",
        "pageinfo-category-info": "Інформація про категорію",
+       "pageinfo-category-total": "Загальна кількість членів",
        "pageinfo-category-pages": "Кількість сторінок",
        "pageinfo-category-subcats": "Кількість підкатегорій",
        "pageinfo-category-files": "Кількість файлів",
        "tags-deactivate-reason": "Причина:",
        "tags-deactivate-not-allowed": "Неможливо вимкнути мітку «$1».",
        "tags-deactivate-submit": "Вимкнути",
+       "tags-edit-title": "Редагувати теги",
+       "tags-edit-existing-tags": "Існуючі теги:",
+       "tags-edit-new-tags": "Нові теги:",
        "comparepages": "Порівняння сторінок",
        "compare-page1": "Сторінка 1",
        "compare-page2": "Сторінка 2",
index e1d187f..3c93d85 100644 (file)
        "revdelete-log": "理由:",
        "revdelete-submit": "应用于拣中个{{PLURAL:$1|修订}}",
        "revdelete-success": "'''修订个可见性已经成功更新。'''",
-       "revdelete-failure": "<strong>版本个可见性无法更新:</strong>$1",
+       "revdelete-failure": "版本个可见性无法更新:$1",
        "logdelete-success": "'''事件个可见性已经成功设置。'''",
        "logdelete-failure": "'''事件个可见性无法设置:'''\n$1",
        "revdel-restore": "改变可见性",
        "deleteotherreason": "其它/附加理由:",
        "deletereasonotherlist": "别个理由",
        "rollback": "恢复编辑",
-       "rollback_short": "恢复",
        "rollbacklink": "回退",
        "rollbackfailed": "恢复失败",
        "revertpage": "恢复[[Special:Contributions/$2|$2]] ([[User talk:$2|讲张]])个改动;恢复到[[User:$1|$1]]个上一版本",
index 99ca922..64dc218 100644 (file)
        "revdelete-unsuppress": "在已恢复的版本中移除限制",
        "revdelete-log": "原因:",
        "revdelete-submit": "应用于选中的{{PLURAL:$1|版本}}",
-       "revdelete-success": "<strong>版本可见性更新成功。</strong>",
-       "revdelete-failure": "<strong>版本可见性无法更新:</strong>$1",
+       "revdelete-success": "版本可见性更新成功。",
+       "revdelete-failure": "版本可见性无法更新:$1",
        "logdelete-success": "'''事件的可见性已经成功设置。'''",
        "logdelete-failure": "'''事件的可见性无法设置:'''\n$1",
        "revdel-restore": "更改可见性",
        "tags-edit-reason": "原因:",
        "tags-edit-revision-submit": "将更改应用至{{PLURAL:$1|此|$1个}}修订版本",
        "tags-edit-logentry-submit": "将更改应用至{{PLURAL:$1|此日志记录|$1个日志记录}}",
-       "tags-edit-success": "<strong>更改已成功应用。</strong>",
-       "tags-edit-failure": "<strong>更改无法被应用:</strong>\n$1",
+       "tags-edit-success": "更改已成功应用。",
+       "tags-edit-failure": "更改无法被应用:\n$1",
        "tags-edit-nooldid-title": "无效目标版本",
        "tags-edit-nooldid-text": "您尚未指定任何要执行此功能的目标版本,或者所指定的版本不存在。",
        "tags-edit-none-selected": "请选择至少一个要添加或移除的标签。",
        "logentry-managetags-activate": "$1 {{GENDER:$2|激活了}}“$4”标签供用户和机器人使用",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|停用了}}“$4”标签供用户和机器人使用",
        "log-name-tag": "标签日志",
+       "log-description-tag": "此页面显示用户从个别修订或日志记录中添加或移除的[[Special:Tags|标签]]。日志不列举他们作为编辑、删除或类似操作的一部分进行的标记操作。",
        "logentry-tag-update-add-revision": "$1{{GENDER:$2|添加了}}{{PLURAL:$7|标签}}$6至页面$3的修订版本$4",
        "logentry-tag-update-add-logentry": "$1{{GENDER:$2|添加了}}{{PLURAL:$7|标签}}$6至页面$3的日志记录$5",
        "logentry-tag-update-remove-revision": "$1从页面$3的修订$4中{{GENDER:$2|移除了}}{{PLURAL:$9|标签}}$8",
index 99d8723..8426fbe 100644 (file)
        "revdelete-unsuppress": "移除已還原修訂上的顯示限制",
        "revdelete-log": "原因:",
        "revdelete-submit": "套用至已選取的{{PLURAL:$1|一筆|多筆}}修訂",
-       "revdelete-success": "<strong>已成功更新修訂的顯示設定。</strong>",
-       "revdelete-failure": "<strong>無法更新修訂的顯示設定:</strong>\n$1",
-       "logdelete-success": "<strong>已成功更新日誌的顯示設定。</strong>",
-       "logdelete-failure": "<strong>無法更新日誌的顯示設定:</strong>\n$1",
+       "revdelete-success": "已成功更新修訂的顯示設定。",
+       "revdelete-failure": "無法更新修訂的顯示設定:\n$1",
+       "logdelete-success": "已成功更新日誌的顯示設定。",
+       "logdelete-failure": "無法更新日誌的顯示設定:\n$1",
        "revdel-restore": "更改顯示設定",
        "pagehist": "頁面歷史",
        "deletedhist": "已刪除歷史",
index 74d3bb9..9961227 100644 (file)
@@ -6,6 +6,9 @@
  * @ingroup Language
  * @file
  *
+ * @author Arjanizary
+ * @author E THP
+ * @author Mjbmr
  */
 
 $fallback = 'fa';
@@ -17,7 +20,7 @@ $namespaceNames = array(
        NS_TALK             => 'دانیشیق',
        NS_USER             => 'ایستیفاده‌چی',
        NS_USER_TALK        => 'ایستیفاده‌چی_دانیشیغی',
-       NS_PROJECT_TALK     => '$1_دانیشیق',
+       NS_PROJECT_TALK     => '$1_دانیشیغی',
        NS_FILE             => 'فایل',
        NS_FILE_TALK        => 'فایل_دانیشیغی',
        NS_MEDIAWIKI        => 'مئدیا‌ویکی',
index 924f6c2..cb52c1a 100644 (file)
@@ -22,8 +22,8 @@ $namespaceNames = array(
        NS_PROJECT_TALK     => '$1_ئی_گپ',
        NS_FILE             => 'ورق',
        NS_FILE_TALK        => 'ورق_ئی_گپ',
-       NS_MEDIAWIKI        => 'Ù\88Û\8cÚ©Û\8c_رساÙ\86Ú¯',
-       NS_MEDIAWIKI_TALK   => 'Ù\88Û\8cÚ©Û\8c_رساÙ\86Ú¯_ئی_گپ',
+       NS_MEDIAWIKI        => 'Ù\85Û\8cÚ\88Û\8cاÙ\88Û\8cÚ©Û\8c',
+       NS_MEDIAWIKI_TALK   => 'Ù\85Û\8cÚ\88Û\8cاÙ\88Û\8cÚ©Û\8c_ئی_گپ',
        NS_TEMPLATE         => 'تراشوان',
        NS_TEMPLATE_TALK    => 'تراشوان_ئی_گپ',
        NS_HELP             => 'کومک',
@@ -32,6 +32,12 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'تهر_ئی_گپ',
 );
 
+$namespaceAliases = array(
+       'میڈیا' => NS_MEDIA,
+       'اکس' => NS_FILE,
+       'اکس_ئی_گپ' => NS_FILE_TALK,
+);
+
 $specialPageAliases = array(
        'Activeusers'               => array( 'پئالین_کارمرزوکان' ),
        'Allmessages'               => array( 'موچین_پیامان' ),
@@ -146,4 +152,4 @@ $specialPageAliases = array(
        'Withoutinterwiki'          => array( 'بئ_شه_مانیجین_ویکی_ئا' ),
 );
 
-$linkTrail = "/^([اآأبپتثجچحخدڈذرڑزژسشصضطظعغفقکگلمنوۆؤھهئیێ‌]+)(.*)$/sDu";
\ No newline at end of file
+$linkTrail = "/^([اآأبپتثجچحخدڈذرڑزژسشصضطظعغفقکگلمنوۆؤھهئیێ‌]+)(.*)$/sDu";
index 62bf716..c85f4ff 100644 (file)
@@ -42,8 +42,7 @@ $namespaceAliases = array(
 // Remove Russian aliases
 $namespaceGenderAliases = array();
 
-$linkTrail = '/^([a-zа-яёӝӟӥӧӵ“»]+)(.*)$/sDu';
-$linkPrefixCharset = '„«';
+$linkTrail = '/^([a-zа-яёӝӟӥӧӵ]+)(.*)$/sDu';
 $fallback8bitEncoding = 'windows-1251';
 $separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
 
index 777c833..a64bc49 100644 (file)
@@ -56,7 +56,7 @@ class CheckUsernames extends Maintenance {
 
                        foreach ( $res as $row ) {
                                if ( !User::isValidUserName( $row->user_name ) ) {
-                                       $this->error( sprintf( "%s: %6d: '%s'\n", wfWikiID(), $row->user_id, $row->user_name ) );
+                                       $this->output( sprintf( "Found: %6d: '%s'\n", $row->user_id, $row->user_name ) );
                                        wfDebugLog( 'checkUsernames', $row->user_name );
                                }
                        }
index da75c44..b686f3d 100644 (file)
@@ -59,7 +59,7 @@ U+05446呆|U+05446呆|U+07343獃|
 U+054B8咸|U+054B8咸|U+09E79鹹|
 U+054C4哄|U+054C4哄|U+09B28鬨|
 U+0556E啮|U+09F67齧|U+056D3囓|U+05699嚙|
-U+05582喂|U+05582喂|U+09935餵|
+U+05582喂|U+09935餵|U+05582喂|
 U+056DE回|U+056DE回|U+08FF4迴|
 U+056E2团|U+05718團|U+07CF0糰|
 U+056F0困|U+056F0困|U+0774F睏|
index 3266168..58686d8 100644 (file)
@@ -7,4 +7,6 @@
 桿
 錶
 蘋
-詑
\ No newline at end of file
+詑
+堖
+嶴
\ No newline at end of file
index 3b14982..431a9fb 100644 (file)
 字乾生
 乾神
 乾西
+乾东
 象乾
 陈遇乾
 曾运乾
 孙乾
 乾潭
 乾贵士
+承乾
+乾生元
 於乎
 於戏
 魏徵
 於氏
 於夫罗
 於梨华
-卷舌
 樊於期
 於菟
 於潜县
 於哲
 於除鞬
 於志贺
-覆
+覆
 五箇山
 麽麽
 幺厮
 石碁
 碁圣
 暗闇
+闇公
+山崎闇斋
 繙㠾
 惏慄
 惏悷
 目劄
-橡椀
 谢肇淛
 朱淛
 諲譔
 庆馀
 馀庆
 子馀
-行馀
+行馀
 王馀鱼
-馀年无多
\ No newline at end of file
+傒倖
+倖田
+倖一郎
+兒宽
+穀旦
+不穀
+穀水
+岳讬
+硕讬
+讬庸
+讬恩多
+博和讬
+讬麻
+饱讬
+蔡絛
\ No newline at end of file
index b4dd3e0..0516daa 100644 (file)
@@ -26,5 +26,6 @@
 硷淡
 悽恻
 鲇鱼
-和尚撞一天钟
-余
\ No newline at end of file
+钟
+余
+老么
\ No newline at end of file
index 09e1415..7c26621 100644 (file)
@@ -18,7 +18,7 @@ U+08600蘀|U+0841A萚|
 U+08AE1諡|U+08C25谥|
 U+09746靆|U+053C7叇|
 U+09749靉|U+053C6叆|
-U+09A44驄|U+29A02𩨂|
+U+09A44驄|U+09AA2骢|
 U+09C1B鰛|U+09CC1鳁|
 U+09EB3麳|U+2A38C𪎌|
 U+295E1𩗡|U+29667𩙧|
index a678ac9..4a2d9fb 100644 (file)
@@ -58,6 +58,7 @@
 學姊 学姐
 乾姊 干姐
 澈底 彻底
+卯足 铆足
 逕庭 径庭
 逕到 径到
 逕取 径取
 帳外 账外
 帳務 账务
 螢光棒      荧光棒
-辭彙 词汇
 著業 着业
 著絲 着丝
 著麼 着么
 繫著 系着
 颳著 刮着
 鬥著 斗着
+縱著 纵着
+伏著 伏着
+視著 视着
+視著名      视著名
+蓋著 盖着
+蓋著名      盖著名
+蓋著稱      盖著称
+蓋著作      盖著作
+覆蓋著      覆盖着 #勿删此条
 象徵著      象征着
 象徵著名   象征著名
 三十六著   三十六着
 晶片 芯片
 晶元 芯片
 片語 词组
+隻字片語   只字片语
+隻言片語   只言片语
 軟碟機      软驱
 快閃記憶體        闪存
 滑鼠 鼠标
 行動電話   移动电话
 流動電話   移动电话
 數據機      调制解调器
-烏茲別克   乌兹别克斯坦
 葉門 也门
 貝里斯      伯利兹
 維德角      佛得角
 厄瓜多      厄瓜多尔
 厄利垂亞   厄立特里亚
 吉布地      吉布提
-哈薩克      哈萨克斯坦
 哥斯大黎加        哥斯达黎加
 吐瓦魯      图瓦卢
-土庫曼      土库曼斯坦
 聖露西亞   圣卢西亚
 聖吉斯納域斯     圣基茨和尼维斯
 聖克里斯多福及尼維斯 圣基茨和尼维斯
 衣索匹亞   埃塞俄比亚
 衣索比亞   埃塞俄比亚
 吉里巴斯   基里巴斯
-塔吉克      塔吉克斯坦
-塔吉克斯坦        塔吉克斯坦
 塞拉利昂   塞拉利昂
 塞普勒斯   塞浦路斯
 塞席爾      塞舌尔
 象牙海岸   科特迪瓦
 突尼西亞   突尼斯
 寮國 老挝
+貢寮國      贡寮国
 蘇利南      苏里南
 莫三比克   莫桑比克
 賴索托      莱索托
 螢屏 荧屏
 解像度      分辨率
 IP位址       IP地址
-IP 位址      IP 地址
 程式設計師        程序员
 公尺 米
 公升 升
@@ -2608,7 +2614,6 @@ A型肝炎        甲型肝炎
 金氏世界紀錄     吉尼斯世界纪录
 祖雲達斯   尤文图斯
 若且唯若   当且仅当
-山葉 雅马哈
 複製人      克隆人
 白朗寧      勃朗宁
 形上學      形而上学
@@ -2659,7 +2664,7 @@ A型肝炎        甲型肝炎
 共和联邦   英联邦
 阿布達比   阿布扎比
 蓋曼群島   开曼群岛
-柴契爾      撒切尔       
+柴契爾      撒切尔
 戴卓爾      撒切尔
 凱薩琳      凯瑟琳
 嘉芙蓮      凯瑟琳
@@ -2706,4 +2711,11 @@ A型肝炎       甲型肝炎
 翁山蘇姬   昂山素季
 昂山素姬   昂山素季
 西洋棋      囯际象棋
-私隱 隐私
\ No newline at end of file
+私隱 隐私
+格林美獎   格莱美奖
+葛萊美獎   格莱美奖
+史丹福      斯坦福
+賈伯斯      乔布斯
+波里活      宝莱坞
+庫德族      库尔德族
+庫德人      库尔德人
\ No newline at end of file
index c31d232..a4e4901 100644 (file)
@@ -19,7 +19,9 @@
 写字台      寫字枱
 工作台      工作枱
 弹子台      彈子枱
+上台面      上枱面
 台面上      枱面上
+台面化      枱面化
 柜台 櫃枱
 球台 球枱
 赌台 賭枱
@@ -35,7 +37,7 @@
 发布 發佈
 發布 發佈
 秀发布      秀發佈
-并发布      並發佈       
+并发布      並發佈
 分布 分佈
 宣布 宣佈
 公布 公佈
 袖里 袖裏
 被里 被裏
 里勾外连   裏勾外連
-里手 裏手
+行家里手   行家裏手
 里海 裏海
 里屋 裏屋
 里层 裏層
 话里有话   話裏有話
 车库里      車庫裏
 车站里      車站裏
+网站里      網站裏
 车里 車裏
 车里雅宾斯克     車里雅賓斯克
 这里 這裏
 山里有      山裏有
 棉里 棉裏
 语里 語裏
+言里 言裏
+境里 境裏
 方法里      方法裏
 语法里      語法裏
 看法里      看法裏
 宪法里      憲法裏
 用法里      用法裏
 法里,      法裏,
+框里 框裏
+碗里 碗裏
+电梯里      電梯裏
 苑裡 苑裡
 霄裡 霄裡
 岸裡 岸裡
 放著名      放著名
 放著稱      放著稱
 放著称      放著稱
+縱著 縱着
+伏著 伏着
+視著 視着
+視著名      視著名
+蓋著 蓋着
+蓋著名      蓋著名
+蓋著稱      蓋著稱
+蓋著作      蓋著作
+覆蓋著      覆蓋着
 三十六著   三十六着
 走為上著   走為上着
 鬧著 鬧着
 萬那杜      瓦努阿圖
 葛摩 科摩羅
 寮國 老撾
+貢寮國      貢寮國
 肯尼亚      肯雅
 莫三比克   莫桑比克
 賴索托      萊索托
 莱特湾      雷伊泰灣
 萊特灣      雷伊泰灣
 蘭卡威      浮羅交怡
-吉尔吉斯斯坦     吉爾吉斯
 撒马尔罕   撒馬爾罕
 伊斯蘭瑪巴德     伊斯蘭堡
 喀拉蚩      卡拉奇
@@ -2930,7 +2947,6 @@ C型肝炎        丙型肝炎
 晶体管      電晶體
 源代码      原始碼
 IP地址       IP位址
-IP 地址      IP 位址
 屏幕 螢幕
 荧屏 螢屏
 版权信息   版權資訊
@@ -2951,7 +2967,6 @@ IP 地址 IP 位址
 泰坦尼克号        鐵達尼號
 自行火炮   自走炮
 冰激凌      雪糕
-奥斯曼      鄂圖曼
 里氏0        黎克特制0
 里氏1        黎克特制1
 里氏2        黎克特制2
@@ -3041,4 +3056,12 @@ IP 地址        IP 位址
 西洋棋      國際象棋
 隐私 私隱
 隱私 私隱
-硅藻 硅藻
\ No newline at end of file
+硅藻 硅藻
+格莱美奖   格林美獎
+葛萊美獎   格林美獎
+斯坦福      史丹福
+賈伯斯      喬布斯
+宝莱坞      波里活
+寶萊塢      波里活
+庫德族      库爾德族
+庫德人      库爾德人
\ No newline at end of file
index b857e5f..1956391 100644 (file)
@@ -57,9 +57,9 @@
 男性为乾   男性为乾
 男为乾      男为乾
 阳为乾      阳为乾
\94·æ\80§ç\88²乾   男性为乾
\94·ç\88²乾      男为乾
\99½ç\88²乾      阳为乾
\94·æ\80§ç\82º乾   男性为乾
\94·ç\82º乾      男为乾
\99½ç\82º乾      阳为乾
 乾一组      乾一组
 乾一坛      乾一坛
 陈乾生      陈乾生
 孙乾 孙乾
 陈遇乾      陈遇乾
 曾运乾      曾运乾
-象乾 象乾
 乾贵士      乾贵士
+乾东 乾东
 柳诒徵      柳诒徵
 於夫罗      於夫罗
 於梨华      於梨华
-於潜县      於潜县
+於潜 於潜
 於志贺      於志贺
 憑藉 凭借
 藉端 借端
 么篇 幺篇
 么謙 幺谦
 六么 六幺
+老么 老幺
+么正 幺正
+么女 幺女
+么九 幺九
+么子 幺子
 这么 这么
+那么 那么
+什么 什么
+怎么 怎么
+多么 多么
 乾乾淨淨   干干净净
 乾乾脆脆   干干脆脆
 肉乾乾      肉干干
 獨鍾 独钟
 鍾靈 钟灵
 龍鍾 龙钟
-鍾山 钟山
-一鍾 一钟
-千鍾 千钟
 薰心 熏心
 薰習 熏习
 薰陶 熏陶
 麴黴 曲霉
 造麴 造曲
 大麴 大曲
-黃麴毒素   黄曲毒素
\ No newline at end of file
+黃麴毒素   黄曲毒素
+硃砂 朱砂
+硃紅 朱红
+硃色 朱色
+銀硃 银朱
+遶境 绕境
+侷促 局促
+侷限 局限
+馬鞌 马鞍
+觔斗 斤斗
\ No newline at end of file
index 14f7eae..bcd8492 100644 (file)
 钚    鈽
 硅    矽
 煙草 菸草
+烟草 菸草
 煙蒂 菸蒂
+烟蒂 菸蒂
 煙斗 菸斗
+烟斗 菸斗
 煙鬼 菸鬼
+烟鬼 菸鬼
 煙灰 菸灰
+烟灰 菸灰
 煙具 菸具
+烟具 菸具
 煙民 菸民
+烟民 菸民
 煙農 菸農
+烟农 菸農
 煙絲 菸絲
+烟丝 菸絲
 煙頭 菸頭
+烟头 菸頭
 煙葉 菸葉
+烟叶 菸葉
 煙癮 菸癮
+烟瘾 菸癮
 煙嘴 菸嘴
+烟嘴 菸嘴
 煙酒 菸酒
+烟酒 菸酒
 煙袋 菸袋
+烟袋 菸袋
 煙品 菸品
+烟品 菸品
 煙鹼 菸鹼
+烟碱 菸鹼
 煙捲 菸捲
+烟卷 菸捲
 香煙 香菸
+香烟 香菸
 捲煙 捲菸
+卷烟 捲菸
 旱煙 旱菸
+旱烟 旱菸
 烤煙 烤菸
+烤烟 烤菸
 禁煙 禁菸
+禁烟 禁菸
 戒煙 戒菸
+戒烟 戒菸
 拒煙 拒菸
+拒烟 拒菸
 紙煙 紙菸
+纸烟 紙菸
 抽煙 抽菸
+抽烟 抽菸
 吸煙 吸菸
+吸烟 吸菸
 反煙 反菸
+反烟 反菸
 私煙 私菸
+私烟 私菸
 點煙 點菸
+点烟 點菸
 洋煙 洋菸
+洋烟 洋菸
 二手煙      二手菸
+二手烟      二手菸
 電子煙      電子菸
+电子烟      電子菸
 呂宋煙      呂宋菸
+吕宋烟      呂宋菸
 雪茄煙      雪茄菸
+雪茄烟      雪茄菸
 無煙日      無菸日
+无烟日      無菸日
 無煙環境   無菸環境
+无烟环境   無菸環境
 榴莲 榴槤
 榴蓮 榴槤
+铆足 卯足
 霉素 黴素
 想象 想像
 迭代 疊代
 斗着 鬥著
 徵狀 症狀
 系数 係數
+汇编 彙編
+划着船      划著船
+划着竹筏   划著竹筏
+划着独木舟        划著獨木舟
 缺省 預設
 以太网      乙太網
 光盘 光碟
 调制解调器        數據機
 調制解調器        數據機
 短信 簡訊
-乌兹别克斯坦     烏茲別克
 乍得 查德
 也门 葉門
 也門 葉門
 厄立特里亞        厄利垂亞
 吉布提      吉布地
 吉布堤      吉布地
-哈萨克斯坦        哈薩克
 哥斯达黎加        哥斯大黎加
 哥斯達黎加        哥斯大黎加
 图瓦卢      吐瓦魯
 圖瓦盧      吐瓦魯
-土库曼斯坦        土庫曼
 圣卢西亚   聖露西亞
 聖盧西亞   聖露西亞
 圣基茨和尼维斯  聖克里斯多福及尼維斯
 埃塞俄比亚        衣索比亞
 埃塞俄比亞        衣索比亞
 基里巴斯   吉里巴斯
-塔吉克斯坦        塔吉克
 塞拉利昂   獅子山
 塞浦路斯   塞普勒斯
 塞舌尔      塞席爾
 莱特湾      雷伊泰灣
 萊特灣      雷伊泰灣
 耶加達      雅加達
-吉尔吉斯斯坦     吉爾吉斯
 伊斯兰堡   伊斯蘭瑪巴德
 伊斯蘭堡   伊斯蘭瑪巴德
 卡拉奇      喀拉蚩
 晶體管      電晶體
 晶体管      電晶體
 IP地址       IP位址
-IP 地址      IP 位址
 解像度      解析度
 屏幕 螢幕
 荧屏 螢屏
@@ -614,7 +651,6 @@ IP 地址   IP 位址
 沙律 沙拉
 忌廉 奶油
 味美思      苦艾酒
-奥斯曼      鄂圖曼
 埃博拉      伊波拉
 克隆人      複製人
 荧光 螢光
@@ -672,7 +708,7 @@ IP 地址   IP 位址
 自由泳      自由式
 机床 工具機
 機床 工具機
-空气质量   空氣品質    
+空气质量   空氣品質
 空氣質素   空氣品質
 俯卧撑      伏地挺身
 掌上壓      伏地挺身
@@ -701,4 +737,10 @@ IP 地址  IP 位址
 囯际象棋   西洋棋
 國際象棋   西洋棋
 私隱 隱私
-硅藻 硅藻
\ No newline at end of file
+硅藻 硅藻
+格林美獎   葛萊美獎
+格莱美奖   葛萊美獎
+乔布斯      賈伯斯
+波里活      寶萊塢
+库尔德族   庫德族
+库尔德人   庫德人
\ No newline at end of file
index 7fc60c7..9157e3f 100644 (file)
@@ -2,14 +2,24 @@
 “    「
 ‘    『
 ’    』
-’s   ’s 
+’s   ’s
 手塚治虫   手塚治虫
 無言不仇   無言不讎
 視如寇仇   視如寇讎
 往日無仇   往日無讎
 近日無仇   近日無讎
 李連杰      李連杰
-周杰倫      周杰倫
+杰倫 杰倫
+杰威爾      杰威爾
+黃詩杰      黃詩杰
+陳士杰      陳士杰
+林杰樑      林杰樑
+許聖杰      許聖杰
+張杰 張杰
+孫杰 孫杰
+陳杰 陳杰
+黃杰 黃杰
+謝杰 謝杰
 寶曆 寶曆
 涂謹申      涂謹申
 涂鴻欽      涂鴻欽
 于明濤      于明濤
 于根偉      于根偉
 于樹潔      于樹潔
-于正昇      于正昇
 于漢超      于漢超
 于洪區      于洪區
 于湘蘭      于湘蘭
 余三勝      余三勝
 簡筑翎      簡筑翎
 楊雅筑      楊雅筑
-杰威爾音樂        杰威爾音樂
 尸羅精舍   尸羅精舍
 騰格里      騰格里
 村里長      村里長
 進制 進制
 模范三軍   模范三軍
-黃詩杰      黃詩杰
 陳冲 陳冲
 劉佳怜      劉佳怜
 范賢惠      范賢惠
 苹果 蘋果
 苹果干      蘋果乾
 后庄 后庄
+後庄 後庄
 龜山庄      龜山庄
 寶山庄      寶山庄
 員山庄      員山庄
 鮮于樞      鮮于樞
 鳳凰于飛   鳳凰于飛
 賦范 賦范
-陳士杰      陳士杰
-林杰樑      林杰樑
 茅于軾      茅于軾
 陳有后      陳有后
 天神之后   天神之后
 划動 划動
 划得來      划得來
 划著 划著
+划著 劃著名
 划進 划進
 划過 划過
 划龍舟      划龍舟
 么弟 么弟
 六么 六么
 么雞 么雞
+么正 么正
+么女 么女
+么九 么九
+么子 么子
+么半 么半
 義联 義联
 杠轂 杠轂
 局促 侷促
 万余 萬餘
 亿余 億餘
 兆余 兆餘
+仅余 僅餘
 0余   0餘
 1余   1餘
 2余   2餘
 7余   7餘
 8余   8餘
 9余   9餘
+带余 帶餘
+余干 餘干
+余江 餘江
 于余曲折   于餘曲折
 尸居余气   尸居餘氣
 余光生      余光生
 曲钱 麴錢
 曲车 麴車
 鼠曲草      鼠麴草
-大曲酒      大麴酒
-泸州大曲   瀘州大麯 #商標名
-洋河大曲   洋河大麴
-双沟大曲   雙溝大麯 #商標名
\ No newline at end of file
+曲酒 麯酒
+泸州大曲   瀘州大麯  #商標名
+洋河大曲   洋河大麯
+沟大曲      溝大麯
+朱砂 硃砂
+银朱 銀硃
+喲喂 喲喂
+鳥栖 鳥栖
+澄江县      澂江縣 #以下為含異體字地名
+横峰县      橫峯縣
+鹤峰县      鶴峯縣
+五峰县      五峯縣
+兰溪市      蘭谿市
+金溪县      金谿縣
+竹溪县      竹谿縣
+辰溪县      辰谿縣
+松溪县      松谿縣
+慈溪 慈谿
+浚州 濬州
+浚县 濬縣
+穆棱 穆稜
+绥棱 綏稜
+丹棱 丹稜
+仙游 仙遊
+麟游 麟遊
+乐游原      樂遊原
+托克逊      託克遜
+托里县      託里縣
+沾化 霑化
+沾益 霑益
+岫岩 岫巖
+黄岩县      黃巖縣
+黄岩区      黃巖區
+北仑河      北崙河
+昆嵛 崑嵛
+昆承湖      崑承湖
+灵昆 靈崑
+龙岩 龍巖
+扑冬 撲鼕
+冬冬鼓      鼕鼕鼓
\ No newline at end of file
index f76a949..f202c9d 100644 (file)
@@ -1,4 +1,3 @@
-U+0347A㑺|U+04FCA俊|
 U+034BA㒺|U+07F54罔|
 U+034C2㓂|U+05BC7寇|
 U+03541㕁|U+05374却|
@@ -15,8 +14,6 @@ U+0384C㡌|U+05E3D帽|
 U+03898㢘|U+05EC9廉|
 U+03919㤙|U+06069恩|
 U+03966㥦|U+060EC惬|
-U+0396B㥫|U+060C7惇|
-U+039F1㧱|U+062FF拿|
 U+03A17㨗|U+06377捷|
 U+03A2A㨪|U+06643晃|
 U+03A3F㨿|U+0636E据|
@@ -61,7 +58,6 @@ U+04EB7亷|U+05EC9廉|
 U+04EBE亾|U+04EA1亡|
 U+04F48佈|U+05E03布|
 U+04F54佔|U+05360占|
-U+04FB7侷|U+05C40局|
 U+04FFB俻|U+05907备|
 U+05010倐|U+0500F倏|
 U+05016倖|U+05E78幸|
@@ -138,7 +134,6 @@ U+056D9囙|U+056E0因|
 U+05705圅|U+051FD函|
 U+0577F坿|U+09644附|
 U+0579C垜|U+0579B垛|
-U+0585A塚|U+051A2冢|
 U+0585F塟|U+0846C葬|
 U+05872塲|U+0573A场|
 U+05896墖|U+05854塔|
@@ -227,7 +222,7 @@ U+0617C慼|U+0621A戚|
 U+0617D慽|U+0621A戚|
 U+0617E慾|U+06B32欲|
 U+06187憇|U+061A9憩|
-U+061DE懞|U+08499蒙|
+U+061DE懞|U+061DE懞|U+08499蒙|
 U+0621E戞|U+0621B戛|
 U+0622F戯|U+0620F戏|
 U+06239戹|U+05384厄|
@@ -275,7 +270,6 @@ U+0671E朞|U+0671F期|
 U+06722朢|U+0671B望|
 U+0672E朮|U+0672F术|
 U+06736朶|U+06735朵|
-U+06792枒|U+04E2B桠|
 U+067B1枱|U+053F0台|
 U+067FA柺|U+062D0拐|
 U+067FB査|U+067E5查|
@@ -287,8 +281,6 @@ U+06852桒|U+06851桑|
 U+0686E桮|U+0676F杯|
 U+0687A桺|U+067F3柳|
 U+068CA棊|U+068CB棋|
-U+06900椀|U+07897碗|
-U+06909椉|U+04E58乘|
 U+06917椗|U+07887碇|
 U+06936椶|U+068D5棕|
 U+06937椷|U+07F04缄|
@@ -324,7 +316,6 @@ U+06DDB淛|U+06D59浙|
 U+06DE8淨|U+051C0净|
 U+06DE9淩|U+051CC凌|
 U+06E67湧|U+06D8C涌|
-U+06E7B湻|U+06DF3淳|
 U+06E7C湼|U+06D85涅|
 U+06EBC溼|U+06E7F湿|
 U+06ED9滙|U+06C47汇|
@@ -417,7 +408,6 @@ U+077C1矁|U+07785瞅|
 U+077C7矇|U+08499蒙|U+077C7矇|
 U+077D9矙|U+077B0瞰|
 U+07832砲|U+070AE炮|
-U+07843硃|U+06731朱|
 U+07881碁|U+068CB棋|
 U+078AA碪|U+07827砧|
 U+078DF磟|U+0788C碌|
@@ -446,7 +436,7 @@ U+07AE2竢|U+04FDF俟|
 U+07AEA竪|U+07AD6竖|
 U+07B5E筞|U+07B56策|
 U+07B69筩|U+07B52筒|
-U+07B6F筯|U+07BB8箸| 
+U+07B6F筯|U+07BB8箸|
 U+07B87箇|U+04E2A个|
 U+07B92箒|U+05E1A帚|
 U+07BA0箠|U+068F0棰|
@@ -567,7 +557,6 @@ U+08842衂|U+08844衄|
 U+08846衆|U+04F17众|
 U+08847衇|U+08109脉|
 U+0884A衊|U+08511蔑|
-U+08856衖|U+05F04弄|
 U+0885E衞|U+0536B卫|
 U+0887A衺|U+090AA邪|
 U+0889F袟|U+05E19帙|
@@ -584,7 +573,6 @@ U+08988覈|U+06838核|
 U+0898A覊|U+07F81羁|
 U+08994覔|U+089C5觅|
 U+089A9覩|U+07779睹|
-U+089D4觔|U+065A4斤|
 U+089DD觝|U+062B5抵|
 U+08A17託|U+06258托|U+08BAC讬|
 U+08A3C証|U+08BC1证|
@@ -649,7 +637,6 @@ U+09049遉|U+04FA6侦|
 U+0904A遊|U+06E38游|
 U+09061遡|U+06EAF溯|
 U+0906F遯|U+09041遁|
-U+09076遶|U+07ED5绕|
 U+09156酖|U+09E29鸩|
 U+09167酧|U+0916C酬|
 U+09183醃|U+0814C腌|
@@ -711,7 +698,6 @@ U+096A3隣|U+090BB邻|
 U+096B7隷|U+096B6隶|
 U+0976D靭|U+097E7韧|
 U+09771靱|U+097E7韧|
-U+0978C鞌|U+0978D鞍|
 U+097A6鞦|U+079CB秋|U+097A7鞧|
 U+097B5鞵|U+0978B鞋|
 U+097BE鞾|U+09774靴|
@@ -734,6 +720,7 @@ U+098F1飱|U+098E7飧|
 U+09901餁|U+0996A饪|
 U+09908餈|U+07CCD糍|
 U+09918餘|U+09980馀|U+04F59余|
+U+09935餵|U+05582喂|
 U+09939餹|U+07CD6糖|
 U+0993B餻|U+07CD5糕|
 U+0993D餽|U+09988馈|
@@ -742,22 +729,18 @@ U+09951饑|U+09965饥|
 U+0995D饝|U+0998D馍|
 U+099C8駈|U+09A71驱|
 U+099E1駡|U+09A82骂|
-U+099EE駮|U+09A73驳|
 U+09A10騐|U+09A8C验|
 U+09A23騣|U+09B03鬃|
 U+09A58驘|U+09AA1骡|
 U+09ABD骽|U+0817F腿|
 U+09ABE骾|U+09CA0鲠|
 U+09AC8髈|U+08180膀|
-U+09AE3髣|U+04EFF仿|
 U+09AE5髥|U+09AEF髯|
-U+09AF4髴|U+04F5B佛|
 U+09B00鬀|U+05243剃|
 U+09B09鬉|U+09B03鬃|
 U+09B26鬦|U+06597斗|
 U+09B28鬨|U+054C4哄|
 U+09B2A鬪|U+06597斗|
-U+09B2D鬭|U+06597斗|
 U+09B30鬰|U+090C1郁|
 U+09B8E鮎|U+09C87鲇|
 U+09B9D鮝|U+09C9E鲞|
@@ -786,46 +769,24 @@ U+09EF4黴|U+09709霉|
 U+09F03鼃|U+086D9蛙|
 U+09F07鼇|U+09CCC鳌|
 U+09F08鼈|U+09CD6鳖|
-U+09F15鼕|U+051AC冬|
+U+09F15鼕|U+0549A咚|
 U+09F63齣|U+051FA出|
 U+09F67齧|U+0556E啮|
 U+09F69齩|U+054AC咬|
-U+201EE𠇮|U+0547D命|
-U+20302𠌂|U+04F1E伞|
 U+20542𠕂|U+0518D再|
 U+20545𠕅|U+0518D再|
-U+20587𠖇|U+051A5冥|
 U+207B0𠞰|U+0527F剿|
-U+20ABE𠪾|U+05386历|
-U+20D1F𠴟|U+054A9咩|
-U+20EF3𠻳|U+055FD嗽|
-U+21428𡐨|U+091CE野|
 U+21681𡚁|U+05F0A弊|
-U+21A18𡨘|U+051A4冤|
 U+21A25𡨥|U+05BC7寇|
-U+21B36𡬶|U+05BFB寻|
 U+21ED5𡻕|U+05C81岁|
-U+22B38𢬸|U+062EC括|
-U+22B4F𢭏|U+06363捣|
-U+22BA5𢮥|U+064CD操|
-U+22DEC𢷬|U+06363捣|
 U+2365C𣙜|U+069B7榷|
 U+242EE𤋮|U+07199熙|
 U+24A0F𤨏|U+07410琐|
-U+24C1C𤰜|U+04EA9亩|
 U+24C48𤱈|U+04EA9亩|
-U+24C4A𤱊|U+07559留|
 U+24EA5𤺥|U+07629瘩|
-U+25128𥄨|U+07785瞅|
-U+25997𥦗|U+07A97窗|
-U+25CBB𥲻|U+07E82纂|
-U+260B3𦂳|U+07D27紧|
-U+260C2𦃂|U+07D27紧|
-U+26246𦉆|U+078B4碴|
 U+262B1𦊱|U+06302挂|
 U+26351𦍑|U+07F8C羌|
 U+26548𦕈|U+07707眇|
-U+26A99𦪙|U+0447D䑽|
 U+26D4F𦵏|U+0846C葬|
 U+28F7B𨽻|U+096B6隶|
 U+294D0𩓐|U+08116脖|
index 15192ea..9c81a80 100644 (file)
@@ -11,4 +11,6 @@
 幺
 苹
 厘
-𫍟
\ No newline at end of file
+𫍟
+垴
+岙
\ No newline at end of file
index 4d313b4..64e41b1 100644 (file)
 複流
 反複製
 複對數
+複分解
+複合材
+複合物
+複合體
+複合制
+複合式
+複合弓
+複合函數
 撥穀
 扁擬穀盜蟲
 不穀
 脫穀機
 年穀
 礱穀機
-孤寡不穀
 穀米
 穀旦
 穀圭
 南迴鐵路
 北迴線
 北迴鐵路
-文匯報
-河流匯集
-品彙
-博彙
 滙豐
 伙頭
-方几
 伏几
 高几
 雪窗螢几
 灕然
 澤滲灕而下降
 裏勾外連
-裏手
 水里溪
 二里頭
 年歷史
 辣麵
 肉麵
 燴麵
-雲吞麵
+蝦麵
+雲吞
+一碗麵
+吃碗麵
 冷面相
 糞穢衊面
 僕僕
 瀋河
 瀋水
 瀋州
+瀋北
+瀋吉
 瀋山線
-瀋吉線
-墨沈
+瀋山鐵路
 瀋海鐵路
+瀋丹線
+瀋丹鐵路
+瀋丹客運
+瀋大線
+瀋大鐵路
+瀋大高速
+秦瀋客運
 遼瀋
+京瀋
 胜肽
 胜鍵
 雙胜類
 骨罈
 菜罈
 罈騞
-餵驢
-剪牡丹喂牛
 鹹粥
 鹹食
 鹹潟
 龍眼乾
 乾乾淨淨
 乾柴烈火
-乾乾兒的
 桑乾
 撈乾
 搭乾鋪
 幹事
 幹什麼
 幹細胞
-頭兒幹
 配水幹管
-繐幃飄井幹
-站乾岸兒
-秋陰入井幹
-沒梢幹
+口燥唇乾
+舌乾唇焦
+不食乾腊
+不乾不淨
+乾重
+蒸乾
+乾物
+乾食
+乾鍋
 楨幹
-據榦而窺井底
-井榦摧敗
-杰特
+新幹縣
+誰幹的
+得力幹將
+黑幹將
+的幹將
 李連杰
-周杰
+周杰
 杰倫
-姜文杰
+文杰
+杰威爾
+黃詩杰
+何杰
+狄志杰
+伊適杰
+張杰
+孫杰
+胡杰
+陳杰
+黃杰
+謝杰
+正杰
+柳斌杰
 稜鏡
 稜角
 稜台
 筑邦
 筑陽
 南筑
+悲筑
 批准的
 核准的
 為準
 舊錶
 台鐘
 鐘響
+船鐘
+電波鐘
+石鐘
+自由鐘
+鐘螺
+鐘花
 計時錶
 防水錶
 顯示表格
 遊牧
 遊蕩
 遊刃
+遊美學務
 黑奴籲天錄
 林郁方
 讚歌
 爭奇鬥豔
 使其鬥
 鬥地主
+鈎心鬥角
+鬥劍
+激鬥
+政鬥
+鬥獸
+鬥龍
 石樑
 木樑
 藏歷史
 頁面
-方面
 面條目
 大讚
 唄讚
 詩讚
 賞讚
 讚唄
+點讚
 飛紮
 紮裹
 紮腳
 徵吏
 徵令
 本徵
-船鐘
 黃鈺筑
 香山庄
 當準
 趙治勳
 殭屍
 有栖川
+栗栖溪
+鳥栖市
 兇惡
 兇狠
 兇猛
 鼕鼕鼓
 剷頭
 剷刈
-口燥唇乾
-舌乾唇焦
 花菴詞選
 渾箇
 箇中原因
 箇中好手
 箇中強手
 箇中滋味
-箇中奧
-箇中奧妙
+箇中奧
+箇中道理
 箇中玄機
-箇中消息
-箇中資訊
-箇中訊息
+箇中翹楚
+,箇中
+。箇中
+的箇中
 對表達
 對表現
 對表演
 之一只
 之二只
 之八九只
-也斗了膽
-事情干脆
-事都干脆
 二只得
 亦云
 人云
 以自制
-們斗了膽
-你斗了膽
 其一只
 其二只
 其八九只
 台風穩健
 穩健的台風
 台風獎
+電視台風
+足球台
+網球台
 合府上
 後面店
 向往常
 精制住
 精制服
 經有云
-給我干脆
 編制法
 能干休
 能干戈
 面店鋪
 面粉碎
 面粉紅
-面食麵
 面食飯
 顛顛仆仆
 高干擾
 黃金表
 天后宮
 一吊錢
-不食乾腊
 傳位于四太子
 儉确之教
 党懷英
 八蜡
 憑几
 南宮适
+洪适
+李适
 大蜡
 子云
 分子雲
 折子戲
 搤肮拊背
 文采郁郁
-洪适
 腊之以為餌
 腊毒
 蜡月
 宜云
 貴价
 郁郁菲菲
-不乾不淨
 生發生
 必須
 須根據
 ·范
 剋剝
+休克期
+克期間
+溫洛克期
 科尼亞克期
 馬斯垂克期
 滿拚自盡
 拚絕
 成於思
 單單於
+名單於
 積澱
 澱積
 澱北片
 范文藤
 范文虎
 范文照
-乾重
-鈎心鬥角
 全面包圍
 全面包裹
 機械系
 體系
 心理
-複分解
 鹰鵰
 天地志狼
 薴烯
 山裡有
 棉裡
 語裡
+言裡
+境裡
+境里程
+中境里
 方法裡
 語法裡
 看法裡
 憲法裡
 用法裡
 法裡,
+框裡
+碗裡
+電梯裡
+網站裡
+行家裡手
 首發
 夸脫
-誰幹的
-鐘螺
 風采
 代碼表
 編碼表
 劃入
 中庄子
 埔裏社
+手裏劍
+裏水鎮
+裏運河
 懸掛
 僱傭
 四捨六入
 莜麵
 簡筑翎
 楊雅筑
-魔杰座
-杰威爾音樂
 彭于晏
 尸羅精舍
 進制
-黃詩杰
-何杰
 劉佳怜
 于小惠
 于耘婕
 劉芸后
 謝華后
 趙惠后
+昭惠后
+周惠后
+孝惠后
 趙威后
 聖后
 陳有后
 許虬
-狄志杰
-伊適杰
 于冠華
 于雲鶴
 于忠肅集
 于天龍
 于謹
 于榮光
-電波鐘
 掛名
-啟發式
 舞后
 甄后
 郭后
 于寶軒
 于震
 於震前
\96¼é\9c\87å\90\8e
\96¼é\9c\87å¾\8c
 於震中
 固定制
 毗婆尸佛
 划艇
 划行
 划算
+划着船
+划着竹筏
+划着獨木舟
 總裁制
 仲裁制
 獨裁制
 恒生
 嚴云農
-手裏劍
 伊東怜
 衛後莊公
 並行
 併發重症
 併發模式
 併發型模式
+啟發式
+連發式
 色長髮
 頭長髮
 的長髮
+黑長髮
+留長髮
+髮披肩
+髮及腰
 後天
 學家
 游離
 功勳
 蝎虎
 磨蝎
-鬥劍
-激鬥
-政鬥
 沈海蓉
 方志恒
 古蹟
 騰衝
 沖天
 豐臺
+煙臺
 陽穀
-蒸乾
 太醜
 御製
 合併
 皮托管
 白面包青天
 天神之后
-栗栖溪
 羅馬曆
 羅馬歷史
 羅馬歷代
 自誇
 誇稱
 誇讚
-更加注
+讚嘆
 繼承制
 布穀鳥
 黎克特制
 墨瀋
 米瀋
 拾瀋
-乾物
 姦污
 託兒
 同人誌
 衝着
 確係
 乃係
-開山
+開山
 穀祿
 製衣
 巨製
 錦滷
 汤滷
 浸滷
-石鐘
-石鐘山
 花葯
 聚葯雄蕊
 遺蹟
 辦公檯
 檯面上
 上檯面
+檯面化
 牴觸
 牴牾
 角牴
 涼蓆
 灘蓆
 麻將蓆
-裏水鎮
 被廢後
 蒸製
 體徵
 被繫上
 繫上,
 繫上。
+繫舟
 亂發生
 亂發脾氣
 秀發村
 秀發現
 秀發生
 秀發起
-秀發展
\ No newline at end of file
+秀發展
+縮短發
+簡短發
+短發生
+古人有云
+昔人有云
+云敞
+喂,
+喂!
+喂喲
+喲喂
+啊喂
+呵喂
+呦喂
+水表面
+表面包
+松口鎮
+沙瑯
+琺瑯
+菜餚
\ No newline at end of file
index 4a3613b..2ff49c4 100644 (file)
 複流
 複畝珍
 起複
-餘
\ No newline at end of file
+餘
+旋乾轉坤
+乾坤
+乾卦
+乾隆
+乾掉
+讚嘆不已
+讚歎
+好乾
+加註
+幹將
+鼕
+彙報
+彙整
+彙編
+彙集
\ No newline at end of file
index 3864e3c..3c5d28b 100644 (file)
@@ -52,9 +52,7 @@ class RunJobs extends Maintenance {
        }
 
        public function execute() {
-               if ( wfReadOnly() ) {
-                       $this->error( "Unable to run jobs; the wiki is in read-only mode.", 1 ); // die
-               }
+               global $wgCommandLineMode;
 
                if ( $this->hasOption( 'procs' ) ) {
                        $procs = intval( $this->getOption( 'procs' ) );
@@ -68,21 +66,29 @@ class RunJobs extends Maintenance {
                        }
                }
 
-               $json = ( $this->getOption( 'result' ) === 'json' );
+               $outputJSON = ( $this->getOption( 'result' ) === 'json' );
+
+               // Enable DBO_TRX for atomicity; JobRunner manages transactions
+               // and works well in web server mode already (@TODO: this is a hack)
+               $wgCommandLineMode = false;
 
                $runner = new JobRunner( LoggerFactory::getInstance( 'runJobs' ) );
-               if ( !$json ) {
+               if ( !$outputJSON ) {
                        $runner->setDebugHandler( array( $this, 'debugInternal' ) );
                }
+
                $response = $runner->run( array(
                        'type'     => $this->getOption( 'type', false ),
                        'maxJobs'  => $this->getOption( 'maxjobs', false ),
                        'maxTime'  => $this->getOption( 'maxtime', false ),
                        'throttle' => $this->hasOption( 'nothrottle' ) ? false : true,
                ) );
-               if ( $json ) {
+
+               if ( $outputJSON ) {
                        $this->output( FormatJson::encode( $response, true ) );
                }
+
+               $wgCommandLineMode = true;
        }
 
        /**
index ec5a9a0..e2f05b6 100644 (file)
@@ -1269,6 +1269,7 @@ return array(
                'dependencies' => array(
                        'mediawiki.util',
                        'mediawiki.language',
+                       'dom-level2-shim',
                ),
                'targets' => array( 'desktop', 'mobile' ),
        ),
@@ -1695,6 +1696,14 @@ return array(
                'skipFunction' => 'resources/src/es5-skip.js',
        ),
 
+       /* dom-level2-shim */
+       // IE 8
+       'dom-level2-shim' => array(
+               'scripts' => 'resources/src/polyfill-nodeTypes.js',
+               'targets' => array( 'desktop', 'mobile' ),
+               'skipFunction' => 'resources/src/dom-level2-skip.js',
+       ),
+
        /* OOjs */
        'oojs' => array(
                'scripts' => array(
diff --git a/resources/src/dom-level2-skip.js b/resources/src/dom-level2-skip.js
new file mode 100644 (file)
index 0000000..484c295
--- /dev/null
@@ -0,0 +1,6 @@
+/*!
+ * Skip function for dom-level2-shim module.
+ *
+ * Tests for window.Node because that's the only thing that this shim is adding.
+ */
+return !!window.Node;
index 7c87d68..b4efa9a 100644 (file)
@@ -5,6 +5,7 @@
        font-weight: bold;
 }
 
+.mw-version-ext-license,
 .mw-version-ext-vcs-timestamp {
        white-space: nowrap;
 }
index d940100..6e12f49 100644 (file)
@@ -22,8 +22,8 @@
         * dialog box. Submitting that dialog box appends its contents to a
         * wiki page that you specify, as a new section.
         *
-        * This feature works with classic MediaWiki pages
-        * and is not compatible with LiquidThreads or Flow.
+        * This feature works with any content model that defines a
+        * `mw.messagePoster.MessagePoster`.
         *
         * Minimal usage example:
         *
diff --git a/resources/src/polyfill-nodeTypes.js b/resources/src/polyfill-nodeTypes.js
new file mode 100644 (file)
index 0000000..556b51b
--- /dev/null
@@ -0,0 +1,19 @@
+/**
+ * Adds window.Node with node types according to:
+ * http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1950641247
+ */
+
+window.Node = window.Node || {
+       ELEMENT_NODE:                1,
+       ATTRIBUTE_NODE:              2,
+       TEXT_NODE:                   3,
+       CDATA_SECTION_NODE:          4,
+       ENTITY_REFERENCE_NODE:       5,
+       ENTITY_NODE:                 6,
+       PROCESSING_INSTRUCTION_NODE: 7,
+       COMMENT_NODE:                8,
+       DOCUMENT_NODE:               9,
+       DOCUMENT_TYPE_NODE:          10,
+       DOCUMENT_FRAGMENT_NODE:      11,
+       NOTATION_NODE:               12
+};
index def23da..1a2e0cb 100644 (file)
@@ -66,8 +66,10 @@ $wgAutoloadClasses += array(
        'TestRecentChangesHelper' => "$testDir/phpunit/includes/changes/TestRecentChangesHelper.php",
 
        # tests/phpunit/includes/content
-       'DummyContentHandlerForTesting' => "$testDir/phpunit/includes/content/ContentHandlerTest.php",
-       'DummyContentForTesting' => "$testDir/phpunit/includes/content/ContentHandlerTest.php",
+       'DummyContentHandlerForTesting' => "$testDir/phpunit/mocks/content/DummyContentHandlerForTesting.php",
+       'DummyContentForTesting' => "$testDir/phpunit/mocks/content/DummyContentForTesting.php",
+       'DummyNonTextContentHandler' => "$testDir/phpunit/mocks/content/DummyNonTextContentHandler.php",
+       'DummyNonTextContent' => "$testDir/phpunit/mocks/content/DummyNonTextContent.php",
        'ContentHandlerTest' => "$testDir/phpunit/includes/content/ContentHandlerTest.php",
        'JavaScriptContentTest' => "$testDir/phpunit/includes/content/JavaScriptContentTest.php",
        'TextContentTest' => "$testDir/phpunit/includes/content/TextContentTest.php",
index 15778e4..27959b1 100644 (file)
  */
 class EditPageTest extends MediaWikiLangTestCase {
 
+       protected function setUp() {
+               global $wgExtraNamespaces, $wgNamespaceContentModels, $wgContentHandlers, $wgContLang;
+
+               parent::setUp();
+
+               $this->setMwGlobals( array(
+                       'wgExtraNamespaces' => $wgExtraNamespaces,
+                       'wgNamespaceContentModels' => $wgNamespaceContentModels,
+                       'wgContentHandlers' => $wgContentHandlers,
+                       'wgContLang' => $wgContLang,
+               ) );
+
+               $wgExtraNamespaces[12312] = 'Dummy';
+               $wgExtraNamespaces[12313] = 'Dummy_talk';
+
+               $wgNamespaceContentModels[12312] = "testing";
+               $wgContentHandlers["testing"] = 'DummyContentHandlerForTesting';
+
+               MWNamespace::getCanonicalNamespaces( true ); # reset namespace cache
+               $wgContLang->resetNamespaces(); # reset namespace cache
+       }
+
        /**
         * @dataProvider provideExtractSectionTitle
         * @covers EditPage::extractSectionTitle
@@ -499,4 +521,37 @@ hello
                $this->assertEdit( 'EditPageTest_testAutoMerge', null, 'Berta', $bertasEdit,
                        $expectedCode, $expectedText, $message );
        }
+
+       /**
+        * @depends testAutoMerge
+        */
+       public function testCheckDirectEditingDisallowed_forNonTextContent() {
+               $title = Title::newFromText( 'Dummy:NonTextPageForEditPage' );
+               $page = WikiPage::factory( $title );
+
+               $article = new Article( $title );
+               $article->getContext()->setTitle( $title );
+               $ep = new EditPage( $article );
+               $ep->setContextTitle( $title );
+
+               $user = $GLOBALS['wgUser'];
+
+               $edit = array(
+                       'wpTextbox1' => serialize( 'non-text content' ),
+                       'wpEditToken' => $user->getEditToken(),
+                       'wpEdittime' => '',
+                       'wpStarttime' => wfTimestampNow()
+               );
+
+               $req = new FauxRequest( $edit, true );
+               $ep->importFormData( $req );
+
+               $this->setExpectedException(
+                       'MWException',
+                       'This content model is not supported: testing'
+               );
+
+               $ep->internalAttemptSave( $result, false );
+       }
+
 }
index b74a7ea..370b5b2 100644 (file)
@@ -425,4 +425,24 @@ class UserTest extends MediaWikiTestCase {
                $this->assertFalse( $user->isLoggedIn() );
                $this->assertTrue( $user->isAnon() );
        }
+
+       /**
+        * @covers User::checkAndSetTouched
+        */
+       public function testCheckAndSetTouched() {
+               $user = TestingAccessWrapper::newFromObject( User::newFromName( 'UTSysop' ) );
+               $this->assertTrue( $user->isLoggedIn() );
+
+               $touched = $user->getDBTouched();
+               $this->assertTrue(
+                       $user->checkAndSetTouched(), "checkAndSetTouched() succeded" );
+               $this->assertGreaterThan(
+                       $touched, $user->getDBTouched(), "user_touched increased with casOnTouched()" );
+
+               $touched = $user->getDBTouched();
+               $this->assertTrue(
+                       $user->checkAndSetTouched(), "checkAndSetTouched() succeded #2" );
+               $this->assertGreaterThan(
+                       $touched, $user->getDBTouched(), "user_touched increased with casOnTouched() #2" );
+       }
 }
index ea08c02..2edf0c6 100644 (file)
@@ -84,7 +84,7 @@ class ApiContinuationManagerTest extends MediaWikiTestCase {
                        'gcontinue' => 3,
                        'continue' => 'gcontinue||',
                ), $result->getResultData( 'continue' ) );
-               $this->assertSame( '', $result->getResultData( 'batchcomplete' ) );
+               $this->assertSame( true, $result->getResultData( 'batchcomplete' ) );
 
                $manager = self::getManager( '', $allModules, array( 'mock1', 'mock2' ) );
                $this->assertSame( false, $manager->isGeneratorDone() );
index 3179a45..865f1c2 100644 (file)
@@ -27,9 +27,14 @@ class ApiEditPageTest extends ApiTestCase {
 
                $wgExtraNamespaces[12312] = 'Dummy';
                $wgExtraNamespaces[12313] = 'Dummy_talk';
+               $wgExtraNamespaces[12314] = 'DummyNonText';
+               $wgExtraNamespaces[12315] = 'DummyNonText_talk';
 
                $wgNamespaceContentModels[12312] = "testing";
+               $wgNamespaceContentModels[12314] = "testing-nontext";
+
                $wgContentHandlers["testing"] = 'DummyContentHandlerForTesting';
+               $wgContentHandlers["testing-nontext"] = 'DummyNonTextContentHandler';
 
                MWNamespace::getCanonicalNamespaces( true ); # reset namespace cache
                $wgContLang->resetNamespaces(); # reset namespace cache
@@ -96,33 +101,6 @@ class ApiEditPageTest extends ApiTestCase {
                );
        }
 
-       public function testNonTextEdit() {
-               $name = 'Dummy:ApiEditPageTest_testNonTextEdit';
-               $data = serialize( 'some bla bla text' );
-
-               // -- test new page --------------------------------------------
-               $apiResult = $this->doApiRequestWithToken( array(
-                       'action' => 'edit',
-                       'title' => $name,
-                       'text' => $data, ) );
-               $apiResult = $apiResult[0];
-
-               // Validate API result data
-               $this->assertArrayHasKey( 'edit', $apiResult );
-               $this->assertArrayHasKey( 'result', $apiResult['edit'] );
-               $this->assertEquals( 'Success', $apiResult['edit']['result'] );
-
-               $this->assertArrayHasKey( 'new', $apiResult['edit'] );
-               $this->assertArrayNotHasKey( 'nochange', $apiResult['edit'] );
-
-               $this->assertArrayHasKey( 'pageid', $apiResult['edit'] );
-
-               // validate resulting revision
-               $page = WikiPage::factory( Title::newFromText( $name ) );
-               $this->assertEquals( "testing", $page->getContentModel() );
-               $this->assertEquals( $data, $page->getContent()->serialize() );
-       }
-
        /**
         * @return array
         */
@@ -493,4 +471,45 @@ class ApiEditPageTest extends ApiTestCase {
 
                $page->clear();
        }
+
+       public function testCheckDirectApiEditingDisallowed_forNonTextContent() {
+               $this->setExpectedException(
+                       'UsageException',
+                       'Direct editing via API is not supported for this content type.'
+               );
+
+               $this->doApiRequestWithToken( array(
+                       'action' => 'edit',
+                       'title' => 'Dummy:ApiEditPageTest_nonTextPageEdit',
+                       'text' => '{"animals":["kittens!"]}'
+               ) );
+       }
+
+       public function testSupportsDirectApiEditing_withContentHandlerOverride() {
+               $name = 'DummyNonText:ApiEditPageTest_testNonTextEdit';
+               $data = serialize( 'some bla bla text' );
+
+               $result = $this->doApiRequestWithToken( array(
+                       'action' => 'edit',
+                       'title' => $name,
+                       'text' => $data,
+               ) );
+
+               $apiResult = $result[0];
+
+               // Validate API result data
+               $this->assertArrayHasKey( 'edit', $apiResult );
+               $this->assertArrayHasKey( 'result', $apiResult['edit'] );
+               $this->assertEquals( 'Success', $apiResult['edit']['result'] );
+
+               $this->assertArrayHasKey( 'new', $apiResult['edit'] );
+               $this->assertArrayNotHasKey( 'nochange', $apiResult['edit'] );
+
+               $this->assertArrayHasKey( 'pageid', $apiResult['edit'] );
+
+               // validate resulting revision
+               $page = WikiPage::factory( Title::newFromText( $name ) );
+               $this->assertEquals( "testing-nontext", $page->getContentModel() );
+               $this->assertEquals( $data, $page->getContent()->serialize() );
+       }
 }
index 344af62..8ebdf60 100644 (file)
@@ -15,6 +15,11 @@ class ApiErrorFormatterTest extends MediaWikiTestCase {
                $result = new ApiResult( 8388608 );
                $formatter = new ApiErrorFormatter( $result, Language::factory( $lang ), $format, $useDB );
 
+               // Add default type
+               $expect1[ApiResult::META_TYPE] = 'assoc';
+               $expect2[ApiResult::META_TYPE] = 'assoc';
+               $expect3[ApiResult::META_TYPE] = 'assoc';
+
                $formatter->addWarning( 'string', 'mainpage' );
                $formatter->addError( 'err', 'mainpage' );
                $this->assertSame( $expect1, $result->getResultData(), 'Simple test' );
@@ -262,6 +267,7 @@ class ApiErrorFormatterTest extends MediaWikiTestCase {
                                        ApiResult::META_CONTENT => 'warnings',
                                ),
                        ),
+                       ApiResult::META_TYPE => 'assoc',
                ), $result->getResultData(), 'Simple test' );
 
                $result->reset();
@@ -293,6 +299,7 @@ class ApiErrorFormatterTest extends MediaWikiTestCase {
                                        ApiResult::META_CONTENT => 'warnings',
                                ),
                        ),
+                       ApiResult::META_TYPE => 'assoc',
                ), $result->getResultData(), 'Complex test' );
 
                $result->reset();
@@ -315,6 +322,7 @@ class ApiErrorFormatterTest extends MediaWikiTestCase {
                                        ApiResult::META_CONTENT => 'warnings',
                                ),
                        ),
+                       ApiResult::META_TYPE => 'assoc',
                ), $result->getResultData(), 'Status test' );
 
                $I = ApiResult::META_INDEXED_TAG_NAME;
index 7e43a24..f2fcb4a 100644 (file)
@@ -144,7 +144,12 @@ class ApiResultTest extends MediaWikiTestCase {
                $result2 = new ApiResult( 8388608 );
                $result2->addValue( null, 'foo', 'bar' );
                ApiResult::setValue( $arr, 'baz', $result2 );
-               $this->assertSame( array( 'baz' => array( 'foo' => 'bar' ) ), $arr );
+               $this->assertSame( array(
+                       'baz' => array(
+                               ApiResult::META_TYPE => 'assoc',
+                               'foo' => 'bar',
+                       )
+               ), $arr );
 
                $arr = array();
                ApiResult::setValue( $arr, 'foo', "foo\x80bar" );
@@ -182,6 +187,7 @@ class ApiResultTest extends MediaWikiTestCase {
                        'unnamed 2',
                        'a' => array( 'b' => array() ),
                        'setContentValue' => '3',
+                       ApiResult::META_TYPE => 'assoc',
                        ApiResult::META_CONTENT => 'setContentValue',
                ), $result->getResultData() );
                $this->assertSame( 20, $result->getSize() );
@@ -217,7 +223,9 @@ class ApiResultTest extends MediaWikiTestCase {
                        $result->getResultData( array( ApiResult::META_CONTENT ) ) );
 
                $result->reset();
-               $this->assertSame( array(), $result->getResultData() );
+               $this->assertSame( array(
+                       ApiResult::META_TYPE => 'assoc',
+               ), $result->getResultData() );
                $this->assertSame( 0, $result->getSize() );
 
                $result->addValue( null, 'foo', 1 );
@@ -227,7 +235,7 @@ class ApiResultTest extends MediaWikiTestCase {
                $result->addValue( null, 'bottom', '2' );
                $result->addValue( null, 'foo', '2', ApiResult::OVERRIDE );
                $result->addValue( null, 'bar', '2', ApiResult::OVERRIDE | ApiResult::ADD_ON_TOP );
-               $this->assertSame( array( 0, 'top', 'foo', 'bar', 'bottom' ),
+               $this->assertSame( array( 0, 'top', 'foo', 'bar', 'bottom', ApiResult::META_TYPE ),
                        array_keys( $result->getResultData() ) );
 
                $result->reset();
@@ -240,8 +248,10 @@ class ApiResultTest extends MediaWikiTestCase {
                $result->reset();
                $result->addValue( null, 'sub', array( 'foo' => 1 ) );
                $result->addValue( null, 'sub', array( 'bar' => 1 ) );
-               $this->assertSame( array( 'sub' => array( 'foo' => 1, 'bar' => 1 ) ),
-                       $result->getResultData() );
+               $this->assertSame( array(
+                       'sub' => array( 'foo' => 1, 'bar' => 1 ),
+                       ApiResult::META_TYPE => 'assoc',
+               ), $result->getResultData() );
 
                try {
                        $result->addValue( null, 'sub', array( 'foo' => 2, 'baz' => 2 ) );
@@ -264,6 +274,7 @@ class ApiResultTest extends MediaWikiTestCase {
                $this->assertSame( array(
                        'title' => (string)$title,
                        'obj' => array( 'foo' => 1, 'bar' => 2, ApiResult::META_TYPE => 'assoc' ),
+                       ApiResult::META_TYPE => 'assoc',
                ), $result->getResultData() );
 
                $fh = tmpfile();
@@ -313,9 +324,15 @@ class ApiResultTest extends MediaWikiTestCase {
 
                $result->reset();
                $result->addParsedLimit( 'foo', 12 );
-               $this->assertSame( array( 'limits' => array( 'foo' => 12 ) ), $result->getResultData() );
+               $this->assertSame( array(
+                       'limits' => array( 'foo' => 12 ),
+                       ApiResult::META_TYPE => 'assoc',
+               ), $result->getResultData() );
                $result->addParsedLimit( 'foo', 13 );
-               $this->assertSame( array( 'limits' => array( 'foo' => 13 ) ), $result->getResultData() );
+               $this->assertSame( array(
+                       'limits' => array( 'foo' => 13 ),
+                       ApiResult::META_TYPE => 'assoc',
+               ), $result->getResultData() );
                $this->assertSame( null, $result->getResultData( array( 'foo', 'bar', 'baz' ) ) );
                $this->assertSame( 13, $result->getResultData( array( 'limits', 'foo' ) ) );
                try {
@@ -345,7 +362,13 @@ class ApiResultTest extends MediaWikiTestCase {
                $result2 = new ApiResult( 8388608 );
                $result2->addValue( null, 'foo', 'bar' );
                $result->addValue( null, 'baz', $result2 );
-               $this->assertSame( array( 'baz' => array( 'foo' => 'bar' ) ), $result->getResultData() );
+               $this->assertSame( array(
+                       'baz' => array(
+                               'foo' => 'bar',
+                               ApiResult::META_TYPE => 'assoc',
+                       ),
+                       ApiResult::META_TYPE => 'assoc',
+               ), $result->getResultData() );
 
                $result = new ApiResult( 8388608 );
                $result->addValue( null, 'foo', "foo\x80bar" );
@@ -355,6 +378,7 @@ class ApiResultTest extends MediaWikiTestCase {
                        'foo' => "foo\xef\xbf\xbdbar",
                        'bar' => "\xc3\xa1",
                        'baz' => 74,
+                       ApiResult::META_TYPE => 'assoc',
                ), $result->getResultData() );
        }
 
@@ -403,7 +427,7 @@ class ApiResultTest extends MediaWikiTestCase {
                $result->removePreserveKeysList( null, 'baz' );
                $result->addArrayTypeRecursive( null, 'default' );
                $result->addArrayType( null, 'array' );
-               $this->assertSame( $expect, $result->getResultData() );
+               $this->assertEquals( $expect, $result->getResultData() );
 
                $arr = array( 'foo' => array( 'bar' => array() ) );
                $expect = array(
@@ -1019,6 +1043,9 @@ class ApiResultTest extends MediaWikiTestCase {
                        if ( preg_match( '/Use of ApiResult::\S+ was deprecated in MediaWiki \d+.\d+\./', $errstr ) ) {
                                return true;
                        }
+                       if ( preg_match( '/Use of ApiMain to ApiResult::__construct was deprecated in MediaWiki \d+.\d+\./', $errstr ) ) {
+                               return true;
+                       }
                        return false;
                } );
                $reset = new ScopedCallback( 'restore_error_handler' );
@@ -1211,7 +1238,7 @@ class ApiResultTest extends MediaWikiTestCase {
                        'gcontinue' => 3,
                        'continue' => 'gcontinue||',
                ), $result->getResultData( 'continue' ) );
-               $this->assertSame( '', $result->getResultData( 'batchcomplete' ) );
+               $this->assertSame( true, $result->getResultData( 'batchcomplete' ) );
                $this->assertSame( array(
                        'mocklist' => array( 'mlcontinue' => 2 ),
                        'generator' => array( 'gcontinue' => 3 ),
@@ -1229,7 +1256,7 @@ class ApiResultTest extends MediaWikiTestCase {
                        'gcontinue' => 3,
                        'continue' => 'gcontinue||mocklist',
                ), $result->getResultData( 'continue' ) );
-               $this->assertSame( '', $result->getResultData( 'batchcomplete' ) );
+               $this->assertSame( true, $result->getResultData( 'batchcomplete' ) );
                $this->assertSame( array(
                        'generator' => array( 'gcontinue' => 3 ),
                ), $result->getResultData( 'query-continue' ) );
@@ -1283,7 +1310,7 @@ class ApiResultTest extends MediaWikiTestCase {
                        'mlcontinue' => 2,
                        'continue' => '-||mock1|mock2',
                ), $result->getResultData( 'continue' ) );
-               $this->assertSame( '', $result->getResultData( 'batchcomplete' ) );
+               $this->assertSame( true, $result->getResultData( 'batchcomplete' ) );
                $this->assertSame( array(
                        'mocklist' => array( 'mlcontinue' => 2 ),
                ), $result->getResultData( 'query-continue' ) );
@@ -1296,7 +1323,7 @@ class ApiResultTest extends MediaWikiTestCase {
                $result->endContinuation( 'raw' );
                $result->endContinuation( 'standard' );
                $this->assertSame( null, $result->getResultData( 'continue' ) );
-               $this->assertSame( '', $result->getResultData( 'batchcomplete' ) );
+               $this->assertSame( true, $result->getResultData( 'batchcomplete' ) );
                $this->assertSame( null, $result->getResultData( 'query-continue' ) );
                $main->setContinuationManager( null );
 
index 67949ab..cabf62b 100644 (file)
@@ -33,6 +33,7 @@ abstract class ApiFormatTestBase extends MediaWikiTestCase {
                        $main->getModuleManager()->addModule( $this->printerName, 'format', $class );
                }
                $result = $main->getResult();
+               $result->addArrayType( null, 'default' );
                foreach ( $data as $k => $v ) {
                        $result->addValue( null, $k, $v );
                }
index 2431761..cd73522 100644 (file)
@@ -61,7 +61,7 @@ class ApiQueryContinue2Test extends ApiQueryContinueTestBase {
                };
                // generator + 1 prop + 1 list
                $data = $this->query( $mk( 99, 99, true ), 1, 'g1p', false ) +
-                       array( 'batchcomplete' => '' );
+                       array( 'batchcomplete' => true );
                $this->checkC( $data, $mk( 1, 1, true ), 6, 'g1p-11t' );
                $this->checkC( $data, $mk( 2, 2, true ), 3, 'g1p-22t' );
                $this->checkC( $data, $mk( 1, 1, false ), 6, 'g1p-11f' );
index de9965b..d441f4c 100644 (file)
@@ -67,7 +67,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                        );
                };
                $data = $this->query( $mk( 99 ), 1, '1L', false ) +
-                       array( 'batchcomplete' => '' );
+                       array( 'batchcomplete' => true );
 
                // 1 list
                $this->checkC( $data, $mk( 1 ), 5, '1L-1' );
@@ -95,7 +95,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                };
                // 2 lists
                $data = $this->query( $mk( 99, 99 ), 1, '2L', false ) +
-                       array( 'batchcomplete' => '' );
+                       array( 'batchcomplete' => true );
                $this->checkC( $data, $mk( 1, 1 ), 5, '2L-11' );
                $this->checkC( $data, $mk( 2, 2 ), 3, '2L-22' );
                $this->checkC( $data, $mk( 3, 3 ), 2, '2L-33' );
@@ -120,7 +120,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                };
                // generator + 1 prop
                $data = $this->query( $mk( 99, 99 ), 1, 'G1P', false ) +
-                       array( 'batchcomplete' => '' );
+                       array( 'batchcomplete' => true );
                $this->checkC( $data, $mk( 1, 1 ), 11, 'G1P-11' );
                $this->checkC( $data, $mk( 2, 2 ), 6, 'G1P-22' );
                $this->checkC( $data, $mk( 3, 3 ), 4, 'G1P-33' );
@@ -146,7 +146,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                };
                // generator + 2 props
                $data = $this->query( $mk( 99, 99, 99 ), 1, 'G2P', false ) +
-                       array( 'batchcomplete' => '' );
+                       array( 'batchcomplete' => true );
                $this->checkC( $data, $mk( 1, 1, 1 ), 16, 'G2P-111' );
                $this->checkC( $data, $mk( 2, 2, 2 ), 9, 'G2P-222' );
                $this->checkC( $data, $mk( 3, 3, 3 ), 6, 'G2P-333' );
@@ -180,7 +180,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                };
                // generator + 1 prop + 1 list
                $data = $this->query( $mk( 99, 99, 99 ), 1, 'G1P1L', false ) +
-                       array( 'batchcomplete' => '' );
+                       array( 'batchcomplete' => true );
                $this->checkC( $data, $mk( 1, 1, 1 ), 11, 'G1P1L-111' );
                $this->checkC( $data, $mk( 2, 2, 2 ), 6, 'G1P1L-222' );
                $this->checkC( $data, $mk( 3, 3, 3 ), 4, 'G1P1L-333' );
@@ -218,7 +218,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                };
                // generator + 1 prop + 1 list
                $data = $this->query( $mk( 99, 99, 99, 99, 99 ), 1, 'G2P2L1M', false ) +
-                       array( 'batchcomplete' => '' );
+                       array( 'batchcomplete' => true );
                $this->checkC( $data, $mk( 1, 1, 1, 1, 1 ), 16, 'G2P2L1M-11111' );
                $this->checkC( $data, $mk( 2, 2, 2, 2, 2 ), 9, 'G2P2L1M-22222' );
                $this->checkC( $data, $mk( 3, 3, 3, 3, 3 ), 6, 'G2P2L1M-33333' );
@@ -249,7 +249,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                };
                // generator + 1 prop
                $data = $this->query( $mk( 99, true, 99, true ), 1, 'G=P', false ) +
-                       array( 'batchcomplete' => '' );
+                       array( 'batchcomplete' => true );
 
                $this->checkC( $data, $mk( 1, true, 1, true ), 4, 'G=P-1t1t' );
                $this->checkC( $data, $mk( 2, true, 2, true ), 2, 'G=P-2t2t' );
@@ -296,7 +296,7 @@ class ApiQueryContinueTest extends ApiQueryContinueTestBase {
                };
                // generator + 1 list
                $data = $this->query( $mk( 99, true, 99, true ), 1, 'G=L', false ) +
-                       array( 'batchcomplete' => '' );
+                       array( 'batchcomplete' => true );
 
                $this->checkC( $data, $mk( 1, true, 1, true ), 5, 'G=L-1t1t' );
                $this->checkC( $data, $mk( 2, true, 2, true ), 3, 'G=L-2t2t' );
index 988a59e..63743eb 100644 (file)
@@ -338,6 +338,11 @@ class ContentHandlerTest extends MediaWikiTestCase {
        }
        */
 
+       public function testSupportsDirectEditing() {
+               $handler = new DummyContentHandlerForTesting( CONTENT_MODEL_JSON );
+               $this->assertFalse( $handler->supportsDirectEditing(), 'direct editing is not supported' );
+       }
+
        /**
         * @covers ContentHandler::runLegacyHooks
         */
@@ -365,164 +370,3 @@ class ContentHandlerTest extends MediaWikiTestCase {
                return true;
        }
 }
-
-class DummyContentHandlerForTesting extends ContentHandler {
-
-       public function __construct( $dataModel ) {
-               parent::__construct( $dataModel, array( "testing" ) );
-       }
-
-       /**
-        * @see ContentHandler::serializeContent
-        *
-        * @param Content $content
-        * @param string $format
-        *
-        * @return string
-        */
-       public function serializeContent( Content $content, $format = null ) {
-               return $content->serialize();
-       }
-
-       /**
-        * @see ContentHandler::unserializeContent
-        *
-        * @param string $blob
-        * @param string $format Unused.
-        *
-        * @return Content
-        */
-       public function unserializeContent( $blob, $format = null ) {
-               $d = unserialize( $blob );
-
-               return new DummyContentForTesting( $d );
-       }
-
-       /**
-        * Creates an empty Content object of the type supported by this ContentHandler.
-        *
-        */
-       public function makeEmptyContent() {
-               return new DummyContentForTesting( '' );
-       }
-}
-
-class DummyContentForTesting extends AbstractContent {
-
-       public function __construct( $data ) {
-               parent::__construct( "testing" );
-
-               $this->data = $data;
-       }
-
-       public function serialize( $format = null ) {
-               return serialize( $this->data );
-       }
-
-       /**
-        * @return string A string representing the content in a way useful for
-        *   building a full text search index. If no useful representation exists,
-        *   this method returns an empty string.
-        */
-       public function getTextForSearchIndex() {
-               return '';
-       }
-
-       /**
-        * @return string|bool The wikitext to include when another page includes this  content,
-        *  or false if the content is not includable in a wikitext page.
-        */
-       public function getWikitextForTransclusion() {
-               return false;
-       }
-
-       /**
-        * Returns a textual representation of the content suitable for use in edit
-        * summaries and log messages.
-        *
-        * @param int $maxlength Maximum length of the summary text.
-        * @return string The summary text.
-        */
-       public function getTextForSummary( $maxlength = 250 ) {
-               return '';
-       }
-
-       /**
-        * Returns native represenation of the data. Interpretation depends on the data model used,
-        * as given by getDataModel().
-        *
-        * @return mixed The native representation of the content. Could be a string, a nested array
-        *  structure, an object, a binary blob... anything, really.
-        */
-       public function getNativeData() {
-               return $this->data;
-       }
-
-       /**
-        * returns the content's nominal size in bogo-bytes.
-        *
-        * @return int
-        */
-       public function getSize() {
-               return strlen( $this->data );
-       }
-
-       /**
-        * Return a copy of this Content object. The following must be true for the object returned
-        * if $copy = $original->copy()
-        *
-        * * get_class($original) === get_class($copy)
-        * * $original->getModel() === $copy->getModel()
-        * * $original->equals( $copy )
-        *
-        * If and only if the Content object is imutable, the copy() method can and should
-        * return $this. That is,  $copy === $original may be true, but only for imutable content
-        * objects.
-        *
-        * @return Content A copy of this object
-        */
-       public function copy() {
-               return $this;
-       }
-
-       /**
-        * Returns true if this content is countable as a "real" wiki page, provided
-        * that it's also in a countable location (e.g. a current revision in the main namespace).
-        *
-        * @param bool $hasLinks If it is known whether this content contains links,
-        * provide this information here, to avoid redundant parsing to find out.
-        * @return bool
-        */
-       public function isCountable( $hasLinks = null ) {
-               return false;
-       }
-
-       /**
-        * @param Title $title
-        * @param int $revId Unused.
-        * @param null|ParserOptions $options
-        * @param bool $generateHtml Whether to generate Html (default: true). If false, the result
-        *  of calling getText() on the ParserOutput object returned by this method is undefined.
-        *
-        * @return ParserOutput
-        */
-       public function getParserOutput( Title $title, $revId = null,
-               ParserOptions $options = null, $generateHtml = true
-       ) {
-               return new ParserOutput( $this->getNativeData() );
-       }
-
-       /**
-        * @see AbstractContent::fillParserOutput()
-        *
-        * @param Title $title Context title for parsing
-        * @param int|null $revId Revision ID (for {{REVISIONID}})
-        * @param ParserOptions $options Parser options
-        * @param bool $generateHtml Whether or not to generate HTML
-        * @param ParserOutput &$output The output object to fill (reference).
-        */
-       protected function fillParserOutput( Title $title, $revId,
-                       ParserOptions $options, $generateHtml, ParserOutput &$output ) {
-               $output = new ParserOutput( $this->getNativeData() );
-       }
-}
diff --git a/tests/phpunit/includes/content/TextContentHandlerTest.php b/tests/phpunit/includes/content/TextContentHandlerTest.php
new file mode 100644 (file)
index 0000000..33861f1
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @group ContentHandler
+ */
+class TextContentHandlerTest extends MediaWikiLangTestCase {
+
+       public function testSupportsDirectEditing() {
+               $handler = new TextContentHandler();
+               $this->assertTrue( $handler->supportsDirectEditing(), 'direct editing is supported' );
+       }
+
+}
index 38fb573..361238b 100644 (file)
@@ -115,6 +115,11 @@ class WikitextContentHandlerTest extends MediaWikiLangTestCase {
                $this->assertEquals( $supported, $this->handler->isSupportedFormat( $format ) );
        }
 
+       public function testSupportsDirectEditing() {
+               $handler = new WikiTextContentHandler();
+               $this->assertTrue( $handler->supportsDirectEditing(), 'direct editing is supported' );
+       }
+
        public static function dataMerge3() {
                return array(
                        array(
diff --git a/tests/phpunit/mocks/content/DummyContentForTesting.php b/tests/phpunit/mocks/content/DummyContentForTesting.php
new file mode 100644 (file)
index 0000000..0c69027
--- /dev/null
@@ -0,0 +1,121 @@
+<?php
+
+class DummyContentForTesting extends AbstractContent {
+
+       public function __construct( $data ) {
+               parent::__construct( "testing" );
+
+               $this->data = $data;
+       }
+
+       public function serialize( $format = null ) {
+               return serialize( $this->data );
+       }
+
+       /**
+        * @return string A string representing the content in a way useful for
+        *   building a full text search index. If no useful representation exists,
+        *   this method returns an empty string.
+        */
+       public function getTextForSearchIndex() {
+               return '';
+       }
+
+       /**
+        * @return string|bool The wikitext to include when another page includes this  content,
+        *  or false if the content is not includable in a wikitext page.
+        */
+       public function getWikitextForTransclusion() {
+               return false;
+       }
+
+       /**
+        * Returns a textual representation of the content suitable for use in edit
+        * summaries and log messages.
+        *
+        * @param int $maxlength Maximum length of the summary text.
+        * @return string The summary text.
+        */
+       public function getTextForSummary( $maxlength = 250 ) {
+               return '';
+       }
+
+       /**
+        * Returns native represenation of the data. Interpretation depends on the data model used,
+        * as given by getDataModel().
+        *
+        * @return mixed The native representation of the content. Could be a string, a nested array
+        *  structure, an object, a binary blob... anything, really.
+        */
+       public function getNativeData() {
+               return $this->data;
+       }
+
+       /**
+        * returns the content's nominal size in bogo-bytes.
+        *
+        * @return int
+        */
+       public function getSize() {
+               return strlen( $this->data );
+       }
+
+       /**
+        * Return a copy of this Content object. The following must be true for the object returned
+        * if $copy = $original->copy()
+        *
+        * * get_class($original) === get_class($copy)
+        * * $original->getModel() === $copy->getModel()
+        * * $original->equals( $copy )
+        *
+        * If and only if the Content object is imutable, the copy() method can and should
+        * return $this. That is,  $copy === $original may be true, but only for imutable content
+        * objects.
+        *
+        * @return Content A copy of this object
+        */
+       public function copy() {
+               return $this;
+       }
+
+       /**
+        * Returns true if this content is countable as a "real" wiki page, provided
+        * that it's also in a countable location (e.g. a current revision in the main namespace).
+        *
+        * @param bool $hasLinks If it is known whether this content contains links,
+        * provide this information here, to avoid redundant parsing to find out.
+        * @return bool
+        */
+       public function isCountable( $hasLinks = null ) {
+               return false;
+       }
+
+       /**
+        * @param Title $title
+        * @param int $revId Unused.
+        * @param null|ParserOptions $options
+        * @param bool $generateHtml Whether to generate Html (default: true). If false, the result
+        *  of calling getText() on the ParserOutput object returned by this method is undefined.
+        *
+        * @return ParserOutput
+        */
+       public function getParserOutput( Title $title, $revId = null,
+               ParserOptions $options = null, $generateHtml = true
+       ) {
+               return new ParserOutput( $this->getNativeData() );
+       }
+
+       /**
+        * @see AbstractContent::fillParserOutput()
+        *
+        * @param Title $title Context title for parsing
+        * @param int|null $revId Revision ID (for {{REVISIONID}})
+        * @param ParserOptions $options Parser options
+        * @param bool $generateHtml Whether or not to generate HTML
+        * @param ParserOutput &$output The output object to fill (reference).
+        */
+       protected function fillParserOutput( Title $title, $revId,
+                       ParserOptions $options, $generateHtml, ParserOutput &$output ) {
+               $output = new ParserOutput( $this->getNativeData() );
+       }
+}
diff --git a/tests/phpunit/mocks/content/DummyContentHandlerForTesting.php b/tests/phpunit/mocks/content/DummyContentHandlerForTesting.php
new file mode 100644 (file)
index 0000000..fd253f2
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+
+class DummyContentHandlerForTesting extends ContentHandler {
+
+       public function __construct( $dataModel ) {
+               parent::__construct( $dataModel, array( "testing" ) );
+       }
+
+       /**
+        * @see ContentHandler::serializeContent
+        *
+        * @param Content $content
+        * @param string $format
+        *
+        * @return string
+        */
+       public function serializeContent( Content $content, $format = null ) {
+               return $content->serialize();
+       }
+
+       /**
+        * @see ContentHandler::unserializeContent
+        *
+        * @param string $blob
+        * @param string $format Unused.
+        *
+        * @return Content
+        */
+       public function unserializeContent( $blob, $format = null ) {
+               $d = unserialize( $blob );
+
+               return new DummyContentForTesting( $d );
+       }
+
+       /**
+        * Creates an empty Content object of the type supported by this ContentHandler.
+        *
+        */
+       public function makeEmptyContent() {
+               return new DummyContentForTesting( '' );
+       }
+}
diff --git a/tests/phpunit/mocks/content/DummyNonTextContent.php b/tests/phpunit/mocks/content/DummyNonTextContent.php
new file mode 100644 (file)
index 0000000..889efb7
--- /dev/null
@@ -0,0 +1,121 @@
+<?php
+
+class DummyNonTextContent extends AbstractContent {
+
+       public function __construct( $data ) {
+               parent::__construct( "testing-nontext" );
+
+               $this->data = $data;
+       }
+
+       public function serialize( $format = null ) {
+               return serialize( $this->data );
+       }
+
+       /**
+        * @return string A string representing the content in a way useful for
+        *   building a full text search index. If no useful representation exists,
+        *   this method returns an empty string.
+        */
+       public function getTextForSearchIndex() {
+               return '';
+       }
+
+       /**
+        * @return string|bool The wikitext to include when another page includes this  content,
+        *  or false if the content is not includable in a wikitext page.
+        */
+       public function getWikitextForTransclusion() {
+               return false;
+       }
+
+       /**
+        * Returns a textual representation of the content suitable for use in edit
+        * summaries and log messages.
+        *
+        * @param int $maxlength Maximum length of the summary text.
+        * @return string The summary text.
+        */
+       public function getTextForSummary( $maxlength = 250 ) {
+               return '';
+       }
+
+       /**
+        * Returns native represenation of the data. Interpretation depends on the data model used,
+        * as given by getDataModel().
+        *
+        * @return mixed The native representation of the content. Could be a string, a nested array
+        *  structure, an object, a binary blob... anything, really.
+        */
+       public function getNativeData() {
+               return $this->data;
+       }
+
+       /**
+        * returns the content's nominal size in bogo-bytes.
+        *
+        * @return int
+        */
+       public function getSize() {
+               return strlen( $this->data );
+       }
+
+       /**
+        * Return a copy of this Content object. The following must be true for the object returned
+        * if $copy = $original->copy()
+        *
+        * * get_class($original) === get_class($copy)
+        * * $original->getModel() === $copy->getModel()
+        * * $original->equals( $copy )
+        *
+        * If and only if the Content object is imutable, the copy() method can and should
+        * return $this. That is,  $copy === $original may be true, but only for imutable content
+        * objects.
+        *
+        * @return Content A copy of this object
+        */
+       public function copy() {
+               return $this;
+       }
+
+       /**
+        * Returns true if this content is countable as a "real" wiki page, provided
+        * that it's also in a countable location (e.g. a current revision in the main namespace).
+        *
+        * @param bool $hasLinks If it is known whether this content contains links,
+        * provide this information here, to avoid redundant parsing to find out.
+        * @return bool
+        */
+       public function isCountable( $hasLinks = null ) {
+               return false;
+       }
+
+       /**
+        * @param Title $title
+        * @param int $revId Unused.
+        * @param null|ParserOptions $options
+        * @param bool $generateHtml Whether to generate Html (default: true). If false, the result
+        *  of calling getText() on the ParserOutput object returned by this method is undefined.
+        *
+        * @return ParserOutput
+        */
+       public function getParserOutput( Title $title, $revId = null,
+               ParserOptions $options = null, $generateHtml = true
+       ) {
+               return new ParserOutput( $this->getNativeData() );
+       }
+
+       /**
+        * @see AbstractContent::fillParserOutput()
+        *
+        * @param Title $title Context title for parsing
+        * @param int|null $revId Revision ID (for {{REVISIONID}})
+        * @param ParserOptions $options Parser options
+        * @param bool $generateHtml Whether or not to generate HTML
+        * @param ParserOutput &$output The output object to fill (reference).
+        */
+       protected function fillParserOutput( Title $title, $revId,
+                       ParserOptions $options, $generateHtml, ParserOutput &$output ) {
+               $output = new ParserOutput( $this->getNativeData() );
+       }
+}
diff --git a/tests/phpunit/mocks/content/DummyNonTextContentHandler.php b/tests/phpunit/mocks/content/DummyNonTextContentHandler.php
new file mode 100644 (file)
index 0000000..6995ae7
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+class DummyNonTextContentHandler extends DummyContentHandlerForTesting {
+
+       public function __construct( $dataModel ) {
+               parent::__construct( $dataModel, array( "testing-nontext" ) );
+       }
+
+       /**
+        * @see ContentHandler::serializeContent
+        *
+        * @param Content $content
+        * @param string $format
+        *
+        * @return string
+        */
+       public function serializeContent( Content $content, $format = null ) {
+               return $content->serialize();
+       }
+
+       /**
+        * @see ContentHandler::unserializeContent
+        *
+        * @param string $blob
+        * @param string $format Unused.
+        *
+        * @return Content
+        */
+       public function unserializeContent( $blob, $format = null ) {
+               $d = unserialize( $blob );
+
+               return new DummyNonTextContent( $d );
+       }
+
+       /**
+        * Creates an empty Content object of the type supported by this ContentHandler.
+        */
+       public function makeEmptyContent() {
+               return new DummyNonTextContent( '' );
+       }
+
+       public function supportsDirectApiEditing() {
+               return true;
+       }
+
+}