Merge "mediawiki.api: Use FormData for POST requests when supported"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 10 Apr 2014 19:19:01 +0000 (19:19 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 10 Apr 2014 19:19:01 +0000 (19:19 +0000)
148 files changed:
.jshintrc
RELEASE-NOTES-1.23
includes/AutoLoader.php
includes/DefaultSettings.php
includes/Title.php
includes/Wiki.php
includes/ZhConversion.php
includes/deferred/LinksUpdate.php
includes/filerepo/ForeignAPIRepo.php
includes/filerepo/file/LocalFile.php
includes/htmlform/HTMLSelectAndOtherField.php
includes/installer/DatabaseUpdater.php
includes/installer/WebInstallerOutput.php
includes/installer/i18n/en.json
includes/jobqueue/JobQueueGroup.php
includes/parser/CoreParserFunctions.php
includes/parser/DateFormatter.php
includes/profiler/ProfilerSimple.php
includes/specials/SpecialActiveusers.php
includes/specials/SpecialEmailuser.php
includes/specials/SpecialListgrouprights.php
languages/ConverterRule.php [new file with mode: 0644]
languages/LanguageConverter.php
languages/i18n/anp.json
languages/i18n/ar.json
languages/i18n/arc.json
languages/i18n/ast.json
languages/i18n/bbc-latn.json
languages/i18n/bqi.json
languages/i18n/br.json
languages/i18n/brh.json
languages/i18n/bug.json
languages/i18n/bxr.json
languages/i18n/ca.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/dz.json
languages/i18n/eml.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/fa.json
languages/i18n/ff.json
languages/i18n/fi.json
languages/i18n/fit.json
languages/i18n/fr.json
languages/i18n/frc.json
languages/i18n/frr.json
languages/i18n/gl.json
languages/i18n/gom-latn.json
languages/i18n/got.json
languages/i18n/ha.json
languages/i18n/he.json
languages/i18n/ik.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jbo.json
languages/i18n/jut.json
languages/i18n/ka.json
languages/i18n/kg.json
languages/i18n/kiu.json
languages/i18n/kk-cyrl.json
languages/i18n/kl.json
languages/i18n/ko.json
languages/i18n/koi.json
languages/i18n/kri.json
languages/i18n/lb.json
languages/i18n/liv.json
languages/i18n/lzz.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/mo.json
languages/i18n/mrj.json
languages/i18n/na.json
languages/i18n/nan.json
languages/i18n/nb.json
languages/i18n/new.json
languages/i18n/niu.json
languages/i18n/nl.json
languages/i18n/nov.json
languages/i18n/nv.json
languages/i18n/pag.json
languages/i18n/pap.json
languages/i18n/pdt.json
languages/i18n/pih.json
languages/i18n/pt-br.json
languages/i18n/qqq.json
languages/i18n/rgn.json
languages/i18n/rif.json
languages/i18n/rmy.json
languages/i18n/ro.json
languages/i18n/ru.json
languages/i18n/rup.json
languages/i18n/ruq-cyrl.json
languages/i18n/ruq-latn.json
languages/i18n/sa.json
languages/i18n/sco.json
languages/i18n/sd.json
languages/i18n/sg.json
languages/i18n/sl.json
languages/i18n/sma.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/ss.json
languages/i18n/sv.json
languages/i18n/th.json
languages/i18n/udm.json
languages/i18n/uz.json
languages/i18n/vi.json
languages/i18n/za.json
languages/i18n/zh-cn.json [deleted file]
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/i18n/zu.json
languages/utils/CLDRPluralRuleConverter.php [new file with mode: 0644]
languages/utils/CLDRPluralRuleConverter_Expression.php [new file with mode: 0644]
languages/utils/CLDRPluralRuleConverter_Fragment.php [new file with mode: 0644]
languages/utils/CLDRPluralRuleConverter_Operator.php [new file with mode: 0644]
languages/utils/CLDRPluralRuleError.php [new file with mode: 0644]
languages/utils/CLDRPluralRuleEvaluator.php
languages/utils/CLDRPluralRuleEvaluator_Range.php [new file with mode: 0644]
maintenance/language/zhtable/tradphrases.manual
maintenance/resetUserTokens.php
resources/Resources.php
resources/lib/oojs-ui/i18n/bn.json
resources/lib/oojs-ui/i18n/km.json
resources/lib/oojs-ui/i18n/zh-hk.json [deleted file]
resources/lib/oojs-ui/i18n/zh-tw.json [deleted file]
resources/lib/oojs-ui/oojs-ui-apex.css
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/oojs-ui.svg.css
resources/src/mediawiki.special/mediawiki.special.css
resources/src/mediawiki/mediawiki.Title.js
resources/src/mediawiki/mediawiki.debug.profile.js
resources/src/mediawiki/mediawiki.jqueryMsg.js
skins/common/IEFixes.js
skins/vector/components/common.less
skins/vector/components/externalLinks.less
tests/phpunit/includes/RevisionTest.php
tests/phpunit/includes/content/ContentHandlerTest.php
tests/phpunit/structure/ResourcesTest.php
tests/qunit/QUnitTestResources.php
tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.test.js
tests/qunit/suites/resources/startup.test.js

index 9d6c4d2..4eec7a0 100644 (file)
--- a/.jshintrc
+++ b/.jshintrc
@@ -3,6 +3,7 @@
 
        // Enforcing
        "eqeqeq": true,
+       "es3": true,
        "latedef": true,
        "noarg": true,
        "nonew": true,
index c231db6..244cce7 100644 (file)
@@ -11,7 +11,9 @@ production.
 === Configuration changes in 1.23 ===
 * When $wgJobRunRate is higher that zero, jobs are now executed via an
   asynchronous HTTP request to a MediaWiki entry point. This may require
-  increasing the number of server worker threads.
+  increasing the number of server worker threads. $wgRunJobsAsync has been
+  added to disable this feature if needed, falling back to executing the job
+  on the same process but making the execution synchronously.
 * $wgDebugLogGroups values may be set to an associative array with a
   'destination' key specifying the log destination. The array may also contain
   a 'sample' key with a positive integer value N indicating that the log group
@@ -136,6 +138,9 @@ production.
   installer has been updated to use it.
 * Changes to content typography (fonts, line-height, etc.). See
   https://www.mediawiki.org/wiki/Typography_refresh for further information.
+* The Vector skin's visual treatment of external links has been simplified to a
+  single icon (from nine). This should not affect local rules unless they were
+  re-using these icons, which have now been deleted.
 * ResourceLoader: mw.loader.using() now implements a Promise interface.
 * Add new hook ChangesListInitRows accessed via ChangesList::initChangesListRows.
   If called by the ChangesList consumer this gives extensions a chance to batch
index 52b292f..6675860 100644 (file)
@@ -1121,17 +1121,17 @@ $wgAutoloadLocalClasses = array(
        'ZipDirectoryReaderError' => 'includes/utils/ZipDirectoryReader.php',
 
        # languages
-       'ConverterRule' => 'languages/LanguageConverter.php',
+       'ConverterRule' => 'languages/ConverterRule.php',
        'FakeConverter' => 'languages/Language.php',
        'Language' => 'languages/Language.php',
        'LanguageConverter' => 'languages/LanguageConverter.php',
-       'CLDRPluralRuleConverter' => 'languages/utils/CLDRPluralRuleEvaluator.php',
-       'CLDRPluralRuleConverter_Expression' => 'languages/utils/CLDRPluralRuleEvaluator.php',
-       'CLDRPluralRuleConverter_Fragment' => 'languages/utils/CLDRPluralRuleEvaluator.php',
-       'CLDRPluralRuleConverter_Operator' => 'languages/utils/CLDRPluralRuleEvaluator.php',
+       'CLDRPluralRuleConverter' => 'languages/utils/CLDRPluralRuleConverter.php',
+       'CLDRPluralRuleConverter_Expression' => 'languages/utils/CLDRPluralRuleConverter_Expression.php',
+       'CLDRPluralRuleConverter_Fragment' => 'languages/utils/CLDRPluralRuleConverter_Fragment.php',
+       'CLDRPluralRuleConverter_Operator' => 'languages/utils/CLDRPluralRuleConverter_Operator.php',
        'CLDRPluralRuleEvaluator' => 'languages/utils/CLDRPluralRuleEvaluator.php',
-       'CLDRPluralRuleEvaluator_Range' => 'languages/utils/CLDRPluralRuleEvaluator.php',
-       'CLDRPluralRuleError' => 'languages/utils/CLDRPluralRuleEvaluator.php',
+       'CLDRPluralRuleEvaluator_Range' => 'languages/utils/CLDRPluralRuleEvaluator_Range.php',
+       'CLDRPluralRuleError' => 'languages/utils/CLDRPluralRuleError.php',
 
        # maintenance
        'BackupDumper' => 'maintenance/backup.inc',
index a3c22b8..5b2360c 100644 (file)
@@ -6922,6 +6922,14 @@ $wgHTTPConnectTimeout = 5e0;
  */
 $wgJobRunRate = 1;
 
+/**
+ * When $wgJobRunRate > 0, try to run jobs asynchronously, spawning a new process
+ * to handle the job execution, instead of blocking the request until the job
+ * execution finishes.
+ * @since 1.23
+ */
+$wgRunJobsAsync = true;
+
 /**
  * Number of rows to update per job
  */
index 34ebf3a..31e5868 100644 (file)
@@ -4341,6 +4341,7 @@ class Title {
         *
         * @param int|Revision $old Old revision or rev ID (first before range)
         * @param int|Revision $new New revision or rev ID (first after range)
+        * @param int|null $max Limit of Revisions to count, will be incremented to detect truncations
         * @return Int Number of revisions between these revisions.
         */
        public function countRevisionsBetween( $old, $new, $max = null ) {
index 6cf718c..fbafba8 100644 (file)
@@ -624,7 +624,7 @@ class MediaWiki {
         * the socket once it's done.
         */
        protected function triggerJobs() {
-               global $wgJobRunRate, $wgServer;
+               global $wgJobRunRate, $wgServer, $wgRunJobsAsync;
 
                if ( $wgJobRunRate <= 0 || wfReadOnly() ) {
                        return;
@@ -644,6 +644,17 @@ class MediaWiki {
                        $n = intval( $wgJobRunRate );
                }
 
+               if ( !$wgRunJobsAsync ) {
+                       // If running jobs asynchronously has been disabled, run the job here
+                       // while the user waits
+                       SpecialRunJobs::executeJobs( $n );
+                       return;
+               }
+
+               if ( !JobQueueGroup::singleton()->queuesHaveJobs( JobQueueGroup::TYPE_DEFAULT ) ) {
+                       return; // do not send request if there are probably no jobs
+               }
+
                $query = array( 'title' => 'Special:RunJobs',
                        'tasks' => 'jobs', 'maxjobs' => $n, 'sigexpiry' => time() + 5 );
                $query['signature'] = SpecialRunJobs::getQuerySignature( $query );
index 3067b1a..651b114 100644 (file)
@@ -3198,8 +3198,8 @@ $zh2Hant = array(
 '不干她' => '不干她',
 '不干它' => '不干它',
 '不干我' => '不干我',
-'不干扰' => '不干擾',
 '不干擾' => '不干擾',
+'不干扰' => '不干擾',
 '不干涉' => '不干涉',
 '不干牠' => '不干牠',
 '不干犯' => '不干犯',
@@ -3220,12 +3220,13 @@ $zh2Hant = array(
 '不负所托' => '不負所托',
 '不通吊庆' => '不通弔慶',
 '不丑' => '不醜',
-'不采聲' => '不采聲',
 '不采声' => '不采聲',
+'不采聲' => '不采聲',
 '不锈钢' => '不鏽鋼',
 '不食干腊' => '不食乾腊',
 '不斗' => '不鬥',
 '丑三' => '丑三',
+'丑婆子' => '丑婆子',
 '丑年' => '丑年',
 '丑日' => '丑日',
 '丑旦' => '丑旦',
@@ -3263,21 +3264,23 @@ $zh2Hant = array(
 '中签' => '中籤',
 '中美发表' => '中美發表',
 '中药' => '中藥',
+'中西合并' => '中西合併',
 '中风后' => '中風後',
-'丰仪' => '丰儀',
 '丰儀' => '丰儀',
+'丰仪' => '丰儀',
 '丰南' => '丰南',
 '丰台' => '丰台',
 '丰姿' => '丰姿',
 '丰容' => '丰容',
+'丰度' => '丰度',
 '丰情' => '丰情',
 '丰标' => '丰標',
-'丰标不凡' => '丰標不凡',
 '丰標不凡' => '丰標不凡',
+'丰标不凡' => '丰標不凡',
 '丰神' => '丰神',
 '丰茸' => '丰茸',
 '丰采' => '丰采',
-'丰é\9fµ' => '丰é\9fµ',
+'丰é\9fµ' => '丰é\9f»',
 '丰韻' => '丰韻',
 '丸药' => '丸藥',
 '丹药' => '丹藥',
@@ -3309,17 +3312,15 @@ $zh2Hant = array(
 '九扎' => '九紮',
 '九只' => '九隻',
 '九余' => '九餘',
-'九龍表行' => '九龍表行',
 '九龙表行' => '九龍表行',
+'九龍表行' => '九龍表行',
 '也克制' => '也剋制',
 '也斗了胆' => '也斗了膽',
-'干上' => '乾上',
 '干干' => '乾乾',
 '干干儿的' => '乾乾兒的',
 '干干净净' => '乾乾淨淨',
-'干了' => '乾了',
 '干井' => '乾井',
-'干个' => '乾個',
+'干个够' => '乾個夠',
 '干儿' => '乾兒',
 '干冰' => '乾冰',
 '干冷' => '乾冷',
@@ -3356,12 +3357,10 @@ $zh2Hant = array(
 '干巴' => '乾巴',
 '干式' => '乾式',
 '干弟' => '乾弟',
-'干得' => '乾得',
 '干急' => '乾急',
 '干性' => '乾性',
 '干打雷' => '乾打雷',
 '干折' => '乾折',
-'干掉' => '乾掉',
 '干撂台' => '乾撂台',
 '干撇下' => '乾撇下',
 '干擦' => '乾擦',
@@ -3447,8 +3446,8 @@ $zh2Hant = array(
 '干衣' => '乾衣',
 '干裂' => '乾裂',
 '干亲' => '乾親',
-'乾象曆' => '乾象曆',
 '乾象历' => '乾象曆',
+'乾象曆' => '乾象曆',
 '干贝' => '乾貝',
 '干货' => '乾貨',
 '干躁' => '乾躁',
@@ -3497,8 +3496,8 @@ $zh2Hant = array(
 '二缶钟惑' => '二缶鐘惑',
 '二老板' => '二老板',
 '二虎相斗' => '二虎相鬥',
-'二里頭' => '二里頭',
 '二里头' => '二里頭',
+'二里頭' => '二里頭',
 '二只' => '二隻',
 '二余' => '二餘',
 '于丹' => '于丹',
@@ -3510,10 +3509,10 @@ $zh2Hant = array(
 '于伟国' => '于偉國',
 '于偉國' => '于偉國',
 '于光新' => '于光新',
-'于光远' => '于光遠',
 '于光遠' => '于光遠',
-'äº\8eå\85\8b\85°å¤\9aå\8e¿' => 'äº\8eå\85\8b\98­å¤\9a縣',
+'äº\8eå\85\89è¿\9c' => 'äº\8eå\85\89é\81 ',
 '于克-蘭多縣' => '于克-蘭多縣',
+'于克-兰多县' => '于克-蘭多縣',
 '于克勒' => '于克勒',
 '于再清' => '于再清',
 '于冕' => '于冕',
@@ -3530,8 +3529,8 @@ $zh2Hant = array(
 '于吉' => '于吉',
 '于和伟' => '于和偉',
 '于品海' => '于品海',
-'于國楨' => '于國楨',
 '于国桢' => '于國楨',
+'于國楨' => '于國楨',
 '于国治' => '于國治',
 '于國治' => '于國治',
 '于坚' => '于堅',
@@ -3540,15 +3539,15 @@ $zh2Hant = array(
 '于大宝' => '于大寶',
 '于天仁' => '于天仁',
 '于天龙' => '于天龍',
-'于奇庫杜克' => '于奇庫杜克',
 '于奇库杜克' => '于奇庫杜克',
+'于奇庫杜克' => '于奇庫杜克',
 '于姓' => '于姓',
 '于娜' => '于娜',
 '于娟' => '于娟',
 '于子千' => '于子千',
 '于孔兼' => '于孔兼',
-'于学忠' => '于學忠',
 '于學忠' => '于學忠',
+'于学忠' => '于學忠',
 '于家堡' => '于家堡',
 '于寘' => '于寘',
 '于小伟' => '于小偉',
@@ -3559,16 +3558,16 @@ $zh2Hant = array(
 '于山' => '于山',
 '于山国' => '于山國',
 '于山國' => '于山國',
-'于帅' => '于帥',
 '于帥' => '于帥',
+'于帅' => '于帥',
 '于幼軍' => '于幼軍',
 '于幼军' => '于幼軍',
 '于康震' => '于康震',
-'于广洲' => '于廣洲',
 '于廣洲' => '于廣洲',
+'于广洲' => '于廣洲',
 '于式枚' => '于式枚',
-'于从濂' => '于從濂',
 '于從濂' => '于從濂',
+'于从濂' => '于從濂',
 '于德海' => '于德海',
 '于志宁' => '于志寧',
 '于志寧' => '于志寧',
@@ -3576,8 +3575,8 @@ $zh2Hant = array(
 '于思' => '于思',
 '于慎行' => '于慎行',
 '于慧' => '于慧',
-'于成龍' => '于成龍',
 '于成龙' => '于成龍',
+'于成龍' => '于成龍',
 '于振' => '于振',
 '于振武' => '于振武',
 '于敏' => '于敏',
@@ -3588,13 +3587,13 @@ $zh2Hant = array(
 '于斯納爾斯貝里' => '于斯納爾斯貝里',
 '于斯达尔' => '于斯達爾',
 '于斯達爾' => '于斯達爾',
-'于明濤' => '于明濤',
 '于明涛' => '于明濤',
+'于明濤' => '于明濤',
 '于是之' => '于是之',
 '于晨楠' => '于晨楠',
 '于晴' => '于晴',
-'于会泳' => '于會泳',
 '于會泳' => '于會泳',
+'于会泳' => '于會泳',
 '于根伟' => '于根偉',
 '于根偉' => '于根偉',
 '于格' => '于格',
@@ -3602,8 +3601,8 @@ $zh2Hant = array(
 '于枫' => '于楓',
 '于荣光' => '于榮光',
 '于樂' => '于樂',
-'于樹潔' => '于樹潔',
 '于树洁' => '于樹潔',
+'于樹潔' => '于樹潔',
 '于欣' => '于欣',
 '于欣源' => '于欣源',
 '于正升' => '于正昇',
@@ -3620,10 +3619,10 @@ $zh2Hant = array(
 '于浩威' => '于浩威',
 '于海' => '于海',
 '于海洋' => '于海洋',
-'于湘蘭' => '于湘蘭',
 '于湘兰' => '于湘蘭',
-'äº\8eæ±\89è¶\85' => 'äº\8eæ¼¢è¶\85',
+'äº\8eæ¹\98è\98­' => 'äº\8eæ¹\98è\98­',
 '于漢超' => '于漢超',
+'于汉超' => '于漢超',
 '于澄' => '于澄',
 '于泽尔' => '于澤爾',
 '于澤爾' => '于澤爾',
@@ -3632,8 +3631,8 @@ $zh2Hant = array(
 '于熙珍' => '于熙珍',
 '于爾岑' => '于爾岑',
 '于尔岑' => '于爾岑',
-'于尔根' => '于爾根',
 '于爾根' => '于爾根',
+'于尔根' => '于爾根',
 '于尔里克' => '于爾里克',
 '于爾里克' => '于爾里克',
 '于特森' => '于特森',
@@ -3646,8 +3645,8 @@ $zh2Hant = array(
 '于美人' => '于美人',
 '于耘婕' => '于耘婕',
 '于若木' => '于若木',
-'于荫霖' => '于蔭霖',
 '于蔭霖' => '于蔭霖',
+'于荫霖' => '于蔭霖',
 '于衡' => '于衡',
 '于西翰' => '于西翰',
 '于謙' => '于謙',
@@ -3655,20 +3654,20 @@ $zh2Hant = array(
 '于谨' => '于謹',
 '于貝爾' => '于貝爾',
 '于贝尔' => '于貝爾',
-'于贈' => '于贈',
 '于赠' => '于贈',
+'于贈' => '于贈',
 '于越' => '于越',
 '于军' => '于軍',
 '于軍' => '于軍',
 '于道泉' => '于道泉',
-'于遠偉' => '于遠偉',
 '于远伟' => '于遠偉',
-'äº\8eé\83½å\8e¿' => 'äº\8eé\83½ç¸£',
+'äº\8eé\81 å\81\89' => 'äº\8eé\81 å\81\89',
 '于都縣' => '于都縣',
+'于都县' => '于都縣',
 '于里察' => '于里察',
 '于阗' => '于闐',
-'于双戈' => '于雙戈',
 '于雙戈' => '于雙戈',
+'于双戈' => '于雙戈',
 '于云鹤' => '于雲鶴',
 '于震' => '于震',
 '于震寰' => '于震寰',
@@ -3681,17 +3680,17 @@ $zh2Hant = array(
 '于风政' => '于風政',
 '于風政' => '于風政',
 '于飞' => '于飛',
-'于飛島' => '于飛島',
 '于飞岛' => '于飛島',
+'于飛島' => '于飛島',
 '于余曲折' => '于餘曲折',
 '于鬯' => '于鬯',
 '于魁智' => '于魁智',
-'于鳳桐' => '于鳳桐',
 '于凤桐' => '于鳳桐',
+'于鳳桐' => '于鳳桐',
 '于凤至' => '于鳳至',
 '于鳳至' => '于鳳至',
-'于默奧' => '于默奧',
 '于默奥' => '于默奧',
+'于默奧' => '于默奧',
 '云乎' => '云乎',
 '云云' => '云云',
 '云何' => '云何',
@@ -3771,8 +3770,8 @@ $zh2Hant = array(
 '件钟' => '件鐘',
 '任何表演' => '任何表演',
 '任何表示' => '任何表示',
-'任何表达' => '任何表達',
 '任何表達' => '任何表達',
+'任何表达' => '任何表達',
 '任何表' => '任何錶',
 '任何钟' => '任何鐘',
 '任何钟表' => '任何鐘錶',
@@ -3984,8 +3983,8 @@ $zh2Hant = array(
 '占过' => '佔過',
 '占道' => '佔道',
 '占零' => '佔零',
-'占领' => '佔領',
 '占領' => '佔領',
+'占领' => '佔領',
 '占头' => '佔頭',
 '占头筹' => '佔頭籌',
 '占饭' => '佔飯',
@@ -4055,8 +4054,8 @@ $zh2Hant = array(
 '占y' => '佔y',
 '占z' => '佔z',
 '何杰' => '何杰',
-'余三勝' => '余三勝',
 '余三胜' => '余三勝',
+'余三勝' => '余三勝',
 '余光中' => '余光中',
 '余光生' => '余光生',
 '余力為' => '余力為',
@@ -4084,7 +4083,7 @@ $zh2Hant = array(
 '并到' => '併到',
 '并合' => '併合',
 '并名' => '併名',
-'并吞' => '併吞',
+'并吞下' => '併吞下',
 '并拢' => '併攏',
 '并案' => '併案',
 '并流' => '併流',
@@ -4246,8 +4245,8 @@ $zh2Hant = array(
 '凶横' => '兇橫',
 '凶殘' => '兇殘',
 '凶残' => '兇殘',
-'凶杀' => '兇殺',
 '凶殺' => '兇殺',
+'凶杀' => '兇殺',
 '凶犯' => '兇犯',
 '凶狠' => '兇狠',
 '凶猛' => '兇猛',
@@ -4264,8 +4263,8 @@ $zh2Hant = array(
 '党太尉' => '党太尉',
 '党怀英' => '党懷英',
 '党进' => '党進',
-'党项' => '党項',
 '党項' => '党項',
+'党项' => '党項',
 '内制' => '內製',
 '内面包' => '內面包',
 '内面包的' => '內面包的',
@@ -4353,8 +4352,8 @@ $zh2Hant = array(
 '准不准我' => '准不准我',
 '准不准许' => '准不准許',
 '准不准谁' => '准不准誰',
-'准保护' => '准保護',
 '准保護' => '准保護',
+'准保护' => '准保護',
 '准保释' => '准保釋',
 '准保釋' => '准保釋',
 '凌蒙初' => '凌濛初',
@@ -4410,8 +4409,8 @@ $zh2Hant = array(
 '划子' => '划子',
 '划得来' => '划得來',
 '划拳' => '划拳',
-'划槳' => '划槳',
 '划桨' => '划槳',
+'划槳' => '划槳',
 '划水' => '划水',
 '划算' => '划算',
 '划船' => '划船',
@@ -4438,6 +4437,7 @@ $zh2Hant = array(
 '利于' => '利於',
 '利欲熏心' => '利欲熏心',
 '刮来刮去' => '刮來刮去',
+'刮着' => '刮著',
 '刮起来' => '刮起來',
 '刮风下雪倒便宜' => '刮風下雪倒便宜',
 '刮胡' => '刮鬍',
@@ -4485,8 +4485,8 @@ $zh2Hant = array(
 '划入' => '劃入',
 '划为' => '劃為',
 '剧药' => '劇藥',
-'劉佳怜' => '劉佳怜',
 '刘佳怜' => '劉佳怜',
+'劉佳怜' => '劉佳怜',
 '刘克庄' => '劉克莊',
 '刘芸后' => '劉芸后',
 '力克制' => '力剋制',
@@ -4542,12 +4542,12 @@ $zh2Hant = array(
 '十出' => '十齣',
 '千个' => '千個',
 '千只可' => '千只可',
-'千只够' => '千只夠',
 '千只夠' => '千只夠',
+'千只够' => '千只夠',
 '千只怕' => '千只怕',
 '千只能' => '千只能',
-'千只足夠' => '千只足夠',
 '千只足够' => '千只足夠',
+'千只足夠' => '千只足夠',
 '千周后' => '千周後',
 '千多只' => '千多隻',
 '千天后' => '千天後',
@@ -4625,8 +4625,8 @@ $zh2Hant = array(
 '口里' => '口裡',
 '口试' => '口試',
 '口钟' => '口鐘',
-'古書云' => '古書云',
 '古书云' => '古書云',
+'古書云' => '古書云',
 '古柯咸' => '古柯鹹',
 '古柯碱' => '古柯鹼',
 '古朴' => '古樸',
@@ -4647,10 +4647,10 @@ $zh2Hant = array(
 '只要功夫深,铁杵磨成锈花针' => '只要功夫深,鐵杵磨成鏽花針',
 '只身上已' => '只身上已',
 '只身上有' => '只身上有',
-'只身上没' => '只身上沒',
 '只身上沒' => '只身上沒',
-'å\8fªèº«ä¸\8aæ\97 ' => 'å\8fªèº«ä¸\8aç\84¡',
+'å\8fªèº«ä¸\8a没' => 'å\8fªèº«ä¸\8aæ²\92',
 '只身上無' => '只身上無',
+'只身上无' => '只身上無',
 '只身上的' => '只身上的',
 '只身世' => '只身世',
 '只身份' => '只身份',
@@ -4665,8 +4665,8 @@ $zh2Hant = array(
 '只身旁' => '只身旁',
 '只身材' => '只身材',
 '只身段' => '只身段',
-'只身為' => '只身為',
 '只身为' => '只身為',
+'只身為' => '只身為',
 '只身边' => '只身邊',
 '只身邊' => '只身邊',
 '只身首' => '只身首',
@@ -4712,8 +4712,8 @@ $zh2Hant = array(
 '各辟' => '各闢',
 '各类钟' => '各類鐘',
 '合伙人' => '合伙人',
-'合并' => '合併',
 '合伙' => '合夥',
+'合并' => '合并',
 '合府上' => '合府上',
 '合采' => '合採',
 '合历' => '合曆',
@@ -4751,10 +4751,10 @@ $zh2Hant = array(
 '后丰' => '后豐',
 '后豐' => '后豐',
 '后里' => '后里',
-'后髮FK型星' => '后髮FK型星',
 '后发FK型星' => '后髮FK型星',
-'后发座' => '后髮座',
+'后髮FK型星' => '后髮FK型星',
 '后髮座' => '后髮座',
+'后发座' => '后髮座',
 '后发星系团' => '后髮星系團',
 '后髮星系團' => '后髮星系團',
 '吐哺捉发' => '吐哺捉髮',
@@ -4771,8 +4771,8 @@ $zh2Hant = array(
 '吹发' => '吹髮',
 '吹胡' => '吹鬍',
 '吾为之范我驰驱' => '吾爲之範我馳驅',
-'呂后' => '呂后',
 '吕后' => '呂后',
+'呂后' => '呂后',
 '呆呆傻傻' => '呆呆傻傻',
 '呆呆挣挣' => '呆呆掙掙',
 '呆呆獸' => '呆呆獸',
@@ -4788,8 +4788,8 @@ $zh2Hant = array(
 '周后' => '周后',
 '周四' => '周四',
 '周历' => '周曆',
-'周杰倫' => '周杰倫',
 '周杰伦' => '周杰倫',
+'周杰倫' => '周杰倫',
 '周历史' => '周歷史',
 '周庄王' => '周莊王',
 '周游' => '周遊',
@@ -4883,6 +4883,7 @@ $zh2Hant = array(
 '回历史' => '回歷史',
 '回丝' => '回絲',
 '回着' => '回著',
+'回荡' => '回蕩',
 '回游' => '回遊',
 '回阳荡气' => '回陽蕩氣',
 '因于' => '因於',
@@ -4944,9 +4945,9 @@ $zh2Hant = array(
 '埋头寻钟' => '埋頭尋鐘',
 '埋头寻钟表' => '埋頭尋鐘錶',
 '城里' => '城裡',
-'埔里社抚垦局' => '埔裏社撫墾局',
-'埔裏社撫墾局' => '埔裏社撫墾局',
 '埔裡社撫墾局' => '埔裏社撫墾局',
+'埔裏社撫墾局' => '埔裏社撫墾局',
+'埔里社抚垦局' => '埔裏社撫墾局',
 '基干' => '基幹',
 '基于' => '基於',
 '基准' => '基準',
@@ -4973,8 +4974,8 @@ $zh2Hant = array(
 '壶里' => '壺裡',
 '壸范' => '壼範',
 '寿面' => '壽麵',
-'夏于喬' => '夏于喬',
 '夏于乔' => '夏于喬',
+'夏于喬' => '夏于喬',
 '夏天里' => '夏天裡',
 '夏日里' => '夏日裡',
 '夏历' => '夏曆',
@@ -5014,6 +5015,7 @@ $zh2Hant = array(
 '伙同' => '夥同',
 '伙众' => '夥眾',
 '伙计' => '夥計',
+'大丑' => '大丑',
 '大伙儿' => '大伙兒',
 '大只可' => '大只可',
 '大只在' => '大只在',
@@ -5048,7 +5050,6 @@ $zh2Hant = array(
 '大言非夸' => '大言非夸',
 '大赞' => '大讚',
 '大周折' => '大週摺',
-'大丑' => '大醜',
 '大金发苔' => '大金髮苔',
 '大钟' => '大鐘',
 '大只' => '大隻',
@@ -5208,8 +5209,8 @@ $zh2Hant = array(
 '宽松' => '寬鬆',
 '寮采' => '寮寀',
 '宝山庄' => '寶山庄',
-'宝历' => '寶曆',
 '寶曆' => '寶曆',
+'宝历' => '寶曆',
 '宝历史' => '寶歷史',
 '宝庄' => '寶莊',
 '宝里宝气' => '寶裡寶氣',
@@ -5364,20 +5365,23 @@ $zh2Hant = array(
 '年谷' => '年穀',
 '年里' => '年裡',
 '并力' => '并力',
+'并吞' => '并吞',
 '并州' => '并州',
 '并日而食' => '并日而食',
 '并迭' => '并迭',
 '幸免于难' => '幸免於難',
 '幸于' => '幸於',
 '幸运胡' => '幸運鬍',
+'干上' => '幹上',
 '干下去' => '幹下去',
 '干不了' => '幹不了',
 '干不成' => '幹不成',
+'干了' => '幹了',
 '干事' => '幹事',
 '干些' => '幹些',
 '干人' => '幹人',
 '干什么' => '幹什麼',
-'干个够' => '幹個夠',
+'干个' => '幹個',
 '干劲' => '幹勁',
 '干劲冲天' => '幹勁沖天',
 '干吏' => '幹吏',
@@ -5389,9 +5393,10 @@ $zh2Hant = array(
 '干完' => '幹完',
 '干家' => '幹家',
 '干将' => '幹將',
-'干得了' => '幹得了',
+'干得' => '幹得',
 '干性油' => '幹性油',
 '干才' => '幹才',
+'干掉' => '幹掉',
 '干探' => '幹探',
 '干校' => '幹校',
 '干活' => '幹活',
@@ -5404,8 +5409,8 @@ $zh2Hant = array(
 '干略' => '幹略',
 '干当' => '幹當',
 '干的停当' => '幹的停當',
-'干細胞' => '幹細胞',
 '干细胞' => '幹細胞',
+'干細胞' => '幹細胞',
 '干线' => '幹線',
 '干练' => '幹練',
 '干缺' => '幹缺',
@@ -5437,8 +5442,8 @@ $zh2Hant = array(
 '府干政' => '府干政',
 '府干涉' => '府干涉',
 '府干犯' => '府干犯',
-'府干预' => '府干預',
 '府干預' => '府干預',
+'府干预' => '府干預',
 '府干' => '府幹',
 '座钟' => '座鐘',
 '康庄大道' => '康庄大道',
@@ -5746,8 +5751,8 @@ $zh2Hant = array(
 '忠人之托' => '忠人之托',
 '忠仆' => '忠僕',
 '忠于' => '忠於',
+'快干' => '快乾',
 '快克制' => '快剋制',
-'快干' => '快幹',
 '快快当当' => '快快當當',
 '快冲' => '快衝',
 '怎么' => '怎麼',
@@ -5855,8 +5860,8 @@ $zh2Hant = array(
 '所占算' => '所占算',
 '所托' => '所託',
 '扁拟谷盗虫' => '扁擬穀盜蟲',
-'手冢治虫' => '手塚治虫',
 '手塚治虫' => '手塚治虫',
+'手冢治虫' => '手塚治虫',
 '手折' => '手摺',
 '手表态' => '手表態',
 '手表明' => '手表明',
@@ -5867,8 +5872,8 @@ $zh2Hant = array(
 '手表达' => '手表達',
 '手表露' => '手表露',
 '手表面' => '手表面',
-'手里' => '手裏',
 '手里剑' => '手裏劍',
+'手里' => '手裡',
 '手表' => '手錶',
 '手松' => '手鬆',
 '才克制' => '才剋制',
@@ -6313,9 +6318,9 @@ $zh2Hant = array(
 '于国' => '於國',
 '于坏' => '於坏',
 '于垂' => '於垂',
-'於夫羅' => '於夫羅',
 '于夫罗' => '於夫羅',
 '於夫罗' => '於夫羅',
+'於夫羅' => '於夫羅',
 '于她' => '於她',
 '于好' => '於好',
 '于始' => '於始',
@@ -6493,8 +6498,8 @@ $zh2Hant = array(
 '会上签订' => '會上簽訂',
 '会占' => '會佔',
 '会占卜' => '會占卜',
-'會干擾' => '會干擾',
 '会干扰' => '會干擾',
+'會干擾' => '會干擾',
 '会干' => '會幹',
 '会吊' => '會弔',
 '会里' => '會裡',
@@ -6631,8 +6636,8 @@ $zh2Hant = array(
 '棺材里' => '棺材裡',
 '植发' => '植髮',
 '椰枣干' => '椰棗乾',
-'杨雅筑' => '楊雅筑',
 '楊雅筑' => '楊雅筑',
+'杨雅筑' => '楊雅筑',
 '楚庄问鼎' => '楚莊問鼎',
 '楚庄王' => '楚莊王',
 '楚庄绝缨' => '楚莊絕纓',
@@ -6657,8 +6662,8 @@ $zh2Hant = array(
 '模范14棒' => '模范14棒',
 '模范21棒' => '模范21棒',
 '模范七棒' => '模范七棒',
-'模范三軍' => '模范三軍',
 '模范三军' => '模范三軍',
+'模范三軍' => '模范三軍',
 '模范棒棒堂' => '模范棒棒堂',
 '模制' => '模製',
 '样范' => '樣範',
@@ -6818,8 +6823,8 @@ $zh2Hant = array(
 '洒濯' => '洒濯',
 '洒然' => '洒然',
 '洒脱' => '洒脫',
-'洗练' => '洗鍊',
 '洗炼' => '洗鍊',
+'洗练' => '洗鍊',
 '洗发' => '洗髮',
 '洛钟东应' => '洛鐘東應',
 '泄欲' => '洩慾',
@@ -6856,18 +6861,18 @@ $zh2Hant = array(
 '涂序瑄' => '涂序瑄',
 '涂敏恒' => '涂敏恆',
 '涂敏恆' => '涂敏恆',
-'涂泽民' => '涂澤民',
 '涂澤民' => '涂澤民',
+'涂泽民' => '涂澤民',
 '涂绍煃' => '涂紹煃',
 '涂羽卿' => '涂羽卿',
-'涂谨申' => '涂謹申',
 '涂謹申' => '涂謹申',
+'涂谨申' => '涂謹申',
 '涂逢年' => '涂逢年',
 '涂醒哲' => '涂醒哲',
 '涂長望' => '涂長望',
 '涂长望' => '涂長望',
-'涂鴻欽' => '涂鴻欽',
 '涂鸿钦' => '涂鴻欽',
+'涂鴻欽' => '涂鴻欽',
 '消炎药' => '消炎藥',
 '消肿药' => '消腫藥',
 '液晶表' => '液晶錶',
@@ -6898,7 +6903,6 @@ $zh2Hant = array(
 '渠冲' => '渠衝',
 '测试' => '測試',
 '港制' => '港製',
-'游荡' => '游蕩',
 '游离' => '游離',
 '浑朴' => '渾樸',
 '浑个' => '渾箇',
@@ -6999,6 +7003,7 @@ $zh2Hant = array(
 '蒙汜' => '濛汜',
 '蒙蒙细雨' => '濛濛細雨',
 '蒙雾' => '濛霧',
+'蒙松雨' => '濛鬆雨',
 '蒙鸿' => '濛鴻',
 '滨田里佳子' => '濱田里佳子',
 '泻药' => '瀉藥',
@@ -7239,8 +7244,8 @@ $zh2Hant = array(
 '发签' => '發籤',
 '发庄' => '發莊',
 '发着' => '發著',
-'發表' => '發表',
 '发表' => '發表',
+'發表' => '發表',
 '发松' => '發鬆',
 '发面' => '發麵',
 '白干' => '白乾',
@@ -7258,8 +7263,8 @@ $zh2Hant = array(
 '白霉' => '白黴',
 '百个' => '百個',
 '百只可' => '百只可',
-'百只够' => '百只夠',
 '百只夠' => '百只夠',
+'百只够' => '百只夠',
 '百只怕' => '百只怕',
 '百只足够' => '百只足夠',
 '百只足夠' => '百只足夠',
@@ -7356,7 +7361,6 @@ $zh2Hant = array(
 '瞳蒙' => '瞳矇',
 '蒙事' => '矇事',
 '蒙昧无知' => '矇昧無知',
-'蒙松雨' => '矇松雨',
 '蒙混' => '矇混',
 '蒙瞍' => '矇瞍',
 '蒙眬' => '矇矓',
@@ -7542,15 +7546,15 @@ $zh2Hant = array(
 '筑前' => '筑前',
 '筑北' => '筑北',
 '筑州' => '筑州',
-'筑后' => '筑後',
 '筑後' => '筑後',
+'筑后' => '筑後',
 '筑波' => '筑波',
 '筑紫' => '筑紫',
 '筑肥' => '筑肥',
 '筑西' => '筑西',
 '筑邦' => '筑邦',
-'筑阳' => '筑陽',
 '筑陽' => '筑陽',
+'筑阳' => '筑陽',
 '答复' => '答覆',
 '答覆' => '答覆',
 '筵几' => '筵几',
@@ -7574,6 +7578,7 @@ $zh2Hant = array(
 '管人吊脚儿事' => '管人弔腳兒事',
 '管制法' => '管制法',
 '管干' => '管幹',
+'箱里' => '箱裡',
 '节欲' => '節慾',
 '节余' => '節餘',
 '范例' => '範例',
@@ -7692,8 +7697,8 @@ $zh2Hant = array(
 '丝发' => '絲髮',
 '绑扎' => '綁紮',
 '綑扎' => '綑紮',
-'經有云' => '經有云',
 '经有云' => '經有云',
+'經有云' => '經有云',
 '绿发' => '綠髮',
 '绸缎庄' => '綢緞莊',
 '维系' => '維繫',
@@ -7951,8 +7956,8 @@ $zh2Hant = array(
 '舰只' => '艦隻',
 '良药' => '良藥',
 '色欲' => '色慾',
-'艳后' => '艷后',
 '艷后' => '艷后',
+'艳后' => '艷后',
 '艸木丰丰' => '艸木丰丰',
 '芍药' => '芍藥',
 '芒果干' => '芒果乾',
@@ -7977,16 +7982,16 @@ $zh2Hant = array(
 '茂都淀' => '茂都澱',
 '范文同' => '范文同',
 '范文正公' => '范文正公',
-'范文澜' => '范文瀾',
 '范文瀾' => '范文瀾',
+'范文澜' => '范文瀾',
 '范文照' => '范文照',
 '范文程' => '范文程',
 '范文芳' => '范文芳',
 '范文藤' => '范文藤',
 '范文虎' => '范文虎',
 '范登堡' => '范登堡',
-'范賢惠' => '范賢惠',
 '范贤惠' => '范賢惠',
+'范賢惠' => '范賢惠',
 '茶几' => '茶几',
 '茶庄' => '茶莊',
 '茶余' => '茶餘',
@@ -8031,8 +8036,8 @@ $zh2Hant = array(
 '华严钟' => '華嚴鐘',
 '华发' => '華髮',
 '菸碱' => '菸鹼',
-'万一只' => '萬一只',
 '萬一只' => '萬一只',
+'万一只' => '萬一只',
 '万个' => '萬個',
 '万周后' => '萬周後',
 '万多只' => '萬多隻',
@@ -8534,8 +8539,8 @@ $zh2Hant = array(
 '诱奸' => '誘姦',
 '语云' => '語云',
 '语汇' => '語彙',
-'語有云' => '語有云',
 '语有云' => '語有云',
+'語有云' => '語有云',
 '诚征' => '誠徵',
 '诚朴' => '誠樸',
 '诬蔑' => '誣衊',
@@ -8596,7 +8601,6 @@ $zh2Hant = array(
 '豆腐干' => '豆腐乾',
 '竖着' => '豎著',
 '竖起脊梁' => '豎起脊梁',
-'丰度' => '豐度',
 '丰滨' => '豐濱',
 '丰滨乡' => '豐濱鄉',
 '象征' => '象徵',
@@ -8606,17 +8610,17 @@ $zh2Hant = array(
 '贵价' => '貴价',
 '贵干' => '貴幹',
 '贵征' => '貴徵',
-'买凶' => '買兇',
 '買凶' => '買兇',
+'买凶' => '買兇',
 '买断发' => '買斷發',
 '费占' => '費佔',
 '贻范' => '貽範',
 '资金占用' => '資金占用',
-'賈后' => '賈后',
 '贾后' => '賈后',
+'賈后' => '賈后',
 '赏赞' => '賞讚',
-'賢后' => '賢后',
 '贤后' => '賢后',
+'賢后' => '賢后',
 '卖断发' => '賣斷發',
 '卖呆' => '賣獃',
 '质朴' => '質樸',
@@ -8664,10 +8668,10 @@ $zh2Hant = array(
 '较于' => '較於',
 '挽曲' => '輓曲',
 '挽歌' => '輓歌',
-'挽联' => '輓聯',
 '挽聯' => '輓聯',
-'æ\8c½è¯\8d' => 'è¼\93è©\9e',
+'æ\8c½è\81\94' => 'è¼\93è\81¯',
 '挽詞' => '輓詞',
+'挽词' => '輓詞',
 '挽诗' => '輓詩',
 '挽詩' => '輓詩',
 '轻于' => '輕於',
@@ -8710,7 +8714,6 @@ $zh2Hant = array(
 '回绕' => '迴繞',
 '回翔' => '迴翔',
 '回肠' => '迴腸',
-'回荡' => '迴蕩',
 '回诵' => '迴誦',
 '回路' => '迴路',
 '回转' => '迴轉',
@@ -8801,6 +8804,7 @@ $zh2Hant = array(
 '游河' => '遊河',
 '游猎' => '遊獵',
 '游玩' => '遊玩',
+'游荡' => '遊盪',
 '游目骋怀' => '遊目騁懷',
 '游程' => '遊程',
 '游丝' => '遊絲',
@@ -8872,10 +8876,10 @@ $zh2Hant = array(
 '部落发' => '部落發',
 '郭后' => '郭后',
 '都于' => '都於',
-'乡愿' => '鄉愿',
 '鄉愿' => '鄉愿',
-'郑凯云' => '鄭凱云',
+'乡愿' => '鄉愿',
 '鄭凱云' => '鄭凱云',
+'郑凯云' => '鄭凱云',
 '郑庄公' => '鄭莊公',
 '配制饲料' => '配制飼料',
 '配合着' => '配合著',
@@ -8909,7 +8913,6 @@ $zh2Hant = array(
 '丑女' => '醜女',
 '丑女效颦' => '醜女效顰',
 '丑奴儿' => '醜奴兒',
-'丑婆子' => '醜婆子',
 '丑妇' => '醜婦',
 '丑媳' => '醜媳',
 '丑媳妇' => '醜媳婦',
@@ -8951,8 +8954,8 @@ $zh2Hant = array(
 '酿制' => '釀製',
 '衅钟' => '釁鐘',
 '采石之役' => '采石之役',
-'采石之戰' => '采石之戰',
 '采石之战' => '采石之戰',
+'采石之戰' => '采石之戰',
 '采石磯' => '采石磯',
 '采石矶' => '采石磯',
 '釉药' => '釉藥',
@@ -9322,10 +9325,10 @@ $zh2Hant = array(
 '音声如钟' => '音聲如鐘',
 '韶山冲' => '韶山沖',
 '响钟' => '響鐘',
-'页面' => '頁面',
 '頁面' => '頁面',
-'顶å¤\9a' => 'é \82å¤\9a',
+'页é\9d¢' => 'é \81é\9d¢',
 '頂多' => '頂多',
+'顶多' => '頂多',
 '项庄' => '項莊',
 '顺于' => '順於',
 '顺钟向' => '順鐘向',
@@ -9347,8 +9350,8 @@ $zh2Hant = array(
 '颜范' => '顏範',
 '颠干倒坤' => '顛乾倒坤',
 '颠覆' => '顛覆',
-'顛顛仆仆' => '顛顛仆仆',
 '颠颠仆仆' => '顛顛仆仆',
+'顛顛仆仆' => '顛顛仆仆',
 '颤栗' => '顫慄',
 '显示表' => '顯示錶',
 '显示钟' => '顯示鐘',
@@ -9363,15 +9366,14 @@ $zh2Hant = array(
 '风范' => '風範',
 '风里' => '風裡',
 '风起云涌' => '風起雲湧',
-'風采' => '風采',
 '风采' => '風采',
+'風采' => '風采',
 '台风' => '颱風',
 '台风后' => '颱風後',
 '刮了' => '颳了',
 '刮倒' => '颳倒',
 '刮去' => '颳去',
 '刮得' => '颳得',
-'刮着' => '颳著',
 '刮走' => '颳走',
 '刮起' => '颳起',
 '刮雪' => '颳雪',
@@ -9538,16 +9540,16 @@ $zh2Hant = array(
 '香干' => '香乾',
 '香山庄' => '香山庄',
 '马干' => '馬乾',
-'馬占山' => '馬占山',
 '马占山' => '馬占山',
+'馬占山' => '馬占山',
 '马杆' => '馬杆',
-'马格里布' => '馬格里布',
 '馬格里布' => '馬格里布',
+'马格里布' => '馬格里布',
 '马表' => '馬錶',
 '驻扎' => '駐紮',
 '骀荡' => '駘蕩',
-'騰格里' => '騰格里',
 '腾格里' => '騰格里',
+'騰格里' => '騰格里',
 '腾冲' => '騰衝',
 '惊赞' => '驚讚',
 '惊钟' => '驚鐘',
@@ -9733,7 +9735,6 @@ $zh2Hant = array(
 '斗而铸锥' => '鬥而鑄錐',
 '斗脚' => '鬥腳',
 '斗舰' => '鬥艦',
-'斗艳' => '鬥艷',
 '斗茶' => '鬥茶',
 '斗草' => '鬥草',
 '斗叶儿' => '鬥葉兒',
@@ -9741,6 +9742,7 @@ $zh2Hant = array(
 '斗着' => '鬥著',
 '斗蟋蟀' => '鬥蟋蟀',
 '斗话' => '鬥話',
+'斗艳' => '鬥豔',
 '斗起' => '鬥起',
 '斗趣' => '鬥趣',
 '斗闲气' => '鬥閑氣',
@@ -9913,11 +9915,11 @@ $zh2Hant = array(
 '黄历' => '黃曆',
 '黄曲霉' => '黃曲霉',
 '黄历史' => '黃歷史',
-'黄诗杰' => '黃詩杰',
 '黃詩杰' => '黃詩杰',
+'黄诗杰' => '黃詩杰',
 '黄金表' => '黃金表',
-'黄钰筑' => '黃鈺筑',
 '黃鈺筑' => '黃鈺筑',
+'黄钰筑' => '黃鈺筑',
 '黄钟' => '黃鐘',
 '黄发' => '黃髮',
 '黄曲毒素' => '黃麴毒素',
@@ -13243,8 +13245,8 @@ $zh2Hans = array(
 '乘著述' => '乘著述',
 '乾一坛' => '乾一坛',
 '乾一壇' => '乾一坛',
-'乾一組' => '乾一组',
 '乾一组' => '乾一组',
+'乾一組' => '乾一组',
 '乾上乾下' => '乾上乾下',
 '乾為天' => '乾为天',
 '乾為陽' => '乾为阳',
@@ -13264,10 +13266,10 @@ $zh2Hans = array(
 '乾岡' => '乾冈',
 '乾劉' => '乾刘',
 '乾刘' => '乾刘',
-'乾刚' => '乾刚',
 '乾剛' => '乾刚',
-'ä¹¾å\8a¡' => 'ä¹¾å\8a¡',
+'ä¹¾å\88\9a' => 'ä¹¾å\88\9a',
 '乾務' => '乾务',
+'乾务' => '乾务',
 '乾化' => '乾化',
 '乾卦' => '乾卦',
 '乾县' => '乾县',
@@ -13319,12 +13321,12 @@ $zh2Hans = array(
 '乾景' => '乾景',
 '乾晷' => '乾晷',
 '乾曜' => '乾曜',
-'乾構' => '乾构',
 '乾构' => '乾构',
-'ä¹¾æ\9e¢' => 'ä¹¾æ\9e¢',
+'ä¹¾æ§\8b' => 'ä¹¾æ\9e\84',
 '乾樞' => '乾枢',
-'ä¹¾æ£\9f' => 'ä¹¾æ \8b',
+'ä¹¾æ\9e¢' => 'ä¹¾æ\9e¢',
 '乾栋' => '乾栋',
+'乾棟' => '乾栋',
 '乾步' => '乾步',
 '乾氏' => '乾氏',
 '乾沓和' => '乾沓和',
@@ -13334,8 +13336,8 @@ $zh2Hans = array(
 '乾清宮' => '乾清宫',
 '乾清宫' => '乾清宫',
 '乾渥' => '乾渥',
-'乾灵' => '乾灵',
 '乾靈' => '乾灵',
+'乾灵' => '乾灵',
 '乾男' => '乾男',
 '乾皋' => '乾皋',
 '乾盛世' => '乾盛世',
@@ -13354,19 +13356,19 @@ $zh2Hans = array(
 '乾红' => '乾红',
 '乾綱' => '乾纲',
 '乾纲' => '乾纲',
-'乾紐' => '乾纽',
 '乾纽' => '乾纽',
+'乾紐' => '乾纽',
 '乾絡' => '乾络',
 '乾络' => '乾络',
 '乾統' => '乾统',
 '乾统' => '乾统',
 '乾維' => '乾维',
 '乾维' => '乾维',
-'乾罗' => '乾罗',
 '乾羅' => '乾罗',
+'乾罗' => '乾罗',
 '乾花' => '乾花',
-'乾荫' => '乾荫',
 '乾蔭' => '乾荫',
+'乾荫' => '乾荫',
 '乾行' => '乾行',
 '乾衡' => '乾衡',
 '乾覆' => '乾覆',
@@ -13375,19 +13377,19 @@ $zh2Hans = array(
 '乾象历' => '乾象历',
 '乾贞' => '乾贞',
 '乾貞' => '乾贞',
-'乾贶' => '乾贶',
 '乾貺' => '乾贶',
+'乾贶' => '乾贶',
 '乾车' => '乾车',
 '乾車' => '乾车',
-'乾轴' => '乾轴',
 '乾軸' => '乾轴',
+'乾轴' => '乾轴',
 '乾通' => '乾通',
 '乾造' => '乾造',
 '乾道' => '乾道',
 '乾鑒' => '乾鉴',
 '乾鉴' => '乾鉴',
-'乾鈞' => '乾钧',
 '乾钧' => '乾钧',
+'乾鈞' => '乾钧',
 '乾闼' => '乾闼',
 '乾闥' => '乾闼',
 '乾陀' => '乾陀',
@@ -13396,8 +13398,8 @@ $zh2Hans = array(
 '乾音' => '乾音',
 '乾顾' => '乾顾',
 '乾顧' => '乾顾',
-'乾風' => '乾风',
 '乾风' => '乾风',
+'乾風' => '乾风',
 '乾首' => '乾首',
 '乾馬' => '乾马',
 '乾马' => '乾马',
@@ -13405,8 +13407,8 @@ $zh2Hans = array(
 '乾鹄' => '乾鹄',
 '乾鵲' => '乾鹊',
 '乾鹊' => '乾鹊',
-'乾龙' => '乾龙',
 '乾龍' => '乾龙',
+'乾龙' => '乾龙',
 '乾,健也' => '乾,健也',
 '乾,天也' => '乾,天也',
 '爭著' => '争着',
@@ -13419,14 +13421,14 @@ $zh2Hans = array(
 '爭著述' => '争著述',
 '五箇山' => '五箇山',
 '亮著' => '亮着',
-'亮著書' => '亮著书',
 '亮著书' => '亮著书',
+'亮著書' => '亮著书',
 '亮著作' => '亮著作',
 '亮著名' => '亮著名',
 '亮著錄' => '亮著录',
 '亮著录' => '亮著录',
-'亮著稱' => '亮著称',
 '亮著称' => '亮著称',
+'亮著稱' => '亮著称',
 '亮著者' => '亮著者',
 '亮著述' => '亮著述',
 '仗著' => '仗着',
@@ -13441,12 +13443,12 @@ $zh2Hans = array(
 '仗著者' => '仗著者',
 '仗著述' => '仗著述',
 '代表著' => '代表着',
-'代表著书' => '代表著书',
 '代表著書' => '代表著书',
+'代表著书' => '代表著书',
 '代表著作' => '代表著作',
 '代表著名' => '代表著名',
-'代表著录' => '代表著录',
 '代表著錄' => '代表著录',
+'代表著录' => '代表著录',
 '代表著称' => '代表著称',
 '代表著稱' => '代表著称',
 '代表著者' => '代表著者',
@@ -13470,13 +13472,13 @@ $zh2Hans = array(
 '伴著名' => '伴著名',
 '伴著录' => '伴著录',
 '伴著錄' => '伴著录',
-'伴著称' => '伴著称',
 '伴著稱' => '伴著称',
+'伴著称' => '伴著称',
 '伴著者' => '伴著者',
 '伴著述' => '伴著述',
 '低著' => '低着',
-'低著书' => '低著书',
 '低著書' => '低著书',
+'低著书' => '低著书',
 '低著作' => '低著作',
 '低著名' => '低著名',
 '低著录' => '低著录',
@@ -13492,8 +13494,8 @@ $zh2Hans = array(
 '住著名' => '住著名',
 '住著錄' => '住著录',
 '住著录' => '住著录',
-'住著稱' => '住著称',
 '住著称' => '住著称',
+'住著稱' => '住著称',
 '住著者' => '住著者',
 '住著述' => '住著述',
 '佛頭著糞' => '佛头著粪',
@@ -13514,8 +13516,8 @@ $zh2Hans = array(
 '保障著名' => '保障著名',
 '保障著錄' => '保障著录',
 '保障著录' => '保障著录',
-'保障著称' => '保障著称',
 '保障著稱' => '保障著称',
+'保障著称' => '保障著称',
 '保障著者' => '保障著者',
 '保障著述' => '保障著述',
 '信著' => '信着',
@@ -13525,8 +13527,8 @@ $zh2Hans = array(
 '信著名' => '信著名',
 '信著录' => '信著录',
 '信著錄' => '信著录',
-'信著稱' => '信著称',
 '信著称' => '信著称',
+'信著稱' => '信著称',
 '信著者' => '信著者',
 '信著述' => '信著述',
 '修鍊' => '修炼',
@@ -13536,10 +13538,10 @@ $zh2Hans = array(
 '候著书' => '候著书',
 '候著作' => '候著作',
 '候著名' => '候著名',
-'候著錄' => '候著录',
 '候著录' => '候著录',
-'候著称' => '候著称',
+'候著錄' => '候著录',
 '候著稱' => '候著称',
+'候著称' => '候著称',
 '候著者' => '候著者',
 '候著述' => '候著述',
 '藉助' => '借助',
@@ -13549,28 +13551,28 @@ $zh2Hans = array(
 '藉機' => '借机',
 '藉此' => '借此',
 '藉由' => '借由',
-'藉著' => '借着',
 '借著' => '借着',
 '藉着' => '借着',
+'藉著' => '借着',
 '藉端' => '借端',
-'借著书' => '借著书',
 '借著書' => '借著书',
+'借著书' => '借著书',
 '借著作' => '借著作',
 '借著名' => '借著名',
 '借著录' => '借著录',
 '借著錄' => '借著录',
-'借著稱' => '借著称',
 '借著称' => '借著称',
+'借著稱' => '借著称',
 '借著者' => '借著者',
 '借著述' => '借著述',
 '藉詞' => '借词',
 '做著' => '做着',
-'做著书' => '做著书',
 '做著書' => '做著书',
+'做著书' => '做著书',
 '做著作' => '做著作',
 '做著名' => '做著名',
-'做著录' => '做著录',
 '做著錄' => '做著录',
+'做著录' => '做著录',
 '做著稱' => '做著称',
 '做著称' => '做著称',
 '做著者' => '做著者',
@@ -13582,8 +13584,8 @@ $zh2Hans = array(
 '偷著名' => '偷著名',
 '偷著錄' => '偷著录',
 '偷著录' => '偷著录',
-'偷著称' => '偷著称',
 '偷著稱' => '偷著称',
+'偷著称' => '偷著称',
 '偷著者' => '偷著者',
 '偷著述' => '偷著述',
 '傢俬' => '傢俬',
@@ -13608,25 +13610,25 @@ $zh2Hans = array(
 '關著者' => '关著者',
 '關著述' => '关著述',
 '冀著' => '冀着',
-'冀著书' => '冀著书',
 '冀著書' => '冀著书',
+'冀著书' => '冀著书',
 '冀著作' => '冀著作',
 '冀著名' => '冀著名',
-'冀著录' => '冀著录',
 '冀著錄' => '冀著录',
+'冀著录' => '冀著录',
 '冀著稱' => '冀著称',
 '冀著称' => '冀著称',
 '冀著者' => '冀著者',
 '冀著述' => '冀著述',
 '冒著' => '冒着',
-'冒著書' => '冒著书',
 '冒著书' => '冒著书',
+'冒著書' => '冒著书',
 '冒著作' => '冒著作',
 '冒著名' => '冒著名',
 '冒著录' => '冒著录',
 '冒著錄' => '冒著录',
-'冒著称' => '冒著称',
 '冒著稱' => '冒著称',
+'冒著称' => '冒著称',
 '冒著者' => '冒著者',
 '冒著述' => '冒著述',
 '寫著' => '写着',
@@ -13651,10 +13653,10 @@ $zh2Hans = array(
 '制著書' => '制著书',
 '制著作' => '制著作',
 '制著名' => '制著名',
-'制著录' => '制著录',
 '制著錄' => '制著录',
-'制著稱' => '制著称',
+'制著录' => '制著录',
 '制著称' => '制著称',
+'制著稱' => '制著称',
 '制著者' => '制著者',
 '制著述' => '制著述',
 '刻著' => '刻着',
@@ -13685,14 +13687,14 @@ $zh2Hans = array(
 '動著者' => '动著者',
 '動著述' => '动著述',
 '努力著' => '努力着',
-'努力著书' => '努力著书',
 '努力著書' => '努力著书',
+'努力著书' => '努力著书',
 '努力著作' => '努力著作',
 '努力著名' => '努力著名',
-'努力著录' => '努力著录',
 '努力著錄' => '努力著录',
-'努力著稱' => '努力著称',
+'努力著录' => '努力著录',
 '努力著称' => '努力著称',
+'努力著稱' => '努力著称',
 '努力著者' => '努力著者',
 '努力著述' => '努力著述',
 '努著' => '努着',
@@ -13708,14 +13710,14 @@ $zh2Hans = array(
 '努著述' => '努著述',
 '卓著' => '卓著',
 '印著' => '印着',
-'印著書' => '印著书',
 '印著书' => '印著书',
+'印著書' => '印著书',
 '印著作' => '印著作',
 '印著名' => '印著名',
-'印著錄' => '印著录',
 '印著录' => '印著录',
-'印著稱' => '印著称',
+'印著錄' => '印著录',
 '印著称' => '印著称',
+'印著稱' => '印著称',
 '印著者' => '印著者',
 '印著述' => '印著述',
 '卷舌' => '卷舌',
@@ -13729,12 +13731,12 @@ $zh2Hans = array(
 '壓著述' => '压著述',
 '原著' => '原著',
 '去著' => '去着',
-'去著書' => '去著书',
 '去著书' => '去著书',
+'去著書' => '去著书',
 '去著作' => '去著作',
 '去著名' => '去著名',
-'去著錄' => '去著录',
 '去著录' => '去著录',
+'去著錄' => '去著录',
 '去著稱' => '去著称',
 '去著称' => '去著称',
 '去著者' => '去著者',
@@ -13742,12 +13744,12 @@ $zh2Hans = array(
 '反反覆覆' => '反反复复',
 '反覆' => '反复',
 '受著' => '受着',
-'受著书' => '受著书',
 '受著書' => '受著书',
+'受著书' => '受著书',
 '受著作' => '受著作',
 '受著名' => '受著名',
-'受著录' => '受著录',
 '受著錄' => '受著录',
+'受著录' => '受著录',
 '受著稱' => '受著称',
 '受著称' => '受著称',
 '受著者' => '受著者',
@@ -13761,12 +13763,12 @@ $zh2Hans = array(
 '變著者' => '变著者',
 '變著述' => '变著述',
 '叫著' => '叫着',
-'叫著書' => '叫著书',
 '叫著书' => '叫著书',
+'叫著書' => '叫著书',
 '叫著作' => '叫著作',
 '叫著名' => '叫著名',
-'叫著錄' => '叫著录',
 '叫著录' => '叫著录',
+'叫著錄' => '叫著录',
 '叫著称' => '叫著称',
 '叫著稱' => '叫著称',
 '叫著者' => '叫著者',
@@ -13791,8 +13793,8 @@ $zh2Hans = array(
 '向著者' => '向著者',
 '向著述' => '向著述',
 '含著' => '含着',
-'含著书' => '含著书',
 '含著書' => '含著书',
+'含著书' => '含著书',
 '含著作' => '含著作',
 '含著名' => '含著名',
 '含著錄' => '含著录',
@@ -13811,8 +13813,8 @@ $zh2Hans = array(
 '聽著稱' => '听著称',
 '聽著者' => '听著者',
 '聽著述' => '听著述',
-'吳其濬' => '吴其濬',
 '吴其濬' => '吴其濬',
+'吳其濬' => '吴其濬',
 '吹著' => '吹着',
 '吹著書' => '吹著书',
 '吹著书' => '吹著书',
@@ -13826,12 +13828,12 @@ $zh2Hans = array(
 '吹著述' => '吹著述',
 '周易乾' => '周易乾',
 '味著' => '味着',
-'味著書' => '味著书',
 '味著书' => '味著书',
+'味著書' => '味著书',
 '味著作' => '味著作',
 '味著名' => '味著名',
-'味著錄' => '味著录',
 '味著录' => '味著录',
+'味著錄' => '味著录',
 '味著称' => '味著称',
 '味著稱' => '味著称',
 '味著者' => '味著者',
@@ -13847,12 +13849,12 @@ $zh2Hans = array(
 '響著述' => '响著述',
 '哪吒' => '哪吒',
 '哭著' => '哭着',
-'哭著书' => '哭著书',
 '哭著書' => '哭著书',
+'哭著书' => '哭著书',
 '哭著作' => '哭著作',
 '哭著名' => '哭著名',
-'哭著录' => '哭著录',
 '哭著錄' => '哭著录',
+'哭著录' => '哭著录',
 '哭著稱' => '哭著称',
 '哭著称' => '哭著称',
 '哭著者' => '哭著者',
@@ -13864,17 +13866,17 @@ $zh2Hans = array(
 '唱著名' => '唱著名',
 '唱著录' => '唱著录',
 '唱著錄' => '唱著录',
-'唱著稱' => '唱著称',
 '唱著称' => '唱著称',
+'唱著稱' => '唱著称',
 '唱著者' => '唱著者',
 '唱著述' => '唱著述',
 '喝著' => '喝着',
-'喝著書' => '喝著书',
 '喝著书' => '喝著书',
+'喝著書' => '喝著书',
 '喝著作' => '喝著作',
 '喝著名' => '喝著名',
-'喝著錄' => '喝著录',
 '喝著录' => '喝著录',
+'喝著錄' => '喝著录',
 '喝著稱' => '喝著称',
 '喝著称' => '喝著称',
 '喝著者' => '喝著者',
@@ -13883,12 +13885,12 @@ $zh2Hans = array(
 '嗅得著' => '嗅得着',
 '嗅著' => '嗅着',
 '嚷著' => '嚷着',
-'嚷著书' => '嚷著书',
 '嚷著書' => '嚷著书',
+'嚷著书' => '嚷著书',
 '嚷著作' => '嚷著作',
 '嚷著名' => '嚷著名',
-'嚷著录' => '嚷著录',
 '嚷著錄' => '嚷著录',
+'嚷著录' => '嚷著录',
 '嚷著称' => '嚷著称',
 '嚷著稱' => '嚷著称',
 '嚷著者' => '嚷著者',
@@ -13897,19 +13899,19 @@ $zh2Hans = array(
 '因著' => '因着',
 '因著〈' => '因著〈',
 '因著《' => '因著《',
-'因著书' => '因著书',
 '因著書' => '因著书',
+'因著书' => '因著书',
 '因著作' => '因著作',
 '因著名' => '因著名',
-'因著录' => '因著录',
 '因著錄' => '因著录',
-'因著称' => '因著称',
+'因著录' => '因著录',
 '因著稱' => '因著称',
+'因著称' => '因著称',
 '因著者' => '因著者',
 '因著述' => '因著述',
 '困著' => '困着',
-'困著书' => '困著书',
 '困著書' => '困著书',
+'困著书' => '困著书',
 '困著作' => '困著作',
 '困著名' => '困著名',
 '困著錄' => '困著录',
@@ -13928,8 +13930,8 @@ $zh2Hans = array(
 '圍著述' => '围著述',
 '土著' => '土著',
 '在著' => '在着',
-'在著书' => '在著书',
 '在著書' => '在著书',
+'在著书' => '在著书',
 '在著作' => '在著作',
 '在著名' => '在著名',
 '在著錄' => '在著录',
@@ -13939,12 +13941,12 @@ $zh2Hans = array(
 '在著者' => '在著者',
 '在著述' => '在著述',
 '坐著' => '坐着',
-'坐著書' => '坐著书',
 '坐著书' => '坐著书',
+'坐著書' => '坐著书',
 '坐著作' => '坐著作',
 '坐著名' => '坐著名',
-'坐著錄' => '坐著录',
 '坐著录' => '坐著录',
+'坐著錄' => '坐著录',
 '坐著称' => '坐著称',
 '坐著稱' => '坐著称',
 '坐著者' => '坐著者',
@@ -13960,8 +13962,8 @@ $zh2Hans = array(
 '備著述' => '备著述',
 '覆查' => '复查',
 '覆核' => '复核',
-'天道為乾' => '天道为乾',
 '天道为乾' => '天道为乾',
+'天道為乾' => '天道为乾',
 '太閤' => '太阁',
 '夾著' => '夹着',
 '夾著書' => '夹著书',
@@ -13976,8 +13978,8 @@ $zh2Hans = array(
 '字乾生' => '字乾生',
 '存摺' => '存摺',
 '孤著' => '孤着',
-'孤著書' => '孤著书',
 '孤著书' => '孤著书',
+'孤著書' => '孤著书',
 '孤著作' => '孤著作',
 '孤著名' => '孤著名',
 '孤著錄' => '孤著录',
@@ -13995,8 +13997,8 @@ $zh2Hans = array(
 '學著者' => '学著者',
 '學著述' => '学著述',
 '守著' => '守着',
-'守著书' => '守著书',
 '守著書' => '守著书',
+'守著书' => '守著书',
 '守著作' => '守著作',
 '守著名' => '守著名',
 '守著录' => '守著录',
@@ -14036,12 +14038,12 @@ $zh2Hans = array(
 '將軍抽車' => '将军抽車',
 '尼乾陀' => '尼乾陀',
 '展著' => '展着',
-'展著书' => '展著书',
 '展著書' => '展著书',
+'展著书' => '展著书',
 '展著作' => '展著作',
 '展著名' => '展著名',
-'展著录' => '展著录',
 '展著錄' => '展著录',
+'展著录' => '展著录',
 '展著稱' => '展著称',
 '展著称' => '展著称',
 '展著者' => '展著者',
@@ -14068,50 +14070,50 @@ $zh2Hans = array(
 '乾乾脆脆' => '干干脆脆',
 '乾泉水' => '干泉水',
 '幹著' => '干着',
-'幺二三' => '幺二三',
 '么二三' => '幺二三',
-'幺元' => '幺元',
+'幺二三' => '幺二三',
 '么元' => '幺元',
+'幺元' => '幺元',
 '幺鳳' => '幺凤',
 '么鳳' => '幺凤',
-'幺半群' => '幺半群',
 '么半群' => '幺半群',
-'幺å\8e®' => '幺å\8e®',
+'幺å\8d\8a群' => '幺å\8d\8a群',
 '幺廝' => '幺厮',
+'幺厮' => '幺厮',
 '幺叔' => '幺叔',
 '么叔' => '幺叔',
-'幺媽' => '幺妈',
 '么媽' => '幺妈',
+'幺媽' => '幺妈',
 '么妹' => '幺妹',
 '幺妹' => '幺妹',
 '么姓' => '幺姓',
 '幺姓' => '幺姓',
-'幺姨' => '幺姨',
 '么姨' => '幺姨',
+'幺姨' => '幺姨',
+'么娘' => '幺娘',
+'么孃' => '幺娘',
 '幺娘' => '幺娘',
 '幺孃' => '幺娘',
-'么孃' => '幺娘',
-'么娘' => '幺娘',
 '幺小' => '幺小',
 '么小' => '幺小',
-'么氏' => '幺氏',
 '幺氏' => '幺氏',
-'幺爸' => '幺爸',
+'么氏' => '幺氏',
 '么爸' => '幺爸',
-'么爹' => '幺爹',
+'幺爸' => '幺爸',
 '幺爹' => '幺爹',
-'幺篇' => '幺篇',
+'么爹' => '幺爹',
 '么篇' => '幺篇',
+'幺篇' => '幺篇',
 '么舅' => '幺舅',
 '幺舅' => '幺舅',
 '么蛾子' => '幺蛾子',
 '幺蛾子' => '幺蛾子',
-'幺謙' => '幺谦',
 '么謙' => '幺谦',
+'幺謙' => '幺谦',
 '幺麽' => '幺麽',
 '么麼' => '幺麽',
-'么麼小丑' => '幺麽小丑',
 '幺麽小丑' => '幺麽小丑',
+'么麼小丑' => '幺麽小丑',
 '庇護著' => '庇护着',
 '應著' => '应着',
 '應著書' => '应著书',
@@ -14123,12 +14125,12 @@ $zh2Hans = array(
 '應著述' => '应著述',
 '康乾' => '康乾',
 '康著' => '康着',
-'康著書' => '康著书',
 '康著书' => '康著书',
+'康著書' => '康著书',
 '康著作' => '康著作',
 '康著名' => '康著名',
-'康著錄' => '康著录',
 '康著录' => '康著录',
+'康著錄' => '康著录',
 '康著称' => '康著称',
 '康著稱' => '康著称',
 '康著者' => '康著者',
@@ -14141,8 +14143,8 @@ $zh2Hans = array(
 '開著稱' => '开著称',
 '開著者' => '开著者',
 '開著述' => '开著述',
-'张法乾' => '张法乾',
 '張法乾' => '张法乾',
+'张法乾' => '张法乾',
 '當著' => '当着',
 '當著書' => '当著书',
 '當著作' => '当著作',
@@ -14166,8 +14168,8 @@ $zh2Hans = array(
 '待著述' => '待著述',
 '後姓' => '後姓',
 '得著' => '得着',
-'得著书' => '得著书',
 '得著書' => '得著书',
+'得著书' => '得著书',
 '得著作' => '得著作',
 '得著名' => '得著名',
 '得著錄' => '得著录',
@@ -14177,12 +14179,12 @@ $zh2Hans = array(
 '得著者' => '得著者',
 '得著述' => '得著述',
 '循著' => '循着',
-'循著書' => '循著书',
 '循著书' => '循著书',
+'循著書' => '循著书',
 '循著作' => '循著作',
 '循著名' => '循著名',
-'循著錄' => '循著录',
 '循著录' => '循著录',
+'循著錄' => '循著录',
 '循著称' => '循著称',
 '循著稱' => '循著称',
 '循著者' => '循著者',
@@ -14194,13 +14196,13 @@ $zh2Hans = array(
 '心著名' => '心著名',
 '心著录' => '心著录',
 '心著錄' => '心著录',
-'心著称' => '心著称',
 '心著稱' => '心著称',
+'心著称' => '心著称',
 '心著者' => '心著者',
 '心著述' => '心著述',
 '忍著' => '忍着',
-'忍著書' => '忍著书',
 '忍著书' => '忍著书',
+'忍著書' => '忍著书',
 '忍著作' => '忍著作',
 '忍著名' => '忍著名',
 '忍著录' => '忍著录',
@@ -14210,23 +14212,23 @@ $zh2Hans = array(
 '忍著者' => '忍著者',
 '忍著述' => '忍著述',
 '志著' => '志着',
-'志著书' => '志著书',
 '志著書' => '志著书',
+'志著书' => '志著书',
 '志著作' => '志著作',
 '志著名' => '志著名',
-'志著录' => '志著录',
 '志著錄' => '志著录',
-'志著稱' => '志著称',
+'志著录' => '志著录',
 '志著称' => '志著称',
+'志著稱' => '志著称',
 '志著者' => '志著者',
 '志著述' => '志著述',
 '忙著' => '忙着',
-'忙著書' => '忙著书',
 '忙著书' => '忙著书',
+'忙著書' => '忙著书',
 '忙著作' => '忙著作',
 '忙著名' => '忙著名',
-'忙著錄' => '忙著录',
 '忙著录' => '忙著录',
+'忙著錄' => '忙著录',
 '忙著称' => '忙著称',
 '忙著稱' => '忙著称',
 '忙著者' => '忙著者',
@@ -14240,25 +14242,25 @@ $zh2Hans = array(
 '懷著者' => '怀著者',
 '懷著述' => '怀著述',
 '急著' => '急着',
-'急著書' => '急著书',
 '急著书' => '急著书',
+'急著書' => '急著书',
 '急著作' => '急著作',
 '急著名' => '急著名',
-'急著錄' => '急著录',
 '急著录' => '急著录',
+'急著錄' => '急著录',
 '急著称' => '急著称',
 '急著稱' => '急著称',
 '急著者' => '急著者',
 '急著述' => '急著述',
 '性著' => '性着',
-'性著書' => '性著书',
 '性著书' => '性著书',
+'性著書' => '性著书',
 '性著作' => '性著作',
 '性著名' => '性著名',
-'性著錄' => '性著录',
 '性著录' => '性著录',
-'性著稱' => '性著称',
+'性著錄' => '性著录',
 '性著称' => '性著称',
+'性著稱' => '性著称',
 '性著者' => '性著者',
 '性著述' => '性著述',
 '戀著' => '恋着',
@@ -14277,8 +14279,8 @@ $zh2Hans = array(
 '悠著名' => '悠著名',
 '悠著錄' => '悠著录',
 '悠著录' => '悠著录',
-'悠著稱' => '悠著称',
 '悠著称' => '悠著称',
+'悠著稱' => '悠著称',
 '悠著者' => '悠著者',
 '悠著述' => '悠著述',
 '慣著' => '惯着',
@@ -14290,14 +14292,14 @@ $zh2Hans = array(
 '慣著者' => '惯著者',
 '慣著述' => '惯著述',
 '想著' => '想着',
-'想著书' => '想著书',
 '想著書' => '想著书',
+'想著书' => '想著书',
 '想著作' => '想著作',
 '想著名' => '想著名',
-'想著录' => '想著录',
 '想著錄' => '想著录',
-'想著稱' => '想著称',
+'想著录' => '想著录',
 '想著称' => '想著称',
+'想著稱' => '想著称',
 '想著者' => '想著者',
 '想著述' => '想著述',
 '戰著' => '战着',
@@ -14309,12 +14311,12 @@ $zh2Hans = array(
 '戰著者' => '战著者',
 '戰著述' => '战著述',
 '戴著' => '戴着',
-'戴著书' => '戴著书',
 '戴著書' => '戴著书',
+'戴著书' => '戴著书',
 '戴著作' => '戴著作',
 '戴著名' => '戴著名',
-'戴著录' => '戴著录',
 '戴著錄' => '戴著录',
+'戴著录' => '戴著录',
 '戴著稱' => '戴著称',
 '戴著称' => '戴著称',
 '戴著者' => '戴著者',
@@ -14326,17 +14328,17 @@ $zh2Hans = array(
 '扎著名' => '扎著名',
 '扎著錄' => '扎著录',
 '扎著录' => '扎著录',
-'扎著稱' => '扎著称',
 '扎著称' => '扎著称',
+'扎著稱' => '扎著称',
 '扎著者' => '扎著者',
 '扎著述' => '扎著述',
 '打著' => '打着',
-'打著书' => '打著书',
 '打著書' => '打著书',
+'打著书' => '打著书',
 '打著作' => '打著作',
 '打著名' => '打著名',
-'打著录' => '打著录',
 '打著錄' => '打著录',
+'打著录' => '打著录',
 '打著称' => '打著称',
 '打著稱' => '打著称',
 '打著者' => '打著者',
@@ -14361,8 +14363,8 @@ $zh2Hans = array(
 '抓著名' => '抓著名',
 '抓著录' => '抓著录',
 '抓著錄' => '抓著录',
-'抓著稱' => '抓著称',
 '抓著称' => '抓著称',
+'抓著稱' => '抓著称',
 '抓著者' => '抓著者',
 '抓著述' => '抓著述',
 '護著' => '护着',
@@ -14378,17 +14380,17 @@ $zh2Hans = array(
 '披著書' => '披著书',
 '披著作' => '披著作',
 '披著名' => '披著名',
-'披著錄' => '披著录',
 '披著录' => '披著录',
-'披著称' => '披著称',
+'披著錄' => '披著录',
 '披著稱' => '披著称',
+'披著称' => '披著称',
 '披著者' => '披著者',
 '披著述' => '披著述',
 '抬著' => '抬着',
 '抬著作' => '抬著作',
 '抬著名' => '抬著名',
-'抬著錄' => '抬著录',
 '抬著录' => '抬著录',
+'抬著錄' => '抬著录',
 '抬著稱' => '抬著称',
 '抬著称' => '抬著称',
 '抬著者' => '抬著者',
@@ -14398,8 +14400,8 @@ $zh2Hans = array(
 '抱著名' => '抱著名',
 '抱著录' => '抱著录',
 '抱著錄' => '抱著录',
-'抱著称' => '抱著称',
 '抱著稱' => '抱著称',
+'抱著称' => '抱著称',
 '抱著者' => '抱著者',
 '抱著述' => '抱著述',
 '拉著' => '拉着',
@@ -14409,8 +14411,8 @@ $zh2Hans = array(
 '拉著名' => '拉著名',
 '拉著录' => '拉著录',
 '拉著錄' => '拉著录',
-'拉著稱' => '拉著称',
 '拉著称' => '拉著称',
+'拉著稱' => '拉著称',
 '拉著者' => '拉著者',
 '拉著述' => '拉著述',
 '拉鍊' => '拉链',
@@ -14439,8 +14441,8 @@ $zh2Hans = array(
 '拼著' => '拼着',
 '拼著作' => '拼著作',
 '拼著名' => '拼著名',
-'拼著錄' => '拼著录',
 '拼著录' => '拼著录',
+'拼著錄' => '拼著录',
 '拼著稱' => '拼著称',
 '拼著称' => '拼著称',
 '拼著者' => '拼著者',
@@ -14448,10 +14450,10 @@ $zh2Hans = array(
 '拿著' => '拿着',
 '拿著作' => '拿著作',
 '拿著名' => '拿著名',
-'拿著錄' => '拿著录',
 '拿著录' => '拿著录',
-'拿著稱' => '拿著称',
+'拿著錄' => '拿著录',
 '拿著称' => '拿著称',
+'拿著稱' => '拿著称',
 '拿著者' => '拿著者',
 '拿著述' => '拿著述',
 '持著' => '持着',
@@ -14468,8 +14470,8 @@ $zh2Hans = array(
 '挑著名' => '挑著名',
 '挑著錄' => '挑著录',
 '挑著录' => '挑著录',
-'挑著稱' => '挑著称',
 '挑著称' => '挑著称',
+'挑著稱' => '挑著称',
 '挑著者' => '挑著者',
 '挑著述' => '挑著述',
 '擋著' => '挡着',
@@ -14506,10 +14508,10 @@ $zh2Hans = array(
 '捆著' => '捆着',
 '捆著作' => '捆著作',
 '捆著名' => '捆著名',
-'捆著录' => '捆著录',
 '捆著錄' => '捆著录',
-'捆著稱' => '捆著称',
+'捆著录' => '捆著录',
 '捆著称' => '捆著称',
+'捆著稱' => '捆著称',
 '捆著者' => '捆著者',
 '捆著述' => '捆著述',
 '據著' => '据着',
@@ -14523,10 +14525,10 @@ $zh2Hans = array(
 '掖著' => '掖着',
 '掖著作' => '掖著作',
 '掖著名' => '掖著名',
-'掖著录' => '掖著录',
 '掖著錄' => '掖著录',
-'掖著称' => '掖著称',
+'掖著录' => '掖著录',
 '掖著稱' => '掖著称',
+'掖著称' => '掖著称',
 '掖著者' => '掖著者',
 '掖著述' => '掖著述',
 '接著' => '接着',
@@ -14539,14 +14541,14 @@ $zh2Hans = array(
 '接著者' => '接著者',
 '接著述' => '接著述',
 '揉著' => '揉着',
-'揉著書' => '揉著书',
 '揉著书' => '揉著书',
+'揉著書' => '揉著书',
 '揉著作' => '揉著作',
 '揉著名' => '揉著名',
-'揉著錄' => '揉著录',
 '揉著录' => '揉著录',
-'揉著稱' => '揉著称',
+'揉著錄' => '揉著录',
 '揉著称' => '揉著称',
+'揉著稱' => '揉著称',
 '揉著者' => '揉著者',
 '揉著述' => '揉著述',
 '提著' => '提着',
@@ -14574,14 +14576,14 @@ $zh2Hans = array(
 '擺著述' => '摆著述',
 '撰著' => '撰著',
 '撼著' => '撼着',
-'撼著书' => '撼著书',
 '撼著書' => '撼著书',
+'撼著书' => '撼著书',
 '撼著作' => '撼著作',
 '撼著名' => '撼著名',
-'撼著录' => '撼著录',
 '撼著錄' => '撼著录',
-'撼著稱' => '撼著称',
+'撼著录' => '撼著录',
 '撼著称' => '撼著称',
+'撼著稱' => '撼著称',
 '撼著者' => '撼著者',
 '撼著述' => '撼著述',
 '敞著' => '敞着',
@@ -14589,8 +14591,8 @@ $zh2Hans = array(
 '敞著名' => '敞著名',
 '敞著錄' => '敞著录',
 '敞著录' => '敞著录',
-'敞著称' => '敞著称',
 '敞著稱' => '敞著称',
+'敞著称' => '敞著称',
 '敞著者' => '敞著者',
 '敞著述' => '敞著述',
 '數著' => '数着',
@@ -14616,10 +14618,10 @@ $zh2Hans = array(
 '斥著书' => '斥著书',
 '斥著作' => '斥著作',
 '斥著名' => '斥著名',
-'斥著录' => '斥著录',
 '斥著錄' => '斥著录',
-'斥著称' => '斥著称',
+'斥著录' => '斥著录',
 '斥著稱' => '斥著称',
+'斥著称' => '斥著称',
 '斥著者' => '斥著者',
 '斥著述' => '斥著述',
 '新著' => '新著',
@@ -14638,8 +14640,8 @@ $zh2Hans = array(
 '於志賀' => '於志贺',
 '於志贺' => '於志贺',
 '於戲' => '於戏',
-'於梨华' => '於梨华',
 '於梨華' => '於梨华',
+'於梨华' => '於梨华',
 '於氏' => '於氏',
 '於潛縣' => '於潜县',
 '於潜县' => '於潜县',
@@ -14647,34 +14649,34 @@ $zh2Hans = array(
 '於菟' => '於菟',
 '於賢德' => '於贤德',
 '於除鞬' => '於除鞬',
-'旋乾轉坤' => '旋乾转坤',
 '旋乾转坤' => '旋乾转坤',
+'旋乾轉坤' => '旋乾转坤',
 '曠若發矇' => '旷若发矇',
 '昂著' => '昂着',
 '昂著书' => '昂著书',
 '昂著書' => '昂著书',
 '昂著作' => '昂著作',
 '昂著名' => '昂著名',
-'昂著录' => '昂著录',
 '昂著錄' => '昂著录',
+'昂著录' => '昂著录',
 '昂著稱' => '昂著称',
 '昂著称' => '昂著称',
 '昂著者' => '昂著者',
 '昂著述' => '昂著述',
 '易·乾' => '易·乾',
-'易经·乾' => '易经·乾',
 '易經·乾' => '易经·乾',
+'易经·乾' => '易经·乾',
 '易經乾' => '易经乾',
 '易经乾' => '易经乾',
 '映著' => '映着',
-'映著书' => '映著书',
 '映著書' => '映著书',
+'映著书' => '映著书',
 '映著作' => '映著作',
 '映著名' => '映著名',
-'映著录' => '映著录',
 '映著錄' => '映著录',
-'映著称' => '映著称',
+'映著录' => '映著录',
 '映著稱' => '映著称',
+'映著称' => '映著称',
 '映著者' => '映著者',
 '映著述' => '映著述',
 '昭著' => '昭著',
@@ -14683,15 +14685,15 @@ $zh2Hans = array(
 '晃著' => '晃着',
 '晃著作' => '晃著作',
 '晃著名' => '晃著名',
-'晃著录' => '晃著录',
 '晃著錄' => '晃著录',
-'晃著稱' => '晃著称',
+'晃著录' => '晃著录',
 '晃著称' => '晃著称',
+'晃著稱' => '晃著称',
 '晃著者' => '晃著者',
 '晃著述' => '晃著述',
 '暗著' => '暗着',
-'暗著書' => '暗著书',
 '暗著书' => '暗著书',
+'暗著書' => '暗著书',
 '暗著作' => '暗著作',
 '暗著名' => '暗著名',
 '暗著錄' => '暗著录',
@@ -14705,17 +14707,17 @@ $zh2Hans = array(
 '有著书' => '有著书',
 '有著作' => '有著作',
 '有著名' => '有著名',
-'有著录' => '有著录',
 '有著錄' => '有著录',
-'有著稱' => '有著称',
+'有著录' => '有著录',
 '有著称' => '有著称',
+'有著稱' => '有著称',
 '有著者' => '有著者',
 '有著述' => '有著述',
 '望著' => '望着',
 '望著作' => '望著作',
 '望著名' => '望著名',
-'望著錄' => '望著录',
 '望著录' => '望著录',
+'望著錄' => '望著录',
 '望著稱' => '望著称',
 '望著称' => '望著称',
 '望著者' => '望著者',
@@ -14724,21 +14726,21 @@ $zh2Hans = array(
 '朝著' => '朝着',
 '朝著作' => '朝著作',
 '朝著名' => '朝著名',
-'朝著錄' => '朝著录',
 '朝著录' => '朝著录',
-'朝著称' => '朝著称',
+'朝著錄' => '朝著录',
 '朝著稱' => '朝著称',
+'朝著称' => '朝著称',
 '朝著者' => '朝著者',
 '朝著述' => '朝著述',
 '本著' => '本着',
-'本著書' => '本著书',
 '本著书' => '本著书',
+'本著書' => '本著书',
 '本著作' => '本著作',
 '本著名' => '本著名',
-'本著錄' => '本著录',
 '本著录' => '本著录',
-'本著称' => '本著称',
+'本著錄' => '本著录',
 '本著稱' => '本著称',
+'本著称' => '本著称',
 '本著者' => '本著者',
 '本著述' => '本著述',
 '朴於宇同' => '朴於宇同',
@@ -14759,8 +14761,8 @@ $zh2Hans = array(
 '雜著者' => '杂著者',
 '雜著述' => '杂著述',
 '李乾德' => '李乾德',
-'李乾顺' => '李乾顺',
 '李乾順' => '李乾顺',
+'李乾顺' => '李乾顺',
 '李澤鉅' => '李泽钜',
 '來著' => '来着',
 '來著書' => '来著书',
@@ -14776,8 +14778,8 @@ $zh2Hans = array(
 '枕著名' => '枕著名',
 '枕著錄' => '枕著录',
 '枕著录' => '枕著录',
-'枕著称' => '枕著称',
 '枕著稱' => '枕著称',
+'枕著称' => '枕著称',
 '枕著者' => '枕著者',
 '枕著述' => '枕著述',
 '柳詒徵' => '柳诒徵',
@@ -14849,17 +14851,17 @@ $zh2Hans = array(
 '活著名' => '活著名',
 '活著录' => '活著录',
 '活著錄' => '活著录',
-'活著称' => '活著称',
 '活著稱' => '活著称',
+'活著称' => '活著称',
 '活著者' => '活著者',
 '活著述' => '活著述',
 '流著' => '流着',
-'流著書' => '流著书',
 '流著书' => '流著书',
+'流著書' => '流著书',
 '流著作' => '流著作',
 '流著名' => '流著名',
-'流著錄' => '流著录',
 '流著录' => '流著录',
+'流著錄' => '流著录',
 '流著稱' => '流著称',
 '流著称' => '流著称',
 '流著者' => '流著者',
@@ -14872,8 +14874,8 @@ $zh2Hans = array(
 '浮著名' => '浮著名',
 '浮著录' => '浮著录',
 '浮著錄' => '浮著录',
-'浮著称' => '浮著称',
 '浮著稱' => '浮著称',
+'浮著称' => '浮著称',
 '浮著者' => '浮著者',
 '浮著述' => '浮著述',
 '潤著' => '润着',
@@ -14889,10 +14891,10 @@ $zh2Hans = array(
 '涵著書' => '涵著书',
 '涵著作' => '涵著作',
 '涵著名' => '涵著名',
-'涵著錄' => '涵著录',
 '涵著录' => '涵著录',
-'涵著称' => '涵著称',
+'涵著錄' => '涵著录',
 '涵著稱' => '涵著称',
+'涵著称' => '涵著称',
 '涵著者' => '涵著者',
 '涵著述' => '涵著述',
 '渴著' => '渴着',
@@ -14902,8 +14904,8 @@ $zh2Hans = array(
 '渴著名' => '渴著名',
 '渴著录' => '渴著录',
 '渴著錄' => '渴著录',
-'渴著稱' => '渴著称',
 '渴著称' => '渴著称',
+'渴著稱' => '渴著称',
 '渴著者' => '渴著者',
 '渴著述' => '渴著述',
 '溢著' => '溢着',
@@ -14924,8 +14926,8 @@ $zh2Hans = array(
 '演著名' => '演著名',
 '演著录' => '演著录',
 '演著錄' => '演著录',
-'演著称' => '演著称',
 '演著稱' => '演著称',
+'演著称' => '演著称',
 '演著者' => '演著者',
 '演著述' => '演著述',
 '漫著' => '漫着',
@@ -14933,8 +14935,8 @@ $zh2Hans = array(
 '漫著书' => '漫著书',
 '漫著作' => '漫著作',
 '漫著名' => '漫著名',
-'漫著錄' => '漫著录',
 '漫著录' => '漫著录',
+'漫著錄' => '漫著录',
 '漫著称' => '漫著称',
 '漫著稱' => '漫著称',
 '漫著者' => '漫著者',
@@ -14954,14 +14956,14 @@ $zh2Hans = array(
 '燒著者' => '烧著者',
 '燒著述' => '烧著述',
 '照著' => '照着',
-'照著書' => '照著书',
 '照著书' => '照著书',
+'照著書' => '照著书',
 '照著作' => '照著作',
 '照著名' => '照著名',
-'照著錄' => '照著录',
 '照著录' => '照著录',
-'照著稱' => '照著称',
+'照著錄' => '照著录',
 '照著称' => '照著称',
+'照著稱' => '照著称',
 '照著者' => '照著者',
 '照著述' => '照著述',
 '愛護著' => '爱护着',
@@ -14995,8 +14997,8 @@ $zh2Hans = array(
 '猜著書' => '猜着书',
 '猜著作' => '猜著作',
 '猜著名' => '猜著名',
-'猜著录' => '猜著录',
 '猜著錄' => '猜著录',
+'猜著录' => '猜著录',
 '猜著称' => '猜著称',
 '猜著稱' => '猜著称',
 '猜著者' => '猜著者',
@@ -15008,8 +15010,8 @@ $zh2Hans = array(
 '甜著书' => '甜著书',
 '甜著作' => '甜著作',
 '甜著名' => '甜著名',
-'甜著錄' => '甜著录',
 '甜著录' => '甜著录',
+'甜著錄' => '甜著录',
 '甜著稱' => '甜著称',
 '甜著称' => '甜著称',
 '甜著者' => '甜著者',
@@ -15027,12 +15029,12 @@ $zh2Hans = array(
 '用著稱' => '用著称',
 '用著者' => '用著者',
 '用著述' => '用著述',
-'男為乾' => '男为乾',
-'男爲乾' => '男为乾',
 '男为乾' => '男为乾',
+'男爲乾' => '男为乾',
+'男為乾' => '男为乾',
 '男性為乾' => '男性为乾',
-'男性为乾' => '男性为乾',
 '男性爲乾' => '男性为乾',
+'男性为乾' => '男性为乾',
 '留著' => '留着',
 '留著書' => '留着书',
 '留著作' => '留著作',
@@ -15064,12 +15066,12 @@ $zh2Hans = array(
 '皺著者' => '皱著者',
 '皺著述' => '皱著述',
 '盛著' => '盛着',
-'盛著書' => '盛著书',
 '盛著书' => '盛著书',
+'盛著書' => '盛著书',
 '盛著作' => '盛著作',
 '盛著名' => '盛著名',
-'盛著录' => '盛著录',
 '盛著錄' => '盛著录',
+'盛著录' => '盛著录',
 '盛著稱' => '盛著称',
 '盛著称' => '盛著称',
 '盛著者' => '盛著者',
@@ -15085,14 +15087,14 @@ $zh2Hans = array(
 '盯著者' => '盯著者',
 '盯著述' => '盯著述',
 '盾著' => '盾着',
-'盾著书' => '盾著书',
 '盾著書' => '盾著书',
+'盾著书' => '盾著书',
 '盾著作' => '盾著作',
 '盾著名' => '盾著名',
-'盾著录' => '盾著录',
 '盾著錄' => '盾著录',
-'盾著称' => '盾著称',
+'盾著录' => '盾著录',
 '盾著稱' => '盾著称',
+'盾著称' => '盾著称',
 '盾著者' => '盾著者',
 '盾著述' => '盾著述',
 '看不著' => '看不着',
@@ -15103,8 +15105,8 @@ $zh2Hans = array(
 '看著名' => '看著名',
 '看著录' => '看著录',
 '看著錄' => '看著录',
-'看著称' => '看著称',
 '看著稱' => '看著称',
+'看著称' => '看著称',
 '看著者' => '看著者',
 '看著述' => '看著述',
 '著業' => '着业',
@@ -15212,14 +15214,14 @@ $zh2Hans = array(
 '睡不著' => '睡不着',
 '睡得著' => '睡得着',
 '睡著' => '睡着',
-'睡著书' => '睡著书',
 '睡著書' => '睡著书',
+'睡著书' => '睡著书',
 '睡著作' => '睡著作',
 '睡著名' => '睡著名',
-'睡著录' => '睡著录',
 '睡著錄' => '睡著录',
-'睡著稱' => '睡著称',
+'睡著录' => '睡著录',
 '睡著称' => '睡著称',
+'睡著稱' => '睡著称',
 '睡著者' => '睡著者',
 '睡著述' => '睡著述',
 '睹微知著' => '睹微知著',
@@ -15247,8 +15249,8 @@ $zh2Hans = array(
 '瞪著书' => '瞪著书',
 '瞪著作' => '瞪著作',
 '瞪著名' => '瞪著名',
-'瞪著录' => '瞪著录',
 '瞪著錄' => '瞪著录',
+'瞪著录' => '瞪著录',
 '瞪著称' => '瞪著称',
 '瞪著稱' => '瞪著称',
 '瞪著者' => '瞪著者',
@@ -15261,10 +15263,10 @@ $zh2Hans = array(
 '福著書' => '福著书',
 '福著作' => '福著作',
 '福著名' => '福著名',
-'福著录' => '福著录',
 '福著錄' => '福著录',
-'福著称' => '福著称',
+'福著录' => '福著录',
 '福著稱' => '福著称',
+'福著称' => '福著称',
 '福著者' => '福著者',
 '福著述' => '福著述',
 '穀梁' => '穀梁',
@@ -15275,17 +15277,17 @@ $zh2Hans = array(
 '空著名' => '空著名',
 '空著录' => '空著录',
 '空著錄' => '空著录',
-'空著稱' => '空著称',
 '空著称' => '空著称',
+'空著稱' => '空著称',
 '空著者' => '空著者',
 '空著述' => '空著述',
 '穿著' => '穿着',
-'穿著書' => '穿著书',
 '穿著书' => '穿著书',
+'穿著書' => '穿著书',
 '穿著作' => '穿著作',
 '穿著名' => '穿著名',
-'穿著錄' => '穿著录',
 '穿著录' => '穿著录',
+'穿著錄' => '穿著录',
 '穿著称' => '穿著称',
 '穿著稱' => '穿著称',
 '穿著者' => '穿著者',
@@ -15299,14 +15301,14 @@ $zh2Hans = array(
 '豎著者' => '竖著者',
 '豎著述' => '竖著述',
 '站著' => '站着',
-'站著書' => '站著书',
 '站著书' => '站著书',
+'站著書' => '站著书',
 '站著作' => '站著作',
 '站著名' => '站著名',
-'站著录' => '站著录',
 '站著錄' => '站著录',
-'站著稱' => '站著称',
+'站著录' => '站著录',
 '站著称' => '站著称',
+'站著稱' => '站著称',
 '站著者' => '站著者',
 '站著述' => '站著述',
 '笑著' => '笑着',
@@ -15316,8 +15318,8 @@ $zh2Hans = array(
 '笑著名' => '笑著名',
 '笑著录' => '笑著录',
 '笑著錄' => '笑著录',
-'笑著稱' => '笑著称',
 '笑著称' => '笑著称',
+'笑著稱' => '笑著称',
 '笑著者' => '笑著者',
 '笑著述' => '笑著述',
 '答覆' => '答复',
@@ -15328,8 +15330,8 @@ $zh2Hans = array(
 '管著名' => '管著名',
 '管著录' => '管著录',
 '管著錄' => '管著录',
-'管著称' => '管著称',
 '管著稱' => '管著称',
+'管著称' => '管著称',
 '管著者' => '管著者',
 '管著述' => '管著述',
 '米澤瑠美' => '米泽瑠美',
@@ -15362,34 +15364,34 @@ $zh2Hans = array(
 '纏著者' => '缠著者',
 '纏著述' => '缠著述',
 '罩著' => '罩着',
-'罩著書' => '罩著书',
 '罩著书' => '罩著书',
+'罩著書' => '罩著书',
 '罩著作' => '罩著作',
 '罩著名' => '罩著名',
-'罩著录' => '罩著录',
 '罩著錄' => '罩著录',
-'罩著稱' => '罩著称',
+'罩著录' => '罩著录',
 '罩著称' => '罩著称',
+'罩著稱' => '罩著称',
 '罩著者' => '罩著者',
 '罩著述' => '罩著述',
 '美著' => '美着',
-'美著書' => '美著书',
 '美著书' => '美著书',
+'美著書' => '美著书',
 '美著作' => '美著作',
 '美著名' => '美著名',
-'美著錄' => '美著录',
 '美著录' => '美著录',
+'美著錄' => '美著录',
 '美著稱' => '美著称',
 '美著称' => '美著称',
 '美著者' => '美著者',
 '美著述' => '美著述',
 '耀著' => '耀着',
-'耀著书' => '耀著书',
 '耀著書' => '耀著书',
+'耀著书' => '耀著书',
 '耀著作' => '耀著作',
 '耀著名' => '耀著名',
-'耀著录' => '耀著录',
 '耀著錄' => '耀著录',
+'耀著录' => '耀著录',
 '耀著称' => '耀著称',
 '耀著稱' => '耀著称',
 '耀著者' => '耀著者',
@@ -15415,8 +15417,8 @@ $zh2Hans = array(
 '背著名' => '背著名',
 '背著录' => '背著录',
 '背著錄' => '背著录',
-'背著稱' => '背著称',
 '背著称' => '背著称',
+'背著稱' => '背著称',
 '背著者' => '背著者',
 '背著述' => '背著述',
 '膠著' => '胶着',
@@ -15436,18 +15438,18 @@ $zh2Hans = array(
 '藝著者' => '艺著者',
 '藝著述' => '艺著述',
 '苦著' => '苦着',
-'苦著書' => '苦著书',
 '苦著书' => '苦著书',
+'苦著書' => '苦著书',
 '苦著作' => '苦著作',
 '苦著名' => '苦著名',
-'苦著錄' => '苦著录',
 '苦著录' => '苦著录',
-'苦著称' => '苦著称',
+'苦著錄' => '苦著录',
 '苦著稱' => '苦著称',
+'苦著称' => '苦著称',
 '苦著者' => '苦著者',
 '苦著述' => '苦著述',
-'薴烯' => '苧烯',
 '苧烯' => '苧烯',
+'薴烯' => '苧烯',
 '獲著' => '获着',
 '獲著書' => '获著书',
 '獲著作' => '获著作',
@@ -15465,8 +15467,8 @@ $zh2Hans = array(
 '落著名' => '落著名',
 '落著录' => '落著录',
 '落著錄' => '落著录',
-'落著称' => '落著称',
 '落著稱' => '落著称',
+'落著称' => '落著称',
 '落著者' => '落著者',
 '落著述' => '落著述',
 '著書' => '著书',
@@ -15483,14 +15485,14 @@ $zh2Hans = array(
 '蒙汗葯' => '蒙汗药',
 '蒙著' => '蒙着',
 '蒙葯' => '蒙药',
-'蒙著书' => '蒙著书',
 '蒙著書' => '蒙著书',
+'蒙著书' => '蒙著书',
 '蒙著作' => '蒙著作',
 '蒙著名' => '蒙著名',
 '蒙著录' => '蒙著录',
 '蒙著錄' => '蒙著录',
-'蒙著称' => '蒙著称',
 '蒙著稱' => '蒙著称',
+'蒙著称' => '蒙著称',
 '蒙著者' => '蒙著者',
 '蒙著述' => '蒙著述',
 '藏著' => '藏着',
@@ -15500,19 +15502,19 @@ $zh2Hans = array(
 '藏著名' => '藏著名',
 '藏著錄' => '藏著录',
 '藏著录' => '藏著录',
-'藏著稱' => '藏著称',
 '藏著称' => '藏著称',
+'藏著稱' => '藏著称',
 '藏著者' => '藏著者',
 '藏著述' => '藏著述',
 '蘸著' => '蘸着',
-'蘸著书' => '蘸著书',
 '蘸著書' => '蘸著书',
+'蘸著书' => '蘸著书',
 '蘸著作' => '蘸著作',
 '蘸著名' => '蘸著名',
 '蘸著录' => '蘸著录',
 '蘸著錄' => '蘸著录',
-'蘸著称' => '蘸著称',
 '蘸著稱' => '蘸著称',
+'蘸著称' => '蘸著称',
 '蘸著者' => '蘸著者',
 '蘸著述' => '蘸著述',
 '行著' => '行着',
@@ -15520,19 +15522,19 @@ $zh2Hans = array(
 '行著書' => '行著书',
 '行著作' => '行著作',
 '行著名' => '行著名',
-'行著錄' => '行著录',
 '行著录' => '行著录',
-'行著称' => '行著称',
+'行著錄' => '行著录',
 '行著稱' => '行著称',
+'行著称' => '行著称',
 '行著者' => '行著者',
 '行著述' => '行著述',
 '衣著' => '衣着',
-'衣著書' => '衣著书',
 '衣著书' => '衣著书',
+'衣著書' => '衣著书',
 '衣著作' => '衣著作',
 '衣著名' => '衣著名',
-'衣著錄' => '衣著录',
 '衣著录' => '衣著录',
+'衣著錄' => '衣著录',
 '衣著稱' => '衣著称',
 '衣著称' => '衣著称',
 '衣著者' => '衣著者',
@@ -15546,14 +15548,14 @@ $zh2Hans = array(
 '裝著者' => '装著者',
 '裝著述' => '装著述',
 '裹著' => '裹着',
-'裹著书' => '裹著书',
 '裹著書' => '裹著书',
+'裹著书' => '裹著书',
 '裹著作' => '裹著作',
 '裹著名' => '裹著名',
 '裹著录' => '裹著录',
 '裹著錄' => '裹著录',
-'裹著稱' => '裹著称',
 '裹著称' => '裹著称',
+'裹著稱' => '裹著称',
 '裹著者' => '裹著者',
 '裹著述' => '裹著述',
 '覆蓋' => '覆蓋',
@@ -15602,8 +15604,8 @@ $zh2Hans = array(
 '豫著名' => '豫著名',
 '豫著录' => '豫著录',
 '豫著錄' => '豫著录',
-'豫著稱' => '豫著称',
 '豫著称' => '豫著称',
+'豫著稱' => '豫著称',
 '豫著者' => '豫著者',
 '豫著述' => '豫著述',
 '貞著' => '贞着',
@@ -15615,14 +15617,14 @@ $zh2Hans = array(
 '貞著者' => '贞著者',
 '貞著述' => '贞著述',
 '走著' => '走着',
-'走著书' => '走著书',
 '走著書' => '走著书',
+'走著书' => '走著书',
 '走著作' => '走著作',
 '走著名' => '走著名',
-'走著录' => '走著录',
 '走著錄' => '走著录',
-'走著称' => '走著称',
+'走著录' => '走著录',
 '走著稱' => '走著称',
+'走著称' => '走著称',
 '走著者' => '走著者',
 '走著述' => '走著述',
 '趕著' => '赶着',
@@ -15638,8 +15640,8 @@ $zh2Hans = array(
 '趴著书' => '趴著书',
 '趴著作' => '趴著作',
 '趴著名' => '趴著名',
-'趴著錄' => '趴著录',
 '趴著录' => '趴著录',
+'趴著錄' => '趴著录',
 '趴著称' => '趴著称',
 '趴著稱' => '趴著称',
 '趴著者' => '趴著者',
@@ -15657,8 +15659,8 @@ $zh2Hans = array(
 '跑著书' => '跑著书',
 '跑著作' => '跑著作',
 '跑著名' => '跑著名',
-'跑著錄' => '跑著录',
 '跑著录' => '跑著录',
+'跑著錄' => '跑著录',
 '跑著稱' => '跑著称',
 '跑著称' => '跑著称',
 '跑著者' => '跑著者',
@@ -15670,28 +15672,28 @@ $zh2Hans = array(
 '跟著名' => '跟著名',
 '跟著录' => '跟著录',
 '跟著錄' => '跟著录',
-'跟著稱' => '跟著称',
 '跟著称' => '跟著称',
+'跟著稱' => '跟著称',
 '跟著者' => '跟著者',
 '跟著述' => '跟著述',
 '跪著' => '跪着',
-'跪著书' => '跪著书',
 '跪著書' => '跪著书',
+'跪著书' => '跪著书',
 '跪著作' => '跪著作',
 '跪著名' => '跪著名',
-'跪著录' => '跪著录',
 '跪著錄' => '跪著录',
+'跪著录' => '跪著录',
 '跪著稱' => '跪著称',
 '跪著称' => '跪著称',
 '跪著者' => '跪著者',
 '跪著述' => '跪著述',
 '跳著' => '跳着',
-'跳著書' => '跳著书',
 '跳著书' => '跳著书',
+'跳著書' => '跳著书',
 '跳著作' => '跳著作',
 '跳著名' => '跳著名',
-'跳著錄' => '跳著录',
 '跳著录' => '跳著录',
+'跳著錄' => '跳著录',
 '跳著称' => '跳著称',
 '跳著稱' => '跳著称',
 '跳著者' => '跳著者',
@@ -15704,13 +15706,13 @@ $zh2Hans = array(
 '踏著名' => '踏著名',
 '踏著錄' => '踏著录',
 '踏著录' => '踏著录',
-'踏著稱' => '踏著称',
 '踏著称' => '踏著称',
+'踏著稱' => '踏著称',
 '踏著者' => '踏著者',
 '踏著述' => '踏著述',
 '踩著' => '踩着',
-'踩著書' => '踩著书',
 '踩著书' => '踩著书',
+'踩著書' => '踩著书',
 '踩著作' => '踩著作',
 '踩著名' => '踩著名',
 '踩著录' => '踩著录',
@@ -15720,12 +15722,12 @@ $zh2Hans = array(
 '踩著者' => '踩著者',
 '踩著述' => '踩著述',
 '身著' => '身着',
-'身著書' => '身著书',
 '身著书' => '身著书',
+'身著書' => '身著书',
 '身著作' => '身著作',
 '身著名' => '身著名',
-'身著錄' => '身著录',
 '身著录' => '身著录',
+'身著錄' => '身著录',
 '身著稱' => '身著称',
 '身著称' => '身著称',
 '身著者' => '身著者',
@@ -15737,8 +15739,8 @@ $zh2Hans = array(
 '躺著名' => '躺著名',
 '躺著錄' => '躺著录',
 '躺著录' => '躺著录',
-'躺著稱' => '躺著称',
 '躺著称' => '躺著称',
+'躺著稱' => '躺著称',
 '躺著者' => '躺著者',
 '躺著述' => '躺著述',
 '轉著' => '转着',
@@ -15787,34 +15789,34 @@ $zh2Hans = array(
 '連著述' => '连著述',
 '迫著' => '迫着',
 '追著' => '追着',
-'追著书' => '追著书',
 '追著書' => '追著书',
+'追著书' => '追著书',
 '追著作' => '追著作',
 '追著名' => '追著名',
-'追著录' => '追著录',
 '追著錄' => '追著录',
+'追著录' => '追著录',
 '追著称' => '追著称',
 '追著稱' => '追著称',
 '追著者' => '追著者',
 '追著述' => '追著述',
 '逆著' => '逆着',
-'逆著书' => '逆著书',
 '逆著書' => '逆著书',
+'逆著书' => '逆著书',
 '逆著作' => '逆著作',
 '逆著名' => '逆著名',
-'逆著录' => '逆著录',
 '逆著錄' => '逆著录',
-'逆著稱' => '逆著称',
+'逆著录' => '逆著录',
 '逆著称' => '逆著称',
+'逆著稱' => '逆著称',
 '逆著者' => '逆著者',
 '逆著述' => '逆著述',
 '逼著' => '逼着',
-'逼著书' => '逼著书',
 '逼著書' => '逼著书',
+'逼著书' => '逼著书',
 '逼著作' => '逼著作',
 '逼著名' => '逼著名',
-'逼著录' => '逼著录',
 '逼著錄' => '逼著录',
+'逼著录' => '逼著录',
 '逼著称' => '逼著称',
 '逼著稱' => '逼著称',
 '逼著者' => '逼著者',
@@ -15840,8 +15842,8 @@ $zh2Hans = array(
 '配著名' => '配著名',
 '配著錄' => '配著录',
 '配著录' => '配著录',
-'配著称' => '配著称',
 '配著稱' => '配著称',
+'配著称' => '配著称',
 '配著者' => '配著者',
 '配著述' => '配著述',
 '釀著' => '酿着',
@@ -15852,14 +15854,14 @@ $zh2Hans = array(
 '釀著稱' => '酿著称',
 '釀著者' => '酿著者',
 '釀著述' => '酿著述',
-'醯壶' => '醯壶',
 '醯壺' => '醯壶',
+'醯壶' => '醯壶',
 '醯醬' => '醯酱',
 '醯酱' => '醯酱',
 '醯醋' => '醯醋',
 '醯醢' => '醯醢',
-'醯雞' => '醯鸡',
 '醯鸡' => '醯鸡',
+'醯雞' => '醯鸡',
 '重覆' => '重复',
 '金鍊' => '金链',
 '鐵鍊' => '铁链',
@@ -15901,8 +15903,8 @@ $zh2Hans = array(
 '聞得著' => '闻得着',
 '聞著' => '闻着',
 '阳为乾' => '阳为乾',
-'陽為乾' => '阳为乾',
 '陽爲乾' => '阳为乾',
+'陽為乾' => '阳为乾',
 '阿部正瞭' => '阿部正瞭',
 '附著' => '附着',
 '附睪' => '附睾',
@@ -15910,36 +15912,36 @@ $zh2Hans = array(
 '附著書' => '附著书',
 '附著作' => '附著作',
 '附著名' => '附著名',
-'附著录' => '附著录',
 '附著錄' => '附著录',
+'附著录' => '附著录',
 '附著称' => '附著称',
 '附著稱' => '附著称',
 '附著者' => '附著者',
 '附著述' => '附著述',
-'陳乾生' => '陈乾生',
 '陈乾生' => '陈乾生',
-'陳公乾生' => '陈公乾生',
+'陳乾生' => '陈乾生',
 '陈公乾生' => '陈公乾生',
+'陳公乾生' => '陈公乾生',
 '陋著' => '陋着',
-'陋著书' => '陋著书',
 '陋著書' => '陋著书',
+'陋著书' => '陋著书',
 '陋著作' => '陋著作',
 '陋著名' => '陋著名',
-'陋著录' => '陋著录',
 '陋著錄' => '陋著录',
-'陋著稱' => '陋著称',
+'陋著录' => '陋著录',
 '陋著称' => '陋著称',
+'陋著稱' => '陋著称',
 '陋著者' => '陋著者',
 '陋著述' => '陋著述',
 '陪著' => '陪着',
-'陪著書' => '陪著书',
 '陪著书' => '陪著书',
+'陪著書' => '陪著书',
 '陪著作' => '陪著作',
 '陪著名' => '陪著名',
-'陪著錄' => '陪著录',
 '陪著录' => '陪著录',
-'陪著稱' => '陪著称',
+'陪著錄' => '陪著录',
 '陪著称' => '陪著称',
+'陪著稱' => '陪著称',
 '陪著者' => '陪著者',
 '陪著述' => '陪著述',
 '陳堵' => '陳堵',
@@ -15953,26 +15955,26 @@ $zh2Hans = array(
 '隨著者' => '随著者',
 '隨著述' => '随著述',
 '隔著' => '隔着',
-'隔著書' => '隔著书',
 '隔著书' => '隔著书',
+'隔著書' => '隔著书',
 '隔著作' => '隔著作',
 '隔著名' => '隔著名',
-'隔著錄' => '隔著录',
 '隔著录' => '隔著录',
+'隔著錄' => '隔著录',
 '隔著称' => '隔著称',
 '隔著稱' => '隔著称',
 '隔著者' => '隔著者',
 '隔著述' => '隔著述',
 '隱睪' => '隱睾',
 '雅著' => '雅着',
-'雅著書' => '雅著书',
 '雅著书' => '雅著书',
+'雅著書' => '雅著书',
 '雅著作' => '雅著作',
 '雅著名' => '雅著名',
-'雅著錄' => '雅著录',
 '雅著录' => '雅著录',
-'雅著稱' => '雅著称',
+'雅著錄' => '雅著录',
 '雅著称' => '雅著称',
+'雅著稱' => '雅著称',
 '雅著者' => '雅著者',
 '雅著述' => '雅著述',
 '雍乾' => '雍乾',
@@ -15981,8 +15983,8 @@ $zh2Hans = array(
 '靠著名' => '靠著名',
 '靠著錄' => '靠著录',
 '靠著录' => '靠著录',
-'靠著称' => '靠著称',
 '靠著稱' => '靠著称',
+'靠著称' => '靠著称',
 '靠著者' => '靠著者',
 '靠著述' => '靠著述',
 '頂著' => '顶着',
@@ -16063,8 +16065,8 @@ $zh2Hans = array(
 '高著者' => '高著者',
 '高著述' => '高著述',
 '髭著' => '髭着',
-'髭著書' => '髭著书',
 '髭著书' => '髭著书',
+'髭著書' => '髭著书',
 '髭著作' => '髭著作',
 '髭著名' => '髭著名',
 '髭著錄' => '髭著录',
@@ -16078,17 +16080,17 @@ $zh2Hans = array(
 '魏徵' => '魏徵',
 '魚乾乾' => '鱼干干',
 '麯崇裕' => '麯崇裕',
-'麴义' => '麴义',
 '麴義' => '麴义',
+'麴义' => '麴义',
 '麴英' => '麴英',
 '麽氏' => '麽氏',
-'麼麼' => '麽麽',
 '麽麽' => '麽麽',
+'麼麼' => '麽麽',
 '黄润乾' => '黄润乾',
 '黃潤乾' => '黄润乾',
 '黏著' => '黏着',
-'黏著書' => '黏著书',
 '黏著书' => '黏著书',
+'黏著書' => '黏著书',
 '黏著作' => '黏著作',
 '黏著名' => '黏著名',
 '黏著录' => '黏著录',
@@ -16104,23 +16106,23 @@ $zh2TW = array(
 '”' => '」',
 '‘' => '『',
 '’' => '』',
-'三极管' => '三極體',
 '三極管' => '三極體',
+'三极管' => '三極體',
 '世界裏' => '世界裡',
 '中文裏' => '中文裡',
 '串行' => '串列',
 '串列加速器' => '串列加速器',
 '以太网' => '乙太網',
 '奶酪' => '乳酪',
-'二极管' => '二極體',
 '二極管' => '二極體',
+'二极管' => '二極體',
 '交互式' => '互動式',
 '阿塞拜疆' => '亞塞拜然',
 '人工智能' => '人工智慧',
 '接口' => '介面',
 '服务器' => '伺服器',
-'字节' => '位元組',
 '字節' => '位元組',
+'字节' => '位元組',
 '作品裏' => '作品裡',
 '信道' => '信道',
 '优先级' => '優先順序',
@@ -16135,20 +16137,20 @@ $zh2TW = array(
 '冬日裏' => '冬日裡',
 '凉菜' => '冷盤',
 '冷菜' => '冷盤',
-'兇器' => '凶器',
 '凶器' => '凶器',
-'å\85\87å¾\92' => 'å\87¶å¾\92',
+'å\85\87å\99¨' => 'å\87¶å\99¨',
 '凶徒' => '凶徒',
+'兇徒' => '凶徒',
 '兇手' => '凶手',
 '凶手' => '凶手',
-'凶案' => '凶案',
 '兇案' => '凶案',
-'å\85\87æ®\98' => 'å\87¶æ®\98',
+'å\87¶æ¡\88' => 'å\87¶æ¡\88',
 '凶殘' => '凶殘',
+'兇殘' => '凶殘',
 '凶残' => '凶殘',
 '兇殺' => '凶殺',
-'凶殺' => '凶殺',
 '凶杀' => '凶殺',
+'凶殺' => '凶殺',
 '打印' => '列印',
 '列支敦士登' => '列支敦斯登',
 '剪彩' => '剪綵',
@@ -16158,10 +16160,10 @@ $zh2TW = array(
 '特立尼達和多巴哥' => '千里達托貝哥',
 '特立尼达和托巴哥' => '千里達托貝哥',
 '半角' => '半形',
-'卡塔尔' => '卡達',
 '卡塔爾' => '卡達',
-'打印机' => '印表機',
+'卡塔尔' => '卡達',
 '打印機' => '印表機',
+'打印机' => '印表機',
 '厄立特里亚' => '厄利垂亞',
 '厄立特里亞' => '厄利垂亞',
 '厄瓜多尔' => '厄瓜多',
@@ -16176,17 +16178,17 @@ $zh2TW = array(
 '哈萨克斯坦' => '哈薩克',
 '哥斯達黎加' => '哥斯大黎加',
 '哥斯达黎加' => '哥斯大黎加',
-'格鲁吉亚' => '喬治亞',
 '格魯吉亞' => '喬治亞',
-'佐治亞' => '喬治亞',
+'格鲁吉亚' => '喬治亞',
 '佐治亚' => '喬治亞',
+'佐治亞' => '喬治亞',
 '嘴裏' => '嘴裡',
 '土库曼斯坦' => '土庫曼',
 '薯仔' => '土豆',
 '土豆網' => '土豆網',
 '土豆网' => '土豆網',
-'坦桑尼亞' => '坦尚尼亞',
 '坦桑尼亚' => '坦尚尼亞',
+'坦桑尼亞' => '坦尚尼亞',
 '端口' => '埠',
 '塔吉克斯坦' => '塔吉克',
 '塞舌尔' => '塞席爾',
@@ -16201,63 +16203,63 @@ $zh2TW = array(
 '多明尼加國' => '多米尼克',
 '穿梭機' => '太空梭',
 '航天飞机' => '太空梭',
-'尼日利亞' => '奈及利亞',
 '尼日利亚' => '奈及利亞',
+'尼日利亞' => '奈及利亞',
 '字符' => '字元',
 '字号' => '字型大小',
 '字库' => '字型檔',
 '字符集' => '字符集',
 '存盘' => '存檔',
 '學裏' => '學裡',
-'安提瓜和巴布达' => '安地卡及巴布達',
 '安提瓜和巴布達' => '安地卡及巴布達',
+'安提瓜和巴布达' => '安地卡及巴布達',
 '宋元' => '宋元',
 '洪都拉斯' => '宏都拉斯',
 '寻址' => '定址',
 '寒假裏' => '寒假裡',
 '宽带' => '寬頻',
-'老挝' => '寮國',
 '老撾' => '寮國',
+'老挝' => '寮國',
 '打门' => '射門',
 '專輯裏' => '專輯裡',
-'赞比亚' => '尚比亞',
 '贊比亞' => '尚比亞',
-'尼日尔' => '尼日',
+'赞比亚' => '尚比亞',
 '尼日爾' => '尼日',
+'尼日尔' => '尼日',
 '山洞裏' => '山洞裡',
 '巴布亞新畿內亞' => '巴布亞紐幾內亞',
 '巴布亚新几内亚' => '巴布亞紐幾內亞',
 '巴巴多斯' => '巴貝多',
 '布基纳法索' => '布吉納法索',
 '布基納法索' => '布吉納法索',
-'布殊' => '布希',
 '布什' => '布希',
+'布殊' => '布希',
 '帕劳' => '帛琉',
 '例程' => '常式',
-'平治之亂' => '平治之亂',
 '平治之乱' => '平治之亂',
+'平治之亂' => '平治之亂',
 '年代裏' => '年代裡',
-'幾內亞比紹' => '幾內亞比索',
 '几内亚比绍' => '幾內亞比索',
+'幾內亞比紹' => '幾內亞比索',
 '彩带' => '彩帶',
 '彩排' => '彩排',
 '彩楼' => '彩樓',
 '彩牌楼' => '彩牌樓',
-'复苏' => '復甦',
 '復蘇' => '復甦',
+'复苏' => '復甦',
 '心裏' => '心裡',
-'闪存' => '快閃記憶體',
 '快闪存储器' => '快閃記憶體',
+'闪存' => '快閃記憶體',
 '想象' => '想像',
 '传感' => '感測',
 '习用' => '慣用',
 '戏彩娱亲' => '戲綵娛親',
 '戲裏' => '戲裡',
-'手电' => '手電筒',
 '手电筒' => '手電筒',
+'手电' => '手電筒',
 '括号' => '括弧',
-'拿破仑' => '拿破崙',
 '拿破侖' => '拿破崙',
+'拿破仑' => '拿破崙',
 '積架' => '捷豹',
 '扫瞄仪' => '掃瞄器',
 '挂钩' => '掛鉤',
@@ -16267,12 +16269,12 @@ $zh2TW = array(
 '桌球' => '撞球',
 '便携式' => '攜帶型',
 '故事裏' => '故事裡',
-'調制解調器' => '數據機',
 '调制解调器' => '數據機',
-'斯洛文尼亚' => '斯洛維尼亞',
+'調制解調器' => '數據機',
 '斯洛文尼亞' => '斯洛維尼亞',
-'æ\96°ç´\80å\85\83' => 'æ\96°ç´\80å\85\83',
+'æ\96¯æ´\9bæ\96\87å°¼äº\9a' => 'æ\96¯æ´\9b維尼äº\9e',
 '新纪元' => '新紀元',
+'新紀元' => '新紀元',
 '日子裏' => '日子裡',
 '春假裏' => '春假裡',
 '春天裏' => '春天裡',
@@ -16284,13 +16286,13 @@ $zh2TW = array(
 '乍得' => '查德',
 '克林頓' => '柯林頓',
 '克林顿' => '柯林頓',
-'格林纳达' => '格瑞那達',
 '格林納達' => '格瑞那達',
+'格林纳达' => '格瑞那達',
 '凡高' => '梵谷',
 '森林裏' => '森林裡',
 '棺材裏' => '棺材裡',
-'榴莲' => '榴槤',
 '榴蓮' => '榴槤',
+'榴莲' => '榴槤',
 '仿真' => '模擬',
 '毛里裘斯' => '模里西斯',
 '毛里求斯' => '模里西斯',
@@ -16301,15 +16303,15 @@ $zh2TW = array(
 '元音' => '母音',
 '永历' => '永曆',
 '文莱' => '汶萊',
-'沙地阿拉伯' => '沙烏地阿拉伯',
 '沙特阿拉伯' => '沙烏地阿拉伯',
-'æ³¢æ\96¯å°¼äº\9aå\92\8cé»\91å¡\9eå\93¥ç»´é\82£' => '波士尼äº\9e赫å¡\9eå\93¥ç¶­ç´\8d',
+'æ²\99å\9c°é\98¿æ\8b\89伯' => 'æ²\99ç\83\8få\9c°é\98¿æ\8b\89伯',
 '波斯尼亞黑塞哥維那' => '波士尼亞赫塞哥維納',
-'博茨瓦納' => '波札那',
+'波斯尼亚和黑塞哥维那' => '波士尼亞赫塞哥維納',
 '博茨瓦纳' => '波札那',
+'博茨瓦納' => '波札那',
 '流程控制' => '流程控制',
-'侯賽因' => '海珊',
 '侯赛因' => '海珊',
+'侯賽因' => '海珊',
 '深淵裏' => '深淵裡',
 '光标' => '游標',
 '鼠标' => '滑鼠',
@@ -16318,18 +16320,18 @@ $zh2TW = array(
 '词组' => '片語',
 '獄裏' => '獄裡',
 '塞拉利昂' => '獅子山',
-'危地馬拉' => '瓜地馬拉',
 '危地马拉' => '瓜地馬拉',
+'危地馬拉' => '瓜地馬拉',
 '冈比亚' => '甘比亞',
 '岡比亞' => '甘比亞',
 '疑兇' => '疑凶',
 '疑凶' => '疑凶',
 '百科裏' => '百科裡',
 '皮裏陽秋' => '皮裡陽秋',
-'卢旺达' => '盧安達',
 '盧旺達' => '盧安達',
-'真兇' => '真凶',
+'卢旺达' => '盧安達',
 '真凶' => '真凶',
+'真兇' => '真凶',
 '眼睛裏' => '眼睛裡',
 '硅片' => '矽片',
 '硅谷' => '矽谷',
@@ -16347,43 +16349,43 @@ $zh2TW = array(
 '蹦极跳' => '笨豬跳',
 '绑紧跳' => '笨豬跳',
 '等于' => '等於',
-'短信' => '簡訊',
 '短訊' => '簡訊',
+'短信' => '簡訊',
 '系列裏' => '系列裡',
 '新西蘭' => '紐西蘭',
 '新西兰' => '紐西蘭',
-'所羅門群島' => '索羅門群島',
 '所罗门群岛' => '索羅門群島',
-'索马里' => '索馬利亞',
+'所羅門群島' => '索羅門群島',
 '索馬里' => '索馬利亞',
+'索马里' => '索馬利亞',
 '结彩' => '結綵',
 '佛得角' => '維德角',
 '網絡' => '網路',
 '网络' => '網路',
-'因特网' => '網際網路',
 '互聯網' => '網際網路',
+'因特网' => '網際網路',
 '彩球' => '綵球',
 '彩绸' => '綵綢',
 '彩线' => '綵線',
 '彩船' => '綵船',
 '彩衣' => '綵衣',
 '綫' => '線',
-'緝兇' => '緝凶',
 '缉凶' => '緝凶',
+'緝兇' => '緝凶',
 '緝凶' => '緝凶',
 '意大利' => '義大利',
 '老字号' => '老字號',
 '圣基茨和尼维斯' => '聖克里斯多福及尼維斯',
 '聖吉斯納域斯' => '聖克里斯多福及尼維斯',
-'圣文森特和格林纳丁斯' => '聖文森及格瑞那丁',
 '聖文森特和格林納丁斯' => '聖文森及格瑞那丁',
+'圣文森特和格林纳丁斯' => '聖文森及格瑞那丁',
 '圣卢西亚' => '聖露西亞',
 '聖盧西亞' => '聖露西亞',
 '圣马力诺' => '聖馬利諾',
 '聖馬力諾' => '聖馬利諾',
 '肚裏' => '肚裡',
-'肯雅' => '肯亞',
 '肯尼亚' => '肯亞',
+'肯雅' => '肯亞',
 '航天大学' => '航天大學',
 '苦裏' => '苦裡',
 '毛里塔尼亚' => '茅利塔尼亞',
@@ -16392,8 +16394,8 @@ $zh2TW = array(
 '万历' => '萬曆',
 '瓦努阿图' => '萬那杜',
 '瓦努阿圖' => '萬那杜',
-'也門' => '葉門',
 '也门' => '葉門',
+'也門' => '葉門',
 '着' => '著',
 '科摩羅' => '葛摩',
 '科摩罗' => '葛摩',
@@ -16402,19 +16404,19 @@ $zh2TW = array(
 '圭亚那' => '蓋亞那',
 '火锅盖帽' => '蓋火鍋',
 '苏里南' => '蘇利南',
-'行兇' => '行凶',
 '行凶' => '行凶',
+'行兇' => '行凶',
+'行凶后' => '行凶後',
 '行兇後' => '行凶後',
 '行凶後' => '行凶後',
-'行凶后' => '行凶後',
-'移动电话' => '行動電話',
 '流動電話' => '行動電話',
+'移动电话' => '行動電話',
 '行程控制' => '行程控制',
 '衞' => '衛',
 '卫生' => '衛生',
 '衞生' => '衛生',
-'埃塞俄比亞' => '衣索比亞',
 '埃塞俄比亚' => '衣索比亞',
+'埃塞俄比亞' => '衣索比亞',
 '裏勾外連' => '裡勾外連',
 '裏面' => '裡面',
 '分辨率' => '解析度',
@@ -16425,39 +16427,39 @@ $zh2TW = array(
 '瑙魯' => '諾魯',
 '变量' => '變數',
 '科特迪瓦' => '象牙海岸',
-'贝宁' => '貝南',
 '貝寧' => '貝南',
+'贝宁' => '貝南',
 '伯利茲' => '貝里斯',
 '伯利兹' => '貝里斯',
 '買兇' => '買凶',
-'買凶' => '買凶',
 '买凶' => '買凶',
+'買凶' => '買凶',
 '数据库' => '資料庫',
 '信息论' => '資訊理論',
 '奔驰' => '賓士',
 '平治' => '賓士',
 '利比里亚' => '賴比瑞亞',
 '利比里亞' => '賴比瑞亞',
-'莱索托' => '賴索托',
 '萊索托' => '賴索托',
+'莱索托' => '賴索托',
 '软驱' => '軟碟機',
-'软件' => '軟體',
 '軟件' => '軟體',
+'软件' => '軟體',
 '加载' => '載入',
-'津巴布韋' => '辛巴威',
 '津巴布韦' => '辛巴威',
+'津巴布韋' => '辛巴威',
 '词汇' => '辭彙',
-'加納' => '迦納',
 '加纳' => '迦納',
-'追兇' => '追凶',
+'加納' => '迦納',
 '追凶' => '追凶',
+'追兇' => '追凶',
 '這裏' => '這裡',
+'逞凶鬥狠' => '逞凶鬥狠',
 '逞兇鬥狠' => '逞凶鬥狠',
 '逞凶斗狠' => '逞凶鬥狠',
-'逞凶鬥狠' => '逞凶鬥狠',
 '即食麵' => '速食麵',
-'快速面' => '速食麵',
 '方便面' => '速食麵',
+'快速面' => '速食麵',
 '连字号' => '連字號',
 '进制' => '進位',
 '入球' => '進球',
@@ -16473,8 +16475,8 @@ $zh2TW = array(
 '鈎心鬥角' => '鉤心鬥角',
 '锎' => '鉲',
 '写保护' => '防寫',
-'阿拉伯聯合酋長國' => '阿拉伯聯合大公國',
 '阿拉伯联合酋长国' => '阿拉伯聯合大公國',
+'阿拉伯聯合酋長國' => '阿拉伯聯合大公國',
 '噪声' => '雜訊',
 '脱机' => '離線',
 '雪裏紅' => '雪裡紅',
@@ -16484,8 +16486,8 @@ $zh2TW = array(
 '异步' => '非同步',
 '声卡' => '音效卡',
 '缺省' => '預設',
-'頒佈' => '頒布',
 '颁布' => '頒布',
+'頒佈' => '頒布',
 '領域裏' => '領域裡',
 '头球' => '頭槌',
 '粒入球' => '顆進球',
@@ -16503,30 +16505,30 @@ $zh2TW = array(
 );
 
 $zh2HK = array(
-'505线' => '505綫',
 '505線' => '505綫',
-'507线' => '507綫',
+'505线' => '505綫',
 '507線' => '507綫',
-'610线' => '610綫',
+'507线' => '507綫',
 '610線' => '610綫',
+'610线' => '610綫',
 '614P線' => '614P綫',
 '614P线' => '614P綫',
-'614線' => '614綫',
 '614线' => '614綫',
+'614線' => '614綫',
 '615P線' => '615P綫',
 '615P线' => '615P綫',
 '615线' => '615綫',
 '615線' => '615綫',
-'705線' => '705綫',
 '705线' => '705綫',
-'706線' => '706綫',
+'705線' => '705綫',
 '706线' => '706綫',
+'706線' => '706綫',
 '751P線' => '751P綫',
 '751P线' => '751P綫',
-'751线' => '751綫',
 '751線' => '751綫',
-'761P線' => '761P綫',
+'751线' => '751綫',
 '761P线' => '761P綫',
+'761P線' => '761P綫',
 '“' => '「',
 '”' => '」',
 '‘' => '『',
@@ -16551,8 +16553,8 @@ $zh2HK = array(
 '乘著錄' => '乘著錄',
 '葉門' => '也門',
 '二極體' => '二極管',
-'因特网' => '互聯網',
 '網際網路' => '互聯網',
+'因特网' => '互聯網',
 '亮著' => '亮着',
 '亮著作' => '亮著作',
 '亮著名' => '亮著名',
@@ -16606,8 +16608,8 @@ $zh2HK = array(
 '住著述' => '住著述',
 '住著錄' => '住著錄',
 '維德角' => '佛得角',
-'作品里' => '作品裏',
 '作品裡' => '作品裏',
+'作品里' => '作品裏',
 '來著' => '來着',
 '來著作' => '來著作',
 '來著名' => '來著名',
@@ -16763,8 +16765,8 @@ $zh2HK = array(
 '動著者' => '動著者',
 '動著述' => '動著述',
 '動著錄' => '動著錄',
-'北環線' => '北環綫',
 '北环线' => '北環綫',
+'北環線' => '北環綫',
 '医院里' => '医院裏',
 '波札那' => '博茨瓦納',
 '珍妮弗·卡普里亚蒂' => '卡佩雅蒂',
@@ -16777,13 +16779,13 @@ $zh2HK = array(
 '印著述' => '印著述',
 '印著錄' => '印著錄',
 '瓜地馬拉' => '危地馬拉',
+'泡麵' => '即食麵',
 '方便面' => '即食麵',
-'速食麵' => '即食麵',
 '快速面' => '即食麵',
-'麵' => '即食麵',
+'速食麵' => '即食麵',
 '厄瓜多' => '厄瓜多爾',
-'厄瓜多尔' => '厄瓜多爾',
 '厄瓜多爾' => '厄瓜多爾',
+'厄瓜多尔' => '厄瓜多爾',
 '厄利垂亞' => '厄立特里亞',
 '去著' => '去着',
 '去著作' => '去著作',
@@ -16932,8 +16934,8 @@ $zh2HK = array(
 '坐著述' => '坐著述',
 '坐著錄' => '坐著錄',
 '坦尚尼亞' => '坦桑尼亞',
-'衣索比亞' => '埃塞俄比亞',
 '衣索匹亞' => '埃塞俄比亞',
+'衣索比亞' => '埃塞俄比亞',
 '吉里巴斯' => '基里巴斯',
 '塞普勒斯' => '塞浦路斯',
 '塞席爾' => '塞舌爾',
@@ -16945,10 +16947,10 @@ $zh2HK = array(
 '壓著者' => '壓著者',
 '壓著述' => '壓著述',
 '壓著錄' => '壓著錄',
-'夏天裡' => '夏天裏',
 '夏天里' => '夏天裏',
-'夏日裡' => '夏日裏',
+'夏天裡' => '夏天裏',
 '夏日里' => '夏日裏',
+'夏日裡' => '夏日裏',
 '夢著' => '夢着',
 '夢著作' => '夢著作',
 '夢著名' => '夢著名',
@@ -17002,8 +17004,8 @@ $zh2HK = array(
 '定著述' => '定著述',
 '定著錄' => '定著錄',
 '沃尓沃' => '富豪',
-'寒假里' => '寒假裏',
 '寒假裡' => '寒假裏',
+'寒假里' => '寒假裏',
 '寫著' => '寫着',
 '寫著作' => '寫著作',
 '寫著名' => '寫著名',
@@ -17012,10 +17014,10 @@ $zh2HK = array(
 '寫著者' => '寫著者',
 '寫著述' => '寫著述',
 '寫著錄' => '寫著錄',
-'將軍澳線' => '將軍澳綫',
 '将军澳线' => '將軍澳綫',
-'å°\88輯裡' => 'å°\88輯è£\8f',
+'å°\87è»\8dæ¾³ç·\9a' => 'å°\87è»\8d澳綫',
 '专辑里' => '專輯裏',
+'專輯裡' => '專輯裏',
 '尋著' => '尋着',
 '尋著作' => '尋著作',
 '尋著名' => '尋著名',
@@ -17032,12 +17034,12 @@ $zh2HK = array(
 '對著者' => '對著者',
 '對著述' => '對著述',
 '對著錄' => '對著錄',
-'尼日利亞' => '尼日利亞',
-'尼日利亚' => '尼日利亞',
 '奈及利亞' => '尼日利亞',
-'尼日' => '尼日爾',
-'尼日爾' => '尼日爾',
+'尼日利亚' => '尼日利亞',
+'尼日利亞' => '尼日利亞',
 '尼日尔' => '尼日爾',
+'尼日爾' => '尼日爾',
+'尼日' => '尼日爾',
 '展著' => '展着',
 '展著作' => '展著作',
 '展著名' => '展著名',
@@ -17080,8 +17082,8 @@ $zh2HK = array(
 '賓士' => '平治',
 '年代里' => '年代裏',
 '年代裡' => '年代裏',
-'干着' => '幹着',
 '幹著' => '幹着',
+'干着' => '幹着',
 '幾內亞比索' => '幾內亞比紹',
 '康著' => '康着',
 '康著作' => '康著作',
@@ -17124,8 +17126,8 @@ $zh2HK = array(
 '心著者' => '心著者',
 '心著述' => '心著述',
 '心著錄' => '心著錄',
-'心里' => '心裏',
 '心裡' => '心裏',
+'心里' => '心裏',
 '忍著' => '忍着',
 '忍著作' => '忍著作',
 '忍著名' => '忍著名',
@@ -17232,10 +17234,10 @@ $zh2HK = array(
 '戰著者' => '戰著者',
 '戰著述' => '戰著述',
 '戰著錄' => '戰著錄',
-'戏里' => '戲裏',
 '戲裡' => '戲裏',
-'狄安娜' => '戴安娜',
+'戏里' => '戲裏',
 '黛安娜' => '戴安娜',
+'狄安娜' => '戴安娜',
 '戴著' => '戴着',
 '戴著作' => '戴著作',
 '戴著名' => '戴著名',
@@ -17468,8 +17470,8 @@ $zh2HK = array(
 '斯洛維尼亞' => '斯洛文尼亞',
 '新著龍虎門' => '新著龍虎門',
 '紐西蘭' => '新西蘭',
-'日子裡' => '日子裏',
 '日子里' => '日子裏',
+'日子裡' => '日子裏',
 '昂著' => '昂着',
 '昂著作' => '昂著作',
 '昂著名' => '昂著名',
@@ -17486,12 +17488,12 @@ $zh2HK = array(
 '映著者' => '映著者',
 '映著述' => '映著述',
 '映著錄' => '映著錄',
-'春假裡' => '春假裏',
 '春假里' => '春假裏',
-'æ\98¥å¤©é\87\8c' => 'æ\98¥å¤©裏',
+'æ\98¥å\81\87裡' => 'æ\98¥å\81\87裏',
 '春天裡' => '春天裏',
-'春日里' => '春日裏',
+'春天里' => '春天裏',
 '春日裡' => '春日裏',
+'春日里' => '春日裏',
 '时间里' => '時間裏',
 '時間裡' => '時間裏',
 '晃著' => '晃着',
@@ -17501,8 +17503,8 @@ $zh2HK = array(
 '晃著者' => '晃著者',
 '晃著述' => '晃著述',
 '晃著錄' => '晃著錄',
-'暑假裡' => '暑假裏',
 '暑假里' => '暑假裏',
+'暑假裡' => '暑假裏',
 '暗著' => '暗着',
 '暗著作' => '暗著作',
 '暗著名' => '暗著名',
@@ -17546,8 +17548,8 @@ $zh2HK = array(
 '村子裡' => '村子裏',
 '东涌线' => '東涌綫',
 '東涌線' => '東涌綫',
-'东铁线' => '東鐵綫',
 '東鐵線' => '東鐵綫',
+'东铁线' => '東鐵綫',
 '枕著' => '枕着',
 '枕著作' => '枕著作',
 '枕著名' => '枕著名',
@@ -17565,8 +17567,8 @@ $zh2HK = array(
 '梳著者' => '梳著者',
 '梳著述' => '梳著述',
 '梳著錄' => '梳著錄',
-'森林里' => '森林裏',
 '森林裡' => '森林裏',
+'森林里' => '森林裏',
 '棺材裡' => '棺材裏',
 '棺材里' => '棺材裏',
 '榴蓮' => '榴槤',
@@ -17581,8 +17583,8 @@ $zh2HK = array(
 '樂著錄' => '樂著錄',
 '寶獅' => '標致',
 '標誌著' => '標誌着',
-'机场快线' => '機場快綫',
 '機場快線' => '機場快綫',
+'机场快线' => '機場快綫',
 '機器人' => '機械人',
 '机器人' => '機械人',
 '历史里' => '歷史裏',
@@ -17615,12 +17617,12 @@ $zh2HK = array(
 '沉著者' => '沉著者',
 '沉著述' => '沉著述',
 '沉著錄' => '沉著錄',
-'沙中線' => '沙中綫',
 '沙中线' => '沙中綫',
+'沙中線' => '沙中綫',
 '沙地阿拉伯' => '沙特阿拉伯',
 '沙烏地阿拉伯' => '沙特阿拉伯',
-'沙田至中环线' => '沙田至中環綫',
 '沙田至中環線' => '沙田至中環綫',
+'沙田至中环线' => '沙田至中環綫',
 '马拉特·萨芬' => '沙芬',
 '沿著' => '沿着',
 '沿著作' => '沿著作',
@@ -17641,8 +17643,8 @@ $zh2HK = array(
 '活著者' => '活著者',
 '活著述' => '活著述',
 '活著錄' => '活著錄',
-'移动电话' => '流動電話',
 '行動電話' => '流動電話',
+'移动电话' => '流動電話',
 '流著' => '流着',
 '流著作' => '流著作',
 '流著名' => '流著名',
@@ -17724,10 +17726,10 @@ $zh2HK = array(
 '无线剧集' => '無綫劇集',
 '無線收費' => '無綫收費',
 '无线收费' => '無綫收費',
-'無線節目' => '無綫節目',
 '无线节目' => '無綫節目',
-'無線電視' => '無綫電視',
+'無線節目' => '無綫節目',
 '无线电视' => '無綫電視',
+'無線電視' => '無綫電視',
 '菸' => '煙',
 '照著' => '照着',
 '照著作' => '照著作',
@@ -17780,8 +17782,8 @@ $zh2HK = array(
 '猜著者' => '猜著者',
 '猜著述' => '猜著述',
 '猜著錄' => '猜著錄',
-'獄裡' => '獄裏',
 '狱里' => '獄裏',
+'獄裡' => '獄裏',
 '獨著' => '獨着',
 '獨著作' => '獨著作',
 '獨著名' => '獨著名',
@@ -17844,12 +17846,12 @@ $zh2HK = array(
 '疑著錄' => '疑著錄',
 '发布' => '發佈',
 '發布' => '發佈',
-'百科里' => '百科裏',
 '百科裡' => '百科裏',
+'百科里' => '百科裏',
 '計程車' => '的士',
 '出租车' => '的士',
-'皮裡陽秋' => '皮裏陽秋',
 '皮里阳秋' => '皮裏陽秋',
+'皮裡陽秋' => '皮裏陽秋',
 '皺著' => '皺着',
 '皺著作' => '皺著作',
 '皺著名' => '皺著名',
@@ -17959,8 +17961,8 @@ $zh2HK = array(
 '瞪著錄' => '瞪著錄',
 '簡訊' => '短訊',
 '短信' => '短訊',
-'硬體' => '硬件',
 '硬件' => '硬件',
+'硬體' => '硬件',
 '福斯' => '福士',
 '福著' => '福着',
 '福著作' => '福著作',
@@ -17970,12 +17972,12 @@ $zh2HK = array(
 '福著者' => '福著者',
 '福著述' => '福著述',
 '福著錄' => '福著錄',
-'秋假里' => '秋假裏',
 '秋假裡' => '秋假裏',
-'ç§\8b天é\87\8c' => 'ç§\8b天裏',
+'ç§\8bå\81\87é\87\8c' => 'ç§\8bå\81\87裏',
 '秋天裡' => '秋天裏',
-'秋日裡' => '秋日裏',
+'秋天里' => '秋天裏',
 '秋日里' => '秋日裏',
+'秋日裡' => '秋日裏',
 '葛摩' => '科摩羅',
 '捷豹' => '積架',
 '空著' => '空着',
@@ -17986,8 +17988,8 @@ $zh2HK = array(
 '空著者' => '空著者',
 '空著述' => '空著述',
 '空著錄' => '空著錄',
-'航天飞机' => '穿梭機',
 '太空梭' => '穿梭機',
+'航天飞机' => '穿梭機',
 '穿著' => '穿着',
 '穿著作' => '穿著作',
 '穿著名' => '穿著名',
@@ -18099,8 +18101,8 @@ $zh2HK = array(
 '考著者' => '考著者',
 '考著述' => '考著述',
 '考著錄' => '考著錄',
-'聖克里斯多福及尼維斯' => '聖吉斯納域斯',
 '圣基茨和尼维斯' => '聖吉斯納域斯',
+'聖克里斯多福及尼維斯' => '聖吉斯納域斯',
 '聖文森及格瑞那丁' => '聖文森特和格林納丁斯',
 '聖露西亞' => '聖盧西亞',
 '聖馬利諾' => '聖馬力諾',
@@ -18116,8 +18118,8 @@ $zh2HK = array(
 '聽著錄' => '聽著錄',
 '肚里' => '肚裏',
 '肚裡' => '肚裏',
-'肯亞' => '肯雅',
 '肯尼亚' => '肯雅',
+'肯亞' => '肯雅',
 '背著' => '背着',
 '背著作' => '背著作',
 '背著名' => '背著名',
@@ -18161,8 +18163,8 @@ $zh2HK = array(
 '苦著錄' => '苦著錄',
 '苦里' => '苦裏',
 '苦裡' => '苦裏',
-'荃灣線' => '荃灣綫',
 '荃湾线' => '荃灣綫',
+'荃灣線' => '荃灣綫',
 '莫三比克' => '莫桑比克',
 '賴索托' => '萊索托',
 '馬自達' => '萬事得',
@@ -18228,8 +18230,8 @@ $zh2HK = array(
 '衣著錄' => '衣著錄',
 '裡勾外連' => '裏勾外連',
 '里勾外连' => '裏勾外連',
-'裡面' => '裏面',
 '里面' => '裏面',
+'裡面' => '裏面',
 '裝著' => '裝着',
 '裝著作' => '裝著作',
 '裝著名' => '裝著名',
@@ -18246,8 +18248,8 @@ $zh2HK = array(
 '裹著者' => '裹著者',
 '裹著述' => '裹著述',
 '裹著錄' => '裹著錄',
-'西鐵線' => '西鐵綫',
 '西铁线' => '西鐵綫',
+'西鐵線' => '西鐵綫',
 '見著' => '見着',
 '見著作' => '見著作',
 '見著名' => '見著名',
@@ -18441,8 +18443,8 @@ $zh2HK = array(
 '辦著錄' => '辦著錄',
 '近角聪信' => '近角聰信',
 '近角聰信' => '近角聰信',
-'迪士尼線' => '迪士尼綫',
 '迪士尼线' => '迪士尼綫',
+'迪士尼線' => '迪士尼綫',
 '迫著' => '迫着',
 '追著' => '追着',
 '追著作' => '追著作',
@@ -18526,8 +18528,8 @@ $zh2HK = array(
 '醯醢' => '醯醢',
 '醯醬' => '醯醬',
 '醯酱' => '醯醬',
-'醯雞' => '醯雞',
 '醯鸡' => '醯雞',
+'醯雞' => '醯雞',
 '釀著' => '釀着',
 '釀著作' => '釀著作',
 '釀著名' => '釀著名',
@@ -18640,15 +18642,15 @@ $zh2HK = array(
 '雜著述' => '雜著述',
 '雜著錄' => '雜著錄',
 '冰淇淋' => '雪糕',
-'雪裡紅' => '雪裏紅',
 '雪里红' => '雪裏紅',
+'雪裡紅' => '雪裏紅',
 '雪裡蕻' => '雪裏蕻',
 '雪里蕻' => '雪裏蕻',
 '靠著' => '靠着',
 '靠著作' => '靠著作',
 '靠著名' => '靠著名',
-'靠著称' => '靠著稱',
 '靠著稱' => '靠著稱',
+'靠著称' => '靠著稱',
 '靠著者' => '靠著者',
 '靠著述' => '靠著述',
 '靠著錄' => '靠著錄',
@@ -18677,10 +18679,10 @@ $zh2HK = array(
 '順著者' => '順著者',
 '順著述' => '順著述',
 '順著錄' => '順著錄',
-'颁布' => '頒佈',
 '頒布' => '頒佈',
-'é¢\86å\9f\9fé\87\8c' => 'é \98å\9f\9fè£\8f',
+'é¢\81å¸\83' => 'é \92ä½\88',
 '領域裡' => '領域裏',
+'领域里' => '領域裏',
 '領著' => '領着',
 '領著作' => '領著作',
 '領著名' => '領著名',
@@ -18697,8 +18699,8 @@ $zh2HK = array(
 '飄著者' => '飄著者',
 '飄著述' => '飄著述',
 '飄著錄' => '飄著錄',
-'馆里' => '館裏',
 '館裡' => '館裏',
+'馆里' => '館裏',
 '馬爾地夫' => '馬爾代夫',
 '馬利共和國' => '馬里共和國',
 '土豆' => '馬鈴薯',
@@ -18776,8 +18778,8 @@ $zh2HK = array(
 '點著者' => '點著者',
 '點著述' => '點著述',
 '點著錄' => '點著錄',
-'点里' => '點裏',
 '點裡' => '點裏',
+'点里' => '點裏',
 );
 
 $zh2CN = array(
@@ -18803,8 +18805,8 @@ $zh2CN = array(
 '互聯網' => '互联网',
 '互動式' => '交互式',
 '人工智慧' => '人工智能',
-'甚麼' => '什么',
 '甚麽' => '什么',
+'甚麼' => '什么',
 '乙太網' => '以太网',
 '優先順序' => '优先级',
 '感測' => '传感',
@@ -18849,16 +18851,16 @@ $zh2CN = array(
 '华乐街' => '华乐街',
 '波札那' => '博茨瓦纳',
 '盧安達' => '卢旺达',
-'衛生' => '卫生',
 '衞生' => '卫生',
+'衛生' => '卫生',
 '瓜地馬拉' => '危地马拉',
 '厄瓜多' => '厄瓜多尔',
-'厄瓜多尔' => '厄瓜多尔',
 '厄瓜多爾' => '厄瓜多尔',
+'厄瓜多尔' => '厄瓜多尔',
 '厄利垂亞' => '厄立特里亚',
 '變數' => '变量',
-'桌球' => '台球',
 '撞球' => '台球',
+'桌球' => '台球',
 '吉布地' => '吉布提',
 '哈薩克' => '哈萨克斯坦',
 '哥斯大黎加' => '哥斯达黎加',
@@ -18867,8 +18869,8 @@ $zh2CN = array(
 '吐瓦魯' => '图瓦卢',
 '土庫曼' => '土库曼斯坦',
 '聖露西亞' => '圣卢西亚',
-'聖克里斯多福及尼維斯' => '圣基茨和尼维斯',
 '聖吉斯納域斯' => '圣基茨和尼维斯',
+'聖克里斯多福及尼維斯' => '圣基茨和尼维斯',
 '聖文森及格瑞那丁' => '圣文森特和格林纳丁斯',
 '聖馬利諾' => '圣马力诺',
 '蓋亞那' => '圭亚那',
@@ -18888,11 +18890,11 @@ $zh2CN = array(
 '福斯' => '大众',
 '大衛碧咸' => '大卫·贝克汉姆',
 '頭槌' => '头球',
-'平治' => '奔驰',
 '賓士' => '奔驰',
+'平治' => '奔驰',
 '忌廉' => '奶油',
-'字元會' => '字元会',
 '字元会' => '字元会',
+'字元會' => '字元会',
 '字元濟' => '字元济',
 '字元济' => '字元济',
 '字型大小' => '字号',
@@ -18900,18 +18902,18 @@ $zh2CN = array(
 '欄位' => '字段',
 '字母' => '字母',
 '字元' => '字符',
-'位元組' => '字节',
 '字節' => '字节',
+'位元組' => '字节',
 '存檔' => '存盘',
 '安地卡及巴布達' => '安提瓜和巴布达',
 '巨集' => '宏',
 '寬頻' => '宽带',
 '定址' => '寻址',
+'奈及利亞' => '尼日利亚',
 '尼日利亞' => '尼日利亚',
 '尼日利亚' => '尼日利亚',
-'奈及利亞' => '尼日利亚',
-'尼日尔' => '尼日尔',
 '尼日爾' => '尼日尔',
+'尼日尔' => '尼日尔',
 '章節附註' => '尾注',
 '區域網' => '局域网',
 '巴貝多' => '巴巴多斯',
@@ -18925,8 +18927,8 @@ $zh2CN = array(
 '蒲隆地' => '布隆迪',
 '希特拉' => '希特勒',
 '帛琉' => '帕劳',
-'平治之亂' => '平治之乱',
 '平治之乱' => '平治之乱',
+'平治之亂' => '平治之乱',
 '非同步' => '异步',
 '迴圈' => '循环',
 '快閃記憶體' => '快闪存储器',
@@ -18937,8 +18939,8 @@ $zh2CN = array(
 '索羅門群島' => '所罗门群岛',
 '打印' => '打印',
 '列印' => '打印',
-'打印機' => '打印机',
 '印表機' => '打印机',
+'打印機' => '打印机',
 '射門' => '打门',
 '掃瞄器' => '扫瞄仪',
 '括弧' => '括号',
@@ -18952,12 +18954,12 @@ $zh2CN = array(
 '斯洛維尼亞' => '斯洛文尼亚',
 '紐西蘭' => '新西兰',
 '即食麵' => '方便面',
-'速食麵' => '方便面',
 '快速面' => '方便面',
 '泡麵' => '方便面',
+'速食麵' => '方便面',
 '伺服器' => '服务器',
-'機器人' => '机器人',
 '機械人' => '机器人',
+'機器人' => '机器人',
 '許可權' => '权限',
 '寶獅' => '标志',
 '格瑞那達' => '格林纳达',
@@ -18986,16 +18988,16 @@ $zh2CN = array(
 '狗隻' => '犬只',
 '卡佩雅蒂' => '珍妮弗·卡普里亚蒂',
 '諾魯' => '瑙鲁',
-'溫納圖' => '瓦努阿图',
 '萬那杜' => '瓦努阿图',
+'溫納圖' => '瓦努阿图',
 '碟片' => '盘片',
-'簡訊' => '短信',
 '短訊' => '短信',
-'ç\9f½å¡µ' => 'ç\9f½å°\98',
+'ç°¡è¨\8a' => 'ç\9f­ä¿¡',
 '矽尘' => '矽尘',
+'矽塵' => '矽尘',
 '矽肺' => '矽肺',
-'矽鋼' => '矽钢',
 '矽钢' => '矽钢',
+'矽鋼' => '矽钢',
 '矽' => '硅',
 '矽片' => '硅片',
 '矽谷' => '硅谷',
@@ -19005,8 +19007,8 @@ $zh2CN = array(
 '磁軌' => '磁道',
 '葛摩' => '科摩罗',
 '象牙海岸' => '科特迪瓦',
-'流動電話' => '移动电话',
 '行動電話' => '移动电话',
+'流動電話' => '移动电话',
 '程式控制' => '程控',
 '突尼西亞' => '突尼斯',
 '谐星' => '笑星',
@@ -19018,11 +19020,11 @@ $zh2CN = array(
 '網路' => '网络',
 '網絡' => '网络',
 '寮國' => '老挝',
-'肯亞' => '肯尼亚',
 '肯雅' => '肯尼亚',
+'肯亞' => '肯尼亚',
 '單車' => '自行车',
-'穿梭機' => '航天飞机',
 '太空梭' => '航天飞机',
+'穿梭機' => '航天飞机',
 '節慶' => '节日',
 '晶元' => '芯片',
 '晶片' => '芯片',
@@ -19038,8 +19040,8 @@ $zh2CN = array(
 '尚比亞' => '赞比亚',
 '绑紧跳' => '蹦极跳',
 '笨豬跳' => '蹦极跳',
-'軟件' => '软件',
 '軟體' => '软件',
+'軟件' => '软件',
 '軟碟機' => '软驱',
 '米高奧雲' => '迈克尔·欧文',
 '舒麥加' => '迈克尔·舒马赫',
@@ -19069,15 +19071,15 @@ $zh2SG = array(
 '民乐' => '华乐',
 '夜校' => '夜学',
 '房价' => '屋价',
-'麵' => '快速面',
+'即食麵' => '快速面',
 '速食麵' => '快速面',
+'泡麵' => '快速面',
 '方便面' => '快速面',
-'即食麵' => '快速面',
-'散紙' => '散钱',
 '零钱' => '散钱',
+'散紙' => '散钱',
 '榴莲' => '榴梿',
 '榴蓮' => '榴梿',
-'蹦极跳' => '绑紧跳',
 '笨豬跳' => '绑紧跳',
+'蹦极跳' => '绑紧跳',
 '笑星' => '谐星',
 );
index 79232e5..6286f94 100644 (file)
@@ -329,7 +329,7 @@ class LinksUpdate extends SqlDataUpdate {
                                $toField = $prefix . '_to';
                        }
                        if ( count( $deletions ) ) {
-                               $where[] = "$toField IN (" . $this->mDb->makeList( array_keys( $deletions ) ) . ')';
+                               $where[$toField] = array_keys( $deletions );
                        } else {
                                $where = false;
                        }
index 4e48932..35ac60f 100644 (file)
@@ -252,8 +252,9 @@ class ForeignAPIRepo extends FileRepo {
         * @param string $name
         * @param int $width
         * @param int $height
-        * @param null $result
+        * @param array $result Out parameter that will be changed by the function.
         * @param string $otherParams
+        *
         * @return bool
         */
        function getThumbUrl( $name, $width = -1, $height = -1, &$result = null, $otherParams = '' ) {
index 267dbd5..eb55e82 100644 (file)
@@ -1990,7 +1990,7 @@ class LocalFileDeleteBatch {
                        $res = $dbw->select(
                                'oldimage',
                                array( 'oi_archive_name', 'oi_sha1' ),
-                               'oi_archive_name IN (' . $dbw->makeList( array_keys( $oldRels ) ) . ')',
+                               array( 'oi_archive_name' => array_keys( $oldRels ) ),
                                __METHOD__
                        );
 
@@ -2091,7 +2091,7 @@ class LocalFileDeleteBatch {
                        $concat = $dbw->buildConcat( array( "oi_sha1", $encExt ) );
                        $where = array(
                                'oi_name' => $this->file->getName(),
-                               'oi_archive_name IN (' . $dbw->makeList( array_keys( $oldRels ) ) . ')' );
+                               'oi_archive_name' => array_keys( $oldRels ) );
                        $dbw->insertSelect( 'filearchive', 'oldimage',
                                array(
                                        'fa_storage_group' => $encGroup,
@@ -2154,7 +2154,7 @@ class LocalFileDeleteBatch {
                        $res = $dbw->select( 'oldimage',
                                array( 'oi_archive_name' ),
                                array( 'oi_name' => $this->file->getName(),
-                                       'oi_archive_name IN (' . $dbw->makeList( array_keys( $oldRels ) ) . ')',
+                                       'oi_archive_name' => array_keys( $oldRels ),
                                        $dbw->bitAnd( 'oi_deleted', File::DELETED_FILE ) => File::DELETED_FILE ),
                                __METHOD__ );
 
@@ -2321,7 +2321,7 @@ class LocalFileRestoreBatch {
                $conditions = array( 'fa_name' => $this->file->getName() );
 
                if ( !$this->all ) {
-                       $conditions[] = 'fa_id IN (' . $dbw->makeList( $this->ids ) . ')';
+                       $conditions['fa_id'] = $this->ids;
                }
 
                $result = $dbw->select(
@@ -2506,7 +2506,7 @@ class LocalFileRestoreBatch {
 
                if ( $deleteIds ) {
                        $dbw->delete( 'filearchive',
-                               array( 'fa_id IN (' . $dbw->makeList( $deleteIds ) . ')' ),
+                               array( 'fa_id' => $deleteIds ),
                                __METHOD__ );
                }
 
index 4f501f7..bb42d53 100644 (file)
@@ -16,7 +16,7 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                } elseif ( array_key_exists( 'other-message', $params ) ) {
                        $params['other'] = wfMessage( $params['other-message'] )->plain();
                } else {
-                       $params['other'] = null;
+                       $params['other'] = wfMessage( 'htmlform-selectorother-other' )->plain();
                }
 
                parent::__construct( $params );
index 3f2e2cb..5223cd3 100644 (file)
@@ -155,10 +155,11 @@ abstract class DatabaseUpdater {
        }
 
        /**
-        * @throws MWException
         * @param DatabaseBase $db
         * @param bool $shared
-        * @param null $maintenance
+        * @param Maintenance $maintenance
+        *
+        * @throws MWException
         * @return DatabaseUpdater
         */
        public static function newForDB( &$db, $shared = false, $maintenance = null ) {
index a5e3c8b..7a7f125 100644 (file)
@@ -364,7 +364,7 @@ class WebInstallerOutput {
         * @return string
         */
        public function getJQuery() {
-               return Html::linkedScript( "../resources/jquery/jquery.js" );
+               return Html::linkedScript( "../resources/src/jquery/jquery.js" );
        }
 
 }
index 0c6ff63..de27766 100644 (file)
@@ -97,7 +97,7 @@
     "config-db-username": "Database username:",
     "config-db-password": "Database password:",
     "config-db-password-empty": "Please enter a password for the new database user: $1.\nWhile it may be possible to create users with no passwords, it is not secure.",
-    "config-db-username-empty": "You must enter a value for \"Database username\"",
+    "config-db-username-empty": "You must enter a value for \"{{int:config-db-username}}\"",
     "config-db-install-username": "Enter the username that will be used to connect to the database during the installation process.\nThis is not the username of the MediaWiki account; this is the username for your database.",
     "config-db-install-password": "Enter the password that will be used to connect to the database during the installation process.\nThis is not the password for the MediaWiki account; this is the password for your database.",
     "config-db-install-help": "Enter the username and password that will be used to connect to the database during the installation process.",
     "config-header-sqlite": "SQLite settings",
     "config-header-oracle": "Oracle settings",
     "config-header-mssql": "Microsoft SQL Server settings",
-    "config-invalid-db-type": "Invalid database type",
-    "config-missing-db-name": "You must enter a value for \"Database name\"",
-    "config-missing-db-host": "You must enter a value for \"Database host\"",
-    "config-missing-db-server-oracle": "You must enter a value for \"Database TNS\"",
-    "config-invalid-db-server-oracle": "Invalid database TNS \"$1\".\nUse either \"TNS Name\" or an \"Easy Connect\" string ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Oracle Naming Methods])",
+    "config-invalid-db-type": "Invalid database type.",
+    "config-missing-db-name": "You must enter a value for \"{{int:config-db-name}}\".",
+    "config-missing-db-host": "You must enter a value for \"{{int:config-db-host}}\".",
+    "config-missing-db-server-oracle": "You must enter a value for \"{{int:config-db-host-oracle}}\".",
+    "config-invalid-db-server-oracle": "Invalid database TNS \"$1\".\nUse either \"TNS Name\" or an \"Easy Connect\" string ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Oracle Naming Methods]).",
     "config-invalid-db-name": "Invalid database name \"$1\".\nUse only ASCII letters (a-z, A-Z), numbers (0-9), underscores (_) and hyphens (-).",
     "config-invalid-db-prefix": "Invalid database prefix \"$1\".\nUse only ASCII letters (a-z, A-Z), numbers (0-9), underscores (_) and hyphens (-).",
     "config-connection-error": "$1.\n\nCheck the host, username and password and try again.",
     "config-extension-link": "Did you know that your wiki supports [//www.mediawiki.org/wiki/Manual:Extensions extensions]?\n\nYou can browse [//www.mediawiki.org/wiki/Category:Extensions_by_category extensions by category] or the [//www.mediawiki.org/wiki/Extension_Matrix Extension Matrix] to see the full list of extensions.",
     "mainpagetext": "<strong>MediaWiki has been successfully installed.</strong>",
     "mainpagedocfooter": "Consult the [//meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.\n\n== Getting started ==\n* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]\n* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]\n* [//www.mediawiki.org/wiki/Localisation#Translation_resources Localise MediaWiki for your language]"
-}
\ No newline at end of file
+}
index 90742ce..b1dfe14 100644 (file)
@@ -254,6 +254,31 @@ class JobQueueGroup {
                return array_diff( $this->getQueueTypes(), $wgJobTypesExcludedFromDefaultQueue );
        }
 
+       /**
+        * Check if there are any queues with jobs (this is cached)
+        *
+        * @param integer $type JobQueueGroup::TYPE_* constant
+        * @return bool
+        * @since 1.23
+        */
+       public function queuesHaveJobs( $type = self::TYPE_ANY ) {
+               global $wgMemc;
+
+               $key = wfMemcKey( 'jobqueue', 'queueshavejobs', $type );
+
+               $value = $wgMemc->get( $key );
+               if ( $value === false ) {
+                       $queues = $this->getQueuesWithJobs();
+                       if ( $type == self::TYPE_DEFAULT ) {
+                               $queues = array_intersect( $queues, $this->getDefaultQueueTypes() );
+                       }
+                       $value = count( $queues ) ? 'true' : 'false';
+                       $wgMemc->add( $key, $value, 15 );
+               }
+
+               return ( $value === 'true' );
+       }
+
        /**
         * Get the list of job types that have non-empty queues
         *
index 8fa39fa..02f2438 100644 (file)
@@ -91,10 +91,11 @@ class CoreParserFunctions {
        }
 
        /**
-        * @param $parser Parser
-        * @param $date
-        * @param null $defaultPref
-        * @return mixed|string
+        * @param Parser $parser
+        * @param string $date
+        * @param string $defaultPref
+        *
+        * @return string
         */
        static function formatDate( $parser, $date, $defaultPref = null ) {
                $lang = $parser->getFunctionLang();
index 0a69b04..d10841f 100644 (file)
@@ -143,7 +143,8 @@ class DateFormatter {
         * @param string $preference User preference
         * @param string $text Text to reformat
         * @param array $options can contain 'linked' and/or 'match-whole'
-        * @return mixed|String
+        *
+        * @return string
         */
        function reformat( $preference, $text, $options = array( 'linked' ) ) {
                $linked = in_array( 'linked', $options );
index 6331a30..36f4bd4 100644 (file)
@@ -123,6 +123,12 @@ class ProfilerSimple extends Profiler {
                }
        }
 
+       public function getRawData() {
+               // Calling the method of the parent class results in fatal error.
+               // @todo Implement this correctly.
+               return array();
+       }
+
        public function getFunctionReport() {
                /* Implement in output subclasses */
                return '';
index dd6bec2..f739d3b 100644 (file)
@@ -97,7 +97,8 @@ class ActiveUsersPager extends UsersPager {
                        'qcc_type' => 'activeusers',
                        'qcc_namespace' => NS_USER,
                        'user_name = qcc_title',
-                       'rc_user_text = qcc_title'
+                       'rc_user_text = qcc_title',
+                       'rc_type != ' . $dbr->addQuotes( RC_EXTERNAL ) // Don't count wikidata.
                );
                if ( $this->requestedUser != '' ) {
                        $conds[] = 'qcc_title >= ' . $dbr->addQuotes( $this->requestedUser );
@@ -340,6 +341,7 @@ class SpecialActiveUsers extends SpecialPage {
                        array( 'rc_user_text', 'lastedittime' => 'MAX(rc_timestamp)' ),
                        array(
                                'rc_user > 0', // actual accounts
+                               'rc_type != ' . $dbw->addQuotes( RC_EXTERNAL ), // no wikidata
                                'rc_log_type IS NULL OR rc_log_type != ' . $dbw->addQuotes( 'newusers' ),
                                'rc_timestamp >= ' . $dbw->addQuotes( $dbw->timestamp( $sTimestamp ) ),
                                'rc_timestamp <= ' . $dbw->addQuotes( $dbw->timestamp( $eTimestamp ) )
index c867f06..fbddfbd 100644 (file)
@@ -138,6 +138,7 @@ class SpecialEmailUser extends UnlistedSpecialPage {
                $ret = self::getTarget( $this->mTarget );
                if ( !$ret instanceof User ) {
                        if ( $this->mTarget != '' ) {
+                               // Messages used here: notargettext, noemailtext, nowikiemailtext
                                $ret = ( $ret == 'notarget' ) ? 'emailnotarget' : ( $ret . 'text' );
                                $out->wrapWikiMsg( "<p class='error'>$1</p>", $ret );
                        }
@@ -305,6 +306,7 @@ class SpecialEmailUser extends UnlistedSpecialPage {
 
                $target = self::getTarget( $data['Target'] );
                if ( !$target instanceof User ) {
+                       // Messages used here: notargettext, noemailtext, nowikiemailtext
                        return $context->msg( $target . 'text' )->parseAsBlock();
                }
 
index 82a4f70..31034f9 100644 (file)
@@ -132,6 +132,88 @@ class SpecialListGroupRights extends SpecialPage {
                        ) );
                }
                $out->addHTML( Xml::closeElement( 'table' ) );
+               $this->outputNamespaceProtectionInfo();
+       }
+
+       private function outputNamespaceProtectionInfo() {
+               global $wgNamespaceProtection, $wgParser, $wgContLang;
+               $out = $this->getOutput();
+
+               if ( count( $wgNamespaceProtection ) == 0 ) {
+                       return;
+               }
+
+               $header = $this->msg( 'listgrouprights-namespaceprotection-header' )->parse();
+               $out->addHTML(
+                       Html::rawElement( 'h2', array(), Html::element( 'span', array(
+                               'class' => 'mw-headline',
+                               'id' => $wgParser->guessSectionNameFromWikiText( $header )
+                       ), $header ) ) .
+                       Xml::openElement( 'table', array( 'class' => 'wikitable' ) ) .
+                       Html::element(
+                               'th',
+                               array(),
+                               $this->msg( 'listgrouprights-namespaceprotection-namespace' )->text()
+                       ) .
+                       Html::element(
+                               'th',
+                               array(),
+                               $this->msg( 'listgrouprights-namespaceprotection-restrictedto' )->text()
+                       )
+               );
+
+               ksort( $wgNamespaceProtection );
+               foreach ( $wgNamespaceProtection as $namespace => $rights ) {
+                       if ( !in_array( $namespace, MWNamespace::getValidNamespaces() ) ) {
+                               continue;
+                       }
+
+                       if ( $namespace == NS_MAIN ) {
+                               $namespaceText = $this->msg( 'blanknamespace' )->text();
+                       } else {
+                               $namespaceText = $wgContLang->convertNamespace( $namespace );
+                       }
+
+                       $out->addHTML(
+                               Xml::openElement( 'tr' ) .
+                               Html::rawElement(
+                                       'td',
+                                       array(),
+                                       Linker::link(
+                                               SpecialPage::getTitleFor( 'Allpages' ),
+                                               $namespaceText,
+                                               array(),
+                                               array( 'namespace' => $namespace )
+                                       )
+                               ) .
+                               Xml::openElement( 'td' ) . Xml::openElement( 'ul' )
+                       );
+
+                       if ( !is_array( $rights ) ) {
+                               $rights = array( $rights );
+                       }
+
+                       foreach ( $rights as $right ) {
+                               $out->addHTML(
+                                       Html::rawElement( 'li', array(), $this->msg(
+                                               'listgrouprights-right-display',
+                                               User::getRightDescription( $right ),
+                                               Html::element(
+                                                       'span',
+                                                       array( 'class' => 'mw-listgrouprights-right-name' ),
+                                                       $right
+                                               )
+                                       )->parse() )
+                               );
+                       }
+
+                       $out->addHTML(
+                               Xml::closeElement( 'ul' ) .
+                               Xml::closeElement( 'td' ) .
+                               Xml::closeElement( 'tr' )
+                       );
+               }
+               $out->addHTML( Xml::closeElement( 'table' ) );
        }
 
        /**
diff --git a/languages/ConverterRule.php b/languages/ConverterRule.php
new file mode 100644 (file)
index 0000000..4091041
--- /dev/null
@@ -0,0 +1,502 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
+/**
+ * Parser for rules of language conversion , parse rules in -{ }- tag.
+ * @ingroup Language
+ * @author fdcn <fdcn64@gmail.com>, PhiLiP <philip.npc@gmail.com>
+ */
+class ConverterRule {
+       public $mText; // original text in -{text}-
+       public $mConverter; // LanguageConverter object
+       public $mRuleDisplay = '';
+       public $mRuleTitle = false;
+       public $mRules = '';// string : the text of the rules
+       public $mRulesAction = 'none';
+       public $mFlags = array();
+       public $mVariantFlags = array();
+       public $mConvTable = array();
+       public $mBidtable = array();// array of the translation in each variant
+       public $mUnidtable = array();// array of the translation in each variant
+
+       /**
+        * Constructor
+        *
+        * @param string $text The text between -{ and }-
+        * @param LanguageConverter $converter
+        */
+       public function __construct( $text, $converter ) {
+               $this->mText = $text;
+               $this->mConverter = $converter;
+       }
+
+       /**
+        * Check if variants array in convert array.
+        *
+        * @param array|string $variants Variant language code
+        * @return string Translated text
+        */
+       public function getTextInBidtable( $variants ) {
+               $variants = (array)$variants;
+               if ( !$variants ) {
+                       return false;
+               }
+               foreach ( $variants as $variant ) {
+                       if ( isset( $this->mBidtable[$variant] ) ) {
+                               return $this->mBidtable[$variant];
+                       }
+               }
+               return false;
+       }
+
+       /**
+        * Parse flags with syntax -{FLAG| ... }-
+        * @private
+        */
+       function parseFlags() {
+               $text = $this->mText;
+               $flags = array();
+               $variantFlags = array();
+
+               $sepPos = strpos( $text, '|' );
+               if ( $sepPos !== false ) {
+                       $validFlags = $this->mConverter->mFlags;
+                       $f = StringUtils::explode( ';', substr( $text, 0, $sepPos ) );
+                       foreach ( $f as $ff ) {
+                               $ff = trim( $ff );
+                               if ( isset( $validFlags[$ff] ) ) {
+                                       $flags[$validFlags[$ff]] = true;
+                               }
+                       }
+                       $text = strval( substr( $text, $sepPos + 1 ) );
+               }
+
+               if ( !$flags ) {
+                       $flags['S'] = true;
+               } elseif ( isset( $flags['R'] ) ) {
+                       $flags = array( 'R' => true );// remove other flags
+               } elseif ( isset( $flags['N'] ) ) {
+                       $flags = array( 'N' => true );// remove other flags
+               } elseif ( isset( $flags['-'] ) ) {
+                       $flags = array( '-' => true );// remove other flags
+               } elseif ( count( $flags ) == 1 && isset( $flags['T'] ) ) {
+                       $flags['H'] = true;
+               } elseif ( isset( $flags['H'] ) ) {
+                       // replace A flag, and remove other flags except T
+                       $temp = array( '+' => true, 'H' => true );
+                       if ( isset( $flags['T'] ) ) {
+                               $temp['T'] = true;
+                       }
+                       if ( isset( $flags['D'] ) ) {
+                               $temp['D'] = true;
+                       }
+                       $flags = $temp;
+               } else {
+                       if ( isset( $flags['A'] ) ) {
+                               $flags['+'] = true;
+                               $flags['S'] = true;
+                       }
+                       if ( isset( $flags['D'] ) ) {
+                               unset( $flags['S'] );
+                       }
+                       // try to find flags like "zh-hans", "zh-hant"
+                       // allow syntaxes like "-{zh-hans;zh-hant|XXXX}-"
+                       $variantFlags = array_intersect( array_keys( $flags ), $this->mConverter->mVariants );
+                       if ( $variantFlags ) {
+                               $variantFlags = array_flip( $variantFlags );
+                               $flags = array();
+                       }
+               }
+               $this->mVariantFlags = $variantFlags;
+               $this->mRules = $text;
+               $this->mFlags = $flags;
+       }
+
+       /**
+        * Generate conversion table.
+        * @private
+        */
+       function parseRules() {
+               $rules = $this->mRules;
+               $bidtable = array();
+               $unidtable = array();
+               $variants = $this->mConverter->mVariants;
+               $varsep_pattern = $this->mConverter->getVarSeparatorPattern();
+
+               // Split according to $varsep_pattern, but ignore semicolons from HTML entities
+               $rules = preg_replace( '/(&[#a-zA-Z0-9]+);/', "$1\x01", $rules );
+               $choice = preg_split( $varsep_pattern, $rules );
+               $choice = str_replace( "\x01", ';', $choice );
+
+               foreach ( $choice as $c ) {
+                       $v = explode( ':', $c, 2 );
+                       if ( count( $v ) != 2 ) {
+                               // syntax error, skip
+                               continue;
+                       }
+                       $to = trim( $v[1] );
+                       $v = trim( $v[0] );
+                       $u = explode( '=>', $v, 2 );
+                       // if $to is empty, strtr() could return a wrong result
+                       if ( count( $u ) == 1 && $to && in_array( $v, $variants ) ) {
+                               $bidtable[$v] = $to;
+                       } elseif ( count( $u ) == 2 ) {
+                               $from = trim( $u[0] );
+                               $v = trim( $u[1] );
+                               if ( array_key_exists( $v, $unidtable )
+                                       && !is_array( $unidtable[$v] )
+                                       && $to
+                                       && in_array( $v, $variants ) ) {
+                                       $unidtable[$v] = array( $from => $to );
+                               } elseif ( $to && in_array( $v, $variants ) ) {
+                                       $unidtable[$v][$from] = $to;
+                               }
+                       }
+                       // syntax error, pass
+                       if ( !isset( $this->mConverter->mVariantNames[$v] ) ) {
+                               $bidtable = array();
+                               $unidtable = array();
+                               break;
+                       }
+               }
+               $this->mBidtable = $bidtable;
+               $this->mUnidtable = $unidtable;
+       }
+
+       /**
+        * @private
+        *
+        * @return string
+        */
+       function getRulesDesc() {
+               $codesep = $this->mConverter->mDescCodeSep;
+               $varsep = $this->mConverter->mDescVarSep;
+               $text = '';
+               foreach ( $this->mBidtable as $k => $v ) {
+                       $text .= $this->mConverter->mVariantNames[$k] . "$codesep$v$varsep";
+               }
+               foreach ( $this->mUnidtable as $k => $a ) {
+                       foreach ( $a as $from => $to ) {
+                               $text .= $from . '⇒' . $this->mConverter->mVariantNames[$k] .
+                                       "$codesep$to$varsep";
+                       }
+               }
+               return $text;
+       }
+
+       /**
+        * Parse rules conversion.
+        * @private
+        *
+        * @param $variant
+        *
+        * @return string
+        */
+       function getRuleConvertedStr( $variant ) {
+               $bidtable = $this->mBidtable;
+               $unidtable = $this->mUnidtable;
+
+               if ( count( $bidtable ) + count( $unidtable ) == 0 ) {
+                       return $this->mRules;
+               } else {
+                       // display current variant in bidirectional array
+                       $disp = $this->getTextInBidtable( $variant );
+                       // or display current variant in fallbacks
+                       if ( !$disp ) {
+                               $disp = $this->getTextInBidtable(
+                                       $this->mConverter->getVariantFallbacks( $variant ) );
+                       }
+                       // or display current variant in unidirectional array
+                       if ( !$disp && array_key_exists( $variant, $unidtable ) ) {
+                               $disp = array_values( $unidtable[$variant] );
+                               $disp = $disp[0];
+                       }
+                       // or display frist text under disable manual convert
+                       if ( !$disp && $this->mConverter->mManualLevel[$variant] == 'disable' ) {
+                               if ( count( $bidtable ) > 0 ) {
+                                       $disp = array_values( $bidtable );
+                                       $disp = $disp[0];
+                               } else {
+                                       $disp = array_values( $unidtable );
+                                       $disp = array_values( $disp[0] );
+                                       $disp = $disp[0];
+                               }
+                       }
+                       return $disp;
+               }
+       }
+
+       /**
+        * Similar to getRuleConvertedStr(), but this prefers to use original
+        * page title if $variant === $this->mConverter->mMainLanguageCode
+        * and may return false in this case (so this title conversion rule
+        * will be ignored and the original title is shown).
+        *
+        * @since 1.22
+        * @param $variant The variant code to display page title in
+        * @return String|false The converted title or false if just page name
+        */
+       function getRuleConvertedTitle( $variant ) {
+               if ( $variant === $this->mConverter->mMainLanguageCode ) {
+                       // If a string targeting exactly this variant is set,
+                       // use it. Otherwise, just return false, so the real
+                       // page name can be shown (and because variant === main,
+                       // there'll be no further automatic conversion).
+                       $disp = $this->getTextInBidtable( $variant );
+                       if ( $disp ) {
+                               return $disp;
+                       }
+                       if ( array_key_exists( $variant, $this->mUnidtable ) ) {
+                               $disp = array_values( $this->mUnidtable[$variant] );
+                               $disp = $disp[0];
+                       }
+                       // Assigned above or still false.
+                       return $disp;
+               } else {
+                       return $this->getRuleConvertedStr( $variant );
+               }
+       }
+
+       /**
+        * Generate conversion table for all text.
+        * @private
+        */
+       function generateConvTable() {
+               // Special case optimisation
+               if ( !$this->mBidtable && !$this->mUnidtable ) {
+                       $this->mConvTable = array();
+                       return;
+               }
+
+               $bidtable = $this->mBidtable;
+               $unidtable = $this->mUnidtable;
+               $manLevel = $this->mConverter->mManualLevel;
+
+               $vmarked = array();
+               foreach ( $this->mConverter->mVariants as $v ) {
+                       /* for bidirectional array
+                               fill in the missing variants, if any,
+                               with fallbacks */
+                       if ( !isset( $bidtable[$v] ) ) {
+                               $variantFallbacks =
+                                       $this->mConverter->getVariantFallbacks( $v );
+                               $vf = $this->getTextInBidtable( $variantFallbacks );
+                               if ( $vf ) {
+                                       $bidtable[$v] = $vf;
+                               }
+                       }
+
+                       if ( isset( $bidtable[$v] ) ) {
+                               foreach ( $vmarked as $vo ) {
+                                       // use syntax: -{A|zh:WordZh;zh-tw:WordTw}-
+                                       // or -{H|zh:WordZh;zh-tw:WordTw}-
+                                       // or -{-|zh:WordZh;zh-tw:WordTw}-
+                                       // to introduce a custom mapping between
+                                       // words WordZh and WordTw in the whole text
+                                       if ( $manLevel[$v] == 'bidirectional' ) {
+                                               $this->mConvTable[$v][$bidtable[$vo]] = $bidtable[$v];
+                                       }
+                                       if ( $manLevel[$vo] == 'bidirectional' ) {
+                                               $this->mConvTable[$vo][$bidtable[$v]] = $bidtable[$vo];
+                                       }
+                               }
+                               $vmarked[] = $v;
+                       }
+                       /* for unidirectional array fill to convert tables */
+                       if ( ( $manLevel[$v] == 'bidirectional' || $manLevel[$v] == 'unidirectional' )
+                               && isset( $unidtable[$v] )
+                       ) {
+                               if ( isset( $this->mConvTable[$v] ) ) {
+                                       $this->mConvTable[$v] = array_merge( $this->mConvTable[$v], $unidtable[$v] );
+                               } else {
+                                       $this->mConvTable[$v] = $unidtable[$v];
+                               }
+                       }
+               }
+       }
+
+       /**
+        * Parse rules and flags.
+        * @param string $variant Variant language code
+        */
+       public function parse( $variant = null ) {
+               if ( !$variant ) {
+                       $variant = $this->mConverter->getPreferredVariant();
+               }
+
+               $this->parseFlags();
+               $flags = $this->mFlags;
+
+               // convert to specified variant
+               // syntax: -{zh-hans;zh-hant[;...]|<text to convert>}-
+               if ( $this->mVariantFlags ) {
+                       // check if current variant in flags
+                       if ( isset( $this->mVariantFlags[$variant] ) ) {
+                               // then convert <text to convert> to current language
+                               $this->mRules = $this->mConverter->autoConvert( $this->mRules,
+                                       $variant );
+                       } else {
+                               // if current variant no in flags,
+                               // then we check its fallback variants.
+                               $variantFallbacks =
+                                       $this->mConverter->getVariantFallbacks( $variant );
+                               if ( is_array( $variantFallbacks ) ) {
+                                       foreach ( $variantFallbacks as $variantFallback ) {
+                                               // if current variant's fallback exist in flags
+                                               if ( isset( $this->mVariantFlags[$variantFallback] ) ) {
+                                                       // then convert <text to convert> to fallback language
+                                                       $this->mRules =
+                                                               $this->mConverter->autoConvert( $this->mRules,
+                                                                       $variantFallback );
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+                       $this->mFlags = $flags = array( 'R' => true );
+               }
+
+               if ( !isset( $flags['R'] ) && !isset( $flags['N'] ) ) {
+                       // decode => HTML entities modified by Sanitizer::removeHTMLtags
+                       $this->mRules = str_replace( '=&gt;', '=>', $this->mRules );
+                       $this->parseRules();
+               }
+               $rules = $this->mRules;
+
+               if ( !$this->mBidtable && !$this->mUnidtable ) {
+                       if ( isset( $flags['+'] ) || isset( $flags['-'] ) ) {
+                               // fill all variants if text in -{A/H/-|text} without rules
+                               foreach ( $this->mConverter->mVariants as $v ) {
+                                       $this->mBidtable[$v] = $rules;
+                               }
+                       } elseif ( !isset( $flags['N'] ) && !isset( $flags['T'] ) ) {
+                               $this->mFlags = $flags = array( 'R' => true );
+                       }
+               }
+
+               $this->mRuleDisplay = false;
+               foreach ( $flags as $flag => $unused ) {
+                       switch ( $flag ) {
+                               case 'R':
+                                       // if we don't do content convert, still strip the -{}- tags
+                                       $this->mRuleDisplay = $rules;
+                                       break;
+                               case 'N':
+                                       // process N flag: output current variant name
+                                       $ruleVar = trim( $rules );
+                                       if ( isset( $this->mConverter->mVariantNames[$ruleVar] ) ) {
+                                               $this->mRuleDisplay = $this->mConverter->mVariantNames[$ruleVar];
+                                       } else {
+                                               $this->mRuleDisplay = '';
+                                       }
+                                       break;
+                               case 'D':
+                                       // process D flag: output rules description
+                                       $this->mRuleDisplay = $this->getRulesDesc();
+                                       break;
+                               case 'H':
+                                       // process H,- flag or T only: output nothing
+                                       $this->mRuleDisplay = '';
+                                       break;
+                               case '-':
+                                       $this->mRulesAction = 'remove';
+                                       $this->mRuleDisplay = '';
+                                       break;
+                               case '+':
+                                       $this->mRulesAction = 'add';
+                                       $this->mRuleDisplay = '';
+                                       break;
+                               case 'S':
+                                       $this->mRuleDisplay = $this->getRuleConvertedStr( $variant );
+                                       break;
+                               case 'T':
+                                       $this->mRuleTitle = $this->getRuleConvertedTitle( $variant );
+                                       $this->mRuleDisplay = '';
+                                       break;
+                               default:
+                                       // ignore unknown flags (but see error case below)
+                       }
+               }
+               if ( $this->mRuleDisplay === false ) {
+                       $this->mRuleDisplay = '<span class="error">'
+                               . wfMessage( 'converter-manual-rule-error' )->inContentLanguage()->escaped()
+                               . '</span>';
+               }
+
+               $this->generateConvTable();
+       }
+
+       /**
+        * @todo FIXME: code this function :)
+        */
+       public function hasRules() {
+               // TODO:
+       }
+
+       /**
+        * Get display text on markup -{...}-
+        * @return string
+        */
+       public function getDisplay() {
+               return $this->mRuleDisplay;
+       }
+
+       /**
+        * Get converted title.
+        * @return string
+        */
+       public function getTitle() {
+               return $this->mRuleTitle;
+       }
+
+       /**
+        * Return how deal with conversion rules.
+        * @return string
+        */
+       public function getRulesAction() {
+               return $this->mRulesAction;
+       }
+
+       /**
+        * Get conversion table. (bidirectional and unidirectional
+        * conversion table)
+        * @return array
+        */
+       public function getConvTable() {
+               return $this->mConvTable;
+       }
+
+       /**
+        * Get conversion rules string.
+        * @return string
+        */
+       public function getRules() {
+               return $this->mRules;
+       }
+
+       /**
+        * Get conversion flags.
+        * @return array
+        */
+       public function getFlags() {
+               return $this->mFlags;
+       }
+}
index e2f0e91..8451401 100644 (file)
@@ -1,7 +1,5 @@
 <?php
 /**
- * Contains the LanguageConverter class and ConverterRule class
- *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -1123,485 +1121,3 @@ class LanguageConverter {
                return $this->mVarSeparatorPattern;
        }
 }
-
-/**
- * Parser for rules of language conversion , parse rules in -{ }- tag.
- * @ingroup Language
- * @author fdcn <fdcn64@gmail.com>, PhiLiP <philip.npc@gmail.com>
- */
-class ConverterRule {
-       public $mText; // original text in -{text}-
-       public $mConverter; // LanguageConverter object
-       public $mRuleDisplay = '';
-       public $mRuleTitle = false;
-       public $mRules = '';// string : the text of the rules
-       public $mRulesAction = 'none';
-       public $mFlags = array();
-       public $mVariantFlags = array();
-       public $mConvTable = array();
-       public $mBidtable = array();// array of the translation in each variant
-       public $mUnidtable = array();// array of the translation in each variant
-
-       /**
-        * Constructor
-        *
-        * @param string $text The text between -{ and }-
-        * @param LanguageConverter $converter
-        */
-       public function __construct( $text, $converter ) {
-               $this->mText = $text;
-               $this->mConverter = $converter;
-       }
-
-       /**
-        * Check if variants array in convert array.
-        *
-        * @param array|string $variants Variant language code
-        * @return string Translated text
-        */
-       public function getTextInBidtable( $variants ) {
-               $variants = (array)$variants;
-               if ( !$variants ) {
-                       return false;
-               }
-               foreach ( $variants as $variant ) {
-                       if ( isset( $this->mBidtable[$variant] ) ) {
-                               return $this->mBidtable[$variant];
-                       }
-               }
-               return false;
-       }
-
-       /**
-        * Parse flags with syntax -{FLAG| ... }-
-        * @private
-        */
-       function parseFlags() {
-               $text = $this->mText;
-               $flags = array();
-               $variantFlags = array();
-
-               $sepPos = strpos( $text, '|' );
-               if ( $sepPos !== false ) {
-                       $validFlags = $this->mConverter->mFlags;
-                       $f = StringUtils::explode( ';', substr( $text, 0, $sepPos ) );
-                       foreach ( $f as $ff ) {
-                               $ff = trim( $ff );
-                               if ( isset( $validFlags[$ff] ) ) {
-                                       $flags[$validFlags[$ff]] = true;
-                               }
-                       }
-                       $text = strval( substr( $text, $sepPos + 1 ) );
-               }
-
-               if ( !$flags ) {
-                       $flags['S'] = true;
-               } elseif ( isset( $flags['R'] ) ) {
-                       $flags = array( 'R' => true );// remove other flags
-               } elseif ( isset( $flags['N'] ) ) {
-                       $flags = array( 'N' => true );// remove other flags
-               } elseif ( isset( $flags['-'] ) ) {
-                       $flags = array( '-' => true );// remove other flags
-               } elseif ( count( $flags ) == 1 && isset( $flags['T'] ) ) {
-                       $flags['H'] = true;
-               } elseif ( isset( $flags['H'] ) ) {
-                       // replace A flag, and remove other flags except T
-                       $temp = array( '+' => true, 'H' => true );
-                       if ( isset( $flags['T'] ) ) {
-                               $temp['T'] = true;
-                       }
-                       if ( isset( $flags['D'] ) ) {
-                               $temp['D'] = true;
-                       }
-                       $flags = $temp;
-               } else {
-                       if ( isset( $flags['A'] ) ) {
-                               $flags['+'] = true;
-                               $flags['S'] = true;
-                       }
-                       if ( isset( $flags['D'] ) ) {
-                               unset( $flags['S'] );
-                       }
-                       // try to find flags like "zh-hans", "zh-hant"
-                       // allow syntaxes like "-{zh-hans;zh-hant|XXXX}-"
-                       $variantFlags = array_intersect( array_keys( $flags ), $this->mConverter->mVariants );
-                       if ( $variantFlags ) {
-                               $variantFlags = array_flip( $variantFlags );
-                               $flags = array();
-                       }
-               }
-               $this->mVariantFlags = $variantFlags;
-               $this->mRules = $text;
-               $this->mFlags = $flags;
-       }
-
-       /**
-        * Generate conversion table.
-        * @private
-        */
-       function parseRules() {
-               $rules = $this->mRules;
-               $bidtable = array();
-               $unidtable = array();
-               $variants = $this->mConverter->mVariants;
-               $varsep_pattern = $this->mConverter->getVarSeparatorPattern();
-
-               // Split according to $varsep_pattern, but ignore semicolons from HTML entities
-               $rules = preg_replace( '/(&[#a-zA-Z0-9]+);/', "$1\x01", $rules );
-               $choice = preg_split( $varsep_pattern, $rules );
-               $choice = str_replace( "\x01", ';', $choice );
-
-               foreach ( $choice as $c ) {
-                       $v = explode( ':', $c, 2 );
-                       if ( count( $v ) != 2 ) {
-                               // syntax error, skip
-                               continue;
-                       }
-                       $to = trim( $v[1] );
-                       $v = trim( $v[0] );
-                       $u = explode( '=>', $v, 2 );
-                       // if $to is empty, strtr() could return a wrong result
-                       if ( count( $u ) == 1 && $to && in_array( $v, $variants ) ) {
-                               $bidtable[$v] = $to;
-                       } elseif ( count( $u ) == 2 ) {
-                               $from = trim( $u[0] );
-                               $v = trim( $u[1] );
-                               if ( array_key_exists( $v, $unidtable )
-                                       && !is_array( $unidtable[$v] )
-                                       && $to
-                                       && in_array( $v, $variants ) ) {
-                                       $unidtable[$v] = array( $from => $to );
-                               } elseif ( $to && in_array( $v, $variants ) ) {
-                                       $unidtable[$v][$from] = $to;
-                               }
-                       }
-                       // syntax error, pass
-                       if ( !isset( $this->mConverter->mVariantNames[$v] ) ) {
-                               $bidtable = array();
-                               $unidtable = array();
-                               break;
-                       }
-               }
-               $this->mBidtable = $bidtable;
-               $this->mUnidtable = $unidtable;
-       }
-
-       /**
-        * @private
-        *
-        * @return string
-        */
-       function getRulesDesc() {
-               $codesep = $this->mConverter->mDescCodeSep;
-               $varsep = $this->mConverter->mDescVarSep;
-               $text = '';
-               foreach ( $this->mBidtable as $k => $v ) {
-                       $text .= $this->mConverter->mVariantNames[$k] . "$codesep$v$varsep";
-               }
-               foreach ( $this->mUnidtable as $k => $a ) {
-                       foreach ( $a as $from => $to ) {
-                               $text .= $from . '⇒' . $this->mConverter->mVariantNames[$k] .
-                                       "$codesep$to$varsep";
-                       }
-               }
-               return $text;
-       }
-
-       /**
-        * Parse rules conversion.
-        * @private
-        *
-        * @param $variant
-        *
-        * @return string
-        */
-       function getRuleConvertedStr( $variant ) {
-               $bidtable = $this->mBidtable;
-               $unidtable = $this->mUnidtable;
-
-               if ( count( $bidtable ) + count( $unidtable ) == 0 ) {
-                       return $this->mRules;
-               } else {
-                       // display current variant in bidirectional array
-                       $disp = $this->getTextInBidtable( $variant );
-                       // or display current variant in fallbacks
-                       if ( !$disp ) {
-                               $disp = $this->getTextInBidtable(
-                                               $this->mConverter->getVariantFallbacks( $variant ) );
-                       }
-                       // or display current variant in unidirectional array
-                       if ( !$disp && array_key_exists( $variant, $unidtable ) ) {
-                               $disp = array_values( $unidtable[$variant] );
-                               $disp = $disp[0];
-                       }
-                       // or display frist text under disable manual convert
-                       if ( !$disp && $this->mConverter->mManualLevel[$variant] == 'disable' ) {
-                               if ( count( $bidtable ) > 0 ) {
-                                       $disp = array_values( $bidtable );
-                                       $disp = $disp[0];
-                               } else {
-                                       $disp = array_values( $unidtable );
-                                       $disp = array_values( $disp[0] );
-                                       $disp = $disp[0];
-                               }
-                       }
-                       return $disp;
-               }
-       }
-
-       /**
-        * Similar to getRuleConvertedStr(), but this prefers to use original
-        * page title if $variant === $this->mConverter->mMainLanguageCode
-        * and may return false in this case (so this title conversion rule
-        * will be ignored and the original title is shown).
-        *
-        * @since 1.22
-        * @param $variant The variant code to display page title in
-        * @return String|false The converted title or false if just page name
-        */
-       function getRuleConvertedTitle( $variant ) {
-               if ( $variant === $this->mConverter->mMainLanguageCode ) {
-                       // If a string targeting exactly this variant is set,
-                       // use it. Otherwise, just return false, so the real
-                       // page name can be shown (and because variant === main,
-                       // there'll be no further automatic conversion).
-                       $disp = $this->getTextInBidtable( $variant );
-                       if ( $disp ) {
-                               return $disp;
-                       }
-                       if ( array_key_exists( $variant, $this->mUnidtable ) ) {
-                               $disp = array_values( $this->mUnidtable[$variant] );
-                               $disp = $disp[0];
-                       }
-                       // Assigned above or still false.
-                       return $disp;
-               } else {
-                       return $this->getRuleConvertedStr( $variant );
-               }
-       }
-
-       /**
-        * Generate conversion table for all text.
-        * @private
-        */
-       function generateConvTable() {
-               // Special case optimisation
-               if ( !$this->mBidtable && !$this->mUnidtable ) {
-                       $this->mConvTable = array();
-                       return;
-               }
-
-               $bidtable = $this->mBidtable;
-               $unidtable = $this->mUnidtable;
-               $manLevel = $this->mConverter->mManualLevel;
-
-               $vmarked = array();
-               foreach ( $this->mConverter->mVariants as $v ) {
-                       /* for bidirectional array
-                               fill in the missing variants, if any,
-                               with fallbacks */
-                       if ( !isset( $bidtable[$v] ) ) {
-                               $variantFallbacks =
-                                       $this->mConverter->getVariantFallbacks( $v );
-                               $vf = $this->getTextInBidtable( $variantFallbacks );
-                               if ( $vf ) {
-                                       $bidtable[$v] = $vf;
-                               }
-                       }
-
-                       if ( isset( $bidtable[$v] ) ) {
-                               foreach ( $vmarked as $vo ) {
-                                       // use syntax: -{A|zh:WordZh;zh-tw:WordTw}-
-                                       // or -{H|zh:WordZh;zh-tw:WordTw}-
-                                       // or -{-|zh:WordZh;zh-tw:WordTw}-
-                                       // to introduce a custom mapping between
-                                       // words WordZh and WordTw in the whole text
-                                       if ( $manLevel[$v] == 'bidirectional' ) {
-                                               $this->mConvTable[$v][$bidtable[$vo]] = $bidtable[$v];
-                                       }
-                                       if ( $manLevel[$vo] == 'bidirectional' ) {
-                                               $this->mConvTable[$vo][$bidtable[$v]] = $bidtable[$vo];
-                                       }
-                               }
-                               $vmarked[] = $v;
-                       }
-                       /* for unidirectional array fill to convert tables */
-                       if ( ( $manLevel[$v] == 'bidirectional' || $manLevel[$v] == 'unidirectional' )
-                               && isset( $unidtable[$v] )
-                       ) {
-                               if ( isset( $this->mConvTable[$v] ) ) {
-                                       $this->mConvTable[$v] = array_merge( $this->mConvTable[$v], $unidtable[$v] );
-                               } else {
-                                       $this->mConvTable[$v] = $unidtable[$v];
-                               }
-                       }
-               }
-       }
-
-       /**
-        * Parse rules and flags.
-        * @param string $variant Variant language code
-        */
-       public function parse( $variant = null ) {
-               if ( !$variant ) {
-                       $variant = $this->mConverter->getPreferredVariant();
-               }
-
-               $this->parseFlags();
-               $flags = $this->mFlags;
-
-               // convert to specified variant
-               // syntax: -{zh-hans;zh-hant[;...]|<text to convert>}-
-               if ( $this->mVariantFlags ) {
-                       // check if current variant in flags
-                       if ( isset( $this->mVariantFlags[$variant] ) ) {
-                               // then convert <text to convert> to current language
-                               $this->mRules = $this->mConverter->autoConvert( $this->mRules,
-                                       $variant );
-                       } else {
-                               // if current variant no in flags,
-                               // then we check its fallback variants.
-                               $variantFallbacks =
-                                       $this->mConverter->getVariantFallbacks( $variant );
-                               if ( is_array( $variantFallbacks ) ) {
-                                       foreach ( $variantFallbacks as $variantFallback ) {
-                                               // if current variant's fallback exist in flags
-                                               if ( isset( $this->mVariantFlags[$variantFallback] ) ) {
-                                                       // then convert <text to convert> to fallback language
-                                                       $this->mRules =
-                                                               $this->mConverter->autoConvert( $this->mRules,
-                                                                       $variantFallback );
-                                                       break;
-                                               }
-                                       }
-                               }
-                       }
-                       $this->mFlags = $flags = array( 'R' => true );
-               }
-
-               if ( !isset( $flags['R'] ) && !isset( $flags['N'] ) ) {
-                       // decode => HTML entities modified by Sanitizer::removeHTMLtags
-                       $this->mRules = str_replace( '=&gt;', '=>', $this->mRules );
-                       $this->parseRules();
-               }
-               $rules = $this->mRules;
-
-               if ( !$this->mBidtable && !$this->mUnidtable ) {
-                       if ( isset( $flags['+'] ) || isset( $flags['-'] ) ) {
-                               // fill all variants if text in -{A/H/-|text} without rules
-                               foreach ( $this->mConverter->mVariants as $v ) {
-                                       $this->mBidtable[$v] = $rules;
-                               }
-                       } elseif ( !isset( $flags['N'] ) && !isset( $flags['T'] ) ) {
-                               $this->mFlags = $flags = array( 'R' => true );
-                       }
-               }
-
-               $this->mRuleDisplay = false;
-               foreach ( $flags as $flag => $unused ) {
-                       switch ( $flag ) {
-                               case 'R':
-                                       // if we don't do content convert, still strip the -{}- tags
-                                       $this->mRuleDisplay = $rules;
-                                       break;
-                               case 'N':
-                                       // process N flag: output current variant name
-                                       $ruleVar = trim( $rules );
-                                       if ( isset( $this->mConverter->mVariantNames[$ruleVar] ) ) {
-                                               $this->mRuleDisplay = $this->mConverter->mVariantNames[$ruleVar];
-                                       } else {
-                                               $this->mRuleDisplay = '';
-                                       }
-                                       break;
-                               case 'D':
-                                       // process D flag: output rules description
-                                       $this->mRuleDisplay = $this->getRulesDesc();
-                                       break;
-                               case 'H':
-                                       // process H,- flag or T only: output nothing
-                                       $this->mRuleDisplay = '';
-                                       break;
-                               case '-':
-                                       $this->mRulesAction = 'remove';
-                                       $this->mRuleDisplay = '';
-                                       break;
-                               case '+':
-                                       $this->mRulesAction = 'add';
-                                       $this->mRuleDisplay = '';
-                                       break;
-                               case 'S':
-                                       $this->mRuleDisplay = $this->getRuleConvertedStr( $variant );
-                                       break;
-                               case 'T':
-                                       $this->mRuleTitle = $this->getRuleConvertedTitle( $variant );
-                                       $this->mRuleDisplay = '';
-                                       break;
-                               default:
-                                       // ignore unknown flags (but see error case below)
-                       }
-               }
-               if ( $this->mRuleDisplay === false ) {
-                       $this->mRuleDisplay = '<span class="error">'
-                               . wfMessage( 'converter-manual-rule-error' )->inContentLanguage()->escaped()
-                               . '</span>';
-               }
-
-               $this->generateConvTable();
-       }
-
-       /**
-        * @todo FIXME: code this function :)
-        */
-       public function hasRules() {
-               // TODO:
-       }
-
-       /**
-        * Get display text on markup -{...}-
-        * @return string
-        */
-       public function getDisplay() {
-               return $this->mRuleDisplay;
-       }
-
-       /**
-        * Get converted title.
-        * @return string
-        */
-       public function getTitle() {
-               return $this->mRuleTitle;
-       }
-
-       /**
-        * Return how deal with conversion rules.
-        * @return string
-        */
-       public function getRulesAction() {
-               return $this->mRulesAction;
-       }
-
-       /**
-        * Get conversion table. (bidirectional and unidirectional
-        * conversion table)
-        * @return array
-        */
-       public function getConvTable() {
-               return $this->mConvTable;
-       }
-
-       /**
-        * Get conversion rules string.
-        * @return string
-        */
-       public function getRules() {
-               return $this->mRules;
-       }
-
-       /**
-        * Get conversion flags.
-        * @return array
-        */
-       public function getFlags() {
-               return $this->mFlags;
-       }
-}
index cd0ec77..b01ffee 100644 (file)
     "disclaimers": "अस्वीकरण",
     "disclaimerpage": "Project:साधारण अस्वीकरण",
     "edithelp": "संपादन मॆं सहायता",
-    "helppage": "Help:सहायता",
     "mainpage": "मुख्य पृष्ठ",
     "privacy": "गोपनीयता नीति",
     "privacypage": "Project:गोपनीयता नीति",
index 2218c08..cff46a8 100644 (file)
     "print": "اطبع",
     "view": "مطالعة",
     "edit": "عدل",
+    "edit-local": "تعديل الوصف المحلي",
     "create": "أنشئ",
+    "create-local": "أضف وصفا محليا",
     "editthispage": "عدل هذه الصفحة",
     "create-this-page": "أنشئ صفحة بهذا العنوان",
     "delete": "حذف",
     "pool-timeout": "انتهت مهلة القفل",
     "pool-queuefull": "الطابور ملآن",
     "pool-errorunknown": "خطأ غير معروف",
+    "pool-servererror": "خدمة العداد غير متاحة ( $1 ).",
     "aboutsite": "عن {{SITENAME}}",
     "aboutpage": "Project:عن",
     "copyright": "المحتوى منشور وفق $1 إن لم يرد خلاف ذلك.",
     "resetpass-abort-generic": "منعت مُلحقة إتمام صيرورة تغيير كلمة السّر.",
     "resetpass-expired": "انتهت مدة صلاحية كلمة السر الخاصة بك. الرجاء تعيين كلمة سر جديدة لتسجيل الدخول.",
     "resetpass-expired-soft": "انتهت مدة صلاحية كلمة السر الخاصة بك. الرجاء تعيين كلمة سر جديدة الآن أو النقر على زر إلغاء لإعادة تعيين كلمة السر لاحقاً.",
+    "resetpass-validity-soft": "كلمة السر الخاصة بك غير مقبولة :  $1 \n\nرجاءا اختر كلمة سر جديدة الآن، أو انقر فوق \"{{int:resetpass-submit-cancel}}\" لتغييرها في وقت لاحق.",
     "passwordreset": "إعادة ضبط كلمة السر",
     "passwordreset-text-one": "أكمل هذا النموذج لإعادة ضبط كلمة السر الخاصة بك.",
     "passwordreset-text-many": "{{PLURAL:$1||املأ الحقل لتستعيد كلمة السر|املأ أحد الحقلين لتستعيد كلمة السر|املأ أحد الحقول لتستعيد كلمة السر}}.",
     "uploaddisabledtext": "رفع الملفات معطل.",
     "php-uploaddisabledtext": "رفع ملفات PHP معطل. من فضلك تحقق من إعدادات رفع الملفات.",
     "uploadscripted": "هذا الملف يضم كود HTML أو كود آخر يمكن أن يفسره متصفح الوب بطريقة خاطئة.",
+    "uploadscriptednamespace": "يحتوي ملف SVG هذا على اسم نطاق غير مشروع \" $1 \"",
     "uploadinvalidxml": "تعذر تحليل XML في الملف المرفوع.",
     "uploadvirus": "الملف يحتوي على فيروس! التفاصيل: $1",
     "uploadjava": "يحتوي ملف ZIP هذا على ملفات جافا .class.\nلا يسمح برفع ملفات جافا لأنها تتيح تخطي القيود الأمنية.",
     "download": "تنزيل",
     "unwatchedpages": "صفحات غير مراقبة",
     "listredirects": "عرض التحويلات",
+    "listduplicatedfiles": "قائمة الملفات مع المكررات",
     "unusedtemplates": "قوالب غير مستخدمة",
     "unusedtemplatestext": "هذه الصفحة تعرض كل الصفحات في نطاق {{ns:template}} غير المضمنة في صفحة أخرى.\nتذكر بأن تتحقق من الوصلات الأخرى للقوالب قبل حذفها.",
     "unusedtemplateswlh": "وصلات أخرى",
index d19963f..647bcd4 100644 (file)
     "accountcreatedtext": "ܐܬܒܪܝ ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ ܠ $1.",
     "createaccount-title": "ܒܪܝܐ ܕܚܘܫܒܢܐ ܒ {{SITENAME}}",
     "loginlanguagelabel": "ܠܫܢܐ: $1",
+    "pt-login": "ܥܘܠ",
+    "pt-login-button": "ܥܘܠ",
+    "pt-createaccount": "ܒܪܝ ܚܘܫܒܢܐ",
+    "pt-userlogout": "ܦܠܘܛ",
     "changepassword": "ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ",
     "resetpass_header": "ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ ܕܚܘܫܒܢܐ",
     "oldpassword": "ܡܠܬܐ ܕܥܠܠܐ ܥܬܝܩܬܐ:",
     "rcnotefrom": "ܠܬܚܬ ܫܘܚܠܦ̈ܐ ܕܡܢ '''$2''' (ܥܕ '''$1''' ܡܬܚܙܝܢ̈ܐ).",
     "rclistfrom": "ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1",
     "rcshowhideminor": "$1 ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ",
+    "rcshowhideminor-show": "ܚܘܝ",
+    "rcshowhideminor-hide": "ܛܫܝ",
     "rcshowhidebots": "$1 ܒܘܬ̈ܐ (Bots)",
+    "rcshowhidebots-show": "ܚܘܝ",
+    "rcshowhidebots-hide": "ܛܫܝ",
     "rcshowhideliu": "$1 ܡܦܠܚܢ̈ܐ ܡܣܓܠ̈ܐ",
+    "rcshowhideliu-show": "ܚܘܝ",
+    "rcshowhideliu-hide": "ܛܫܝ",
     "rcshowhideanons": "$1 ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ",
+    "rcshowhideanons-show": "ܚܘܝ",
+    "rcshowhideanons-hide": "ܛܫܝ",
     "rcshowhidepatr": "$1 ܫܘܚܠܦ̈ܐ ܬܢܝ̈ܐ",
+    "rcshowhidepatr-show": "ܚܘܝ",
+    "rcshowhidepatr-hide": "ܛܫܝ",
     "rcshowhidemine": "$1 ܫܘܚܠܦ̈ܝ",
+    "rcshowhidemine-show": "ܚܘܝ",
+    "rcshowhidemine-hide": "ܛܫܝ",
     "rclinks": "ܚܘܝ $1 ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ ܒ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ<br />$3",
     "diff": "ܦܘܪܫܐ",
     "hist": "ܬܫܥܝܬܐ",
     "nowatchlist": "ܠܝܬ ܠܟ ܡܕܡ ܒܪ̈ܗܝܬܐ ܕܝܠܟ",
     "watchlistanontext": "$1 ܠܚܙܝܐ ܐܘ ܫܚܠܦܬܐ ܕܦܐܬܬ̈ܐ ܒܪ̈ܗܝܬܟ.",
     "watchnologin": "ܠܝܬܝܟ ܥܠܝܠܐ",
-    "watchnologintext": "ܐܠܨܐ ܕܬܗܘܐ [[Special:UserLogin|ܥܠܝܠܐ]] ܠܫܚܠܦܬܐ ܕܪ̈ܗܝܬܟ.",
     "addwatch": "ܐܘܣܦ ܥܠ ܪ̈ܗܝܬܝ",
     "addedwatchtext": "ܦܐܬܐ ܕ\"[[:$1]]\" ܐܬܬܘܣܦܬ ܠ[[Special:Watchlist|ܪ̈ܗܝܬܟ]].\nܐܝܢܐ ܫܘܚܠܦܐ ܥܠ ܦܐܬܐ ܗܕܐ ܒܕܥܬܝܕ ܬܬܓܠܚ ܥܡ ܦܐܬܐ ܕܡܡܠܠܐ ܕܝܠܗ ܬܡܢ.",
     "removewatch": "ܫܩܘܠ ܡܢ ܪ̈ܗܝܬܝ",
index 1b60de2..b44f956 100644 (file)
     "trackingcategories-msg": "Categoría de siguimientu",
     "trackingcategories-name": "Nome del mensaxe",
     "trackingcategories-desc": "Criterios d'inclusión de categoría",
-    "noindex-category-desc": "La páxina contién una pallabra máxica <nowiki>__NOINDEX__</nowiki> (y ta nun espaciu de nomes nel que se permite esta marca) y, poro, los robots nun la indexarán.",
-    "index-category-desc": "La páxina contién una pallabra máxica <nowiki>__INDEX__</nowiki> (y ta nun espaciu de nomes nel que se permite esta marca) y, poro, los robots la indexarán anque normalmente nun lo faigan.",
+    "noindex-category-desc": "La páxina contién una pallabra máxica <code><nowiki>__NOINDEX__</nowiki></code> (y ta nun espaciu de nomes nel que se permite esta marca) y, poro, los robots nun la indexarán.",
+    "index-category-desc": "La páxina contién una pallabra máxica <code><nowiki>__INDEX__</nowiki></code> (y ta nun espaciu de nomes nel que se permite esta marca) y, poro, los robots la indexarán anque normalmente nun lo faigan.",
     "post-expand-template-inclusion-category-desc": "Después de espander toles plantíes, el tamañu de la páxina ye mayor que <code>$wgMaxArticleSize</code>; de mou qu'algunes plantíes nun s'espandieron.",
     "post-expand-template-argument-category-desc": "Después d'espander l'argumentu d'una plantía (daqué ente llaves triples, como <code>{{{Daqué}}}</code>), la páxina ye mayor que <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Hai demasiaes funciones analítiques costoses (como <code>#ifexist</code>) incluíes nuna páxina. Vea [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
     "broken-file-category-desc": "Categoría amestada si la páxina contién un enllaz de ficheru frañáu (un enllaz pa incrustar un ficheru cuando'l ficheru nun esiste).",
-    "hidden-category-category-desc": "Esta ye una categoría que contién la pallabra máxica <nowiki>__HIDDENCAT__</nowiki>, que torga que s'amuese de mou predetermináu nel cuadru d'enllaces de categoría de les páxines.",
+    "hidden-category-category-desc": "Esta ye una categoría que contién la pallabra máxica <code><nowiki>__HIDDENCAT__</nowiki></code>, que torga que s'amuese de mou predetermináu nel cuadru d'enllaces de categoría de les páxines.",
     "trackingcategories-nodesc": "Nun hai una descripción disponible.",
     "trackingcategories-disabled": "La categoría ta desactivada",
     "mailnologin": "Ensin direición d'unviu",
index b3bd837..ce83999 100644 (file)
     "disclaimers": "Panyakalon",
     "disclaimerpage": "Project:Pamorsoon umum",
     "edithelp": "Pangurupion laho patotahon",
-    "helppage": "Help:Isi",
     "mainpage": "Pogu ni Alaman",
     "mainpage-description": "Pogu ni alaman",
     "portal": "Harbangan ni punguan",
index d2e6f1c..659ad50 100644 (file)
     "disclaimers": "انکار کننده ها",
     "disclaimerpage": "Project:انکار کاربران",
     "edithelp": "کمک برای اصلاح",
-    "helppage": "Help:محتوا",
     "mainpage": "صفحه اصلی",
     "mainpage-description": "صفحه اصلی",
     "policy-url": "Project:خط مشی",
index 367c57b..6778178 100644 (file)
     "permalink": "Chomlec'h ar stumm-mañ",
     "print": "Moullañ",
     "view": "Gwelet",
+    "view-foreign": "Gwel war $1",
     "edit": "Kemmañ",
     "create": "Krouiñ",
     "editthispage": "Kemmañ ar bajenn-mañ",
     "listgrouprights-removegroup-self": "Gallout a ra tennañ {{PLURAL:$2|ar strollad|strolladoù}} eus kont an-unan : $1",
     "listgrouprights-addgroup-self-all": "Gallout a ra ouzhpennañ an holl strolladoù da gont an-unan",
     "listgrouprights-removegroup-self-all": "Gallout a ra tennañ kuit an holl strolladoù eus kont an-unan.",
+    "trackingcategories-name": "Anv ar gemennadenn",
     "trackingcategories-nodesc": "N'eus deskrivadur ebet.",
     "trackingcategories-disabled": "Diweredekaet eo ar rummad",
     "mailnologin": "Chomlec'h ebet",
     "tags": "Balizennoù ar c'hemmoù reizh",
     "tag-filter": "Silañ ar [[Special:Tags|balizennoù]] :",
     "tag-filter-submit": "Silañ",
+    "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Balizenn}}]]: $2)",
     "tags-title": "Balizennoù",
     "tags-intro": "Rollañ a ra ar bajenn-mañ ar balizennoù a c'hall ar meziant implijout da verkañ kemmoù hag an dalvoudegezh anezho.",
     "tags-tag": "Anv ar valizenn",
index eef125a..c9c1cef 100644 (file)
     "disclaimers": "Dazkaşşík",
     "disclaimerpage": "Project:Las dazkaşşí",
     "edithelp": "Radbadal ráhşoní",
-    "helppage": "Help:Ridoband",
     "mainpage": "Monpanna",
     "mainpage-description": "Monpanna",
     "portal": "Cágiŕd bundar",
index bb509bf..b615e24 100644 (file)
     "currentevents-url": "Project:Accanjingeŋ kokkoro",
     "disclaimers": "Diseklaima",
     "edithelp": "Paŋinriŋ mapadécéŋ",
-    "helppage": "Help:Lise",
     "mainpage": "Leppa Indoë",
     "mainpage-description": "Leppa Indoë",
     "portal": "Portal komunitas",
index e76b42f..65888a7 100644 (file)
     "currentevents-url": "Project:Һонин мэдээн",
     "disclaimers": "Татагалзалнууд",
     "disclaimerpage": "Project:Ниитэ татагалзал",
-    "helppage": "Help:Агуулга",
     "mainpage": "Нюур хуудаһан",
     "mainpage-description": "Нюур хуудаһан",
     "portal": "Хурал",
index 8d0caf2..3c8f6b4 100644 (file)
     "trackingcategories-msg": "Categoria de seguiment",
     "trackingcategories-name": "Nom del missatge",
     "trackingcategories-desc": "Criteris d'inclusió de categoria",
-    "noindex-category-desc": "La pàgina conté una paraula màgica <nowiki>__NOINDEX__</nowiki> (i és en un espai de noms on està permesa) i per tant no està indexada per robots.",
-    "index-category-desc": "La pàgina conté un <nowiki>__INDEX__</nowiki> (i és en un espai de noms on està permès) i per tant està indexat per robots quan normalment no ho seria.",
+    "noindex-category-desc": "La pàgina conté una paraula màgica <code><nowiki>__NOINDEX__</nowiki></code> (i és en un espai de noms on està permesa) i per tant no està indexada per robots.",
+    "index-category-desc": "La pàgina conté un <code><nowiki>__INDEX__</nowiki></code> (i és en un espai de noms on està permès) i per tant està indexat per robots quan normalment no ho seria.",
     "post-expand-template-inclusion-category-desc": "Després d'expandir totes les plantilles, la mida de la pàgina és més gran que <code>$wgMaxArticleSize</code>, per tant algunes plantilles no s'han expandit.",
     "post-expand-template-argument-category-desc": "Després d'expandir un argument de plantilla (alguna cosa entre claus triples, com <code>{{{Això}}}</code>), la pàgina és més gran que <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Massa funcions d'analitzador costoses (com <code>#ifexist</code>) incloses en una pàgina. Vegeu [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
     "broken-file-category-desc": "Categoria afegida si la pàgina conté un enllaç de fitxer trencat (un enllaç per inserir un fitxer quan aquest fitxer no existeix).",
-    "hidden-category-category-desc": "Aquesta és una categoria que conté <nowiki>__HIDDENCAT__</nowiki>, que impedeix que aparegui en la caixa d'enllaços de categoria a les pàgines, per defecte.",
+    "hidden-category-category-desc": "Aquesta és una categoria que conté <code><nowiki>__HIDDENCAT__</nowiki></code>, que impedeix que aparegui en la caixa d'enllaços de categoria a les pàgines, per defecte.",
     "trackingcategories-nodesc": "Sense descripció disponible.",
     "trackingcategories-disabled": "La categoria està inhabilitada",
     "mailnologin": "Cap adreça de remitent",
index 4274f70..f2dd9e8 100644 (file)
     "permalink": "Trvalý odkaz",
     "print": "Vytisknout",
     "view": "Zobrazit",
+    "view-foreign": "Prohlédnout na {{grammar:6sg|$1}}",
     "edit": "Editovat",
     "edit-local": "Editovat místní popis",
     "create": "Vytvořit",
     "nstab-help": "Nápověda",
     "nstab-category": "Kategorie",
     "nosuchaction": "Neznámý úkon",
-    "nosuchactiontext": "Činnost („action“) uvedená v URL je neplatná.\nZřejmě jste se překlepli při zadávání adresy nebo jste klikli na chybný odkaz.\nMůže se ale jednat také o chybu {{GRAMMAR:2sg|{{SITENAME}}}}.",
+    "nosuchactiontext": "Činnost („action“) uvedená v URL je neplatná.\nZřejmě jste se při zadávání adresy překlepli nebo jste klikli na chybný odkaz.\nMůže se ale jednat také o chybu {{GRAMMAR:2sg|{{SITENAME}}}}.",
     "nosuchspecialpage": "Neexistující speciální stránka",
     "nospecialpagetext": "<strong>Zadali jste neplatnou speciální stránku.</strong>\n\nZkuste se podívat na [[Special:SpecialPages|seznam všech existujících speciálních stránek]].",
     "error": "Chyba",
     "fileexistserror": "Nelze uložit do souboru „$1“: soubor existuje",
     "unexpected": "Neočekávaná hodnota: \"$1\"=\"$2\".",
     "formerror": "Chyba: nebylo možné odeslat formulář",
-    "badarticleerror": "Tento úkon nelze použít na tuto stránku.",
+    "badarticleerror": "Tuto činnost nelze na této stránce provést.",
     "cannotdelete": "Nebylo možné smazat stránku nebo soubor „$1“.\nMožná už byl(a) smazán(a) někým jiným.",
     "cannotdelete-title": "Stránku „$1“ nelze smazat",
     "delete-hook-aborted": "Smazání bylo bez bližšího vysvětlení zrušeno přípojným bodem.",
     "viewyourtext": "Můžete si prohlédnout a zkopírovat zdrojový kód '''vašich změn''' této stránky:",
     "protectedinterface": "Tato stránka obsahuje text softwarového rozhraní a je zamčena kvůli prevenci zneužití.\nPro přidávání a změny překladů pro všechny wiki použijte [//translatewiki.net/ translatewiki.net], projekt pro lokalizaci MediaWiki.",
     "editinginterface": "'''Upozornění:''' Editujete stránku, která definuje texty rozhraní.\nZměny této stránky ovlivní vzhled uživatelského rozhraní všem uživatelům této wiki.\nPro přidávání a změny překladů pro všechny wiki použijte [//translatewiki.net/ translatewiki.net], projekt pro lokalizaci MediaWiki.",
-    "cascadeprotected": "Tato stránka je zamčena, neboť je vložena do {{PLURAL:$1|následující stránky zamčené|následujících stránek zamčených|následujících stránek zamčených}} kaskádovým zámkem:\n$2",
+    "cascadeprotected": "Tato stránka je zamčena, neboť je vložena do {{PLURAL:$1|následující stránky, zamčené|následujících stránek, zamčených|následujících stránek, zamčených}} kaskádovým zámkem:\n$2",
     "namespaceprotected": "Nemáte povoleno editovat stránky ve jmenném prostoru '''$1'''.",
     "customcssprotected": "Nemáte povoleno editovat tuto stránku s CSS, protože obsahuje osobní nastavení jiného uživatele.",
     "customjsprotected": "Nemáte povoleno editovat tuto stránku s JavaScriptem, protože obsahuje osobní nastavení jiného uživatele.",
     "virus-badscanner": "Špatná konfigurace: neznámý antivirový program: ''$1''",
     "virus-scanfailed": "prověřování selhalo (kód $1)",
     "virus-unknownscanner": "neznámý antivirus:",
-    "logouttext": "'''Nyní jste odhlášeni.'''\n\nUvědomte si, že některé stránky se mohou i nadále zobrazovat, jako byste byli dosud přihlášeni, pokud nevymažete cache prohlížeče.",
+    "logouttext": "'''Nyní jste odhlášeni.'''\n\nUvědomte si, že některé stránky se mohou i nadále zobrazovat, jako byste byli dosud přihlášeni, dokud nevymažete cache prohlížeče.",
     "welcomeuser": "Vítejte, uživateli $1!",
     "welcomecreation-msg": "Váš účet byl vytvořen.\nNezapomeňte si upravit své [[Special:Preferences|nastavení {{grammar:2sg|{{SITENAME}}}}]].",
     "yourname": "Uživatelské jméno:",
     "wrongpasswordempty": "Bylo zadáno prázdné heslo. Zkuste to znovu.",
     "passwordtooshort": "Heslo musí být dlouhé nejméně $1 {{PLURAL:$1|znak|znaky|znaků}}.",
     "password-name-match": "Vaše heslo nesmí být stejné jako uživatelské jméno.",
-    "password-login-forbidden": "Použití tohoto uživatelského jména a hesla byla zakázáno.",
+    "password-login-forbidden": "Použití tohoto uživatelského jména a hesla bylo zakázáno.",
     "mailmypassword": "Poslat nové heslo",
     "passwordremindertitle": "Nové dočasné heslo na {{grammar:4sg|{{SITENAME}}}}",
-    "passwordremindertext": "Někdo (patrně vy, z IP adresy $1) požádal, abychom o nové heslo\npro přihlášení do {{grammar:2sg|{{SITENAME}}}} ($4). Uživateli „$2“ bylo\nproto nastaveno dočasné heslo „$3“. Pokud jste to byl(a) vy, můžete se\nnyní přihlásit a zvolit si nové heslo. Platnost tohoto dočasného hesla\nvyprší za {{PLURAL:$5|jeden den|$5 dny|$5 dní}}.\n\nPokud jste o změnu hesla nežádal(a) nebo jste si na původní heslo již\nvzpomněl(a) a už ho změnit nechcete, můžete tuto zprávu ignorovat\na používat staré heslo.",
+    "passwordremindertext": "Někdo (patrně vy, z IP adresy $1) požádal o nové heslo\npro přihlášení do {{grammar:2sg|{{SITENAME}}}} ($4). Uživateli „$2“ bylo\nproto nastaveno dočasné heslo „$3“. Pokud jste to byl(a) vy, můžete se\nnyní přihlásit a zvolit si nové heslo. Platnost tohoto dočasného hesla\nvyprší za {{PLURAL:$5|jeden den|$5 dny|$5 dní}}.\n\nPokud jste o změnu hesla nežádal(a) nebo jste si na původní heslo již\nvzpomněl(a) a už ho změnit nechcete, můžete tuto zprávu ignorovat\na používat staré heslo.",
     "noemail": "Uživatel „$1“ nemá zaregistrovanou e-mailovou adresu.",
     "noemailcreate": "Musíte uvést platnou e-mailovou adresu",
     "passwordsent": "Dočasné heslo bylo zasláno na e-mailovou adresu registrovanou pro „$1“. Přihlaste se, prosím, znovu, jakmile ho obdržíte.",
     "eauthentsent": "Na zadanou adresu byl zaslán potvrzovací e-mail.\nŽádné další zprávy vám však na tuto adresu nebudou odeslány, dokud podle instrukcí v e-mailu nepotvrdíte, že tato adresa skutečně patří vám.",
     "throttled-mailpassword": "Během {{PLURAL:$1|poslední hodiny|posledních $1 hodin}} již bylo heslo jednou zasláno.\nKvůli prevenci zneužívání lze heslo zaslat jen jednou za $1 {{PLURAL:$1|hodinu|hodiny|hodin}}.",
     "mailerror": "Chyba při zasílání e-mailu: $1",
-    "acct_creation_throttle_hit": "Uživatelé přicházející z vaší IP adresy už dnes vytvořili $1 {{PLURAL:$1|účet|účty|účtů}}, což je dovolené maximum. Proto v tuto chvíli není dovoleno z této IP adresy další účty zakládat.",
+    "acct_creation_throttle_hit": "Uživatelé používající vaši IP adresu už dnes vytvořili $1 {{PLURAL:$1|účet|účty|účtů}}, což je dovolené maximum. Proto není v tuto chvíli dovoleno z této IP adresy zakládat další účty.",
     "emailauthenticated": "Vaše e-mailová adresa byla ověřena $2 v $3.",
     "emailnotauthenticated": "Vaše e-mailová adresa dosud nebyla ověřena.\nU následujících funkcí nebudou zasílány žádné e-maily.",
     "noemailprefs": "Pro zprovoznění následujících možností musíte zadat svou e-mailovou adresu.",
     "accountcreated": "Účet vytvořen",
     "accountcreatedtext": "Uživatelský účet [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|diskuse]]) byl vytvořen.",
     "createaccount-title": "Vytvoření účtu na {{grammar:6sg|{{SITENAME}}}}",
-    "createaccount-text": "Někdo vytvořil na {{grammar:6sg|{{SITENAME}}}} ($4) účet s vaší e-mailovou adresou.\nJméno účtu: „$2“\nHeslo: „$3“\nMěli byste se co nejdřív přihlásit a změnit si heslo.\n\nPokud byl účet vytvořen omylem, považujte tuto zprávu za bezpředmětnou.",
-    "usernamehasherror": "Uživatelské jméno nemůže obsahovat znak mřížka (#)",
+    "createaccount-text": "Někdo na {{grammar:6sg|{{SITENAME}}}} ($4) vytvořil účet s vaší e-mailovou adresou.\nJméno účtu: „$2“\nHeslo: „$3“\nMěli byste se co nejdřív přihlásit a změnit si heslo.\n\nPokud byl účet vytvořen omylem, považujte tuto zprávu za bezpředmětnou.",
+    "usernamehasherror": "Uživatelské jméno nemůže obsahovat znak mřížky (#)",
     "login-throttled": "Provedli jste příliš mnoho pokusů o přihlášení.\nNež to zkusíte znovu, musíte počkat na vypršení lhůty $1.",
     "login-abort-generic": "Vaše přihlášení se nezdařilo – přerušeno",
     "loginlanguagelabel": "Jazyk: $1",
     "resetpass-submit-cancel": "Storno",
     "resetpass-wrong-oldpass": "Nesprávné dočasné nebo aktuální heslo.\nMožná jste si již úspěšně heslo změnili, nebo jste si vyžádali nové dočasné heslo.",
     "resetpass-recycled": "Jako nové heslo si prosím nastavte něco jiného než stávající heslo.",
-    "resetpass-temp-emailed": "Přihlašujete se dočasným heslem zaslaným e-mailem.\nAbyste dokončili přihlášení, nastavte si zde nové heslo:",
+    "resetpass-temp-emailed": "Přihlašujete se dočasným heslem, zaslaným e-mailem.\nAbyste dokončili přihlášení, nastavte si zde nové heslo:",
     "resetpass-temp-password": "Dočasné heslo:",
     "resetpass-abort-generic": "Změna hesla byla zablokována rozšířením.",
     "resetpass-expired": "Platnost vašeho hesla vypršela. Pro přihlášení si nastavte nové heslo.",
     "passwordreset-capture-help": "Pokud zaškrtnete toto políčko, bude e-mail (s dočasným heslem) kromě zaslání uživateli zobrazen i vám.",
     "passwordreset-email": "E-mailová adresa:",
     "passwordreset-emailtitle": "Informace k účtu na {{grammar:6sg|{{SITENAME}}}}",
-    "passwordreset-emailtext-ip": "Někdo (patrně vy, z IP adresy $1) zažádal o nastavení nového hesla k vašemu účtu na {{grammar:6sg|{{SITENAME}}}} ($4). K této adrese {{PLURAL:$3|je přiřazen následující účet|jsou přiřazeny následující účty}}:\n\n$2\n\n{{PLURAL:$3|Toto dočasné heslo|Tato dočasná hesla}} vyprší {{PLURAL:$5|za jeden den|za $5 dny|za $5 dnů}}.\nNyní byste se měl(a) přihlásit a zvolit si nové heslo. Pokud tento požadavek\nposlal někdo jiný nebo jste si na své staré heslo vzpomněl(a), a nechcete ho\ntedy změnit, můžete tuto zprávu ignorovat a nadále používat původní heslo.",
-    "passwordreset-emailtext-user": "{{gender:$1|Uživatel|Uživatelka}} $1 na {{grammar:6sg|{{SITENAME}}}} {{gender:$1|zažádal|zažádala}} o nastavení nového hesla k vašemu\núčtu na {{grammar:6sg|{{SITENAME}}}} ($4). K této adrese {{PLURAL:$3|je přiřazen následující účet|jsou přiřazeny následující účty}}:\n\n$2\n\n{{PLURAL:$3|Toto dočasné heslo|Tato dočasná hesla}} vyprší {{PLURAL:$5|za jeden den|za $5 dny|za $5 dnů}}.\nNyní byste se měl(a) přihlásit a zvolit si nové heslo. Pokud tento požadavek\nposlal někdo jiný nebo jste si na své staré heslo vzpomněl(a), a nechcete ho\ntedy změnit, můžete tuto zprávu ignorovat a nadále používat původní heslo.",
+    "passwordreset-emailtext-ip": "Někdo (patrně vy, z IP adresy $1) zažádal na {{grammar:6sg|{{SITENAME}}}} ($4) o nastavení nového hesla k vašemu účtu. K této adrese {{PLURAL:$3|je přiřazen následující účet|jsou přiřazeny následující účty}}:\n\n$2\n\n{{PLURAL:$3|Toto dočasné heslo|Tato dočasná hesla}} vyprší {{PLURAL:$5|za jeden den|za $5 dny|za $5 dnů}}.\nNyní byste se měl(a) přihlásit a zvolit si nové heslo. Pokud tento požadavek\nposlal někdo jiný nebo jste si na své staré heslo vzpomněl(a), a nechcete ho\ntedy změnit, můžete tuto zprávu ignorovat a nadále používat původní heslo.",
+    "passwordreset-emailtext-user": "{{gender:$1|Uživatel|Uživatelka}} $1 na {{grammar:6sg|{{SITENAME}}}} {{gender:$1|zažádal|zažádala}} na {{grammar:6sg|{{SITENAME}}}} ($4) o nastavení nového hesla k vašemu\núčtu. K této adrese {{PLURAL:$3|je přiřazen následující účet|jsou přiřazeny následující účty}}:\n\n$2\n\n{{PLURAL:$3|Toto dočasné heslo|Tato dočasná hesla}} vyprší {{PLURAL:$5|za jeden den|za $5 dny|za $5 dnů}}.\nNyní byste se měl(a) přihlásit a zvolit si nové heslo. Pokud tento požadavek\nposlal někdo jiný nebo jste si na své staré heslo vzpomněl(a), a nechcete ho\ntedy změnit, můžete tuto zprávu ignorovat a nadále používat původní heslo.",
     "passwordreset-emailelement": "Uživatelské jméno: $1\nDočasné heslo: $2",
     "passwordreset-emailsent": "E-mail pro získání nového hesla byl odeslán.",
     "passwordreset-emailsent-capture": "Byl odeslán e-mail pro získání nového hesla, který je zobrazen níže.",
-    "passwordreset-emailerror-capture": "Byl vygenerován e-mail pro získání nového hesla, který je zobrazen níže, ale nepodařilo se ho odeslat {{GENDER:$2|uživateli|uživatelce}}: $1",
+    "passwordreset-emailerror-capture": "Byl vygenerován e-mail pro získání nového hesla, který je zobrazen níže, ale {{GENDER:$2|uživateli|uživatelce}} nepodařilo se ho odeslat: $1",
     "changeemail": "Změna e-mailové adresy",
     "changeemail-header": "Změna e-mailové adresy k účtu",
     "changeemail-text": "Vyplněním tohoto formuláře si změníte e-mailovou adresu. Pro potvrzení změny budete muset zadat své heslo.",
     "anontalkpagetext": "----''Toto je diskusní stránka anonymního uživatele, který si dosud nevytvořil účet nebo ho nepoužívá. K&nbsp;jeho identifikaci proto musíme používat číselnou IP adresu. Takovou IP adresu může sdílet několik uživatelů. Pokud jste anonymní uživatel a&nbsp;máte za to, že jsou vám adresovány irelevantní komentáře, prosíme, [[Special:UserLogin/signup|vytvořte si účet]] nebo [[Special:UserLogin|se přihlaste]], vyhnete se tím budoucí záměně s&nbsp;jinými anonymními uživateli.''",
     "noarticletext": "Tato stránka zatím neobsahuje žádný text.\nMůžete [[Special:Search/{{PAGENAME}}|zkusit tento název vyhledat]] na jiných stránkách, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} prohlédnout si příslušné protokolovací záznamy] nebo [{{fullurl:{{FULLPAGENAME}}|action=edit}} tuto stránku založit]</span>.",
     "noarticletext-nopermission": "Tato stránka zatím neobsahuje žádný text.\nMůžete [[Special:Search/{{PAGENAME}}|zkusit tento název vyhledat]] na jiných stránkách nebo <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} si prohlédnout příslušné protokolovací záznamy]</span>, ale na založení této stránky nemáte oprávnění.",
-    "missing-revision": "Revize #$1 stránky s názvem „{{FULLPAGENAME}}“ neexistuje.\n\nToto je obvykle způsobeno tím, že jste následovali zastaralý odkaz historickou verzi stránky, jež byla smazána.\nPodrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].",
+    "missing-revision": "Revize #$1 stránky s názvem „{{FULLPAGENAME}}“ neexistuje.\n\nToto je obvykle způsobeno tím, že jste následovali zastaralý odkaz na historickou verzi stránky, jež byla smazána.\nPodrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].",
     "userpage-userdoesnotexist": "Uživatelský účet „<nowiki>$1</nowiki>“ není zaregistrován. Zkontrolujte zda skutečně chcete vytvořit či editovat tuto stránku.",
     "userpage-userdoesnotexist-view": "Uživatelský účet „$1“ není zaregistrován.",
     "blocked-notice-logextract": "Tento uživatel je momentálně zablokován.\nZde je pro přehled zobrazen nejnovější záznam z knihy zablokování:",
     "previewconflict": "Tento náhled ukazuje text tak, jak bude vypadat po uložení stránky.",
     "session_fail_preview": "'''Váš požadavek se nepodařilo zpracovat kvůli ztrátě dat z relace.\nZkuste to prosím znovu.\nPokud se tento problém bude opakovat, zkuste se [[Special:UserLogout|odhlásit]] a znovu přihlásit.'''",
     "session_fail_preview_html": "'''Váš požadavek se nepodařilo zpracovat kvůli ztrátě dat z relace.'''\n\n''Jelikož má {{SITENAME}} zapnuto používání neomezeného HTML, náhled se kvůli prevenci proti útokům JavaScriptem nezobrazuje.''\n\n'''Pokud jde o zamýšlenou editaci, zkuste to prosím znovu. Pokud se tento problém bude opakovat, zkuste se [[Special:UserLogout|odhlásit]] a znovu přihlásit.'''",
-    "token_suffix_mismatch": "'''Vaše editace byla odmítnuta, protože Váš prohlížeč komolí některé znaky v editovaném textu.\nEditace byla odmítnuta, aby se zabránilo poškození textu stránky.\nToto se může někdy stát pokud používáte chybující webový anonymizér.'''",
+    "token_suffix_mismatch": "'''Vaše editace byla odmítnuta, protože Váš prohlížeč komolí některé znaky v editovaném textu.\nEditace byla odmítnuta, aby se zabránilo poškození textu stránky.\nToto se někdy může někdy stát, používáte-li chybující webový anonymizér.'''",
     "edit_form_incomplete": "'''Část editačního formuláře nedorazila na server; překontrolujte úplnost změn a zkuste to znovu.'''",
     "editing": "Editace stránky $1",
     "creating": "Vytváření $1",
     "editingold": "'''VAROVÁNÍ: Nyní editujete zastaralou verzi této stránky. Když ji uložíte, všechny pozdější změny se ztratí.'''",
     "yourdiff": "Rozdíly",
     "copyrightwarning": "Všechny příspěvky do {{grammar:2sg|{{SITENAME}}}} jsou zveřejňovány podle $2 (podrobnosti najdete na $1).\nPokud si nepřejete, aby váš text byl nemilosrdně upravován a volně šířen, pak ho do {{grammar:2sg|{{SITENAME}}}} neukládejte.<br />\nUložením příspěvku se zavazujete, že je vaším dílem nebo je zkopírován ze zdrojů, které nejsou chráněny autorským právem (tzv. <em>public domain</em>).\n'''NEVKLÁDEJTE DÍLA CHRÁNĚNÁ AUTORSKÝM PRÁVEM BEZ DOVOLENÍ!'''",
-    "copyrightwarning2": "Uvědomte si, že všechny příspěvky do {{grammar:2sg|{{SITENAME}}}} mohou být ostatními uživateli upraveny, pozměněny či odstraněny. Pokud si nepřejete, aby váš text byl nemilosrdně upravován, pak ho do {{grammar:2sg|{{SITENAME}}}} neukládejte.<br />\nUložením příspěvku se zavazujete, že je vaším dílem nebo je zkopírován ze zdrojů, které nejsou chráněny autorským právem (tzv. <em>public domain</em>), podrobnosti najdete na $1. '''Nekopírujte díla chráněná autorským právem bez dovolení!'''",
+    "copyrightwarning2": "Uvědomte si, že všechny příspěvky do {{grammar:2sg|{{SITENAME}}}} mohou být ostatními uživateli upraveny, pozměněny či odstraněny. Pokud si nepřejete, aby váš text byl nemilosrdně upravován, pak ho do {{grammar:2sg|{{SITENAME}}}} neukládejte.<br />\nUložením příspěvku se zavazujete, že je vaším dílem nebo je zkopírován ze zdrojů, které nejsou chráněny autorským právem (tzv. <em>public domain</em>); podrobnosti najdete na $1. '''Nekopírujte díla chráněná autorským právem bez dovolení!'''",
     "longpageerror": "'''Chyba: Pokoušíte se uložit text o velikosti {{PLURAL:$1|$1 KiB}}, přičemž dovolené maximum je {{PLURAL:$2|$2 KiB}}.'''\nVaše změna nemůže být uložena.",
-    "readonlywarning": "'''Varování: Databáze byla uzamčena kvůli údržbě, takže momentálně nebudete moci uložit své změny.'''\nMůžete si okopírovat text do souboru a uložit ho na později.\n\nSprávce serveru, který databázi zamkl, poskytl toto zdůvodnění: $1",
+    "readonlywarning": "'''Varování: Databáze byla uzamčena kvůli údržbě, takže momentálně nebudete moci uložit své změny.'''\nMůžete si okopírovat text do souboru a uložit ho později.\n\nSprávce serveru, který databázi zamkl, poskytl toto zdůvodnění: $1",
     "protectedpagewarning": "'''Varování: Tato stránka byla zamčena, takže ji mohou editovat pouze správci.'''\nNíže je pro přehled zobrazen nejnovější protokolovací záznam:",
     "semiprotectedpagewarning": "'''Poznámka:''' Tato stránka byla zamčena, takže ji mohou editovat pouze registrovaní uživatelé.\nNíže je pro přehled zobrazen nejnovější protokolovací záznam:",
     "cascadeprotectedwarning": "'''Varování:''' Tato stránka byla zamčena, takže ji mohou editovat pouze správci. Je vložena na následující, kaskádním zámkem  {{PLURAL:$1|zamčenou, stránku|zamčené, stránky|zamčené, stránky}}:",
     "revdelete-radio-set": "Skrytý",
     "revdelete-radio-unset": "Viditelný",
     "revdelete-suppress": "Utajit data i před správci",
-    "revdelete-unsuppress": "Odstranit omezení na vrácené verze",
+    "revdelete-unsuppress": "Odstranit omezení na obnovených revizích",
     "revdelete-log": "Důvod:",
     "revdelete-submit": "Aplikovat na {{PLURAL:$1|zvolenou revizi|zvolené revize}}",
     "revdelete-success": "'''Viditelnost revize úspěšně nastavena.'''",
     "revdelete-modify-missing": "Chyba při změně položky s ID $1: položka nenalezena v databázi!",
     "revdelete-no-change": "'''Upozornění:''' položka z $1 $2 už měla viditelnost nastavenou tak, jak bylo požadováno.",
     "revdelete-concurrent-change": "Chyba při změně položky z $1 $2: zdá se, že mezitím její stav změnil někdo jiný.\nProhlédněte si protokolovací záznamy.",
-    "revdelete-only-restricted": "Chyba skrývání položky z $2 $1: Nemůžete položky pouze skrýt před správci, aniž byste současně vybrali i některou z dalších možností utajení.",
+    "revdelete-only-restricted": "Chyba skrývání položky z $2 $1: Položky před správci nemůžete skrýt, aniž byste současně vybrali i některou z dalších možností utajení.",
     "revdelete-reason-dropdown": "*Obvyklé důvody smazání\n** Porušení autorských práv\n** Nevhodné komentáře nebo osobní údaje\n** Nevhodné uživatelské jméno\n** Potenciálně pomlouvačné údaje",
     "revdelete-otherreason": "Jiný/další důvod:",
     "revdelete-reasonotherlist": "Jiný důvod",
     "trackingcategories-msg": "Sledovací kategorie",
     "trackingcategories-name": "Název hlášení",
     "trackingcategories-desc": "Kritéria pro vložení do kategorie",
-    "noindex-category-desc": "Stránka obsahuje kouzelné slovo <nowiki>__NOINDEX__</nowiki> (a je ve jmenném prostoru, ve kterém je tento příznak dovolen), takže není indexována roboty.",
-    "index-category-desc": "Stránka obsahuje kouzelné slovo <nowiki>__INDEX__</nowiki> (a je ve jmenném prostoru, ve kterém je tento příznak dovolen), takže je indexována roboty, přestože by normálně nebyla.",
+    "noindex-category-desc": "Stránka není indexována roboty, protože obsahuje kouzelné slovo <code><nowiki>__NOINDEX__</nowiki></code> a je ve jmenném prostoru, ve kterém je tento příznak dovolen.",
+    "index-category-desc": "Stránka obsahuje kouzelné slovo <code><nowiki>__INDEX__</nowiki></code> (a je ve jmenném prostoru, ve kterém je tento příznak dovolen), takže je indexována roboty, přestože by normálně nebyla.",
     "post-expand-template-inclusion-category-desc": "Po rozbalení všech šablon je stránka větší než <code>$wgMaxArticleSize</code>, takže některé šablony rozbaleny nebyly.",
     "post-expand-template-argument-category-desc": "Po rozbalení argumentu šablony (něco v trojitých závorkách, např. <code>{{{Foo}}})</code> je stránka větší než <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Na stránce je použito příliš mnoho náročných funkcí parseru (jako <code>#ifexist</code>). Vizte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
     "broken-file-category-desc": "Kategorie přidaná pokud stránka obsahuje nefunkční odkaz na soubor (odkaz pro vložení souboru, který neexistuje).",
-    "hidden-category-category-desc": "Toto je kategorie, která obsahuje <nowiki>__HIDDENCAT__</nowiki>, což způsobuje, že se na stránkách implicitně nezobrazuje v rámečku odkazů na kategorie.",
+    "hidden-category-category-desc": "Toto je kategorie, která obsahuje <code><nowiki>__HIDDENCAT__</nowiki></code>, což způsobuje, že se na stránkách implicitně nezobrazuje v rámečku odkazů na kategorie.",
     "trackingcategories-nodesc": "Popis není k dispozici.",
     "trackingcategories-disabled": "Kategorie je vypnuta",
     "mailnologin": "Bez odesílací adresy",
index ea5d71f..29277b8 100644 (file)
     "trackingcategories-msg": "Tracking-Kategorie",
     "trackingcategories-name": "Name der Nachricht",
     "trackingcategories-desc": "Kategorieeinbindungskriterien",
-    "noindex-category-desc": "Die Seite wird nicht von Bots indexiert, da sie das magische Wort <nowiki>__NOINDEX__</nowiki> enthält und sich in einem Namensraum befindet, wo dieses Flag erlaubt ist.",
-    "index-category-desc": "Die Seite enthält ein <nowiki>__INDEX__</nowiki> und befindet sich in einem Namensraum, in dem dieses Flag nicht erlaubt ist und wird daher von Bots ausnahmsweise indexiert.",
+    "noindex-category-desc": "Die Seite wird nicht von Bots indexiert, da sie das magische Wort <code><nowiki>__NOINDEX__</nowiki></code> enthält und sich in einem Namensraum befindet, wo dieses Flag erlaubt ist.",
+    "index-category-desc": "Die Seite enthält ein <code><nowiki>__INDEX__</nowiki></code> und befindet sich in einem Namensraum, in dem dieses Flag nicht erlaubt ist und wird daher von Bots ausnahmsweise indexiert.",
     "post-expand-template-inclusion-category-desc": "Nach dem Expandieren aller Vorlagen ist die Seitengröße größer als <code>$wgMaxArticleSize</code>, sodass einige Vorlagen nicht expandiert werden.",
     "post-expand-template-argument-category-desc": "Nach dem Expandieren eines Vorlagenargumentes (etwas in dreifach geschweiften Klammern, z.&nbsp;B. <code>{{{Foo}}})</code> ist die Seite größer als <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Zu viele aufwändige Parserfunktionen (wie <code>#ifexist</code>) sind in der Seite eingebunden. Siehe das [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Benutzerhandbuch].",
     "broken-file-category-desc": "Kategorie, die hinzugefügt wird, falls die Seite einen defekten Dateilink enthält (einen Link zu einer eingebetteten Datei, die nicht vorhanden ist).",
-    "hidden-category-category-desc": "Dies ist eine Kategorie mit <nowiki>__HIDDENCAT__</nowiki>, die standardmäßig nicht auf Seiten im Kategorienbereich angezeigt wird.",
+    "hidden-category-category-desc": "Dies ist eine Kategorie mit <code><nowiki>__HIDDENCAT__</nowiki></code>, die standardmäßig nicht auf Seiten im Kategorienbereich angezeigt wird.",
     "trackingcategories-nodesc": "Keine Beschreibung verfügbar.",
     "trackingcategories-disabled": "Kategorie ist deaktiviert",
     "mailnologin": "Fehler beim E-Mail-Versand",
index 32bd957..861b05a 100644 (file)
     "session_fail_preview_html": "'''Ma meluli! Sebayê vindbiyayişê datasistemi ma vurnayişê şıma nêeşkeni qaydker.'''\n\n''Çunke keyepelê {{SITENAME}} de raw HTML aqtifo, seyrkerdışê verqayd semedê galayê (alızyayiş) JavaScript ri nımıyayo.''\n\n'''Eke no vurnayiş heqê şımayo, newe ra tesel bıker (bıcerebi). eke hona zi nêxebıtya, [[Special:UserLogout|vec]] newe ra hesabê xo aker.'''",
     "token_suffix_mismatch": "'''Vurnayişê şıma tepeya ameyo çunke qutiyê imla xerıbya.\nVurnayişê şıma qey nêxerepyayişê peli tepeya geyra a.\nEke şıma servisê proksi yo anonim şuxulneni sebebê ey noyo.'''",
     "edit_form_incomplete": "'''Qandê form dê vurnayışa tay wastera ma nêreşti; Vurnayışê ke şıma kerdê nêalızyayê, çım ra ravyarnê u fına bıcerbnê.'''",
-    "editing": "Şımayê $1 vurnenê",
-    "creating": "Pela $1 vırazê",
+    "editing": "$1 vuriyeno",
+    "creating": "$1 vıraziyeno",
     "editingsection": "Per da $1 de şımaye kenê ke leti bıvurnê",
     "editingcomment": "$1 vuryeno (qısmo newe)",
-    "editconflict": "Vurnayişê ke yewbini nêtepışeni: $1",
+    "editconflict": "Têverabiyayışê vurnayışi: $1",
     "explainconflict": "Wexta ke şıma pel vurneyene yewna ten zi pel vurna.\nNuşteyo corin; halê pelo nıkayin mocneno.\nVurnayişê şıma cêr de mocya ( musya).\nVurnayişanê peyinan şıma gani qayd bıkeri.\nWexta ke şıma butonê \"{{int:savearticle}}\" tıkna '''teyna''' nuşteyo corin qayd beno.",
     "yourtext": "nuşteyê şıma",
     "storedversion": "Nuşteyo qaydbiyaye",
     "log-fulllog": "Temamê rocaneyi bıvine",
     "edit-hook-aborted": "Vurnayiş vınderiya.\nYew sebeb beyan nibı.",
     "edit-gone-missing": "Pel rocanebiyaye niyo.\nHewna kerde aseno.",
-    "edit-conflict": "Vurnayişê pêverdiyaye.",
+    "edit-conflict": "Têverabiyayışê vurnayışi.",
     "edit-no-change": "Vurnayişê şıma qebul nêbı, çunke nuşte de yew vurnayiş n3evıraziya.",
     "postedit-confirmation": "Vurnayışê to qeyd bi.",
     "edit-already-exists": "Pelo newe nêvıraziyeno.\nPel ca ra esto.",
index 37bdff9..7954bf2 100644 (file)
     "disclaimers": "ཁས་མི་ལེན་པ།",
     "disclaimerpage": "Project: སྤྱིར་བཏང་ཁས་མི་ལེན་པ།",
     "edithelp": "ཞུན་དག་གྲོགས་རམ།",
-    "helppage": "Help:ནང་དོན།",
     "mainpage": "མ་ཤོག།",
     "mainpage-description": "མ་ཤོག།",
     "portal": "མི་སྡེའི་སྒོ་ར།",
index a821207..646727b 100644 (file)
@@ -40,7 +40,6 @@
     "jumptosearch": "Sèirca",
     "currentevents": "Fât e prugèt ed tót",
     "currentevents-url": "Project:Prugèt_ed_tót",
-    "helppage": "Help:Introdusiòun",
     "portal": "Discóter e quistiunêr",
     "portal-url": "Project:Bar",
     "nstab-main": "Artécol",
index 45a64df..00745d8 100644 (file)
     "accountcreatedtext": "The user account for [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) has been created.",
     "createaccount-title": "Account creation for {{SITENAME}}",
     "createaccount-text": "Someone created an account for your email address on {{SITENAME}} ($4) named \"$2\", with password \"$3\".\nYou should log in and change your password now.\n\nYou may ignore this message, if this account was created in error.",
-    "usernamehasherror": "Username cannot contain hash characters",
     "login-throttled": "You have made too many recent login attempts.\nPlease wait $1 before trying again.",
     "login-abort-generic": "Your login was unsuccessful - Aborted",
     "loginlanguagelabel": "Language: $1",
     "upload-prohibited": "Prohibited file types: $1.",
     "uploadfooter": "-",
     "upload-default-description": "-",
-    "uploadlog": "upload log",
     "uploadlogpage": "Upload log",
     "uploadlogpagetext": "Below is a list of the most recent file uploads.\nSee the [[Special:NewFiles|gallery of new files]] for a more visual overview.",
     "filename": "Filename",
     "filereuploadsummary": "File changes:",
     "filestatus": "Copyright status:",
     "filesource": "Source:",
-    "uploadedfiles": "Uploaded files",
     "ignorewarning": "Ignore warning and save file anyway",
     "ignorewarnings": "Ignore any warnings",
     "minlength1": "Filenames must be at least one letter.",
     "overwroteimage": "uploaded a new version of \"[[$1]]\"",
     "uploaddisabled": "Uploads disabled.",
     "copyuploaddisabled": "Upload by URL disabled.",
-    "uploadfromurl-queued": "Your upload has been queued.",
     "uploaddisabledtext": "File uploads are disabled.",
     "php-uploaddisabledtext": "File uploads are disabled in PHP.\nPlease check the file_uploads setting.",
     "uploadscripted": "This file contains HTML or script code that may be erroneously interpreted by a web browser.",
     "upload-misc-error": "Unknown upload error",
     "upload-misc-error-text": "An unknown error occurred during the upload.\nPlease verify that the URL is valid and accessible and try again.\nIf the problem persists, contact an [[Special:ListUsers/sysop|administrator]].",
     "upload-too-many-redirects": "The URL contained too many redirects",
-    "upload-unknown-size": "Unknown size",
     "upload-http-error": "An HTTP error occurred: $1",
     "upload-copy-upload-invalid-domain": "Copy uploads are not available from this domain.",
     "backend-fail-stream": "Could not stream file \"$1\".",
     "img-auth-streaming": "Streaming \"$1\".",
     "img-auth-public": "The function of img_auth.php is to output files from a private wiki.\nThis wiki is configured as a public wiki.\nFor optimal security, img_auth.php is disabled.",
     "img-auth-noread": "User does not have access to read \"$1\".",
-    "img-auth-bad-query-string": "The URL has an invalid query string.",
     "http-invalid-url": "Invalid URL: $1",
     "http-invalid-scheme": "URLs with the \"$1\" scheme are not supported.",
     "http-request-error": "HTTP request failed due to unknown error.",
     "filehist-dimensions": "Dimensions",
     "filehist-filesize": "File size",
     "filehist-comment": "Comment",
-    "filehist-missing": "File missing",
     "imagelinks": "File usage",
     "linkstoimage": "The following {{PLURAL:$1|page links|$1 pages link}} to this file:",
     "linkstoimage-more": "More than $1 {{PLURAL:$1|page links|pages link}} to this file.\nThe following list shows the {{PLURAL:$1|first page link|first $1 page links}} to this file only.\nA [[Special:WhatLinksHere/$2|full list]] is available.",
     "listgrouprights-removegroup-self": "Remove {{PLURAL:$2|group|groups}} from own account: $1",
     "listgrouprights-addgroup-self-all": "Add all groups to own account",
     "listgrouprights-removegroup-self-all": "Remove all groups from own account",
+    "listgrouprights-namespaceprotection-header": "Namespace restrictions",
+    "listgrouprights-namespaceprotection-namespace": "Namespace",
+    "listgrouprights-namespaceprotection-restrictedto": "Right(s) allowing user to edit",
     "trackingcategories": "Tracking categories",
     "trackingcategories-summary": "This page lists tracking categories which are automatically populated by the MediaWiki software. Their names can be changed by altering the relevant system messages in the {{ns:8}} namespace.",
     "trackingcategories-msg": "Tracking category",
     "trackingcategories-name": "Message name",
     "trackingcategories-desc": "Category inclusion criteria",
-    "noindex-category-desc": "The page is not indexed by robots because it has the magic word <nowiki>__NOINDEX__</nowiki> on it and is in a namespace where that flag is allowed.",
-    "index-category-desc": "The page has a <nowiki>__INDEX__</nowiki> on it (and is in a namespace where that flag is allowed), and hence is indexed by robots where it normally wouldn't be.",
+    "noindex-category-desc": "The page is not indexed by robots because it has the magic word <code><nowiki>__NOINDEX__</nowiki></code> on it and is in a namespace where that flag is allowed.",
+    "index-category-desc": "The page has a <code><nowiki>__INDEX__</nowiki></code> on it (and is in a namespace where that flag is allowed), and hence is indexed by robots where it normally wouldn't be.",
     "post-expand-template-inclusion-category-desc": "After expanding all the templates, the page size is bigger than <code>$wgMaxArticleSize</code>, so some templates weren't expanded.",
-    "post-expand-template-argument-category-desc": "After expanding a template argument (something in triple braces, like <code>{{{Foo}}})</code>, the page is bigger than <code>$wgMaxArticleSize</code>.",
+    "post-expand-template-argument-category-desc": "After expanding a template argument (something in triple braces, like <code>{{{Foo}}}</code>), the page is bigger than <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Too many expensive parser functions (like <code>#ifexist</code>) included on a page. See [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
     "broken-file-category-desc": "Category added if the page contains a broken file link (a link to embed a file when the file does not exist).",
-    "hidden-category-category-desc": "This is a category with <nowiki>__HIDDENCAT__</nowiki> on it, which prevents it from showing up in the category links box on pages, by default.",
+    "hidden-category-category-desc": "This is a category with <code><nowiki>__HIDDENCAT__</nowiki></code> on it, which prevents it from showing up in the category links box on pages, by default.",
     "trackingcategories-nodesc": "No description available.",
     "trackingcategories-disabled": "Category is disabled",
     "mailnologin": "No send address",
     "emailuser-summary": "",
     "emailpage": "Email user",
     "emailpagetext": "You can use the form below to send an email message to this {{GENDER:$1|user}}.\nThe email address you entered in [[Special:Preferences|your user preferences]] will appear as the \"From\" address of the email, so the recipient will be able to reply directly to you.",
-    "usermailererror": "Mail object returned error:",
     "defemailsubject": "{{SITENAME}} email from user \"$1\"",
     "usermaildisabled": "User email disabled",
     "usermaildisabledtext": "You cannot send email to other users on this wiki",
     "noemailtitle": "No email address",
     "noemailtext": "This user has not specified a valid email address.",
-    "nowikiemailtitle": "No email allowed",
     "nowikiemailtext": "This user has chosen not to receive email from other users.",
     "emailnotarget": "Non-existent or invalid username for recipient.",
     "emailtarget": "Enter username of recipient",
     "watching": "Watching...",
     "unwatching": "Unwatching...",
     "watcherrortext": "An error occurred while changing your watchlist settings for \"$1\".",
-    "enotif_mailer": "{{SITENAME}} notification mailer",
     "enotif_reset": "Mark all pages visited",
     "enotif_impersonal_salutation": "{{SITENAME}} user",
     "enotif_subject_deleted": "{{SITENAME}} page $1 has been {{GENDER:$2|deleted}} by $2",
     "excontent": "content was: \"$1\"",
     "excontentauthor": "content was: \"$1\" (and the only contributor was \"[[Special:Contributions/$2|$2]]\")",
     "exbeforeblank": "content before blanking was: \"$1\"",
-    "exblank": "page was empty",
     "delete-confirm": "Delete \"$1\"",
     "delete-legend": "Delete",
     "historywarning": "<strong>Warning:</strong> The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
     "importunknownsource": "Unknown import source type",
     "importcantopen": "Could not open import file",
     "importbadinterwiki": "Bad interwiki link",
-    "importnotext": "Empty or no text",
     "importsuccess": "Import finished!",
-    "importhistoryconflict": "Conflicting history revision exists (may have imported this page before)",
     "importnosources": "No transwiki import sources have been defined and direct history uploads are disabled.",
     "importnofile": "No import file was uploaded.",
     "importuploaderrorsize": "Upload of import file failed.\nThe file is bigger than the allowed upload size.",
index 4c5a3c8..396a670 100644 (file)
             "Wilfredor",
             "XalD",
             "XanaG",
-            "לערי ריינהארט"
+            "לערי ריינהארט",
+            "Chocolate con galleta"
         ]
     },
     "tog-underline": "Subrayar los enlaces:",
     "permalink": "Enlace permanente",
     "print": "Imprimir",
     "view": "Ver",
+    "view-foreign": "Ver en $1",
     "edit": "Editar",
+    "edit-local": "Editar descripción local",
     "create": "Crear",
+    "create-local": "Añadir descripción local",
     "editthispage": "Editar esta página",
     "create-this-page": "Crear esta página",
     "delete": "Borrar",
     "trackingcategories-msg": "Categoría de seguimiento",
     "trackingcategories-name": "Nombre del mensaje",
     "trackingcategories-desc": "Criterios de inclusión de categoría",
-    "noindex-category-desc": "La página contiene la palabra mágica <nowiki>__NOINDEX__</nowiki> (y está en un espacio de nombres donde la función está activada); y por ello los robots no la indizan.",
+    "noindex-category-desc": "La página contiene la palabra mágica <code><nowiki>__NOINDEX__</nowiki></code> (y está en un espacio de nombres donde la función está activada); y por ello los robots no la indizan.",
+    "post-expand-template-inclusion-category-desc": "Después de expandir todas las plantillas, el tamaño de la página es más grande que <code>$wgMaxArticleSize</code>, así que algunas plantillas no se expandieron.",
+    "post-expand-template-argument-category-desc": "Después de expandir un argumento de plantilla (algunos en tres llaves, como <code>{{{Foo}}})</code>, la página es más grande que <code>$wgMaxArticleSize</code>.",
     "trackingcategories-nodesc": "No hay descripción disponible.",
     "trackingcategories-disabled": "La categoría está desactivada",
     "mailnologin": "Ninguna dirección de envio",
index 4c69566..a8ce571 100644 (file)
     "trackingcategories-msg": "Süsteemikategooria",
     "trackingcategories-name": "Sõnumi nimi",
     "trackingcategories-desc": "Kategooriasse arvamise kriteeriumid",
-    "noindex-category-desc": "Leheküljel on võlusõna <nowiki>__NOINDEX__</nowiki> ja lehekülg on nimeruumis, kus see silt on lubatud ning seetõttu robotid ei indekseeri lehekülge.",
-    "index-category-desc": "Leheküljel on <nowiki>__INDEX__</nowiki> ja lehekülg on nimeruumis, kus see silt on lubatud ning seetõttu indekseerivad robotid lehekülge seal, kus nad muidu seda ei teeks.",
+    "noindex-category-desc": "Robotid ei indekseeri lehekülge, sest sellel on võlusõna <code><nowiki>__NOINDEX__</nowiki></code> ja lehekülg on nimeruumis, kus see silt on lubatud.",
+    "index-category-desc": "Leheküljel on <code><nowiki>__INDEX__</nowiki></code> ja lehekülg on nimeruumis, kus see silt on lubatud ning seetõttu indekseerivad robotid lehekülge seal, kus nad muidu seda ei teeks.",
     "post-expand-template-inclusion-category-desc": "Kõigi mallide hõrendamise järel on lehekülg suurem kui <code>$wgMaxArticleSize</code>, mistõttu jäid mõned mallid hõrendamata.",
     "post-expand-template-argument-category-desc": "Malli argumendi (midagi kolmekordsete looksulgude vahel, näiteks <code>{{{Foo}}})</code> hõrendamise järel on lehekülg suurem kui <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Leheküljel on liiga palju kulukaid parserifunktsioone nagu <code>#ifexist</code>. Vaata [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit dokumentatsiooni].",
     "broken-file-category-desc": "Kategooria lisatakse, kui leheküljel on katkine pildilink, millega manustatakse fail, mida pole olemas.",
-    "hidden-category-category-desc": "Selle kategooria leheküljel on <nowiki>__HIDDENCAT__</nowiki>, mis vaikimisi ei lase näidata seda kategooriat lehekülgedel kategoorialinkide kastis.",
+    "hidden-category-category-desc": "Selle kategooria leheküljel on <code><nowiki>__HIDDENCAT__</nowiki></code>, mis vaikimisi ei lase näidata seda kategooriat lehekülgedel kategoorialinkide kastis.",
     "trackingcategories-nodesc": "Kirjeldus puudub.",
     "trackingcategories-disabled": "Kategooria on keelatud.",
     "mailnologin": "Saatja aadress puudub",
index f969476..0c4f350 100644 (file)
     "permalink": "پیوند پایدار",
     "print": "چاپ",
     "view": "نمایش",
+    "view-foreign": "مشاهده در $1",
     "edit": "ویرایش",
+    "edit-local": "ویرایش توضیحات محلی",
     "create": "ایجاد",
+    "create-local": "افزودن توضیحات محلی",
     "editthispage": "ویرایش این صفحه",
     "create-this-page": "ایجاد این صفحه",
     "delete": "حذف",
     "pool-timeout": "اتمام مهلت انتظار برای قفل",
     "pool-queuefull": "صف مخزن پر است",
     "pool-errorunknown": "خطای ناشناخته",
+    "pool-servererror": "پول سنتر سرویس در دسترس نیست ( $1 ).",
     "aboutsite": "دربارهٔ {{SITENAME}}",
     "aboutpage": "Project:درباره",
     "copyright": "محتوایات تحت اجازه‌نامهٔ $1 هستند مگر اینکه خلافش ذکر شده باشد.",
index fbecb98..d8458d4 100644 (file)
     "disclaimers": "Deentine",
     "disclaimerpage": "Project:Deentine kuuɓtidinɗe",
     "edithelp": "Ballal Taƴtagol",
-    "helppage": "Help:Loowdi",
     "mainpage": "Hello jaɓɓorgo",
     "mainpage-description": "Hello jaɓɓorgo",
     "policy-url": "Eɓɓoore:Dawirgol",
index dbde037..a956c2e 100644 (file)
     "permalink": "Ikilinkki",
     "print": "Tulosta",
     "view": "Näytä",
+    "view-foreign": "Katso kohdetta $1",
     "edit": "Muokkaa",
+    "edit-local": "Muokkaa paikallista kuvausta",
     "create": "Luo sivu",
+    "create-local": "Lisää paikallinen kuvaus",
     "editthispage": "Muokkaa tätä sivua",
     "create-this-page": "Luo tämä sivu",
     "delete": "Poista",
     "pool-timeout": "Lukon aikakatkaisu.",
     "pool-queuefull": "Lukkojono on täysi.",
     "pool-errorunknown": "Tuntematon virhe.",
+    "pool-servererror": "Pool counter -palvelu ei ole käytettävissä ($1).",
     "aboutsite": "Tietoja {{GRAMMAR:elative|{{SITENAME}}}}",
     "aboutpage": "Project:Tietoja",
     "copyright": "Sisältö on käytettävissä lisenssillä $1, ellei toisin ole mainittu.",
     "trackingcategories-msg": "Tarkkailuluokka",
     "trackingcategories-name": "Viestin nimi",
     "trackingcategories-desc": "Kriteerit luokkaan joutumiselle",
+    "post-expand-template-inclusion-category-desc": "Jos kaikki mallineet laajennetaan, sivun koko on suurempi kuin <code>$wgMaxArticleSize</code>. Tämän vuoksi kaikkia mallineita ei laajennettu.",
     "post-expand-template-argument-category-desc": "Kun mallineen argumentti on laajennettu (argumentti on merkkijono kolmen kaarisulun sisällä kuten <code>{{{Foo}}})</code>, sivu on suurempi kuin <code>$wgMaxArticleSize</code>.",
     "trackingcategories-nodesc": "Ei kuvausta olemassa.",
     "trackingcategories-disabled": "Luokka on poistettu käytöstä",
index e1ed5b8..06493a4 100644 (file)
     "disclaimers": "Vastuuvaphaus",
     "disclaimerpage": "Project: Ylheinen varoitus",
     "edithelp": "Mookkausapua",
-    "helppage": "Help: Sisältö",
     "mainpage": "Alkusivu",
     "mainpage-description": "Alkusivu",
     "portal": "Kaikitten purthaali",
index 77d83ef..f28ea98 100644 (file)
     "trackingcategories-msg": "Catégorie de suivi",
     "trackingcategories-name": "Nom du message",
     "trackingcategories-desc": "Critère d’inclusion de la catégorie",
-    "noindex-category-desc": "La page contient un mot magique <nowiki>__NOINDEX__</nowiki> (et est dans un espace de noms où ce marquage est autorisé), et donc ne sera pas indexée par les robots.",
-    "index-category-desc": "La page contient un <nowiki>__INDEX__</nowiki> (et est dans un espace de noms où ce marquage est autorisé), et sera donc indexée par les robots alors qu’elle ne l’aurait pas été normalement.",
+    "noindex-category-desc": "La page contient un mot magique <code><nowiki>__NOINDEX__</nowiki></code> (et est dans un espace de noms où ce marquage est autorisé), et donc ne sera pas indexée par les robots.",
+    "index-category-desc": "La page contient un <code><nowiki>__INDEX__</nowiki></code> (et est dans un espace de noms où ce marquage est autorisé), et sera donc indexée par les robots alors qu’elle ne l’aurait pas été normalement.",
     "post-expand-template-inclusion-category-desc": "Après avoir développé tous les modèles, la taille de la page dépasse <code>$wgMaxArticleSize</code> ; certains modèles n’ont donc pas été développés.",
     "post-expand-template-argument-category-desc": "Après avoir développé l’argument d’un modèle (quelque chose entre accolades triples, comme <code>{{{Foo}}})</code>, la page dépasse <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Trop de fonctions coûteuses de l’analyseur (comme <code>#ifexist</code>) sont incluses dans une page. Voyez [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
     "broken-file-category-desc": "Catégorie ajoutée su la page contient un lien de fichier incorrect (un lien pour inclure un fichier alors que celui-ci n’existe pas).",
-    "hidden-category-category-desc": "C’est une catégorie contenant <nowiki>__HIDDENCAT__</nowiki>, qui empêche son affichage dans la zone des liens de catégorie sur les pages, par défaut.",
+    "hidden-category-category-desc": "C’est une catégorie contenant <code><nowiki>__HIDDENCAT__</nowiki></code>, qui empêche son affichage dans la zone des liens de catégorie sur les pages, par défaut.",
     "trackingcategories-nodesc": "Aucune description disponible.",
     "trackingcategories-disabled": "La catégorie est désactivée",
     "mailnologin": "Pas d'adresse d'expéditeur",
index 463b5f2..03f016a 100644 (file)
     "disclaimers": "Avertissements",
     "disclaimerpage": "Project:Avertissements ordinaires",
     "edithelp": "Aide",
-    "helppage": "Help:Aide",
     "mainpage": "Page Principale",
     "mainpage-description": "Page Principale",
     "policy-url": "Project:Régulations",
index fd71f92..e1de296 100644 (file)
     "trackingcategories-msg": "Kategorii ferfulge",
     "trackingcategories-name": "Nööm faan't bööd",
     "trackingcategories-desc": "Kriteerien för't iinbinjen faan kategoriin.",
-    "noindex-category-desc": "Üüb detdiar sidj stäänt det maagisk wurd <nowiki>__NOINDEX__</nowiki> an as uun en nöömrüm, huar det tuläät as. Sodenang woort det faan a bots ei indisiaret.",
-    "index-category-desc": "Üüb detdiar sidj stäänt det maagisk wurd <nowiki>__INDEX__</nowiki> an as uun en nöömrüm, huar det ei tuläät as. Sodenang woort det faan a bots likes indisiaret.",
+    "noindex-category-desc": "Üüb detdiar sidj stäänt det maagisk wurd <code><nowiki>__NOINDEX__</nowiki></code> an as uun en nöömrüm, huar det tuläät as. Sodenang woort det faan a bots ei indisiaret.",
+    "index-category-desc": "Üüb detdiar sidj stäänt det maagisk wurd <code><nowiki>__INDEX__</nowiki></code> an as uun en nöömrüm, huar det ei tuläät as. Sodenang woort det faan a bots likes indisiaret.",
     "post-expand-template-inclusion-category-desc": "Efter't ütjwidjin faan a föörlaagen as det sidj grater üs <code>$wgMaxArticleSize</code>, sodenang kön enkelt föörlaagen ei ütjwidjet wurd.",
     "post-expand-template-argument-category-desc": "Efter't ütjwidjin faan en föörlaagenargument (det stäänt uun trebelt kläämen so üs <code>{{{Foo}}})</code> as det sidj grater üs <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Diar san tu föl parser-funktjuunen (so üs <code>#ifexist</code>) uun det sidj iinbünjen. Luke efter uun't [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit brüker-hoonbuk].",
     "broken-file-category-desc": "Detdiar kategorii woort iinsaat, wan üüb det sidj en uunstaken ferwisang föörkomt. (Det as ferlicht en ferwisang üüb en datei, wat det goorei jaft.)",
-    "hidden-category-category-desc": "Det as en kategorii, huar <nowiki>__HIDDENCAT__</nowiki> üüb stäänt. Hat woort normoolerwiis ei bi a kategoriin uunwiset.",
+    "hidden-category-category-desc": "Det as en kategorii, huar <code><nowiki>__HIDDENCAT__</nowiki></code> üüb stäänt. Hat woort normoolerwiis ei bi a kategoriin uunwiset.",
     "trackingcategories-nodesc": "Diar as nian beskriiwang.",
     "trackingcategories-disabled": "Detdiar kategorii as ufsteld wurden",
     "mailnologin": "Bi't e-mail ferschüüren as wat skiaf gingen",
index 61946c0..849d87f 100644 (file)
     "permalink": "Ligazón permanente",
     "print": "Imprimir",
     "view": "Ver",
+    "view-foreign": "Ver en $1",
     "edit": "Editar",
+    "edit-local": "Editar a descrición local",
     "create": "Crear",
+    "create-local": "Engadir a descrición local",
     "editthispage": "Editar esta páxina",
     "create-this-page": "Crear esta páxina",
     "delete": "Borrar",
     "trackingcategories-msg": "Categoría de seguimento",
     "trackingcategories-name": "Nome da mensaxe",
     "trackingcategories-desc": "Criterio de inclusión da categoría",
-    "noindex-category-desc": "A páxina contén a palabra máxica <nowiki>__NOINDEX__</nowiki> (e está nun espazo de nomes no que esa marca está permitida) e, polo tanto, non será indexada polos bots.",
-    "index-category-desc": "A páxina contén a palabra máxica <nowiki>__INDEX__</nowiki> (e está nun espazo de nomes no que esa marca está permitida) e, polo tanto, será indexada polos bots cando non debera selo normalmente.",
+    "noindex-category-desc": "A páxina non está indexada polos robots porque ten a palabra máxica <code><nowiki>__NOINDEX__</nowiki></code> e está nun espazo de nomes no que esa marca está permitida.",
+    "index-category-desc": "A páxina contén a palabra máxica <code><nowiki>__INDEX__</nowiki></code> (e está nun espazo de nomes no que esa marca está permitida) e, polo tanto, será indexada polos bots cando non debera selo normalmente.",
     "post-expand-template-inclusion-category-desc": "Despois de expandir todos os modelos, o tamaño da páxina é maior que <code>$wgMaxArticleSize</code>; algúns modelos non se expandiron.",
     "post-expand-template-argument-category-desc": "Despois de expandir o argumento dun modelo (algo entre chaves triples, como <code>{{{Proba}}}</code>), a páxina é maior que <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Hai demasiadas funcións analíticas custosas (como <code>#ifexist</code>) incluídas nunha páxina. Consulte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
     "broken-file-category-desc": "Categoría engadida se a páxina contén unha ligazón de ficheiro rota (unha ligazón para incorporar un ficheiro cando o ficheiro non existe).",
-    "hidden-category-category-desc": "Esta é unha categoría coa palabra máxica <nowiki>__HIDDENCAT__</nowiki>, que impide que se mostre por defecto na caixa de categorías das páxinas.",
+    "hidden-category-category-desc": "Esta é unha categoría coa palabra máxica <code><nowiki>__HIDDENCAT__</nowiki></code>, que impide que se mostre por defecto na caixa de categorías das páxinas.",
     "trackingcategories-nodesc": "Non hai ningunha descrición dispoñible.",
     "trackingcategories-disabled": "A categoría está desactivada",
     "mailnologin": "Non existe enderezo para o envío",
index 376f895..339c540 100644 (file)
     "disclaimers": "Chotraio",
     "disclaimerpage": "Project:Sadeo chotraio",
     "edithelp": "Sudarunk palov",
-    "helppage": "Help:Mozkur",
     "mainpage": "Mukhel Pan",
     "mainpage-description": "Mukhel Pan",
     "portal": "Somudaik proves-dar",
index 53ba295..f0c6be3 100644 (file)
     "disclaimers": "𐍅𐌰𐌳𐌾𐍉𐌱𐌹𐌻𐌰𐌲𐌴𐌹𐌽𐍃",
     "disclaimerpage": "Project:𐍅𐌰𐌳𐌾𐌹𐍃 𐌱𐌹𐌻𐌰𐌲𐌴𐌹𐌽𐍃",
     "edithelp": "𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌷𐌹𐌻𐍀𐌰",
-    "helppage": "Help:𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐍃𐌴𐌹𐌳𐍉",
     "mainpage": "𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐍃𐌴𐌹𐌳𐍉",
     "mainpage-description": "𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐍃𐌴𐌹𐌳𐍉",
     "portal": "𐌱𐌰𐌿𐍂𐌲𐌹𐍃 𐌲𐌰𐍅𐌹",
index 8ae4767..dafdb28 100644 (file)
     "disclaimers": "Hattara",
     "disclaimerpage": "Project:Babban gargaɗi",
     "edithelp": "Taimako kan gyara",
-    "helppage": "Help:Tsaraba",
     "mainpage": "Marhabin",
     "privacy": "Manufar kare sirri",
     "privacypage": "Project:Manufar kare sirri",
index 998c186..f2a5fd1 100644 (file)
     "permalink": "קישור קבוע",
     "print": "גרסה להדפסה",
     "view": "צפייה",
-    "view-foreign": "תצ×\95גה ב{{GRAMMAR:תחילית|$1}}",
+    "view-foreign": "×\94צגה ב{{GRAMMAR:תחילית|$1}}",
     "edit": "עריכה",
     "edit-local": "עריכת התיאור המקומי",
     "create": "יצירה",
     "trackingcategories-msg": "קטגוריית מעקב",
     "trackingcategories-name": "שם ההודעה",
     "trackingcategories-desc": "הקריטריון להכללה בקטגוריה",
-    "noindex-category-desc": "×\94×\93×£ ×\9b×\95×\9c×\9c ×\90ת ×\9e×\99×\9cת ×\94קס×\9d <nowiki>__×\9c×\90\9c×\97×\99פ×\95ש__</nowiki> (×\95×\94×\95×\90 ×\91×\9eר×\97×\91 ×©×\9d ×©×\91×\95 ×\93×\92×\9c ×\9b×\96×\94 ×\9e×\95תר ×\9cש×\99×\9e×\95ש), ×\95×\9c×\9b×\9f ×\90×\99× ×\95 ×\9e×\90×\95× ×\93קס ×¢×\9câ\80\8fâ\80\8fÖ«Ö¾×\99×\93×\99 ×¨×\95×\91×\95×\98×\99×\9d.",
-    "index-category-desc": "הדף כולל את מילת הקסם <nowiki>__לחיפוש__</nowiki> (והוא במרחב שם שבו דגל כזה מותר לשימוש), ולכן הוא מאונדקס על‏‏֫־ידי רובוטים אף שכברירת מחדל הוא לא היה מאונדקס על ידם.",
+    "noindex-category-desc": "×\94×\93×£ ×\90×\99× ×\95 ×\9e×\90×\95× ×\93קס ×¢×\9câ\80\8fâ\80\8fÖ¾×\99×\93×\99 ×¨×\95×\91×\95×\98×\99×\9d ×\9b×\99×\95×\95×\9f ×©×\94×\95×\90 ×\9b×\95×\9c×\9c ×\90ת ×\9e×\99×\9cת ×\94קס×\9d <code><nowiki>__NOINDEX__</nowiki></code> ×\95×\94×\95×\90 ×\91×\9eר×\97×\91 ×©×\9d ×©×\91×\95 ×\93×\92×\9c ×\9b×\96×\94 ×\9e×\95תר ×\9cש×\99×\9e×\95ש.",
+    "index-category-desc": "הדף כולל את מילת הקסם <code><nowiki>__INDEX__</nowiki></code> (והוא במרחב שם שבו דגל כזה מותר לשימוש), ולכן הוא מאונדקס על‏‏֫־ידי רובוטים אף שכברירת מחדל הוא לא היה מאונדקס על ידם.",
     "post-expand-template-inclusion-category-desc": "לאחר הרחבת כל התבניות, גודל הדף גדול מ‏‏֫־<code>$wgMaxArticleSize</code>, ולכן מספר תבניות אינן מורחבות.",
     "post-expand-template-argument-category-desc": "לאחר הרחבת ארגומנט של תבנית (משהו בסוגריים משולשים, כגון <code>{{{Foo}}})</code>, הדף גדול מ‏‏֫‏‏֫־<code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "יותר מדי פונקציות מפענח יקרות לשימוש (כגון #קיים) מוכללות בדף. ראו [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
index f35f165..2613139 100644 (file)
@@ -18,7 +18,6 @@
     "october": "Nuliaġvik",
     "november": "Quyyavik",
     "december": "Uvluiḷaq",
-    "helppage": "Help:anniqsuiruq",
     "mainpage": "Makpiġaaq Kanna",
     "mainpage-description": "Makpibaaq Kanna",
     "portal-url": "Project:qargi"
index db10f28..984a803 100644 (file)
     "trackingcategories-msg": "Categoria di monitoraggio",
     "trackingcategories-name": "Nome del messaggio",
     "trackingcategories-desc": "Criteri per l'inclusione nella categoria",
-    "noindex-category-desc": "La pagina contiene la parola magica <nowiki>__NOINDEX__</nowiki> (e si trova in un namespace dove tale flag è consentito) e quindi non è indicizzata dai robot.",
-    "index-category-desc": "La pagina contiene <nowiki>__INDEX__</nowiki> (e si trova in un namespace dove tale flag è consentito) e quindi è indicizzata dai robot, anche se normalmente non lo sarebbe.",
+    "noindex-category-desc": "La pagina non è indicizzata dai robot perché contiene la parola magica <code><nowiki>__NOINDEX__</nowiki></code> e si trova in un namespace dove tale flag è consentito.",
+    "index-category-desc": "La pagina contiene <code><nowiki>__INDEX__</nowiki></code> (e si trova in un namespace dove tale flag è consentito) e quindi è indicizzata dai robot, anche se normalmente non lo sarebbe.",
     "post-expand-template-inclusion-category-desc": "Dopo aver espanso tutti i template, la dimensione della pagina sarà più grande di <code>$wgMaxArticleSize</code>, e dunque alcuni non si espanderanno.",
     "post-expand-template-argument-category-desc": "Dopo aver espanso il parametro di un template (qualcosa tra parentesi graffe, come <code>{{{Foo}}})</code>, la pagina sarà più grande di <code>$wgMaxArticleSize</code>.",
+    "expensive-parserfunction-category-desc": "La pagina usa troppe funzioni parser (come <code>#ifexist</code>). Vedi [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+    "broken-file-category-desc": "Categoria aggiunta se la pagina contiene un collegamento interrotto ad un file (un collegamento per incorporare un file quando questo non esiste).",
+    "hidden-category-category-desc": "Questa è una categoria che contiene <code><nowiki>__HIDDENCAT__</nowiki></code>, il quale impedisce che venga mostrata, in modo predefinito, nel riquadro dei collegamenti alle categorie delle pagine.",
     "trackingcategories-nodesc": "Nessuna descrizione disponibile.",
     "trackingcategories-disabled": "La categoria è disabilitata",
     "mailnologin": "Nessun indirizzo cui inviare il messaggio",
index 7e33afb..99a44de 100644 (file)
     "trackingcategories-summary": "このページでは、MediaWiki ソフトウェアが自動的に追加した追跡用カテゴリを列挙します。これらの名前は、{{ns:8}} 名前空間内の対応するシステム メッセージを修正することで変更できます。",
     "trackingcategories-msg": "追跡用カテゴリ",
     "trackingcategories-name": "メッセージ名",
+    "post-expand-template-inclusion-category-desc": "テンプレートを展開したあとのページ サイズが <code>$wgMaxArticleSize</code> よりも大きいため、一部のテンプレートが展開されなかった",
+    "post-expand-template-argument-category-desc": "テンプレート引数 (<code>{{{Foo}}}</code> のような三重中括弧部分) を展開したあとのページが <code>$wgMaxArticleSize</code> よりも大きい",
+    "expensive-parserfunction-category-desc": "高負荷なパーサー関数 (<code>#ifexist</code> など) の呼び出し回数が多過ぎるページ。[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit] を参照してください。",
+    "broken-file-category-desc": "リンク切れしたファイルを含むページ (ファイルを埋め込むリンクがあり、そのファイルが存在しない) に追加されるカテゴリ",
+    "hidden-category-category-desc": "<code><nowiki>__HIDDENCAT__</nowiki></code> を含むカテゴリ。このカテゴリは、既定ではページのカテゴリ リンク ボックス内に表示されません。",
     "trackingcategories-nodesc": "説明はありません。",
     "mailnologin": "送信アドレスがありません",
     "mailnologintext": "他の利用者宛にメールを送信するためには、[[Special:UserLogin|ログイン]]し、[[Special:Preferences|個人設定]]で有効なメールアドレスを設定する必要があります。",
index 6c2e421..3d72b45 100644 (file)
     "disclaimers": "nunxusra lo za'i na fuzme",
     "disclaimerpage": "Project:kampu nunxusra be lo za'i na fuzme",
     "edithelp": "stika nunsidju",
-    "helppage": "Help:lo se vasru",
     "mainpage": "Ralju Ckupau",
     "mainpage-description": "ralju ckupau",
     "portal": "bende ckupau",
index 3a4142e..0dbe6ed 100644 (file)
     "disclaimers": "Førbeholt",
     "disclaimerpage": "Project:Huses førbeholt",
     "edithelp": "Hjælp til redigærenge",
-    "helppage": "Help:Hjælpførside",
     "mainpage": "Førsit",
     "mainpage-description": "Førsit",
     "policy-url": "Project:Politik",
index 271cf74..3c0f981 100644 (file)
     "rclistfrom": "ახალი ცვლილებების ჩვენება დაწყებული $1-დან",
     "rcshowhideminor": "მცირე რედაქტირების $1",
     "rcshowhidebots": "რობოტების  $1",
+    "rcshowhidebots-show": "ჩვენება",
+    "rcshowhidebots-hide": "დამალვა",
     "rcshowhideliu": "$1 რეგისტრირებული მომხმარებელი",
     "rcshowhideanons": "ანონიმური მომხმარებლების $1",
     "rcshowhidepatr": "გაკონტროლებული ცვლილებების $1",
index 257fb68..aad4a1c 100644 (file)
     "currentevents": "Mâmbu ya malu-malu",
     "currentevents-url": "Lukanu:Mâmbu ya malu-malu",
     "edithelp": "Lusadisu ya kusoba",
-    "helppage": "Lusadisu:Mâmbu",
     "mainpage": "Mukânda ya ngudi",
     "mainpage-description": "Mukânda ya ngudi",
     "portal": "Mbôngi",
index 84caf33..a35d3b7 100644 (file)
     "updated": "(Bi rozane)",
     "note": "'''Not:'''",
     "previewnote": "Teme! ena teyna verqeyda.'''\nVurnayışê tu hama qeyd nıbiyo!",
-    "editing": "$1 Vurnayis",
+    "editing": "$1 vurino",
     "editingsection": "Vurnaena $1 (qısım)",
     "editingcomment": "$1 vurnino (qısımo newe)",
-    "editconflict": "Têverabiyaena vurnaişi: $1",
+    "editconflict": "Têverabiyayena vurnayişi: $1",
     "yourtext": "Metnê to",
     "storedversion": "Metıno qeydkerde",
     "yourdiff": "Ferqi",
     "permissionserrorstext-withaction": "Desturê to be $2 çino, serba {{PLURAL:$1|na sebebi|nê sebebu}} ra:",
     "recreate-moveddeleted-warn": "'''Hişyari: no pel o ke şıma vırazeni vere cû vırazyayo.'''\n\nDiqet bıkeri no vurnayişê şıma re gerek esto:",
     "moveddeleted-notice": "Ma ena pele wederna.\nQe referansi logê wedernayışi bın de mocnayiya.",
-    "edit-conflict": "Têverabiyaena vurnaişi.",
+    "edit-conflict": "Têverabiyayena vurnayişi.",
     "post-expand-template-inclusion-warning": "'''Teme''': Zerrekê şabloni zaf gırso.\nTaê şabloni ilawe nêbenê.",
     "post-expand-template-inclusion-category": "Pelê ke tede gırşênia şabloni serde sono",
     "post-expand-template-argument-warning": "Hişyari: No pel de tewr tay yew şablono herayi esto.",
index 0d9431d..25d832b 100644 (file)
     "hidetoc": "жасыру",
     "collapsible-collapse": "Түру",
     "collapsible-expand": "Жазу",
-    "thisisdeleted": "$1 қарайсыз ба, немесе қалпына келтіресіз бе?",
+    "thisisdeleted": "$1 қарайсыз ба немесе қалпына келтіресіз бе?",
     "viewdeleted": "$1 қарайсыз ба?",
-    "restorelink": "{{PLURAL:$1|жойылған өңдеме|$1 жойылған өңдемелер}}",
+    "restorelink": "{{PLURAL:$1|жойылған өңдемені|$1 жойылған өңдемені}}",
     "feedlinks": "Арна:",
     "feed-invalid": "Жарамсыз жазылымды арна түрі.",
     "feed-unavailable": "Синдикация таспалары қолжетімсіз",
     "viewdeletedpage": "Жойылған беттерді қарау",
     "undeletepagetext": "Келесі {{PLURAL:$1|бет жойылған бірақ|$1 бет жойылған бірақ}} мағлұматы мұрағатта бар\nжәне қалпына келтіруге болады. Мұрағат ұдайы тазаланып тұруы мүмкін.",
     "undelete-fieldset-title": "Нұсқаларды қалпына келтіру",
-    "undeleteextrahelp": "Ð\91үкÑ\96л Ð±ÐµÑ\82Ñ\82Ñ\96 Ò\9bалпÑ\8bна ÐºÐµÐ»Ñ\82Ñ\96Ñ\80Ñ\83 Ò¯Ñ\88Ñ\96н, Ð±Ð°Ñ\80лÑ\8bÒ\9b Ò\9bÒ±Ñ\81белгÑ\96 ÐºÓ©Ð·Ð´ÐµÑ\80дÑ\96 Ð±Ð¾Ñ\81аÑ\82Ñ\8bп '''''{{int:Ò\9aалпÑ\8bна ÐºÐµÐ»Ñ\82Ñ\96Ñ\80!}}''''' Ð±Ð°Ñ\82Ñ\8bÑ\80маÑ\81Ñ\8bн Ð½Ò±Ò\9bÑ\8bÒ£Ñ\8bз.\nÐ\91өлекÑ\82еÑ\83мен Ò\9bалпÑ\8bна ÐºÐµÐ»Ñ\82Ñ\96Ñ\80Ñ\83 Ð¾Ñ\80Ñ\8bндаÑ\83 Ò¯Ñ\88Ñ\96н, ÐºÐµÐ»Ñ\82Ñ\96Ñ\80емÑ\96н Ð´ÐµÐ³ÐµÐ½ Ñ\82үзеÑ\82Ñ\83леÑ\80Ñ\96не Ñ\81Ó\99йкеÑ\81 ÐºÓ©Ð·Ð´ÐµÑ\80ге Ò\9bÒ±Ñ\81белгÑ\96 Ñ\81алÑ\8bÒ£Ñ\8bз Ð´Ð°, Ð¶Ó\99не '''''{{int:Ò\9aалпÑ\8bна ÐºÐµÐ»Ñ\82Ñ\96Ñ\80!}}''''' Ñ\82үймеÑ\81Ñ\96н Ð½Ò±Ò\9bÑ\8bÒ£Ñ\8bз. '''''Ò\9aайÑ\82а Ò\9bой''''' Ñ\82үймеÑ\81Ñ\96н Ð½Ò±Ò\9bÑ\8bÒ\93анда Ð¼Ó\99ндеме Ð°Ñ\83маÒ\93Ñ\8b Ñ\82азаÑ\80Ñ\82адÑ\8b Ð¶Ó\99не Ð±Ð°Ñ\80лÑ\8bÒ\9b Ò\9bÒ±Ñ\81белгÑ\96 ÐºÓ©Ð·Ð´ÐµÑ\80Ñ\96н Ð±Ð¾Ñ\81аÑ\82адÑ\8b.",
+    "undeleteextrahelp": "ТолÑ\8bÒ\9b Ð±ÐµÑ\82 Ñ\82аÑ\80иÑ\85Ñ\8bн Ò\9bалпÑ\8bна ÐºÐµÐ»Ñ\82Ñ\96Ñ\80Ñ\83 Ò¯Ñ\88Ñ\96н Ð±Ð°Ñ\80лÑ\8bÒ\9b Ò\9bÒ±Ñ\81белгÑ\96 ÐºÓ©Ð·Ð´ÐµÑ\80дÑ\96 Ð±Ð¾Ñ\81аÑ\82Ñ\8bп <strong><em>{{int:undeletebtn}}</em></strong> Ð±Ð°Ñ\82Ñ\8bÑ\80маÑ\81Ñ\8bн Ð½Ò±Ò\9bÑ\8bÒ£Ñ\8bз.\nÐ\91өлекÑ\82еÑ\83мен Ò\9bалпÑ\8bна ÐºÐµÐ»Ñ\82Ñ\96Ñ\80Ñ\83дÑ\96 Ð¾Ñ\80Ñ\8bндаÑ\83 Ò¯Ñ\88Ñ\96н Ò\9bалпÑ\8bна ÐºÐµÐ»Ñ\82Ñ\96Ñ\80Ñ\83 ÐºÐµÑ\80ек Ñ\82үзеÑ\82Ñ\83леÑ\80Ñ\96не Ñ\81Ó\99йкеÑ\81 ÐºÓ©Ð·Ð´ÐµÑ\80ге Ò\9bÒ±Ñ\81белгÑ\96мен Ð±ÐµÐ»Ð³Ñ\96леп <strong><em>{{int:undeletebtn}}</em></strong> Ð±Ð°Ñ\82Ñ\8bÑ\80маÑ\81Ñ\8bн Ð±Ð°Ñ\81Ñ\8bÒ£Ñ\8bз.",
     "undeleterevisions": "$1 түзету мұрағатталды",
     "undeletehistory": "Егер бет мағлұматын қалпына келтірсеңіз, тарихында барлық түзетулер да\nқайтарылады. Егер жоюдан соң дәл солай атауымен жаңа бет басталса, қалпына келтірілген түзетулер\nтарихтың алдында көрсетіледі. Тағы да файл түзетулерін қалпына келтіргенде тиымдары жойылатын ескеріңіз.",
     "undeleterevdel": "Егер бұл үстіңгі бетте аяқталса, не файл түзетуі жарым-жартылай жойылған болса, жою болдырмауы орындалмайды.\nОсындай жағдайларда, ең жаңа жойылған түзетуін алып тастауыңыз не жасыруын болдырмауыңыз жөн.",
     "undeletebtn": "Қалпына келтір!",
     "undeletelink": "қарау/қалпына келтіру",
     "undeleteviewlink": "қарау",
-    "undeleteinvert": "ТаңдалÒ\93андÑ\8b Ð°Ð»Ð¼Ð°Ñ\81Ñ\82ыру",
+    "undeleteinvert": "ТаңдалÒ\93андÑ\8b Ð¶Ð°Ñ\81ыру",
     "undeletecomment": "Себебі:",
     "undeletedrevisions": "{{PLURAL:$1|1 түзету|$1 түзету}} қалпына келтірілді",
     "undeletedrevisions-files": "{{PLURAL:$1|1 түзету|$1 түзету}} және {{PLURAL:$2|1 файл|$2 файл}} қалпына келтірілді",
index 20ff74c..b6d6856 100644 (file)
     "currentevents": "Maannakkut pisut",
     "disclaimers": "Aalajangersagaq",
     "edithelp": "Ikiuutit",
-    "helppage": "Help:Ikiuutit",
     "mainpage": "Saqqaa",
     "mainpage-description": "Saqqaa",
     "portal": "Allattartup saqqaa",
index bb0f1ab..02df94b 100644 (file)
@@ -36,7 +36,8 @@
             "Yknok29",
             "לערי ריינהארט",
             "관인생략",
-            "아라"
+            "아라",
+            "Keysuck"
         ]
     },
     "tog-underline": "링크에 밑줄:",
     "print": "인쇄",
     "view": "보기",
     "edit": "편집",
+    "edit-local": "로컬 설명 편집",
     "create": "만들기",
+    "create-local": "로컬 설명 추가",
     "editthispage": "이 문서 편집하기",
     "create-this-page": "이 문서 만들기",
     "delete": "삭제",
     "listgrouprights-removegroup-self": "자신에게서 다음 {{PLURAL:$2|권한}}을 해제: $1",
     "listgrouprights-addgroup-self-all": "자신에게 모든 권한을 부여",
     "listgrouprights-removegroup-self-all": "자신의 계정에서 모든 권한을 해제",
+    "trackingcategories-name": "메시지명",
     "mailnologin": "보낼 이메일 주소가 없음",
     "mailnologintext": "다른 사용자에게 이메일을 보내려면 [[Special:UserLogin|로그인]]한 다음 [[Special:Preferences|사용자 환경 설정]]에서 자신의 이메일 주소를 저장해야 합니다.",
     "emailuser": "이메일 보내기",
index e74b94b..8b71870 100644 (file)
     "disclaimers": "Мийö сöстöмöсь йöз одзын",
     "disclaimerpage": "Project:Мийö сöстöмöсь йöз одзын",
     "edithelp": "Уджкерись понда отсöт",
-    "helppage": "Help:Отсöт",
     "mainpage": "Пондöтчан листбок",
     "mainpage-description": "Пондöтчан листбок",
     "privacy": "Астор дорьян йылiсь",
index bcbcb53..01ba585 100644 (file)
     "disclaimers": "Disklamardèm",
     "disclaimerpage": "Projèkt:Jènèral disklamar",
     "edithelp": "Èdithèp",
-    "helppage": "Help:Kòntèntdèm",
     "mainpage": "Men Pej",
     "mainpage-description": "Men Pej",
     "policy-url": "Project:Pòlisia",
index 921899c..783d7a6 100644 (file)
     "print": "Drécken",
     "view": "Weisen",
     "edit": "Änneren",
+    "edit-local": "Lokal Beschreiwung änneren",
     "create": "Uleeën",
+    "create-local": "Lokal Beschreiwung derbäisetzen",
     "editthispage": "Dës Säit änneren",
     "create-this-page": "Dës Säit uleeën",
     "delete": "Läschen",
index 4d99866..f91cd20 100644 (file)
     "disclaimers": "Kūondõkst",
     "disclaimerpage": "Project:Kūondõkst",
     "edithelp": "Redigīerimiz opātõks",
-    "helppage": "Help:Sižāli",
     "mainpage": "Eḑḑilēḑ",
     "mainpage-description": "Eḑḑilēḑ",
     "portal": "Kubgõnd vǟrõd",
index 9b01e23..6446d43 100644 (file)
     "disclaimers": "Kʼabuli na var ixvenu ondepe",
     "disclaimerpage": "Project:Mtelot kʼabuli na var ixvenu ondepe",
     "edithelp": "Muçʼoşi iktirinen?",
-    "helppage": "Help:Doloxe na renanpe",
     "mainpage": "Dudi Butʼkʼa",
     "mainpage-description": "Dudi But'k'a",
     "privacy": "Şinaxeri Hakʼepe",
index f2a5cdf..fd9c81a 100644 (file)
     "trackingcategories-msg": "Следачка категорија",
     "trackingcategories-name": "Назив на пораката",
     "trackingcategories-desc": "Критериуми за вклучување",
-    "noindex-category-desc": "СÑ\82Ñ\80аниÑ\86аÑ\82а Ñ\81одÑ\80жи Ð²Ð¾Ð»Ñ\88ебен Ð·Ð±Ð¾Ñ\80 <nowiki>__NOINDEX__</nowiki> (и Ñ\81е Ð½Ð°Ð¾Ñ\93а Ð²Ð¾ Ð¸Ð¼ÐµÐ½Ñ\81ки Ð¿Ñ\80оÑ\81Ñ\82оÑ\80 ÐºÐ°Ñ\98Ñ\88Ñ\82о Ðµ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½), Ð¿Ð° Ð·Ð°Ñ\82оа Ð½Ðµ Ñ\81е Ð¸Ð½Ð´ÐµÐºÑ\81иÑ\80а Ð¾Ð´ Ñ\80обоÑ\82и.",
-    "index-category-desc": "Страницата содржи <nowiki>__INDEX__</nowiki> (и се наоѓа во именски простор кајшто ова е дозволено), па затоа се индексира од роботи, што инаку не би било.",
+    "noindex-category-desc": "РобоÑ\82иÑ\82е Ð½Ðµ Ñ\98а Ð¸Ð½Ð´ÐµÐºÑ\81иÑ\80ааÑ\82 Ñ\81Ñ\82Ñ\80аниÑ\86ава Ð±Ð¸Ð´ÐµÑ\98Ñ\9cи Ð³Ð¾ Ñ\81одÑ\80жи Ð²Ð¾Ð»Ñ\88ебниоÑ\82 Ð·Ð±Ð¾Ñ\80 <code><nowiki>__NOINDEX__</nowiki></code> Ð¸ Ñ\81е Ð½Ð°Ð¾Ñ\93а Ð²Ð¾ Ð¸Ð¼ÐµÐ½Ñ\81ки Ð¿Ñ\80оÑ\81Ñ\82оÑ\80 ÐºÐ°Ñ\98Ñ\88Ñ\82о Ðµ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½.",
+    "index-category-desc": "Страницата содржи <code><nowiki>__INDEX__</nowiki></code> (и се наоѓа во именски простор кајшто ова е дозволено), па затоа се индексира од роботи, што инаку не би било.",
     "post-expand-template-inclusion-category-desc": "По проширувањето на сите шаблони, страницата е поголема од <code>$wgMaxArticleSize</code>, па затоа некои шаблони не се проширени.",
     "post-expand-template-argument-category-desc": "По проширување на шаблонски аргумент (нешто во тројни кадрави загради, како на пр. <code>{{{Foo}}})</code>, страницата е поголема од <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Во страницата има премногу оптоварувачки расчленувачки функции (како <code>#ifexist</code>). Погл. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
     "broken-file-category-desc": "Категорјата се става ако страницата содржи неисправна податотечка врска (врска за вметнување на податотека што не постои).",
-    "hidden-category-category-desc": "Ова е категорија што содржи <nowiki>__HIDDENCAT__</nowiki>, што значи дека по основно не се прикажува во страниците.",
+    "hidden-category-category-desc": "Ова е категорија што содржи <code><nowiki>__HIDDENCAT__</nowiki></code>, што значи дека по основно не се прикажува во страниците.",
     "trackingcategories-nodesc": "Нема опис.",
     "trackingcategories-disabled": "Категоријата е оневозможена",
     "mailnologin": "Нема адреса за праќање",
index e3633d4..0dc2283 100644 (file)
     "permalink": "സ്ഥിരംകണ്ണി",
     "print": "അച്ചടിയ്ക്കുക",
     "view": "കാണുക",
+    "view-foreign": "$1 സംരംഭത്തിൽ കാണുക",
     "edit": "തിരുത്തുക",
+    "edit-local": "ഇവിടുത്തെ വിവരണം തിരുത്തുക",
     "create": "ഈ താൾ സൃഷ്ടിക്കുക",
+    "create-local": "ഇവിടെ വിവരണം ചേർക്കുക",
     "editthispage": "ഈ താൾ തിരുത്തുക",
     "create-this-page": "ഈ താൾ സൃഷ്ടിക്കുക",
     "delete": "മായ്ക്കുക",
     "pool-timeout": "പൂട്ട് മാറാനുള്ള കാത്തിരിപ്പ് സമയം",
     "pool-queuefull": "പൂൾ ക്യൂ നിറഞ്ഞിരിക്കുന്നു",
     "pool-errorunknown": "അപരിചിതമായ പിഴവ്",
+    "pool-servererror": "പൂൾ കൗണ്ടർ സേവനം ലഭ്യമല്ല ($1).",
     "aboutsite": "{{SITENAME}} സം‌രംഭത്തെക്കുറിച്ച്",
     "aboutpage": "Project:വിവരണം",
     "copyright": "പ്രത്യേകം പറയാത്ത പക്ഷം ഉള്ളടക്കം $1 പ്രകാരം ലഭ്യം.",
     "trackingcategories-msg": "പിന്തുടരൽ വർഗ്ഗം",
     "trackingcategories-name": "സന്ദേശത്തിന്റെ പേര്",
     "trackingcategories-desc": "വർഗ്ഗം ഉൾപ്പെടുത്തുന്നതിനുള്ള മാനദണ്ഡം",
-    "noindex-category-desc": "ഈ താളിൽ <nowiki>__NOINDEX__</nowiki> എന്ന മാന്ത്രികവാക്ക് ഉണ്ട് (അത് അനുവദിച്ചിട്ടുള്ള നാമമേഖലയിലും ആണ്), അതുകൊണ്ടിത് റോബോട്ടുകളാൽ സൂചികാവത്കരിക്കപ്പെടില്ല.",
-    "index-category-desc": "ഈ താളിൽ <nowiki>__INDEX__</nowiki> എന്ന മാന്ത്രികവാക്ക് ഉണ്ട് (അത് അനുവദിച്ചിട്ടുള്ള നാമമേഖലയിലും ആണ്), അതുകൊണ്ടിത്, സാധാരണഗതിയിൽ പാടില്ലാത്തതാണെങ്കിലും റോബോട്ടുകളാൽ സൂചികാവത്കരിക്കപ്പെടുന്നതാണ്.",
+    "noindex-category-desc": "ഈ താളിൽ <code><nowiki>__NOINDEX__</nowiki></code> എന്ന മാന്ത്രികവാക്ക് ഉണ്ട്, അത് അനുവദിച്ചിട്ടുള്ള നാമമേഖലയിലും ആണ്, അതുകൊണ്ടിത് റോബോട്ടുകളാൽ സൂചികാവത്കരിക്കപ്പെടില്ല.",
+    "index-category-desc": "ഈ താളിൽ <code><nowiki>__INDEX__</nowiki></code> എന്ന മാന്ത്രികവാക്ക് ഉണ്ട് (അത് അനുവദിച്ചിട്ടുള്ള നാമമേഖലയിലും ആണ്), അതുകൊണ്ടിത്, സാധാരണഗതിയിൽ പാടില്ലാത്തതാണെങ്കിലും റോബോട്ടുകളാൽ സൂചികാവത്കരിക്കപ്പെടുന്നതാണ്.",
     "post-expand-template-inclusion-category-desc": "എല്ലാ ഫലകങ്ങളും വികസിപ്പിച്ചു കഴിയുമ്പോൾ, താളിന്റെ വലിപ്പം <code>$wgMaxArticleSize</code> എന്നതിലും കൂടുതലാവുമെന്നതിനാൽ, ചില ഫലകങ്ങൾ വികസിപ്പിച്ചിരുന്നില്ല.",
     "post-expand-template-argument-category-desc": "ഫലകത്തിലേയ്ക്കുള്ള ചരം വികസിപ്പിച്ച ശേഷം (<code>{{{പന}}}</code> പോലെയുള്ള മൂന്ന് കോഷ്ഠകങ്ങളിലെ എഴുത്ത്), താളിന്റെ വലിപ്പം <code>$wgMaxArticleSize</code> എന്നതിലും കൂടുതലായി.",
     "expensive-parserfunction-category-desc": "നിരവധി വ്യയമേറിയ പാഴ്സർ ഫങ്ഷനുകൾ ( #എങ്കിൽ പോലെയുള്ളവ) താളിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്നു. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit] കാണുക.",
     "broken-file-category-desc": "താളിൽ നിലവിലില്ലാത്ത പ്രമാണത്തിലോട്ട് കണ്ണി ചേർത്തിട്ടുണ്ടെങ്കിൽ വർഗ്ഗം ചേർക്കപ്പെടും.",
-    "hidden-category-category-desc": "ഈ വർഗ്ഗത്തിൽ <nowiki>__HIDDENCAT__</nowiki> ഉള്ളതിനാൽ, താളുകളിലെ വർഗ്ഗങ്ങളുടെ കണ്ണികൾ കാണിക്കുന്ന പെട്ടിയിൽ സ്വതേ പ്രത്യക്ഷപ്പെടുന്നതല്ല.",
+    "hidden-category-category-desc": "ഈ വർഗ്ഗത്തിൽ <code><nowiki>__HIDDENCAT__</nowiki></code> ഉള്ളതിനാൽ, താളുകളിലെ വർഗ്ഗങ്ങളുടെ കണ്ണികൾ കാണിക്കുന്ന പെട്ടിയിൽ സ്വതേ പ്രത്യക്ഷപ്പെടുന്നതല്ല.",
     "trackingcategories-nodesc": "വിവരണം ലഭ്യമല്ല.",
     "trackingcategories-disabled": "വർഗ്ഗം നിർജ്ജീവമാക്കിയിരിക്കുന്നു",
     "mailnologin": "അയയ്ക്കാനുള്ള വിലാസം ലഭ്യമല്ല",
index 41cc245..a34eb27 100644 (file)
@@ -92,7 +92,6 @@
     "disclaimers": "Деклараций",
     "disclaimerpage": "Project:Декларацие ӂенералэ",
     "edithelp": "Ажутор пентру едитаре",
-    "helppage": "Help:Купринс",
     "mainpage": "Прима паӂина",
     "mainpage-description": "Прима паӂина",
     "privacy": "Политика де интимитате",
index cd582d3..b85882d 100644 (file)
     "disclaimers": "Вӓшештӹмӹ шая (ответственность) гӹц карангмаш",
     "disclaimerpage": "Project:Вӓшештӹмӓш (ответственность) гӹц карангмаш",
     "edithelp": "Тӧрлӓш манын палшык",
-    "helppage": "Help:Палшык",
     "mainpage": "Тӹнг ӹлӹштӓш",
     "mainpage-description": "Тӹнг ӹлӹштӓш",
     "privacy": "Весӹвлӓлӓн шайышташ ак ли ылмы политика",
index 27f4057..fedb292 100644 (file)
@@ -28,7 +28,6 @@
     "currentevents": "Imwin",
     "currentevents-url": "Project:Imwin",
     "edithelp": "Oomo/edar Ipuok",
-    "helppage": "Help:Oangan",
     "mainpage": "Bwiema peij",
     "mainpage-description": "Bwiema peij",
     "editsection": "Kiwiwid",
index 93a8e2c..25e8ce4 100644 (file)
@@ -10,7 +10,7 @@
     "tog-hideminor": "Am chòe-kīn ê sió kái-piàn",
     "tog-hidepatrolled": "Am chòe-kīn sûn koè--ê  kái-piàn",
     "tog-newpageshidepatrolled": "Sin-ia̍h ê chheng-toaⁿ am sûn koè--ê",
-    "tog-extendwatchlist": "Khok-chhiong kàm-sī-toaⁿ kàu hián-sī só͘-ū ê kái-piàn",
+    "tog-extendwatchlist": "thián-khui kàm-sī-toaⁿ, khoàⁿ choân-pō͘  kái ê, m̄-nā choè-kīn niā.",
     "tog-usenewrc": "Ka-kiông pán ê chòe-kīn-ê-kái-piàn (su-iàu JavaScript)",
     "tog-numberheadings": "Phiau-tê chū-tōng pian-hō",
     "tog-showtoolbar": "Hián-sī pian-chi̍p ke-si-tiâu (su-iàu JavaScript)",
     "watchlistfor2": "予$1 $2",
     "nowatchlist": "Lí ê kàm-sī-toaⁿ bô pòaⁿ hāng.",
     "watchnologin": "Bô teng-ji̍p",
-    "watchnologintext": "Lí it-tēng ài [[Special:UserLogin|teng-ji̍p]] chiah ē-tàng siu-kái lí ê kàm-sī-toaⁿ.",
     "addedwatchtext": "\"[[:$1]]\" chit ia̍h í-keng ka-ji̍p lí ê [[Special:Watchlist|kàm-sī-toaⁿ]]. Bī-lâi chit ia̍h a̍h-sī siong-koan ê thó-lūn-ia̍h nā ū kái-piàn, ē lia̍t tī hia. Tông-sî tī [[Special:RecentChanges|Chòe-kīn ê kái-piàn]] ē iōng '''chho·-thé''' hián-sī ia̍h ê piau-tê, án-ne khah bêng-hián. Ká-sú lí beh chiōng chit ia̍h tùi lí ê kàm-sī-toaⁿ tû tiāu, khì khòng-chè-tiâu chhi̍h \"Mài kàm-sī\" chiū ē-sái-tit.",
     "removedwatchtext": "\"[[:$1]]\" chit ia̍h í-keng tùi lí ê kàm-sī-toaⁿ tû tiāu.",
     "watch": "kàm-sī",
index 820f27f..b149381 100644 (file)
     "trackingcategories-msg": "Sporingskategori",
     "trackingcategories-name": "Beskjednavn",
     "trackingcategories-desc": "Kategori-inklusjonskriterium",
-    "noindex-category-desc": "Denne siden er påført et <nowiki>__NOINDEX__</nowiki> magisk ord (og er i et navnerom hvor det flagget er tillatt), og blir derfor ikke indeksert av roboter.",
-    "index-category-desc": "Denne siden er påført et <nowiki>__INDEX__</nowiki> magisk ord (og er i et navnerom hvor det flagget er tillatt), og vil derfor bli indeksert av roboter mens det normalt ikke vil skje.",
+    "noindex-category-desc": "Denne siden er påført et <code><nowiki>__NOINDEX__</nowiki></code> magisk ord (og er i et navnerom hvor det flagget er tillatt), og blir derfor ikke indeksert av roboter.",
+    "index-category-desc": "Denne siden er påført et <code><nowiki>__INDEX__</nowiki></code> magisk ord (og er i et navnerom hvor det flagget er tillatt), og vil derfor bli indeksert av roboter mens det normalt ikke vil skje.",
     "post-expand-template-inclusion-category-desc": "Etter ekspandering av alle malene, så er siden større enn <code>$wgMaxArticleSize</code>, så noen maler er ikke ekspandert.",
     "post-expand-template-argument-category-desc": "Etter ekspandering av et malargument (noe i trippel krøllparentes, slik som <code>{{{Foo}}})</code>, så er siden større en <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "For mange kostbare parserfunksjoner (som <code>#ifexist</code>) er inkludert på en side. Se [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
     "broken-file-category-desc": "Kategorien blir lagt til hvis siden inneholder en brutt fil-lenke (en lenke for å bygge inn en fil når filen selv ikke eksisterer).",
-    "hidden-category-category-desc": "Dette er en kategori som er påført et <nowiki>__HIDDENCAT__</nowiki> magisk ord, som hindrer den fra å dukke opp i lenkeboksen for kategorier på siden, som standard.",
+    "hidden-category-category-desc": "Dette er en kategori som er påført et <code><nowiki>__HIDDENCAT__</nowiki></code> magisk ord, som hindrer den fra å dukke opp i lenkeboksen for kategorier på siden, som standard.",
     "trackingcategories-nodesc": "Ingen beskrivelse er tilgjengelig",
     "trackingcategories-disabled": "Kategorien er deaktivert",
     "mailnologin": "Ingen avsenderadresse",
index 1169fb1..73314c6 100644 (file)
     "disclaimers": "डिस्क्लेमर्स",
     "disclaimerpage": "Project:साधारण डिस्क्लेमर्स",
     "edithelp": "सम्पादन ग्वहालि",
-    "helppage": "Help:धलःपौ",
     "mainpage": "मू पौ",
     "mainpage-description": "मू पौ",
     "policy-url": "Project:नीति",
index c5feb40..7cbd573 100644 (file)
@@ -64,7 +64,6 @@
     "aboutpage": "Project: Hagaao",
     "currentevents": "Tau Fakaholoaga Mogonei",
     "edithelp": "Lagomatai ke he Fakahakohako",
-    "helppage": "Help: Ke lata mo e tau mena i loto",
     "mainpage": "Matapatu Lau",
     "mainpage-description": "Matapatu Lau",
     "portal": "Maaga ke Matutaki",
index a25c5a1..7f74368 100644 (file)
     "trackingcategories-msg": "Volgcategorie",
     "trackingcategories-name": "Berichtnaam",
     "trackingcategories-desc": "Opnamecriteria",
-    "noindex-category-desc": "De pagina bevat het magische woord <nowiki>__NOINDEX__</nowiki> (en bevindt zich in een naamruimte waarin dat magische woord is toegestaan), en wordt niet geïndexeerd door robots.",
-    "index-category-desc": "De pagina bevat het magische woord <nowiki>__NOINDEX__</nowiki> (en bevindt zich in een naamruimte waarin dat magische woord is toegestaan), en wordt geïndexeerd door robots, terwijl dat normaliter niet zou gebeuren.",
+    "noindex-category-desc": "De pagina bevat het magische woord <code><nowiki>__NOINDEX__</nowiki></code> (en bevindt zich in een naamruimte waarin dat magische woord is toegestaan), en wordt niet geïndexeerd door robots.",
+    "index-category-desc": "De pagina bevat het magische woord <code><nowiki>__INDEX__</nowiki></code> (en bevindt zich in een naamruimte waarin dat magische woord is toegestaan), en wordt geïndexeerd door robots, terwijl dat normaliter niet zou gebeuren.",
     "post-expand-template-inclusion-category-desc": "Na het uitbreiden van alle sjablonen, is de pagina groter dan <code>$wgMaxArticleSize</code>, dus zijn sommige sjablonen niet uitgebreid.",
     "post-expand-template-argument-category-desc": "Na het uitbreiden van een sjabloonparameter (iets in de drievoudige accolades, zoals <code>{{{Foo}}})</code>), is de pagina groter dan <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Op de pagina worden te veel kostbare parserfuncties (zoals <code>#ifexist</code>) gebruikt. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Meer informatie].",
     "broken-file-category-desc": "Een categorie die wordt toegevoegd als een pagina een niet-bestaande koppeling bevat (een koppeling om een bestand toe te voegen als dat bestand niet bestaat).",
-    "hidden-category-category-desc": "Dit is een categoriepagina die het magische woord <nowiki>__HIDDENCAT__</nowiki> bevat, waardoor de categorie standaard niet zichtbaar is in de lijst met categorieën op pagina's.",
+    "hidden-category-category-desc": "Dit is een categoriepagina die het magische woord <code><nowiki>__HIDDENCAT__</nowiki></code> bevat, waardoor de categorie standaard niet zichtbaar is in de lijst met categorieën op pagina's.",
     "trackingcategories-nodesc": "Geen beschrijving beschikbaar.",
     "trackingcategories-disabled": "Categorie uitgeschakeld",
     "mailnologin": "Geen verzendadres beschikbaar",
     "version-entrypoints": "URL's voor ingangen",
     "version-entrypoints-header-entrypoint": "Ingang",
     "version-entrypoints-header-url": "URL",
-    "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Article path]",
-    "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Script path]",
+    "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Paginapad]",
+    "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Scriptpad]",
     "redirect": "Doorverwijzen op bestandsnaam, gebruikersnummer, paginanummer, of versienummer",
     "redirect-legend": "Doorverwijzen naar een bestand of pagina",
     "redirect-summary": "Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een paginanummer of versienummer wordt opgegeven) of een gebruikerspagina (als een gebruikersnummer wordt opgegeven). Gebruik: [[{{#Special:Redirect}}/file/Voorbeeld.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/user/101]].",
index 221b236..c516f05 100644 (file)
     "currentevents": "Nuni eventes",
     "currentevents-url": "Project:Nuni eventes",
     "edithelp": "Helpo pri modifiko de pagines",
-    "helppage": "Help:Kontenaje",
     "mainpage": "Chefi pagine",
     "mainpage-description": "Chefi pagine",
     "portal": "Li komun chambre",
index 2f3bbc7..69410b4 100644 (file)
@@ -90,7 +90,6 @@
     "aboutpage": "Project: baa haneʼ",
     "copyright": "Díí naaltsoos bikáaʼgi saad shijaaʼígíí \"$1\" beehazʼą́ąnii bikʼehgo choidííłįįł",
     "edithelp": "anáʼálwoʼ",
-    "helppage": "Help:Bee hadítʼéhígíí",
     "mainpage": "Íiyisíí Naaltsoos",
     "mainpage-description": "Íiyisíí Naaltsoos",
     "retrievedfrom": "\"$1\" bitsʼą́ą́dę́ę́ʼ",
index fd88bed..57e52a5 100644 (file)
@@ -53,7 +53,6 @@
     "currentevents": "Saray nagagawa natan",
     "currentevents-url": "Project:Saray nagagawa natan",
     "edithelp": "Tolong nipakar ed panagbalo na artikulo",
-    "helppage": "Help:Saray Laman",
     "mainpage": "Arapan ya Bolong",
     "mainpage-description": "Arapan ya Bolong",
     "portal": "Pwerta na komyunidad",
index 11c6ec4..d690593 100644 (file)
     "disclaimers": "Deklarashon di Liberashon for di Responsabilidatnan",
     "disclaimerpage": "Project:Deklarashon di Liberashon for di Responsabilidat General",
     "edithelp": "Ayudo ku editamentu",
-    "helppage": "Help:Kontenido",
     "mainpage": "Página Prinsipal",
     "mainpage-description": "Página Prinsipal",
     "policy-url": "Project:Pólisa",
index 92bf0e5..2a5329b 100644 (file)
     "disclaimers": "Impressum",
     "disclaimerpage": "Project:Impressum",
     "edithelp": "Help tom Beoabeide",
-    "helppage": "Help:Enhault",
     "mainpage": "Hauptsied",
     "mainpage-description": "Hauptsied",
     "policy-url": "Project:Policy",
index 6e370a0..3aabf75 100644 (file)
@@ -25,7 +25,6 @@
     "talk": "diskushun",
     "currentevents": "Dem Kurent Iwent",
     "currentevents-url": "Project:Dem Kurent Iwent",
-    "helppage": "Help:Dem Kontent",
     "mainpage": "Mien Paij",
     "mainpage-description": "Mien Paij",
     "portal": "Trii'nohlij",
index 12dce84..b664ce6 100644 (file)
@@ -69,7 +69,8 @@
             "Waldir",
             "Yves Marques Junqueira",
             "לערי ריינהארט",
-            "555"
+            "555",
+            "Fabsouza1"
         ]
     },
     "tog-underline": "Sublinhar links:",
     "print": "Imprimir",
     "view": "Ver",
     "edit": "Editar",
+    "edit-local": "Editar descrição local",
     "create": "Criar",
+    "create-local": "Adicionar descrição local",
     "editthispage": "Editar esta página",
     "create-this-page": "Iniciar esta página",
     "delete": "Eliminar",
     "pool-timeout": "Tempo limite de espera para o bloqueio excedido",
     "pool-queuefull": "A fila de processos está cheia",
     "pool-errorunknown": "Erro desconhecido",
+    "pool-servererror": "O servidor de contador do pool não está disponível ($1).",
     "aboutsite": "Sobre {{SITENAME}}",
     "aboutpage": "Project:Sobre",
     "copyright": "Conteúdo disponível sob $1, salvo indicação em contrário.",
     "gotaccountlink": "Autenticar-se",
     "userlogin-resetlink": "Esqueceu-se do seu nome de usuário ou da senha?",
     "userlogin-resetpassword-link": "Esqueceu sua senha?",
+    "userlogin-helplink2": "Ajuda com o login",
     "userlogin-loggedin": "Você já está conectado como {{GENDER:$1|$1}}.\nUse o formulário abaixo para iniciar sessão como outro usuário.",
     "userlogin-createanother": "Crie uma outra conta",
     "createacct-join": "Insira suas informações abaixo.",
     "resetpass-abort-generic": "Uma extensão cancelou a alteração da senha.",
     "resetpass-expired": "Sua senha expirou. Por favor insira uma nova senha para autenticar-se.",
     "resetpass-expired-soft": "Sua senha expirou e necessita ser resetada. Por favor escolha uma nova agora, ou clique \"{{int:resetpass-submit-cancel}}\" para resetar mais tarde.",
+    "resetpass-validity-soft": "Sua senha não é válida: $1\n\nPor favor escolha uma nova senha agora, ou clique \"{{int:resetpass-submit-cancel}}\" para redefini-la mais tarde.",
     "passwordreset": "Redefinir senha",
     "passwordreset-text-one": "Complete este formulário para trocar sua senha.",
     "passwordreset-text-many": "{{PLURAL:$1|Preencha um dos campos para trocar sua senha.}}",
     "revdelete-no-file": "O arquivo especificado não existe.",
     "revdelete-show-file-confirm": "Tem a certeza de que quer visualizar uma revisão eliminada do arquivo \"<nowiki>$1</nowiki>\" de $2 em $3?",
     "revdelete-show-file-submit": "Sim",
+    "revdelete-selected-text": "'''{{PLURAL:$1|Revisão selecionada|Revisões selecionadas}} de [[:$1]]:'''",
+    "revdelete-selected-file": "{{PLURAL:$1|Versão do arquivo selecionado|Versões do arquivo selecionado}} of [[:$2]]:",
     "logdelete-selected": "{{PLURAL:$1|Evento de registro selecionado|Eventos de registro selecionados}}:",
     "revdelete-text-text": "Revisões apagadas continuarão a aparecer na página de histórico, mas parte de seus conteúdos estarão inacessíveis ao público.",
     "revdelete-text-file": "Versões dos arquivos apagados continuarão a aparecer no arquivo de histórico, mas parte de seus conteúdos estarão inacessíveis ao público.",
     "download": "download",
     "unwatchedpages": "Páginas não vigiadas",
     "listredirects": "Listar redirecionamentos",
+    "listduplicatedfiles": "Lista de arquivos com duplicatas",
+    "listduplicatedfiles-summary": "Esta é uma lista de arquivos, onde a versão mais recente do arquivo é uma duplicata da versão mais recente de algum outro arquivo. Somente os arquivos locais são considerados.",
+    "listduplicatedfiles-entry": "O arquivo [[:File:$1|$1]] tem [[$3|{{PLURAL:$2|uma duplicata|$2 duplicatas}}]].",
     "unusedtemplates": "Predefinições não utilizadas",
     "unusedtemplatestext": "Esta página lista todas as páginas no espaço nominal {{ns:template}} que não estão incluídas em uma outra página. Lembre-se de conferir se há outros links para as predefinições antes de apaga-las.",
     "unusedtemplateswlh": "outros links",
     "protectedpages-unknown-timestamp": "Desconhecido",
     "protectedpages-unknown-performer": "Usuário desconhecido",
     "protectedtitles": "Títulos protegidos",
-    "protectedtitles-summary": "Está página lista os títulos já protegidos de criação. Para ver a lista de páginas existentes que estão protegidas, consulte [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
+    "protectedtitles-summary": "Está página lista os títulos já protegidos desde a criação. Para ver a lista de páginas existentes que estão protegidas, consulte [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
     "protectedtitlesempty": "Neste momento, nenhum dos títulos está protegido com estes parâmetros.",
     "listusers": "Lista de usuários",
     "listusers-editsonly": "Mostrar apenas usuários com edições",
     "listgrouprights-removegroup-self": "Pode remover {{PLURAL:$2|grupo|grupos}} da própria conta: $1",
     "listgrouprights-addgroup-self-all": "Pode adicionar todos os grupos à própria conta",
     "listgrouprights-removegroup-self-all": "Pode remover todos os grupos da própria conta",
+    "trackingcategories": "Monitorando categorias",
     "mailnologin": "Nenhum endereço de envio",
     "mailnologintext": "Necessita de estar [[Special:UserLogin|autenticado]] e de possuir um endereço de e-mail válido nas suas [[Special:Preferences|preferências]] para poder enviar um e-mail a outros usuários.",
     "emailuser": "Enviar-lhe um e-mail",
index 50a8701..61c9c0d 100644 (file)
     "category-media-header": "In category description page. Parameters:\n* $1 - category name\nSee also:\n* {{msg-mw|Category header}}",
     "category-empty": "The text displayed in category page when that category is empty",
     "hidden-categories": "Used in the categories section of pages.\n\nFollowed by a colon and a list of categories.\n\nParameters:\n* $1 - number of hidden categories\n{{Identical|Hidden category}}",
-    "hidden-category-category": "Name of the [[mw:Help:Tracking categories|tracking category]] where hidden categories will be listed.\n{{Identical|Hidden category}}",
+    "hidden-category-category": "Name of the [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where hidden categories will be listed.\n\nSee also:\n* {{msg-mw|Hidden-category-category-desc}}\n{{Identical|Hidden category}}",
     "category-subcat-count": "This message is displayed at the top of a category page showing the number of pages in the category.\n\nParameters:\n* $1 - number of subcategories shown\n* $2 - total number of subcategories in category",
     "category-subcat-count-limited": "This message is displayed at the top of a category page showing the number of pages in the category when not all pages in a category are counted.\n\nParameters:\n* $1 - number of subcategories shown",
     "category-article-count": "This message is used on category pages. Parameters:\n* $1 – number of pages shown\n* $2 – total number of pages in category",
     "category-file-count": "This message is displayed at the top of a category page showing the number of pages in the category.\n\nParameters:\n* $1 – number of files shown\n* $2 – total number of files in category",
     "category-file-count-limited": "This message is displayed at the top of a category page showing the number of pages in the category when not all pages in a category are counted.\n\nParameters:\n* $1 - number of files shown",
     "listingcontinuesabbrev": "Shown in contiuation of each first letter group. This message follows the first letter.\n\nSee http://test.wikipedia.org/wiki/Category:Test_ko?uselang={{SUBPAGENAME}}, for example.",
-    "index-category": "Name of the [[mw:Help:Tracking categories|tracking category]] where pages with the <nowiki>__INDEX__</nowiki> behavior switch are listed. For description of this behavior switch see [[mw:Help:Magic_words#Behavior_switches|MediaWiki]].",
-    "noindex-category": "Name of the [[mw:Help:Tracking categories|tracking category]] where pages with the <nowiki>__NOINDEX__</nowiki> behavior switch are listed. For description of this behavior switch see [[mw:Help:Magic_words#Behavior_switches|MediaWiki]].",
-    "broken-file-category": "Name of [[mw:Help:Tracking categories|tracking category]] where pages that embed files that do not exist (\"broken images\") are listed.",
+    "index-category": "Name of the [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages with the <nowiki>__INDEX__</nowiki> behavior switch are listed.\n\nFor description of this behavior switch see [[mw:Special:MyLanguage/Help:Magic_words#Behavior_switches|MediaWiki]].\n\nSee also:\n* {{msg-mw|Index-category-desc}}",
+    "noindex-category": "Name of the [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages with the <nowiki>__NOINDEX__</nowiki> behavior switch are listed.\n\nFor description of this behavior switch see [[mw:Special:MyLanguage/Help:Magic_words#Behavior_switches|MediaWiki]].\n\nSee also:\n* {{msg-mw|Noindex-category-desc}}",
+    "broken-file-category": "Name of [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages that embed files that do not exist (\"broken images\") are listed.\n\nSee also:\n* {{msg-mw|Broken-file-category-desc}}",
     "categoryviewer-pagedlinks": "{{Optional}}\nThe pagination links in category viewer. Parameters:\n* $1 - the previous link, uses {{msg-mw|Prevn}}\n* $2 - the next link, uses {{msg-mw|Nextn}}",
     "about": "{{Identical|About}}",
     "article": "A 'content page' is a page that forms part of the purpose of the wiki. It includes the main page and pages in the main namespace and any other namespaces that are included when the wiki is customised. For example on Wikimedia Commons 'content pages' include pages in the file and category namespaces. On Wikinews 'content pages' include pages in the Portal namespace. For technical definition of 'content namespaces' see [[mw:Manual:Using_custom_namespaces#Content_namespaces|MediaWiki]].\n\nPossible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.\n\n{{Identical|Content page}}",
     "content-model-javascript": "Name for the JavaScript content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
     "content-model-css": "Name for the CSS content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
     "expensive-parserfunction-warning": "On some (expensive) [[MetaWikipedia:Help:ParserFunctions|parser functions]] (e.g. <code><nowiki>{{#ifexist:}}</nowiki></code>) there is a limit of how many times it may be used. This is an error message shown when the limit is exceeded.\n\nParameters:\n* $1 - the current number of parser function calls\n* $2 - the allowed number of parser function calls\nSee also [[:mw:Manual:$wgExpensiveParserFunctionLimit|$wgExpensiveParserFunctionLimit in the MediaWiki manual]].\n\nSee also:\n* {{msg-mw|Expensive-parserfunction-category}}",
-    "expensive-parserfunction-category": "This message is used as a category name for a [[mw:Help:Tracking categories|tracking category]] where pages are placed automatically if they contain too many calls to expensive parser functions.\n\nSee also:\n* {{msg-mw|Expensive-parserfunction-warning}}",
+    "expensive-parserfunction-category": "This message is used as a category name for a [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages are placed automatically if they contain too many calls to expensive parser functions.\n\nSee also:\n* {{msg-mw|Expensive-parserfunction-category-desc}}\n* {{msg-mw|Expensive-parserfunction-warning}}",
     "post-expand-template-inclusion-warning": "When templates are expanded, there is a size limit for the number of bytes yielded. Usually that occurs from excessively nested templates, recursive templates, or ones having x-zillion of #if #case or similar contructs in them. When the wikicode parser detects this, it outputs a red warning message to the page.\n\n\nSee also:\n* {{msg-mw|Post-expand-template-inclusion-category}}",
-    "post-expand-template-inclusion-category": "This message is used as a category name for a [[mw:Help:Tracking categories|tracking category]] where pages are placed automatically if the expanded size of the templates they contain exceeds the limit.\nWhen templates are expanded, there is a size limit for the number of bytes yielded. Usually that occurs from excessively nested templates, recursive templates, or ones having x-zillion of #if #case or similar contructs in them. When the wikicode parser detects this, it outputs a red warning message to the page.\n\nSee also:\n* {{msg-mw|Post-expand-template-inclusion-warning}}",
+    "post-expand-template-inclusion-category": "This message is used as a category name for a [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages are placed automatically if the expanded size of the templates they contain exceeds the limit.\n\nWhen templates are expanded, there is a size limit for the number of bytes yielded. Usually that occurs from excessively nested templates, recursive templates, or ones having x-zillion of #if #case or similar contructs in them. When the wikicode parser detects this, it outputs a red warning message to the page.\n\nSee also:\n* {{msg-mw|Post-expand-template-inclusion-category-desc}}\n* {{msg-mw|Post-expand-template-inclusion-warning}}",
     "post-expand-template-argument-warning": "Used as warning in parser limitation.\n\nSee also:\n* {{msg-mw|Post-expand-template-argument-category}}",
-    "post-expand-template-argument-category": "This message is used as a category name for a [[mw:Help:Tracking categories|tracking category]] where pages are placed automatically if they contain omitted template arguments.\n\nSee also:\n* {{msg-mw|Post-expand-template-argument-warning}}",
+    "post-expand-template-argument-category": "This message is used as a category name for a [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages are placed automatically if they contain omitted template arguments.\n\nSee also:\n* {{msg-mw|Post-expand-template-argument-category-desc}}\n* {{msg-mw|Post-expand-template-argument-warning}}",
     "parser-template-loop-warning": "Parameters:\n* $1 - page title",
     "parser-template-recursion-depth-warning": "Parameters:\n* $1 - limit value of recursion depth",
     "language-converter-depth-warning": "Error message shown when a page uses too deeply nested language conversion syntax. Parameters:\n* $1 - the value of the depth limit",
     "filepage-nofile-link": "This message appears when visiting a File page for which there's no file, if the user can upload files, and file uploads are enabled. (Otherwise, see {{msg-mw|Filepage-nofile}})\n\nParameters:\n* $1 - URL of upload page for this file\nFilepage-nofile and Filepage-nofile-link message deprecate {{msg-mw|Noimage}}",
     "uploadnewversion-linktext": "Used on pages in the \"File\" namespace to update the file version.",
     "shared-repo-from": "This message is shown on an image description page when a duplicate of the image exists on a shared repository such as Wikimedia Commons.\n\nExample: http://test.wikipedia.org/wiki/File:Wiki.png#filelinks\n\nParameters:\n* $1 - the name of the shared repository. On wikimedia sites, $1 is {{msg-mw|Shared-repo-name-shared}}. The default value for $1 is {{msg-mw|Shared-repo}}.",
-    "shared-repo": "This message can be used as parameter <code>$1</code> in the following messages:\n* {{msg-mw|shared-repo-from}}\n* {{msg-mw|sharedupload}}\n* {{msg-mw|sharedupload-desc-here}}\n* {{msg-mw|sharedupload-desc-there}}",
-    "shared-repo-name-wikimediacommons": "{{optional}}\n{{Identical|Wikimedia Commons}}",
+    "shared-repo": "This message can be used as parameter <code>$1</code> in the following messages:\n* {{msg-mw|view-foreign}}\n* {{msg-mw|shared-repo-from}}\n* {{msg-mw|sharedupload}}\n* {{msg-mw|sharedupload-desc-here}}\n* {{msg-mw|sharedupload-desc-there}}",
+    "shared-repo-name-wikimediacommons": "{{optional}}\n\nA specific version of {{msg-mw|shared-repo}}; see [[MediaWiki:Shared-repo/qqq]] for more information.\n\n{{Identical|Wikimedia Commons}}",
     "filepage.css": "{{Optional}}",
     "upload-disallowed-here": "This message appears on an image page in place of the normal reupload link if they cannot upload - e.g. if the image page is upload protected and they do not have the right privilege.",
     "filerevert": "Used as page title. Parameters:\n* $1 - page title\n{{Identical|Revert}}",
     "listgrouprights-removegroup-self": "This is an individual right for groups, used on [[Special:ListGroupRights]].\n* $1 - the group names\n* $2 - the number of group names in $1",
     "listgrouprights-addgroup-self-all": "Used on [[Special:ListGroupRights]].\n{{Related|Listgrouprights}}",
     "listgrouprights-removegroup-self-all": "Used on [[Special:ListGroupRights]].\n{{Related|Listgrouprights}}",
+    "listgrouprights-namespaceprotection-header": "Shown on [[Special:ListGroupRights]] as the header for the namespace restrictions table.",
+    "listgrouprights-namespaceprotection-namespace": "Shown on [[Special:ListGroupRights]] as the 'namespace' column header for the namespace restrictions table.",
+    "listgrouprights-namespaceprotection-restrictedto": "Shown on [[Special:ListGroupRights]] as the 'right(s) allowing user to edit' column header for the namespace restrictions table.",
     "trackingcategories": "[[Special:TrackingCategories]] page implementing list of Tracking categories [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]].\n{{Identical|Tracking category}}",
     "trackingcategories-summary": "Description for [[Special:TrackingCategories]] page [[mw:Help:Tracking categories|tracking category]]",
     "trackingcategories-msg": "Header for the message column of the table on [[Special:TrackingCategories]]. This column lists the mediawiki message that controls the tracking category in question.\n{{Identical|Tracking category}}",
     "trackingcategories-name": "Header for the message column of the table on [[Special:TrackingCategories]]. This column lists the name of the tracking category in the content language.",
     "trackingcategories-desc": "Header for the message column of the table on [[Special:TrackingCategories]]. This column lists the inclusion criteria for the category.",
-    "noindex-category-desc": "No-index category-description. Shown on [[Special:TrackingCategories]]",
-    "index-category-desc": "Index category-description. Shown on [[Special:TrackingCategories]]",
-    "post-expand-template-inclusion-category-desc": "Post expand template inclusion category description. Shown on [[Special:TrackingCategories]]",
-    "post-expand-template-argument-category-desc": "Post expand template argument category description. Shown on [[Special:TrackingCategories]]",
-    "expensive-parserfunction-category-desc": "Expensive parserfunction category description. Shown on [[Special:TrackingCategories]]",
-    "broken-file-category-desc": "Broken file category description. Shown on [[Special:TrackingCategories]]",
-    "hidden-category-category-desc": "Hidden-category category description. Shown on [[Special:TrackingCategories]]",
+    "noindex-category-desc": "No-index category-description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* {{msg-mw|Noindex-category}}",
+    "index-category-desc": "Index category-description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* {{msg-mw|Index-category}}",
+    "post-expand-template-inclusion-category-desc": "Post expand template inclusion category description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* {{msg-mw|Post-expand-template-inclusion-category}}",
+    "post-expand-template-argument-category-desc": "Post expand template argument category description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* {{msg-mw|Post-expand-template-argument-category}}",
+    "expensive-parserfunction-category-desc": "Expensive parserfunction category description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* {{msg-mw|Expensive-parserfunction-category}}",
+    "broken-file-category-desc": "Broken file category description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* {{msg-mw|Broken-file-category}}",
+    "hidden-category-category-desc": "Hidden-category category description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* {{msg-mw|Hidden-category-category}}",
     "trackingcategories-nodesc": "Tracking category description not available message",
     "trackingcategories-disabled": "This message is used as the contents of the column \"Tracking category\" on [[Special:TrackingCategories]] when a particular tracking category has been disabled.",
     "mailnologin": "Used in [[Special:EmailUser]].\n\nUsed as title of the error message {{msg-mw|Mailnologintext}}.",
index 0f55f36..14289ec 100644 (file)
     "disclaimers": "Infurmaziòn legêli",
     "disclaimerpage": "Project: Avìs generèl",
     "edithelp": "Livar dal spiegaziòn",
-    "helppage": "Help:Tòt j argumént",
     "mainpage": "Prèma Pagina",
     "privacy": "Léz sora agli infurmaziòn persunèli",
     "privacypage": "Project: Léz sora agli infurmaziòn persunèli",
index 93712c6..b91e233 100644 (file)
     "disclaimers": "Ismigilen",
     "disclaimerpage": "Project:Asmigel amatu",
     "edithelp": "Tallalt deg uẓareg",
-    "helppage": "Help:Tira d yiwlafen",
     "mainpage": "Tasna Tamezwarut",
     "mainpage-description": "Tasna Tamezwarut",
     "portal": "Tawwart n timetti",
index 4844455..48873b6 100644 (file)
@@ -91,7 +91,6 @@
     "disclaimers": "Termenurya",
     "disclaimerpage": "Project:Termenurya",
     "edithelp": "Editisaripnasko zhutipen",
-    "helppage": "Help:Zhutipen",
     "mainpage": "Sherutni patrin",
     "mainpage-description": "Sherutni patrin",
     "portal": "Maladipnasko than",
index 0baf13d..5f2ee75 100644 (file)
     "trackingcategories-msg": "Categorie de urmărire",
     "trackingcategories-name": "Numele mesajului",
     "trackingcategories-desc": "Criteriile de includere în categorie",
-    "noindex-category-desc": "Pagina conține cuvântul magic <nowiki>__NOINDEX__</nowiki> (aflându-se într-un spațiu de nume care permite acest marcaj) și, drept urmare, nu este indexată de roboți.",
-    "index-category-desc": "Pagina conține cuvântul magic <nowiki>__INDEX__</nowiki> (aflându-se într-un spațiu de nume care permite acest marcaj) și, ca urmare, este indexată de roboți, deși în mod normal acest lucru nu s-ar fi întâmplat.",
+    "noindex-category-desc": "Pagina conține cuvântul magic <code><nowiki>__NOINDEX__</nowiki></code> (aflându-se într-un spațiu de nume care permite acest marcaj) și, drept urmare, nu este indexată de roboți.",
+    "index-category-desc": "Pagina conține cuvântul magic <code><nowiki>__INDEX__</nowiki></code> (aflându-se într-un spațiu de nume care permite acest marcaj) și, ca urmare, este indexată de roboți, deși în mod normal acest lucru nu s-ar fi întâmplat.",
     "post-expand-template-inclusion-category-desc": "După extinderea tuturor formatelor, dimensiunea paginii a depășit <code>$wgMaxArticleSize</code>, astfel că anumite formate nu au fost extinse.",
     "post-expand-template-argument-category-desc": "După extinderea argumentului unui format (ceva plasat între acolade triple, precum <code>{{{Foo}}})</code>, pagina a depășit <code>$wgMaxArticleSize</code>.",
     "broken-file-category-desc": "Categorie adăugată dacă pagina conține o legătură întreruptă către un fișier (o legătură folosită pentru încorporarea unui fișier atunci când fișierul nu există).",
-    "hidden-category-category-desc": "Această categorie conține <nowiki>__HIDDENCAT__</nowiki>, ceea ce împiedică în mod implicit afișarea ei în zona cu legături către categorii din cadrul paginilor.",
+    "hidden-category-category-desc": "Această categorie conține <code><nowiki>__HIDDENCAT__</nowiki></code>, ceea ce împiedică în mod implicit afișarea ei în zona cu legături către categorii din cadrul paginilor.",
     "trackingcategories-nodesc": "Nicio descriere disponibilă.",
     "trackingcategories-disabled": "Categoria este dezactivată",
     "mailnologin": "Nu există adresă de trimitere",
index 42b25cd..1c47099 100644 (file)
     "trackingcategories-msg": "Отслеживающая категория",
     "trackingcategories-name": "Имя сообщения",
     "trackingcategories-desc": "Критерий включения в категорию",
-    "noindex-category-desc": "Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86е Ð¸Ð¼ÐµÐµÑ\82Ñ\81Ñ\8f Â«Ð²Ð¾Ð»Ñ\88ебное Ñ\81лово» <nowiki>__NOINDEX__</nowiki> (и Ñ\81Ñ\82Ñ\80аниÑ\86а Ð½Ð°Ñ\85одиÑ\82Ñ\81Ñ\8f Ð² Ð¿Ñ\80оÑ\81Ñ\82Ñ\80анÑ\81Ñ\82ве Ð¸Ð¼Ñ\91н, Ð³Ð´Ðµ Ñ\80азÑ\80еÑ\88Ñ\91н Ñ\8dÑ\82оÑ\82 Ñ\84лаг), Ð¿Ð¾Ñ\8dÑ\82омÑ\83 Ð¾Ð½Ð° Ð½Ðµ Ð¸Ð½Ð´ÐµÐºÑ\81иÑ\80Ñ\83Ñ\8eÑ\82Ñ\81Ñ\8f Ð¿Ð¾Ð¸Ñ\81ковÑ\8bми Ñ\80обоÑ\82ами.",
+    "noindex-category-desc": "СÑ\82Ñ\80аниÑ\86а Ð½Ðµ Ð¸Ð½Ð´ÐµÐºÑ\81иÑ\80Ñ\83Ñ\8eÑ\82Ñ\81Ñ\8f Ð¿Ð¾Ð¸Ñ\81ковÑ\8bми Ñ\80обоÑ\82ами, Ð¿Ð¾Ñ\82омÑ\83 Ñ\87Ñ\82о Ð½Ð° Ð½ÐµÐ¹ Ð¸Ð¼ÐµÐµÑ\82Ñ\81Ñ\8f Â«Ð²Ð¾Ð»Ñ\88ебное Ñ\81лово» <code><nowiki>__NOINDEX__</nowiki></code>, Ð¸ Ð¾Ð½Ð° Ð½Ð°Ñ\85одиÑ\82Ñ\81Ñ\8f Ð² Ð¿Ñ\80оÑ\81Ñ\82Ñ\80анÑ\81Ñ\82ве Ð¸Ð¼Ñ\91н, Ð³Ð´Ðµ Ñ\80азÑ\80еÑ\88Ñ\91н Ñ\8dÑ\82оÑ\82 Ñ\84лаг).",
     "index-category-desc": "На странице имеется «волшебное слово» __INDEX__ (и страница находится в пространстве имён, где разрешён этот флаг), поэтому она индексируются поисковыми роботами в тех случаях, когда этого обычно не происходит.",
     "post-expand-template-inclusion-category-desc": "После показа всех шаблонов размер страницы станет больше, чем <code>$wgMaxArticleSize</code>, поэтому некоторые шаблоны не были показаны полностью.",
     "post-expand-template-argument-category-desc": "После раскрытия аргумента шаблона (что-нибудь в тройных фигурных скобках, например, <code>{{{Foo}}})</code>, страница станет больше, чем <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "На странице используется слишком много ресурсоёмких функций (таких, как <code>#ifexist</code>). Подробнее — на странице [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
     "broken-file-category-desc": "Категория добавляется, если страница содержит некорректную файловую ссылку (ссылку на несуществующий файл).",
-    "hidden-category-category-desc": "Это категория с добавленной меткой <nowiki>__HIDDENCAT__</nowiki> в ней, что по умолчанию предотвращает её отображение на страницах в разделе категорий.",
+    "hidden-category-category-desc": "Это категория с добавленной меткой <code><nowiki>__HIDDENCAT__</nowiki></code> в ней, что по умолчанию предотвращает её отображение на страницах в разделе категорий.",
     "trackingcategories-nodesc": "Описание отсутствует.",
     "trackingcategories-disabled": "Категория отключена",
     "mailnologin": "Адрес для отправки отсутствует",
index f3a1d59..37206aa 100644 (file)
@@ -96,7 +96,6 @@
     "currentevents": "Evenimente di tora",
     "disclaimers": "Nipricunuschire",
     "edithelp": "Agiutor ti alãxire",
-    "helppage": "Help:Conținut",
     "mainpage": "Prota frânḑâ",
     "mainpage-description": "Prota frânḑâ",
     "portal": "Portalu a comunitatiľei",
index 7652498..4972df2 100644 (file)
@@ -88,7 +88,6 @@
     "disclaimers": "Тајменулс",
     "disclaimerpage": "Project:тајменул",
     "edithelp": "Ајутор пентре едитаере",
-    "helppage": "Help:Ајутор",
     "mainpage": "Пажу принципу",
     "mainpage-description": "Пажу принципу",
     "privacy": "Политикмус де лижитул",
index f1c808c..d3275f3 100644 (file)
@@ -88,7 +88,6 @@
     "disclaimers": "tǎmenuls",
     "disclaimerpage": "Project:tǎmenul",
     "edithelp": "Ajutor pentru editaere",
-    "helppage": "Help:Ajutor",
     "mainpage": "Pažu principu",
     "mainpage-description": "Pažu principu",
     "privacy": "Politikmus de ližitul",
index e5b9747..6dd2311 100644 (file)
     "permalink": "स्थायिपरिसन्धिः",
     "print": "मुद्र्यताम्",
     "view": "दृश्यताम्",
+    "view-foreign": "$1 अत्र दृश्यताम्",
     "edit": "सम्पाद्यताम्",
+    "edit-local": "स्थानीयवर्णनं सम्पाद्यताम्",
     "create": "सृज्यताम्",
+    "create-local": "स्थानीयवर्णनं योज्यताम्",
     "editthispage": "इदं पृष्ठं सम्पाद्यताम्",
     "create-this-page": "इदं पृष्ठं सृज्यताम्",
     "delete": "अपाक्रियताम्",
     "userjspreview": "<strong>एतत् केवलं योजकस्य JabaScript इत्यस्य प्राग्दृश्यं वर्तते इति स्मरतु । भवता/भवत्या कृतानि परिवर्तनानि एतवता न रक्षितानि !</strong>",
     "sitecsspreview": "<strong>एतत् केवलं CSS इत्यस्य प्राग्दृश्यं वर्तते इति स्मरतु । भवता/भवत्या कृतानि परिवर्तनानि एतवता न रक्षितानि !</strong>",
     "sitejspreview": "<strong>एतत् केवलं JavaScript इत्यस्य प्राग्दृश्यं वर्तते इति स्मरतु । भवता/भवत्या कृतानि परिवर्तनानि एतवता न रक्षितानि !</strong>",
-    "userinvalidcssjstitle": "'''पà¥\82रà¥\8dवसà¥\82à¤\9aना:'''  \"$1\" à¤\87ति à¤¤à¥\8dवà¤\95à¥\8d à¤¨ à¤µà¤¿à¤¦à¥\8dयतà¥\87।\nमनसि à¤§à¤¾à¤°à¤¯à¤¤à¥\81 à¤¯à¤¤à¥\8d à¤¸à¥\8dवà¥\87à¤\9aà¥\8dà¤\9bया à¤ªà¤°à¤¿à¤µà¤°à¥\8dतिताà¤\83 .css, .js à¤\9aà¥\87ति à¤ªà¥\83षà¥\8dठाà¤\83 à¤²à¤\98à¥\82नà¤\95à¥\8dषरानà¥\8d à¤ªà¥\8dरयà¥\8bà¤\9cयनà¥\8dति, à¤¯à¤¥à¤¾  {{ns:user}}:Foo/Vector.css à¤\87तà¥\8dयà¥\87तसà¥\8dय à¤¸à¥\8dथानà¥\87  {{ns:user}}:Foo/vector.css à¤\87तà¥\8dयà¥\87ततà¥\8d।",
-    "updated": "(à¤\85दà¥\8dयतनà¥\80à¤\95à¥\83तà¤\83)",
+    "userinvalidcssjstitle": "'''पà¥\82रà¥\8dवसà¥\82à¤\9aना:'''  \"$1\" à¤\87ति à¤¤à¥\8dवà¤\95à¥\8d à¤¨ à¤µà¤¿à¤¦à¥\8dयतà¥\87।\nयà¥\8bà¤\9cà¤\95परिवरà¥\8dतितà¥\87 .css, .js à¤¸à¤\9eà¥\8dà¤\9aिà¤\95à¥\87 à¤²à¤\98à¥\81-à¤\86à¤\99à¥\8dà¤\97ावरà¥\8dणमालायाà¤\83 à¤µà¤°à¥\8dणà¥\88à¤\83 à¤²à¤¿à¤\96à¥\8dयà¥\87तà¥\87 à¥¤ à¤\89दा. {{ns:user}}:Foo/Vector.css à¤\8fवà¤\82 à¤¨ à¤²à¥\87à¤\96नà¥\80यमà¥\8d à¥¤ à¤²à¤\98à¥\81वरà¥\8dणà¥\88à¤\83 {{ns:user}}:Foo/vector.css à¤\8fवà¤\82 à¤²à¥\87à¤\96नà¥\80यमà¥\8d ।",
+    "updated": "(नवà¥\80à¤\95à¥\83तमà¥\8d (updated))",
     "note": "'''सूचना:'''",
-    "previewnote": "'''एतत् केवलं प्राग्दृश्यं वर्तते इति स्मरतु'''\nभवता/भवत्या कृतानि परिवर्तनानि एतवता न रक्षितानि ।",
-    "continue-editing": "समà¥\8dपादनमà¥\8d à¤\85नà¥\81वरà¥\8dतताम्",
-    "previewconflict": "à¤\85सà¥\8dमिनà¥\8d à¤ªà¥\8dराà¤\97à¥\8dदà¥\83शà¥\8dयà¥\87 à¤¦à¤°à¥\8dशितमसà¥\8dति à¤¯à¤¤à¥\8d à¤\89परिवरà¥\8dति à¤ªà¤¾à¤  à¤\95à¥\8dषà¥\87तà¥\8dरसà¥\8dय à¤ªà¤¾à¤ à¤\83 à¤°à¤\95à¥\8dषणपशà¥\8dà¤\9aातà¥\8d à¤\95à¥\80दà¥\83शà¤\83 à¤¦à¥\83षà¥\8dà¤\9fिà¤\97à¥\8bà¤\9aरà¤\83 à¤­à¤µà¤¿à¤·à¥\8dयति।",
-    "session_fail_preview": "'''क्षम्यताम्! अस्माभिः भवतः सम्पादनस्य संसाधनं न कर्तुं शक्तम् यस्माद्धि सत्रस्य सूचनाः लुप्ताः।'''\nकृपया पुनः चेष्टताम्।\nचेदेतत् अधुनाऽपि न कार्यशीलं स्यात्, [[Special:UserLogout|सत्राद्बहिः गत्वा]] पुनः प्रवेशं करोतु।",
-    "session_fail_preview_html": "लेखभागाभावात् ते परिचर्यां समापयितुं न शक्यते ।[[Special:UserLogout|logging out]]",
-    "token_suffix_mismatch": "'''तà¥\87 à¤¸à¤®à¥\8dपादनà¤\82 à¤¤à¤¿à¤°à¥\8dसà¥\8dà¤\95à¥\83तमà¥\8d à¥¤ à¤¯à¤¤à¤\83 à¤¤à¥\87 à¤\97à¥\8dराहà¤\95à¤\83 à¤¸à¤®à¥\8dपादनपà¥\8dरतà¥\80à¤\95à¥\87 à¤²à¥\87à¤\96ानà¤\9aिहà¥\8dनानि à¤\95à¥\8dषतविà¤\95à¥\8dषतानि à¤\85à¤\95रà¥\8bतà¥\8d। '''\nपाठà¥\8dयपà¥\81à¤\9fसà¥\8dय à¤¸à¤\82रà¤\95à¥\8dषणारà¥\8dथà¤\82 à¤¸à¤®à¥\8dपादनावà¤\95ाशà¤\83 à¤ªà¤¿à¤¹à¤¿à¤¤à¤\83 à¥¤ à¤\85नामिà¤\95ानामà¥\8d à¤\89पयà¥\8bà¤\97à¤\95ालà¥\87 à¤\95दाà¤\9aितà¥\8d à¤\8fवà¤\82 à¤¸à¤®à¥\8dभवति ।",
-    "edit_form_incomplete": "'''समà¥\8dपादनसà¥\8dय à¤\95तिà¤\9aनाà¤\82शाà¤\83 à¤µà¤¿à¤¤à¤¾à¤°à¤\95à¤\82 à¤¨ à¤ªà¥\8dरापà¥\8dताà¤\83 ; à¤¸à¤®à¥\8dपादनà¤\82  à¤¦à¥\8dविवरà¤\82 à¤ªà¤°à¤¿à¤¶à¥\80लयतà¥\81 à¥¤ à¤¤à¥\87 à¤¸à¤®à¥\8dपादनानि à¤\85नाहतानि, à¤ªà¥\81नà¤\83 à¤¯à¤¤à¤¤à¤¾à¤®à¥\8d  '''",
+    "previewnote": "<strong>एतत् केवलं प्राग्दृश्यं वर्तते इति स्मरतु । भवता/भवत्या कृतानि परिवर्तनानि एतवता न रक्षितानि !</strong>",
+    "continue-editing": "समà¥\8dपादनविभाà¤\97à¤\82 à¤\97मà¥\8dयताम्",
+    "previewconflict": "à¤\8fततà¥\8d à¤ªà¥\83षà¥\8dठà¤\82 à¤¯à¤¦à¤¿ à¤­à¤µà¤¾à¤¨à¥\8d/भवतà¥\80 à¤°à¤\95à¥\8dषिषà¥\8dयति, à¤¤à¤°à¥\8dहि à¤\85तà¥\8dर à¤ªà¥\8dराà¤\97à¥\8dदà¥\83शà¥\8dयà¥\87 à¤¯à¤¥à¤¾ à¤¦à¥\83शà¥\8dयतà¥\87, à¤¤à¤¥à¥\88व à¤°à¤\95à¥\8dषितà¤\82 à¤­à¤µà¤¿à¤·à¥\8dयति ।",
+    "session_fail_preview": "'''क्षम्यताम् ! प्रवेशसूचनायाः लोपत्वात् भवता/भवत्या कृतानि परिवर्तनानि रक्षितुं वयं न अशक्नुम ।\nअधुनापि यदि सा एव समस्या अस्ति, तर्हि [[Special:UserLogout|निर्गमनं कृत्वा]] पुनः प्रविश्यताम् ।",
+    "session_fail_preview_html": "'''क्षम्यताम् ! प्रवेशसूचनायाः लोपत्वात् भवता/भवत्या कृतानि परिवर्तनानि रक्षितुं वयं न अशक्नुम ।\n\n<em>कारणं {{SITENAME}} इत्यत्र मूल-HTML-समर्थितं भवति । अतः JavaScript इत्यस्मात् रक्षितुं प्राग्दृश्यं निगूढं भवति ।</em>\n\n<strong>भवता/भवत्या कृतं सम्पादनं यदि उचितमस्ति, तर्हि पुनः प्रयासं करोतु ।</strong>\n\nअधुनापि यदि सा एव समस्या अस्ति, तर्हि [[Special:UserLogout|निर्गमनं कृत्वा]] पुनः प्रविश्यताम् ।",
+    "token_suffix_mismatch": "'''भवता/भवतà¥\8dया à¤\95à¥\83तानि à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनानि à¤¨à¤¿à¤°à¤¸à¥\8dतानि à¤\95à¥\83तानि à¥¤ à¤\95राणà¤\82 à¤­à¤µà¤¤à¤\83/भवतà¥\8dयाà¤\83 à¤\97वà¥\87षà¤\95à¥\87न (browser) à¤¸à¤®à¥\8dपादनà¥\87 à¤\95ानिà¤\9aन à¤µà¤¿à¤°à¤¾à¤®à¤\9aिहà¥\8dनानि à¤\85सà¥\8dतवà¥\8dयसà¥\8dतà¤\95à¥\83तानि à¥¤'''\nलà¥\87à¤\96सà¥\8dय à¤ªà¤¾à¤ à¤\83 à¤\85सà¤\82सà¥\8dà¤\95à¥\83तà¤\83 à¤¨ à¤¸à¥\8dयातà¥\8d, à¤\85तà¤\83 à¤­à¤µà¤¤à¤\83/भवतà¥\8dयाà¤\83 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनानि à¤¨à¤¿à¤°à¤¸à¥\8dतà¥\80à¤\95à¥\83तानि à¥¤\nà¤\85यà¥\8bà¤\97à¥\8dयपà¥\8dरतिनिधà¥\87à¤\83 (proxy server) à¤\89पयà¥\8bà¤\97à¥\87नापि à¤\95à¥\81तà¥\8dरà¤\9aितà¥\8d à¤\8fतादà¥\83शà¤\82 भवति ।",
+    "edit_form_incomplete": "'''समà¥\8dपादनसà¥\8dय à¤\95तिà¤\9aनाà¤\82शाà¤\83 à¤µà¤¿à¤¤à¤°à¤\95à¥\87 (server) à¤¨ à¤°à¤\95à¥\8dषिताà¤\83 à¥¤ à¤­à¤µà¤¤à¤¾/भवतà¥\8dया à¤\95à¥\83तानि à¤¸à¤®à¥\8dपादनानि à¤¯à¥\8bà¤\97à¥\8dयानि à¤\9aà¥\87तà¥\8d à¤ªà¥\81नà¤\83 à¤ªà¥\8dरयततामà¥\8d à¥¤'''",
     "editing": "$1 सम्पाद्यते",
-    "creating": "$1 à¤¸à¤°à¥\8dà¤\9cनमà¥\8d",
-    "editingsection": "$1 (विभाà¤\97सà¥\8dय) à¤¸à¤®à¥\8dपादनà¤\82 à¤\95à¥\81रà¥\8dवनà¥\8d à¤\85सà¥\8dति",
-    "editingcomment": "$1 संपादनम् (विभागः)",
-    "editconflict": "सम्पादनयोः/सम्पादनानाम् अन्तर्विरोधः : $1",
-    "explainconflict": "तà¥\87 à¤¸à¤®à¥\8dपादनावसरà¥\87 à¤\95à¥\8bपि à¤\85नà¥\8dयà¤\83 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतितवानà¥\8d à¥¤ à¤\89परितनलà¥\87à¤\96सà¥\8dय à¤\95à¥\8dषà¥\87तà¥\8dरà¤\82 à¤¸à¤¦à¥\8dयà¤\83 à¤µà¤¿à¤¦à¥\8dयमानपà¥\81à¤\9fयà¥\81à¤\95à¥\8dतमसà¥\8dति à¥¤ à¤¤à¥\87 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनमà¥\8d à¤\85धà¤\83 à¤²à¥\87à¤\96à¤\95à¥\8dषà¥\87तà¥\8dरà¥\87 à¤¦à¥\83शà¥\8dयतà¥\87 à¥¤ à¤µà¤¿à¤¦à¥\8dयमानलà¥\87à¤\96à¥\88à¤\83 à¤¸à¤¹ à¤¤à¥\87 à¤ªà¤°à¤¿à¤µà¤°à¥\8dताननि à¤µà¤¿à¤²à¥\80नयतà¥\81 à¥¤ à¤¯à¤¦à¤¾ à¤¸à¤\82रà¤\95à¥\8dषणपà¥\8dरयतà¥\8dनà¤\83 à¤\95à¥\8dरियतà¥\87 à¤¤à¤¦à¤¾ à¤\95à¥\87वलमà¥\8d à¤\89परिपठà¥\8dयभाà¤\97à¤\83 à¤\8fव à¤¸à¥\81रà¤\95à¥\8dषितà¤\82 à¤­à¤µति ।",
-    "yourtext": "भवतः पाठः",
-    "storedversion": "रà¤\95à¥\8dषिता à¤\86वà¥\83तà¥\8dतिà¤\83",
-    "nonunicodebrowser": "'''पूर्वसूचना: भवतः विचरकं यूनीकोड्-अनुकूलम् नास्ति।'''\nभवान् सुरक्षिततया सम्पादनं करोतु इत्येतदर्थं एका युक्तिः कृताऽस्ति: आस्की-इतराणि अक्षराणि सम्पादनपिटके षौडशिक(hexadecimal) कूटेषु द्रक्ष्यन्ते।",
-    "editingold": "''' पूर्वसूचना : कालातीतपुटस्य सम्पादनं करोति  ''' यदि एतत् रक्षितुं यतते परिवर्तनं नैव रक्ष्यते ।",
+    "creating": "$1 à¤¸à¥\83à¤\9cà¥\8dयतà¥\87",
+    "editingsection": "$1 (विभाà¤\97à¤\83) à¤¸à¤®à¥\8dपादà¥\8dयतà¥\87",
+    "editingcomment": "$1 (नवीनविभागः) सम्पाद्यते",
+    "editconflict": "सम्पादनयोः अन्तर्विरोधः : $1",
+    "explainconflict": "भवता/भवतà¥\8dया à¤¯à¤¦à¤¾ à¤¸à¤®à¥\8dपादनà¤\82 à¤ªà¥\8dरारबà¥\8dधà¤\82, à¤¤à¤¦à¤¾à¤°à¤­à¥\8dय à¤\85नà¥\8dयà¤\9cनà¤\83 à¤\85पि à¤\85तà¥\8dर à¤¸à¤®à¥\8dपादनà¤\82 à¤\95à¥\81रà¥\8dवनà¥\8d à¤\86सà¥\80तà¥\8d à¥¤\nà¤\85धà¥\81ना à¤¯à¤¥à¤¾ à¤¸à¥\8dथितिà¤\83 à¤\85सà¥\8dति, à¤¤à¤¥à¤¾ à¤\89परि à¤ªà¥\87à¤\9fिà¤\95ायाà¤\82 à¤¦à¥\8dरषà¥\8dà¤\9fà¥\81à¤\82 à¤¶à¤\95à¥\8dयतà¥\87 à¥¤\nà¤\85धà¤\83 à¤ªà¥\87à¤\9fिà¤\95ायाà¤\82 à¤­à¤µà¤¤à¤¾/भवतà¥\8dया à¤\95à¥\83तानि à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनानि à¤ªà¥\8dरदरà¥\8dशितानि à¤¸à¤¨à¥\8dति à¥¤ \nà¤\85धà¥\81ना à¤ªà¥\83षà¥\8dठà¥\87 à¤¯à¤¤à¥\8d à¤²à¤¿à¤\96ितà¤\82 à¤µà¤°à¥\8dततà¥\87, à¤¤à¥\87न à¤¸à¤¹ à¤¸à¥\8dवसà¥\8dय à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनानि à¤¯à¥\8bà¤\9cनà¥\80यानि à¤­à¤µà¤¿à¤·à¥\8dयति à¥¤ \nभवानà¥\8d/भवतà¥\80 à¤¯à¤¦à¤¾ \" à¤\8fततà¥\8d {{int:savearticle}}\" à¤¨à¥\81दति, à¤¤à¤¦à¤¾\n<strong>à¤\95à¥\87वलà¤\82</strong> à¤\89परिसà¥\8dतनपà¥\87à¤\9fिà¤\95ायाà¤\82 à¤¯à¤¤à¥\8d à¤²à¤¿à¤\96ितमà¥\8d à¤\85सà¥\8dति, à¤¤à¤¤à¥\8d à¤°à¤\95à¥\8dषितà¤\82 à¤­à¤µà¤¿à¤·à¥\8dयति ।",
+    "yourtext": "भवतः/भवत्याः पाठः",
+    "storedversion": "रà¤\95à¥\8dषितसà¤\82सà¥\8dà¤\95रणमà¥\8d",
+    "nonunicodebrowser": "<strong>पूर्वसूचना : भवतः/भवत्याः गवेषकं (browser) Unicode न समर्थयति ।</strong>\nअत्र भवान्/भवती योग्यरीत्या सम्पादनं कर्तुं शक्ष्यति :\nये वर्णाः ASCII कूटे न भविष्यन्ति, ते hexadecimal वर्णत्वेन प्रदर्शयन्ते ।",
+    "editingold": "<strong>पूर्वसूचना : भवता/भवत्या अस्य पृष्ठस्य कालातीत-आवृत्तिं समाद्यते । </strong>\nएतत् पृष्ठं यदि भवान्/भवती रक्षिष्यति, तर्हि सद्यः आवृत्ति-तः पुरा यानि परिवर्तनानि आसन्, तानि नशिष्यन्ति ।",
     "yourdiff": "भेदाः",
-    "copyrightwarning": "à¤\95à¥\83पया à¤¸à¤\82सà¥\8dमरà¥\8dतवà¥\8dयà¤\82 à¤¯à¤¤à¥\8d {{SITENAME}} à¤\87तà¥\8dयà¥\87तदà¥\8d à¤ªà¥\8dरति à¤\95à¥\83तानि à¤¸à¤°à¥\8dवाणि à¤¯à¥\8bà¤\97दानानि $2 à¤\87तà¥\8dयसà¥\8dय à¤ªà¥\8dरतिबà¤\82धाà¤\82तरà¥\8dà¤\97तानि à¤¸à¤¨à¥\8dति (à¤\85धिà¤\95ाय à¤\9cà¥\8dà¤\9eानाय $1 à¤\87तà¥\8dयà¥\87तदà¥\8d à¤ªà¤¶à¥\8dयतà¥\81)।\n\nयदि à¤­à¤µà¤¾à¤¨à¥\8d à¤¸à¥\8dवà¤\95à¥\80यानि à¤²à¤¿à¤\96ितानि à¤ªà¤°à¤¿à¤µà¤°à¥\8dतमनà¥\8dतशà¥\8dà¤\9a, à¤ªà¥\81नà¤\83 à¤µà¤¿à¤¤à¤°à¥\8dयमनà¥\8dतशà¥\8dà¤\9a à¤¨ à¤¦à¥\8dरषà¥\8dà¤\9fà¥\81मिà¤\9aà¥\8dà¤\9bति à¤¤à¤¦à¤¾ à¤®à¤¾ à¤\95à¥\83पया à¤®à¤¾à¤½à¤¤à¥\8dर à¤¯à¥\8bà¤\97दानà¤\82 à¤\95रà¥\8bतà¥\81। <br />\n\nभवानà¥\8d à¤\8fतदपि à¤ªà¥\8dरमाणà¥\80à¤\95रà¥\8bति à¤¯à¤¤à¥\8d à¤\8fतदà¥\8d à¤­à¤µà¤¤à¤¾ à¤¸à¥\8dवतà¤\83 à¤²à¤¿à¤\96ितमसà¥\8dति à¤\85थवा à¤\95सà¥\8dमाà¤\9aà¥\8dà¤\9aतà¥\8d à¤\9cनारà¥\8dपितातà¥\8d à¤µà¤¾ à¤®à¥\81à¤\95à¥\8dतातà¥\8d à¤µà¤¾ à¤¸à¥\8dरà¥\8bतसà¤\83 à¤ªà¥\8dरतिलिपà¥\80à¤\95à¥\83तमसà¥\8dति।\n\n'''पà¥\8dरतिलिपà¥\8dयधिà¤\95ारयà¥\81तानà¥\8d à¤²à¥\87à¤\96ानà¥\8d, à¤\85नà¥\81à¤\9cà¥\8dà¤\9eाà¤\82 à¤µà¤¿à¤¨à¤¾, à¤®à¤¾à¤½à¤¤à¥\8dर à¤ªà¥\8dरददातà¥\81!'''",
-    "copyrightwarning2": "à¤\95à¥\83पया à¤¸à¤\82सà¥\8dमरà¥\8dतवà¥\8dयà¤\82 à¤¯à¤¤à¥\8d {{SITENAME}} à¤\87तà¥\8dयà¥\87तदà¥\8d à¤ªà¥\8dरति à¤\95à¥\83तानि à¤¸à¤°à¥\8dवाणि à¤¯à¥\8bà¤\97दानानि  à¤\87तà¥\8dयसà¥\8dय à¤ªà¥\8dरतिबà¤\82धाà¤\82तरà¥\8dà¤\97तानि à¤¸à¤¨à¥\8dति (à¤\85धिà¤\95ाय à¤\9cà¥\8dà¤\9eानाय $1 à¤\87तà¥\8dयà¥\87तदà¥\8d à¤ªà¤¶à¥\8dयतà¥\81)।\n\nयदि à¤­à¤µà¤¾à¤¨à¥\8d à¤¸à¥\8dवà¤\95à¥\80यानि à¤²à¤¿à¤\96ितानि à¤ªà¤°à¤¿à¤µà¤°à¥\8dतमनà¥\8dतशà¥\8dà¤\9a, à¤ªà¥\81नà¤\83 à¤µà¤¿à¤¤à¤°à¥\8dयमनà¥\8dतशà¥\8dà¤\9a à¤¨ à¤¦à¥\8dरषà¥\8dà¤\9fà¥\81मिà¤\9aà¥\8dà¤\9bति à¤¤à¤¦à¤¾ à¤®à¤¾ à¤\95à¥\83पया à¤®à¤¾à¤½à¤¤à¥\8dर à¤¯à¥\8bà¤\97दानà¤\82 à¤\95रà¥\8bतà¥\81। <br />\n\nभवानà¥\8d à¤\8fतदपि à¤ªà¥\8dरमाणà¥\80à¤\95रà¥\8bति à¤¯à¤¤à¥\8d à¤\8fतदà¥\8d à¤­à¤µà¤¤à¤¾ à¤¸à¥\8dवतà¤\83 à¤²à¤¿à¤\96ितमसà¥\8dति à¤\85थवा à¤\95सà¥\8dमाà¤\9aà¥\8dà¤\9aतà¥\8d à¤\9cनारà¥\8dपितातà¥\8d à¤µà¤¾ à¤®à¥\81à¤\95à¥\8dतातà¥\8d à¤µà¤¾ à¤¸à¥\8dरà¥\8bतसà¤\83 à¤ªà¥\8dरतिलिपà¥\80à¤\95à¥\83तमसà¥\8dति।\n\n'''पà¥\8dरतिलिपà¥\8dयधिà¤\95ारयà¥\81तानà¥\8d à¤²à¥\87à¤\96ानà¥\8d, à¤\85नà¥\81à¤\9cà¥\8dà¤\9eाà¤\82 à¤µà¤¿à¤¨à¤¾, à¤®à¤¾à¤½à¤¤à¥\8dर à¤ªà¥\8dरददातà¥\81!'''",
-    "longpageerror": "रुटिः: भवता प्रदत्तः पाठः {{PLURAL:}} $1 किलोबैटमितः दीर्घः, अतः एषः अधिकतमानुज्ञातात् $2 मितात् दीर्घतरः अस्ति। एषः रक्षितुं न शक्यते।'''",
-    "readonlywarning": "पूर्वसूचना ''' निर्वहणार्थं पाठः पिहितः । अधुना भवान् सम्पादनं रक्षितुं नैव शक्नोति । पाठसञ्चिकायां संश्लेष्य कार्यफलं रक्षतु । एतद्विवरणं प्रतिबन्धकः प्रशासकः विरतरि ।$1",
-    "protectedpagewarning": "'''पूर्वसूचना ''' प्रशासकपदयुक्ताः योजकाः एव सम्पादनं कर्तुमर्हन्ति । अतः एतत्पुटं सुरक्षितम् । निदेशार्थम् अधः जघन्यप्रवेशः सूचितः ।",
-    "semiprotectedpagewarning": "'''सà¥\82à¤\9aना ''' à¤ªà¤\9eà¥\8dà¤\9cà¥\80à¤\95à¥\83तयà¥\8bà¤\9cà¤\95ानाà¤\82  à¤\89पयà¥\8bà¤\97ारà¥\8dथ à¤\95à¥\87वलमà¥\8d à¤\8fततà¥\8dपà¥\81à¤\9fमà¥\8d à¤\85भिरà¤\95à¥\8dषितमà¥\8d à¥¤ à¤\9cà¤\98नà¥\8dयपà¥\8dरवà¥\87शसà¥\8dय à¤¸à¥\82à¤\9aना à¤\86नà¥\81à¤\95à¥\82लà¥\8dयारà¥\8dथमà¥\8d à¤\85धà¥\8bनिदà¥\87शिता à¥¤",
-    "cascadeprotectedwarning": "'''पूर्वसूचना ''' प्रशासकसौकर्ययुक्तानां योजकानाम् सम्पादनार्थम् एतत् पुटम् अभिरक्षितमस्ति । यतः अधोनिदेशितनिर्झरे एतदन्तर्गतम् । {{PLURAL:$1|page|pages}}:",
-    "titleprotectedwarning": "'''पूर्वसूचना  [[Special:ListGroupRights|specific rights]] जनानां सर्जनार्थम् एतत्पुटम् अभिरक्षितम् । '''",
+    "copyrightwarning": "à¤\95à¥\83पया à¤§à¥\8dयानà¤\82 à¤¦à¤¦à¤¾à¤¤à¥\81 à¤¯à¤¤à¥\8d, {{SITENAME}} à¤\87तà¥\8dयतà¥\8dर à¤\95à¥\83तानि à¤¸à¤°à¥\8dवाणि à¤¯à¥\8bà¤\97दानानि $2 à¤\87तà¥\8dयसà¥\8dय à¤¨à¤¿à¤¯à¤¨à¤¾à¤¨à¥\81सारà¤\82 à¤­à¤µà¤¿à¤·à¥\8dयनà¥\8dति à¥¤ (विसà¥\8dतारà¥\87ण à¤\9cà¥\8dà¤\9eातà¥\81à¤\82 $1 à¤\85तà¥\8dर à¤¨à¥\81दतà¥\81)\nभवानà¥\8d/भवतà¥\80 à¤¸à¥\8dवसà¥\8dय à¤¯à¥\8bà¤\97दानà¥\87षà¥\81 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन-पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन-à¤\86दिनि à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनानि à¤¦à¥\8dरषà¥\8dà¤\9fà¥\81à¤\82 à¤¨ à¤¶à¤\95à¥\8dनà¥\8bति à¤\9aà¥\87तà¥\8d, à¤\85तà¥\8dर à¤¯à¥\8bà¤\97दानà¤\82 à¤®à¤¾ à¤\95रà¥\8bतà¥\81 à¥¤ (à¤\85तà¥\8dर à¤¤à¥\81 à¤²à¤¿à¤\96ितà¥\87 à¤¨à¤¿à¤°à¤¨à¥\8dतरà¤\82 à¤ªà¤¿à¤°à¤µà¤°à¥\8dतनà¤\82 à¤­à¤µà¤¤à¥\8dयà¥\87व à¤\87ति à¤­à¤¾à¤µà¤\83)\n<br />\n\nà¤\85सà¥\8dमभà¥\8dयà¤\82 à¤­à¤µà¤¤à¤¾/भवतà¥\8dया à¤ªà¥\8dरतिà¤\9cà¥\8dà¤\9eा à¤\95रà¥\8dतवà¥\8dया à¤¯à¤¤à¥\8d, \"à¤\85तà¥\8dर à¤¯à¤¤à¥\8dà¤\95िमपि à¤­à¤µà¤¾à¤¨à¥\8d/भवतà¥\80 à¤²à¥\87à¤\96िषà¥\8dयति, à¤¤à¤¤à¥\8d à¤¸à¤°à¥\8dवà¤\82 à¤¸à¥\8dवरà¤\9aितà¤\82, à¤¸à¤¾à¤°à¥\8dवà¤\9cनà¥\80à¤\95à¤\82 à¤\9a à¤­à¤µà¤¿à¤·à¥\8dयति à¥¤ à¤\95à¥\81तसà¥\8dमातà¥\8d à¤¸à¥\8dथानातà¥\8d à¤ªà¥\8dरतिलिपिà¤\95à¥\83तमà¥\8d à¤\85पि à¤¸à¤¾à¤°à¥\8dवà¤\9cनà¥\80à¤\95मà¥\87व à¤¸à¥\8dयातà¥\8d\" à¤\87ति à¥¤ \n<strong>à¤\85नà¥\8dयसà¥\8dय à¤¸à¤°à¥\8dवाधिà¤\95ारानà¥\8dतरà¥\8dà¤\97तà¤\82 (copyright) à¤¯à¤¤à¥\8d à¤­à¤µà¤¤à¤¿, à¤¤à¤¤à¥\8d à¤µà¤¿à¤¨à¤¾ à¤\85नà¥\81मतà¥\8dया à¤\85तà¥\8dर à¤²à¤¿à¤\96तà¥\81à¤\82 à¤¨ à¤¶à¤\95à¥\8dयतà¥\87 à¥¤</strong>",
+    "copyrightwarning2": "à¤\95à¥\83पया à¤§à¥\8dयानà¤\82 à¤¦à¤¦à¤¾à¤¤à¥\81 à¤¯à¤¤à¥\8d, {{SITENAME}} à¤\87तà¥\8dयतà¥\8dर à¤\95à¥\83तानि à¤¸à¤°à¥\8dवाणि à¤¯à¥\8bà¤\97दानानि à¤\85नà¥\8dययà¥\8bà¤\9cà¤\95à¥\88à¤\83 à¤¸à¤®à¥\8dपादयितà¥\81à¤\82, à¤ªà¤°à¤¿à¤°à¥\8dवतितà¥\81à¤\82, à¤¨à¤¿à¤·à¥\8dà¤\95ाशयितà¥\81à¤\82 à¤\9a à¤¶à¤\95à¥\8dयनà¥\8dतà¥\87 à¥¤ \nभवानà¥\8d/भवतà¥\80 à¤¸à¥\8dवसà¥\8dय à¤¯à¥\8bà¤\97दानà¥\87षà¥\81 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन-पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन-à¤\86दिनि à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनानि à¤¦à¥\8dरषà¥\8dà¤\9fà¥\81à¤\82 à¤¨ à¤¶à¤\95à¥\8dनà¥\8bति à¤\9aà¥\87तà¥\8d, à¤\85तà¥\8dर à¤¯à¥\8bà¤\97दानà¤\82 à¤®à¤¾ à¤\95रà¥\8bतà¥\81 à¥¤ (à¤\85तà¥\8dर à¤¤à¥\81 à¤²à¤¿à¤\96ितà¥\87 à¤¨à¤¿à¤°à¤¨à¥\8dतरà¤\82 à¤ªà¤¿à¤°à¤µà¤°à¥\8dतनà¤\82 à¤­à¤µà¤¤à¥\8dयà¥\87व à¤\87ति à¤­à¤¾à¤µà¤\83)\n<br />\n\nà¤\85सà¥\8dमभà¥\8dयà¤\82 à¤­à¤µà¤¤à¤¾/भवतà¥\8dया à¤ªà¥\8dरतिà¤\9cà¥\8dà¤\9eा à¤\95रà¥\8dतवà¥\8dया à¤¯à¤¤à¥\8d, \"à¤\85तà¥\8dर à¤¯à¤¤à¥\8dà¤\95िमपि à¤­à¤µà¤¾à¤¨à¥\8d/भवतà¥\80 à¤²à¥\87à¤\96िषà¥\8dयति, à¤¤à¤¤à¥\8d à¤¸à¤°à¥\8dवà¤\82 à¤¸à¥\8dवरà¤\9aितà¤\82, à¤¸à¤¾à¤°à¥\8dवà¤\9cनà¥\80à¤\95à¤\82 à¤\9a à¤­à¤µà¤¿à¤·à¥\8dयति à¥¤ à¤\95à¥\81तसà¥\8dमातà¥\8d à¤¸à¥\8dथानातà¥\8d à¤ªà¥\8dरतिलिपिà¤\95à¥\83तमà¥\8d à¤\85पि à¤¸à¤¾à¤°à¥\8dवà¤\9cनà¥\80à¤\95मà¥\87व à¤¸à¥\8dयातà¥\8d\" à¤\87ति à¥¤ \n<strong>à¤\85नà¥\8dयसà¥\8dय à¤¸à¤°à¥\8dवाधिà¤\95ारानà¥\8dतरà¥\8dà¤\97तà¤\82 (copyright) à¤¯à¤¤à¥\8d à¤­à¤µà¤¤à¤¿, à¤¤à¤¤à¥\8d à¤µà¤¿à¤¨à¤¾ à¤\85नà¥\81मतà¥\8dया à¤\85तà¥\8dर à¤²à¤¿à¤\96तà¥\81à¤\82 à¤¨ à¤¶à¤\95à¥\8dयतà¥\87 à¥¤</strong>",
+    "longpageerror": "<strong>दोषः : भवता/भवत्या लिखितः पाठः  {{PLURAL:$1|सहाष्टकं|$1 सहाष्टकानि}} दीर्घः अस्ति । एषः पाठः बृह्त्तमसीमया अपेक्षया {{PLURAL:$2|सहाष्टकं|$2 सहाष्टकानि}} दीर्घः अस्ति ।(सहस्राष्टकानि (kilobytes) इत्यस्य सङ्क्षेपः सहाष्टकम्)</strong>\nएतत् रक्षितुं न शक्यते ।",
+    "readonlywarning": "<strong>पूर्वसूचना : दत्तांशः (database) किलितः अस्ति । अतः अधुना भवान्/भवती स्वस्य सम्पादनं रक्षितुं न शक्नोति ।</strong>\nस्वस्य परिवर्तितस्य लेखस्य .txt .doc वा सञ्चिकां निर्माय किञ्चित् कालानन्तरं रक्षतु । \nदत्तांश-किलनस्य कारणं प्रबन्धकेन दत्तं यत्, : $1",
+    "protectedpagewarning": "'''पूर्वसूचना : पृष्ठमेतत् संरक्षितं वर्तते । अतः केवलं प्रबन्धकाः अत्र सम्पादनं कर्तुं शक्नुवन्ति ।'''\n\nसद्यःकालीना संरक्षितावलिः (log) अधः दत्ता अस्ति :",
+    "semiprotectedpagewarning": "'''पà¥\82रà¥\8dवसà¥\82à¤\9aना : à¤ªà¥\83षà¥\8dठमà¥\87ततà¥\8d à¤¸à¤\82रà¤\95à¥\8dषितà¤\82 à¤µà¤°à¥\8dततà¥\87 à¥¤ à¤\85तà¤\83 à¤\95à¥\87वलà¤\82 à¤ªà¤\9eà¥\8dà¤\9cिà¤\95à¥\83तयà¥\8bà¤\9cà¤\95ाà¤\83 à¤\85तà¥\8dर à¤¸à¤®à¥\8dपादनà¤\82 à¤\95रà¥\8dतà¥\81à¤\82 à¤¶à¤\95à¥\8dनà¥\81वनà¥\8dति à¥¤'''\n\nसदà¥\8dयà¤\83à¤\95ालà¥\80ना à¤¸à¤\82रà¤\95à¥\8dषितावलिà¤\83 (log) à¤\85धà¤\83 à¤¦à¤¤à¥\8dता à¤\85सà¥\8dति :",
+    "cascadeprotectedwarning": "'''पूर्वसूचना :''' पृष्ठमेतत् संरक्षितं वर्तते । अतः केवलं प्रबन्धकाः अत्र सम्पादनं कर्तुं शक्नुवन्ति ।\nनिम्ननियमान्तर्गतम् एतत्{{PLURAL:$1|पृष्ठं रक्षितं|पृष्ठानि रक्षितानि}}:",
+    "titleprotectedwarning": "'''पूर्वसूचना : एतत् पृष्ठं संरक्षितम् अस्ति । अतः अस्य सम्पादनं कर्तुं [[Special:ListGroupRights|विशेषाधिकारः]] अपेक्ष्यते ।'''\nसद्यःकालीना संरक्षितावलिः (log) अधः दत्ता अस्ति :",
     "templatesused": "अस्मिन् पृष्ठे प्रयुक्त{{PLURAL:$1|फलकम्|फलकानि}}:",
-    "templatesusedpreview": "अस्मिन् प्राग्दृश्ये प्रयुक्ताः {{PLURAL:$1|बिंबधराः |बिंबधराः}}:",
-    "templatesusedsection": "{{PLURAL:$1|Template|Templates}} अस्मिन् विभागे उपयुक्तम् ।",
+    "templatesusedpreview": "अस्मिन् प्राग्दृश्ये प्रयुक्त{{PLURAL:$1|फलकम्|फलकानि}}:",
+    "templatesusedsection": "अस्मिन् विभागे प्रयुक्त{{PLURAL:$1|फलकम्|फलकानि}}:",
     "template-protected": "(संरक्षितम्)",
     "template-semiprotected": "अर्धसंरक्षितम्",
     "hiddencategories": "इदं पृष्ठं {{PLURAL:$1|1 निगूढे वर्गे |$1 निगूढेषु वर्गेषु}} अन्तर्भवति :",
-    "nocreatetext": "{{SITENAME}} à¤¨à¥\82तनपà¥\81à¤\9fनिरà¥\8dमाणसà¥\8dय à¤\95à¥\8dषमता à¤¨à¤¿à¤¯à¤¤à¤¾ à¥¤ à¤µà¤°à¥\8dतमानापà¥\81à¤\9fानाà¤\82 à¤¸à¤®à¥\8dपादनारà¥\8dथà¤\82 à¤¨à¤¿à¤°à¥\8dà¤\97à¤\9aà¥\8dà¤\9bतà¥\81 à¥¤ à¤\85थवा [[Special:UserLogin|log in or create an account]].",
-    "nocreate-loggedin": "नà¥\82तनपà¥\81à¤\9fनिरà¥\8dमारà¥\8dथम् अनुमतिः नास्ति ।",
-    "sectioneditnotsupported-title": "विभाà¤\97समà¥\8dपादनà¤\82 à¤¨ à¤ªà¥\8bषितमà¥\8d à¥¤",
-    "sectioneditnotsupported-text": "à¤\85सà¥\8dमिनà¥\8d à¤ªà¥\81à¤\9fà¥\87 à¤µà¤¿à¤­à¤¾à¤\97समà¥\8dपादनणà¥\8d à¤¨ à¤ªà¥\8bषितमà¥\8d ।",
-    "permissionserrors": "à¤\85नà¥\81à¤\9cà¥\8dà¤\9eा-विभà¥\8dरमाः",
-    "permissionserrorstext": "भवानà¥\8d à¤¤à¤¤à¥\8d à¤\95रà¥\8dतà¥\81à¤\82 à¤\85नà¥\81à¤\9cà¥\8dà¤\9eाà¤\82 à¤¨ à¤§à¤¾à¤°à¤¯à¤¤à¤¿ {{PLURAL:$1|à¤\85धà¥\8bऽà¤\99à¥\8dà¤\95ितातà¥\8d à¤\95ारणातà¥\8d |à¤\85धà¥\8bऽà¤\99à¥\8dà¤\95ितà¥\87भà¥\8dयà¤\83 à¤\95ारणà¥\87भà¥\8dयà¤\83:}}",
+    "nocreatetext": "{{SITENAME}} à¤\9cालसà¥\8dथानà¥\87ऽसà¥\8dमिनà¥\8d à¤¨à¤µà¥\80नपà¥\83षà¥\8dठनिरà¥\8dमातà¥\81मà¥\8d à¤\85नà¥\81मतिà¤\83 à¤¨ à¤µà¤¿à¤¦à¥\8dयतà¥\87 à¥¤\nभवानà¥\8d/भवतà¥\80 à¤ªà¥\8dरतिà¤\97तà¥\8dवा à¤µà¤¿à¤¦à¥\8dयमानà¤\82 à¤ªà¥\83षà¥\8dठà¤\82 à¤¸à¤®à¥\8dपादयतà¥\81 à¤¶à¤\95à¥\8dनà¥\8bति à¥¤  à¤¸à¤®à¥\8dपादयितà¥\81à¤\82 [[Special:UserLogin|पà¥\8dरविशà¥\8dयतामà¥\8d à¤¸à¤¦à¤¸à¥\8dयता à¤ªà¥\8dरापà¥\8dयतामà¥\8d à¤µà¤¾]].",
+    "nocreate-loggedin": "भवतà¤\83/भवतà¥\8dयाà¤\83 à¤ªà¤¾à¤°à¥\8dशà¥\8dवà¥\87 à¤¨à¤µà¥\80नपà¥\83षà¥\8dठà¤\82 à¤°à¤\9aितà¥\81म् अनुमतिः नास्ति ।",
+    "sectioneditnotsupported-title": "विभाà¤\97सà¥\8dय à¤¸à¤®à¥\8dपादनà¤\82 à¤¶à¤\95à¥\8dयà¤\82 à¤¨à¤¾à¤¸à¥\8dति",
+    "sectioneditnotsupported-text": "पà¥\83षà¥\8dठà¥\87ऽसà¥\8dमिनà¥\8d à¤µà¤¿à¤­à¤¾à¤\97समà¥\8dपादनà¤\82 à¤¶à¤\95à¥\8dयà¤\82 à¤¨à¤¾à¤¸à¥\8dति ।",
+    "permissionserrors": "à¤\85नà¥\81मतिदà¥\8bषः",
+    "permissionserrorstext": "à¤\8fततà¥\8d à¤\95रà¥\8dतà¥\81à¤\82 à¤­à¤µà¤¤à¤\83/भवतà¥\8dयाà¤\83 à¤ªà¤¾à¤°à¥\8dशà¥\8dवà¥\87 à¤\85नà¥\81मति à¤¨à¤¾à¤¸à¥\8dति, à¤¨à¤¿à¤®à¥\8dन{{PLURAL:$1|à¤\95ारणमà¥\8d|à¤\95ारणानि}}:",
     "permissionserrorstext-withaction": "$1 निम्नकारणत्वात्  $2 सम्पादनस्य अनुमतिः नास्ति ।\n{{PLURAL:$1|कारणम्|कारणानि}}:",
-    "recreate-moveddeleted-warn": "'''पूर्वसूचना: पूर्वम् अपाकृतं पृष्टं भवता रच्यमानम् अस्ति ।'''\nअस्य पृष्ठस्य सम्पादनं करणात् प्राक् गभीरतया चिन्तनं करोतु ।\nअस्य पृष्ठस्य निर्माणं न्यायसङ्गतम् इति भवतः/भवत्याः मतमस्ति चेत् अत्र परिवर्तनं करोतु । सौकर्यार्थं पृष्ठ-अपाकरणस्य प्राक्तनसम्पादनस्य आवलिः अत्र वर्तते ।",
+    "recreate-moveddeleted-warn": "'''पूर्वसूचना: पूर्वम् अपाकृतं पृष्टं भवता रच्यमानम् अस्ति ।'''\nअस्य पृष्ठस्य सम्पादनं करणात् प्राक् गभीरतया चिन्तनं करोतु ।\nअस्य पृष्ठस्य निर्माणं न्यायसङ्गतम् इति भवतः/भवत्याः मतमस्ति चेत्, अत्र परिवर्तनं करोतु । सौकर्यार्थं पृष्ठ-अपाकरणस्य प्राक्तनसम्पादनस्य आवलिः अत्र दीयते ।",
     "moveddeleted-notice": "इदं पृष्ठम् अपाकृतम् अस्ति।\nअस्य अपाकरणस्य, स्थानान्तरणस्य च विवरणम् अधः प्रदत्तम् ।",
-    "log-fulllog": "पूर्ण प्रवर्तनरेख पश्यतु",
-    "edit-hook-aborted": "पाशेन (हुक् इत्यनेन) सम्पादनं परित्यक्तम्।\nअनेन न किमपि कारणं प्रदत्तम्।",
-    "edit-gone-missing": "पà¥\83षà¥\8dठà¤\82 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतितà¥\81à¤\82 à¤¨à¤¾à¤ªà¤¾à¤°à¤¯à¤¤à¥\8d।\nपà¥\8dरतà¥\80यतà¥\87 à¤¯à¤¦à¤¿à¤¦à¤\82 à¤\85पाà¤\95à¥\83तमसà¥\8dति।",
-    "edit-conflict": "सम्पादनयोः/सम्पादनानां अन्तर्विरोधः।",
-    "edit-no-change": "भवतà¤\83 à¤¸à¤®à¥\8dपादनमà¥\8d à¤\89पà¥\87à¤\95à¥\8dषितमà¥\8d, à¤¯à¤¤à¥\8b à¤¹à¤¿ à¤­à¤µà¤¤à¤¾ à¤ªà¤¾à¤ à¥\87 à¤¨ à¤\95िमपि à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनà¤\82 à¤\95à¥\83तमà¥\8d।",
+    "log-fulllog": "पूर्णसंरक्षितावलिं दृश्यताम्",
+    "edit-hook-aborted": "hook द्वारा सम्पादनक्रिया मध्ये एव स्थगिता । स्थगनस्य कारणं न दत्तम् ।",
+    "edit-gone-missing": "à¤\85सà¥\8dमिनà¥\8d à¤ªà¥\83षà¥\8dठà¥\87 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनà¤\82 à¤¨à¤¾à¤­à¥\82तà¥\8d à¥¤\nà¤\8fततà¥\8d à¤ªà¥\83षà¥\8dठà¤\82 à¤ªà¥\81रा à¤\8fव à¤\95à¥\87नापि à¤\85पाà¤\95à¥\83तमà¥\8d à¤\87ति à¤­à¤¾à¤¤à¤¿ ।",
+    "edit-conflict": "सम्पादनयोः अन्तर्विरोधः ।",
+    "edit-no-change": "भवता/भवतà¥\8dया à¤\95à¥\83तà¤\82 à¤¸à¤®à¥\8dपादमà¥\8d à¤\85वà¤\97णितमà¥\8d à¥¤ à¤\95ारणà¤\82 à¤²à¥\87à¤\96à¥\87 à¤¨ à¤\95िमपि à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनà¤\82 à¤\9cातमसà¥\8dति ।",
     "postedit-confirmation": "सम्पादनं रक्षितम् ।",
-    "edit-already-exists": "नूतनं पृष्ठं स्रष्टुं नापारयत्।\nइदं पूर्वे एव विद्यते।",
-    "defaultmessagetext": "सन्देशपाठं स्थिरयतु ।",
-    "invalid-content-data": "अमान्यः सामग्रीदत्तांशः",
-    "content-not-allowed-here": "[[$2]] इति पृष्ठे \"$1\" सामग्री अनुमता नास्ति।",
-    "editwarning-warning": "अस्मात् पृष्ठात् गमनेन अत्र भवता कृतानि परिवर्तनानि निष्फलानि भवेयुः ।\nभवता यदि प्रविष्टं तर्हि मम इष्टतमानि इत्यत्र अस्मिन् विभागे सम्पादनेन एषः प्रबोधः यथा न आगच्छेत् तथा कर्तुं शक्यते ।",
+    "edit-already-exists": "नूतनपृष्ठस्य निर्माणं नाभूत् ।\nपूर्वस्मादेव एतत् पृष्ठं विद्यते ।",
+    "defaultmessagetext": "मूलसन्देशः",
+    "content-failed-to-parse": "$1 कृते $2 इत्यस्य विभाजनं विफलम् अभवत् । दोषः : $3",
+    "invalid-content-data": "अयोग्यः लेखः",
+    "content-not-allowed-here": "[[$2]] पृष्ठे \"$1\" सामग्री अनुमता नास्ति",
+    "editwarning-warning": "एतत् पृष्ठं त्यक्तवा यदि गमिष्यति, तर्हि भवता/भवत्या कृतस्य सम्पादनस्य रक्षणं न भविष्यति ।\n\nभवता/भवत्या यदि प्रवेशः प्राप्तः अस्ति, तर्हि एषा सूचना अत्र \"{{int:prefs-editing}}\" निगूढितुं शक्यते ।",
+    "editpage-notsupportedcontentformat-title": "लेखस्य प्रारूपम् अयोग्यम्",
+    "editpage-notsupportedcontentformat-text": "लेखस्य सामग्र्याः $1 इति प्रारूपं $2 सामग्री-उदाहरणानुगुणं नास्ति ।",
     "content-model-wikitext": "विकिपाठः",
     "content-model-text": "शुद्धपाठः",
     "content-model-javascript": "जावालिपिः",
     "content-model-css": "सी-एस्-एस्",
-    "expensive-parserfunction-warning": "'''प्रबोधः :''' अस्मिन् पृष्ठे प्रभूतानि जटिलानि पार्सर्-फ़ंक्शन्-आह्वानानि सन्ति।\nअत्र $2 संख्यातः  {{PLURAL:$2|न्यूनं आह्वानं|न्यूनानि आह्वानानि}} भवितव्यानि, सद्यः तत्र {{PLURAL:$1 $1 आह्वानं विद्यते|$1 आह्वानानि विद्यन्ते}}।",
-    "expensive-parserfunction-category": "पà¥\8dरभà¥\82तà¥\87भà¥\8dयà¤\83 à¤\9cà¤\9fिलà¥\87भà¥\8dयà¤\83 à¤ªà¤¾à¤°à¥\8dसरà¥\8d-फà¤\82à¤\95à¥\8dशनà¥\8d-à¤\86हà¥\8dवानà¥\87भà¥\8dयà¤\83 à¤¯à¥\81à¤\95à¥\8dतानि à¤ªà¥\83षà¥\8dठाणि।",
+    "expensive-parserfunction-warning": "<strong>पूर्वसूचना :</strong> अस्मिन् पृष्ठे बहवः विभाजिताः नियोजिताः (functions) विद्यन्ते ।\n\nअत्र न्यूनातिन्यूनं $2 {{PLURAL:$2|आह्वानं|आह्वानानि}} शक्यते । तत्र {{PLURAL:$1|अधुना $1 आह्वाहनं|अधिना $1 आह्वाहनानि}}",
+    "expensive-parserfunction-category": "à¤\85सà¥\8dमिनà¥\8d à¤ªà¥\83षà¥\8dठà¥\87 à¤¬à¤¹à¤µà¤\83 à¤µà¤¿à¤­à¤¾à¤\9cिताà¤\83 à¤¨à¤¿à¤¯à¥\8bà¤\9cिताà¤\83 (functions) à¤µà¤¿à¤¦à¥\8dयनà¥\8dतà¥\87 ।",
     "post-expand-template-inclusion-warning": "'''पूर्वसूचना:''' फलकस्य आकारः बृहत् वर्तते । कानिचन फलकानि नान्तर्भविष्यन्ति ।",
     "post-expand-template-inclusion-category": "सूचनाफलकस्य अपेक्षया पृष्ठं बृहत् वर्तते ।",
     "post-expand-template-argument-warning": "'''पूर्वसूचना''' अस्मिन् पृष्ठे स्थितस्य फलकस्य एकः विकल्पः बहु बृहत् वर्तते । तस्य विकल्पस्य अंशाः अपाकृताः ।",
     "booksources-invalid-isbn": "दत्तं ISBN मान्यम् इति  न भाति । मूलस्रोततः प्रतिकृतीः कर्तुं परिशीलयतु ।",
     "specialloguserlabel": "आचारी :",
     "speciallogtitlelabel": "लक्ष्यम् (शीर्षकम् / योजकः)",
-    "log": "सà¤\82सक्षितावल्यः (Logs)",
+    "log": "सà¤\82रक्षितावल्यः (Logs)",
     "all-logs-page": "सर्वसार्वजनिकप्रवेशः ।",
     "alllogstext": "{{SITENAME}}इत्यस्य उबलब्धप्रवेशानां  संयुक्तप्रदर्शनम् ।\nप्रवेशप्रकारं चित्वा भवान् दृश्यं क्षाययितुं शक्नोति । योजकनाम,  सदस्य नाम (ह्रस्वदीर्घाक्षरसंवादी) प्रभावितपुटम् ।",
     "logempty": "प्रवेशे मेलयुक्तपुटं नास्ति ।",
index 371fe22..4e3c41b 100644 (file)
     "trackingcategories-msg": "The Trackin Categerie",
     "trackingcategories-name": "The Message name",
     "trackingcategories-desc": "Categerie inclusion criteria",
-    "noindex-category-desc": "The page haes ae <nowiki>__NOINDEX__</nowiki> mageec waird oan it (n is in ae namespace whaur that flag is permitit), n sae it's na indext bi the robots.",
-    "index-category-desc": "The page haes ae <nowiki>__INDEX__</nowiki> oan it (n is in ae namespace whaur that flag is permitit), n sae it's indext bi the robots whaur it widna normallie be.",
+    "noindex-category-desc": "The page haes ae <code><nowiki>__NOINDEX__</nowiki></code> mageec waird oan it (n is in ae namespace whaur that flag is permitit), n sae it's na indext bi the robots.",
+    "index-category-desc": "The page haes ae <code><nowiki>__INDEX__</nowiki></code> oan it (n is in ae namespace whaur that flag is permitit), n sae it's indext bi the robots whaur it widna normallie be.",
     "post-expand-template-inclusion-category-desc": "Efter makin aw o the templates muckler, the page size is muckler than <code>$wgMaxArticleSize</code>, sae some templates were na makit muckler.",
     "post-expand-template-argument-category-desc": "Efter makin ae template argument muckler (sommit in triple braces, lik <code>{{{Foo}}})</code>, the page is muckler than <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Ower monie expenseeve parser functions (lik <code>#ifexist</code>) incluidit oan ae page. See [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
     "broken-file-category-desc": "Categerie eikit gif the page contains ae broken file airtin (aen airtin tae embed ae file whan the file disna exeest).",
-    "hidden-category-category-desc": "This is ae categerie wi <nowiki>__HIDDENCAT__</nowiki> oan it, This prevents it fae shawin up in the categerie airtins kist oan pages, bi defaut.",
+    "hidden-category-category-desc": "This is ae categerie wi <code><nowiki>__HIDDENCAT__</nowiki></code> oan it, This prevents it fae shawin up in the categerie airtins kist oan pages, bi defaut.",
     "trackingcategories-nodesc": "Nae descreeption is available.",
     "trackingcategories-disabled": "The categerie is disabled",
     "mailnologin": "Nae send address",
index 76aeb70..8eeaa66 100644 (file)
     "disclaimers": "غيرجوابداريناما",
     "disclaimerpage": "Project:عام غيرجوابدارينامو",
     "edithelp": "مدد براءِ ترميم",
-    "helppage": "Help:فهرست",
     "mainpage": "مُک صفحو",
     "mainpage-description": "مُک صفحو",
     "policy-url": "Project:پاليسي",
index 4314c32..f44eb45 100644 (file)
     "currentevents-url": "Project:Âsango",
     "disclaimers": "Zïngö-lê",
     "disclaimerpage": "Project:Zïngö-lê",
-    "helppage": "Help:Münä",
     "mainpage": "Gä nzönî",
     "mainpage-description": "Gä nzönî",
     "portal": "Âsëwä",
index 1cda834..193cc93 100644 (file)
     "trackingcategories-msg": "Sledilna kategorija",
     "trackingcategories-name": "Ime sporočila",
     "trackingcategories-desc": "Merila za vključitev v kategorijo",
-    "noindex-category-desc": "Stran vsebuje čarobno besedo <nowiki>__NOINDEX__</nowiki> (in je v imenskem prostoru, ki dovoljuje to oznako) in posledično je roboti ne indeksirajo.",
-    "index-category-desc": "Stran vsebuje čarobno besedo <nowiki>__INDEX__</nowiki> (in je v imenskem prostoru, ki dovoljuje to oznako) in posledično jo roboti indeksirajo, čeprav je drugače ne bi.",
+    "noindex-category-desc": "Stran vsebuje čarobno besedo <code><nowiki>__NOINDEX__</nowiki></code> (in je v imenskem prostoru, ki dovoljuje to oznako) in posledično je roboti ne indeksirajo.",
+    "index-category-desc": "Stran vsebuje čarobno besedo <code><nowiki>__INDEX__</nowiki></code> (in je v imenskem prostoru, ki dovoljuje to oznako) in posledično jo roboti indeksirajo, čeprav je drugače ne bi.",
     "post-expand-template-inclusion-category-desc": "Po razširitvi vseh predlog je velikost strani več kot <code>$wgMaxArticleSize</code>, zato nekaterih predlog nismo razširili.",
     "post-expand-template-argument-category-desc": "Po razširitvi argumentov predloge (nekaj v trojnih narekovajih, npr. <code>{{{Foo}}})</code> je stran večja od <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Stran vsebuje preveč dragih razčlenitvenih funkcij (npr. <code>#ifexist</code>). Glejte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
     "broken-file-category-desc": "Kategorijo smo dodali, če stan vsebuje pokvarjeno povezavo na datoteko (povezavo na vključeno datoteko, ki ne obstaja).",
-    "hidden-category-category-desc": "To je kategorija s <nowiki>__HIDDENCAT__</nowiki>, kar ji preprečuje, da se po privzetem prikazuje v okvirju s povezavami na kategorije strani.",
+    "hidden-category-category-desc": "To je kategorija s <code><nowiki>__HIDDENCAT__</nowiki></code>, kar ji preprečuje, da se po privzetem prikazuje v okvirju s povezavami na kategorije strani.",
     "trackingcategories-nodesc": "Opis ni na voljo.",
     "trackingcategories-disabled": "Kategorija je onemogočena",
     "mailnologin": "Manjka naslov pošiljatelja",
index b743f01..1a8edef 100644 (file)
     "disclaimers": "Friijavuohte vastideamis",
     "disclaimerpage": "Project:Bäjjesereaktah",
     "edithelp": "Sjiehtedimmie viehkie",
-    "helppage": "Help:Sisvege",
     "mainpage": "Aalkoebielie",
     "mainpage-description": "Aalkoebielie",
     "portal": "Meatan portaale",
index 63d4441..52a79fe 100644 (file)
     "create-this-page": "Направи ову страницу",
     "delete": "Обриши",
     "deletethispage": "Обриши ову страницу",
-    "undeletethispage": "Ð\9fоврати ову страницу",
+    "undeletethispage": "Ð\92рати ову страницу",
     "undelete_short": "Врати {{PLURAL:$1|једну обрисану измену|$1 обрисане измене|$1 обрисаних измена}}",
     "viewdeleted_short": "Погледај {{PLURAL:$1|обрисану измену|$1 обрисане измене|$1 обрисаних измена}}",
     "protect": "Заштити",
     "tooltip-recreate": "Поново направите страницу иако је обрисана",
     "tooltip-upload": "Започните отпремање",
     "tooltip-rollback": "„Врати“ враћа измене последњег корисника једним кликом",
-    "tooltip-undo": "Ð\92Ñ\80аÑ\9bа ову измену и отвара образац за уређивање.",
+    "tooltip-undo": "Ð\9fониÑ\88Ñ\82ава ову измену и отвара образац за уређивање.",
     "tooltip-preferences-save": "Сачувај поставке",
     "tooltip-summary": "Унесите кратак опис",
     "common.css": "/** CSS постављен овде ће се одразити на све теме */",
index 24141d1..568c413 100644 (file)
     "actions": "Radnje",
     "namespaces": "Imenski prostori",
     "variants": "Varijante",
+    "navigation-heading": "Navigacioni meni",
     "errorpagetitle": "Greška",
     "returnto": "Nazad na $1.",
     "tagline": "Izvor: {{SITENAME}}",
     "create-this-page": "Napravi ovu stranicu",
     "delete": "Obriši",
     "deletethispage": "Obriši ovu stranicu",
+    "undeletethispage": "Vrati ovu stranicu",
     "undelete_short": "Vrati {{PLURAL:$1|jednu obrisanu izmenu|$1 obrisane izmene|$1 obrisanih izmena}}",
     "viewdeleted_short": "Pogledaj {{PLURAL:$1|obrisanu izmenu|$1 obrisane izmene|$1 obrisanih izmena}}",
     "protect": "Zaštiti",
     "error": "Greška",
     "databaseerror": "Greška u bazi podataka",
     "databaseerror-text": "Došlo je do greške u upitu baze podataka. Možda je u pitanju programska greška.",
+    "databaseerror-function": "Funkcija: $1",
+    "databaseerror-error": "Greška: $1",
     "laggedslavemode": "'''Upozorenje:''' stranica je možda zastarela.",
     "readonly": "Baza podataka je zaključana",
     "enterlockreason": "Unesite razlog za zaključavanje, uključujući i vreme otključavanja",
     "namespaceprotected": "Nemate dozvolu da uređujete stranice u imenskom prostoru '''$1'''.",
     "customcssprotected": "Nemate dozvolu da menjate ovu CSS stranicu jer sadrži lične postavke drugog korisnika.",
     "customjsprotected": "Nemate dozvolu da menjate ovu stranicu javaskripta jer sadrži lične postavke drugog korisnika.",
+    "mycustomcssprotected": "Nemate dozvolu za menjanje ove CSS stranice.",
+    "mycustomjsprotected": "Nemate dozvolu za menjanje ove JavaScript stranice.",
+    "myprivateinfoprotected": "Nemate dozvolu za menjanje vaših ličnih informacija.",
+    "mypreferencesprotected": "Nemate dozvolu za menjanje vaših podešavanja.",
     "ns-specialprotected": "Posebne stranice se ne mogu uređivati.",
     "titleprotected": "Ovaj naziv je [[User:$1|$1]] zaštitio od pravljenja. Razlog: ''$2''.",
     "filereadonlyerror": "Ne mogu da izmenim datoteku „$1“ jer je riznica „$2“ u režimu za čitanje.\n\nAdministrator koji ju je zaključao ponudio je sledeće objašnjenje: „$3“.",
     "invalidtitle-unknownnamespace": "Neispravan naslov s imenskim prostorom br. $1 i tekstom „$2“",
     "exception-nologin": "Niste prijavljeni",
     "exception-nologin-text": "[[Special:Userlogin|Prijavite se]] da biste pristupili ovoj stranici ili radnji.",
+    "exception-nologin-text-manual": "Morate biti $1 da biste pristupili ovoj stranici ili radnji.",
     "virus-badscanner": "Neispravna postavka: nepoznati skener za viruse: ''$1''",
     "virus-scanfailed": "neuspešno skeniranje (kod $1)",
     "virus-unknownscanner": "nepoznati antivirus:",
     "yourname": "Korisničko ime:",
     "userlogin-yourname": "Korisničko ime",
     "userlogin-yourname-ph": "Unesite vaše korisničko ime",
+    "createacct-another-username-ph": "Unesite korisničko ime",
     "yourpassword": "Lozinka:",
     "userlogin-yourpassword": "Lozinka",
     "userlogin-yourpassword-ph": "Unesite vašu lozinku",
     "gotaccountlink": "Prijava",
     "userlogin-resetlink": "Zaboravili ste podatke za prijavu?",
     "userlogin-resetpassword-link": "Zaboravili ste lozinku?",
+    "userlogin-helplink2": "Pomoć pri prijavljivanju",
+    "userlogin-loggedin": "Već ste prijavljeni kao {{GENDER:$1|$1}}.\nKoristite donji obrazac da biste se prijavili kao drugi korisnik.",
+    "userlogin-createanother": "Otvori još jedan nalog",
     "createacct-join": "Unesite svoje podatke ispod.",
+    "createacct-another-join": "Unesite podatke za novi nalog ispod.",
     "createacct-emailrequired": "Adresa e-pošte",
     "createacct-emailoptional": "Adresa e-pošte (opciono)",
     "createacct-email-ph": "Unesite vašu adresu e-pоšte",
+    "createacct-another-email-ph": "Unesite adresu e-pošte",
     "createaccountmail": "Koristite privremenu, slučajno stvorenu lozinku i pošaljite na navedenu adresu elektronske pošte",
     "createacct-realname": "Pravo ime (opciono)",
     "createaccountreason": "Razlog:",
     "createacct-captcha": "Sigurnosna provera",
     "createacct-imgcaptcha-ph": "Unesite tekst koji vidite iznad",
     "createacct-submit": "Otvori nalog",
+    "createacct-another-submit": "Otvori još jedan nalog",
     "createacct-benefit-heading": "{{SITENAME}} je napravljen od strane ljudi kao što ste vi.",
+    "createacct-benefit-body1": "{{PLURAL:$1|izmena|izmene}}",
+    "createacct-benefit-body2": "{{PLURAL:$1|stranica|stranice}}",
     "createacct-benefit-body3": "skorašnjih {{PLURAL:$1|doprinosa}}",
     "badretype": "Unete lozinke se ne poklapaju.",
     "userexists": "Korisničko ime je zauzeto. Izaberite drugo.",
     "login-abort-generic": "Neuspešna prijava – prekinuto",
     "loginlanguagelabel": "Jezik: $1",
     "suspicious-userlogout": "Vaš zahtev za odjavu je odbijen jer je poslat od strane neispravnog pregledača ili posrednika.",
+    "createacct-another-realname-tip": "Pravo ime nije obavezno.\nAko izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rada.",
     "pt-login": "Prijavi me",
     "pt-login-button": "Prijavi me",
     "pt-createaccount": "Otvori nalog",
     "pt-userlogout": "Odjavi me",
     "php-mail-error-unknown": "Nepoznata greška u funkciji PHP mail().",
     "user-mail-no-addy": "Pokušali ste da pošaljete poruku bez e-adrese.",
+    "user-mail-no-body": "Pokušano slanje elektronske poruke s praznim ili nerazumno kratkim sadržajem.",
     "changepassword": "Promeni lozinku",
-    "resetpass_announce": "Prijavljeni ste s privremenom lozinkom.\nDa biste završili prijavu, podesite novu lozinku ovde:",
+    "resetpass_announce": "Da biste završili prijavu, podesite novu lozinku ovde.",
     "resetpass_text": "<!-- Ovde unesite tekst -->",
     "resetpass_header": "Promena lozinke naloga",
     "oldpassword": "Stara lozinka:",
     "resetpass-submit-loggedin": "Promeni lozinku",
     "resetpass-submit-cancel": "Otkaži",
     "resetpass-wrong-oldpass": "Neispravna privremena ili tekuća lozinka.\nMožda ste već promenili lozinku ili ste zatražili novu privremenu lozinku.",
+    "resetpass-recycled": "Uneli ste sadašnju lozinku, da bi ste resetovali lozinku morate uneti novu.",
+    "resetpass-temp-emailed": "Prijavili ste se sa privremenim kodom iz e-pošte.\nDa biste završili prijavljivanje morate postaviti novu lozinku ovde:",
     "resetpass-temp-password": "Privremena lozinka:",
+    "resetpass-abort-generic": "Promenu lozinke je sprečio dodatak.",
+    "resetpass-expired": "Vaša lozinka je istekla. Postavite novu lozinku da biste se prijavili.",
+    "resetpass-expired-soft": "Vaša lozinka je istekla i morate postaviti novu. Postavite novu lozinku ili kliknite „{{int:resetpass-submit-cancel}}“ da je postavite kasnije.",
     "passwordreset": "Obnavljanje lozinke",
     "passwordreset-text-one": "Popunite ovaj obrazac da biste resetovali lozinku.",
     "passwordreset-text-many": "{{PLURAL:$1|Ispunite jedno od polja kako bi ste dobili privremenu lozinku na e-poštu.}}",
     "passwordreset-legend": "Poništi lozinku",
     "passwordreset-disabled": "Obnavljanje lozinke je onemogućeno na ovom vikiju.",
+    "passwordreset-emaildisabled": "E-pošta je onemogućena na ovom vikiju.",
     "passwordreset-username": "Korisničko ime:",
     "passwordreset-domain": "Domen:",
     "passwordreset-capture": "Pogledati krajnju poruku?",
     "changeemail-none": "(ništa)",
     "changeemail-submit": "Promeni",
     "changeemail-cancel": "Otkaži",
+    "resettokens-token-label": "$1 (trenutna vrednost: $2)",
     "bold_sample": "Podebljan tekst",
     "bold_tip": "Podebljan tekst",
     "italic_sample": "Iskošeni tekst",
     "copyrightwarning": "Imajte na umu da se svi doprinosi na ovom vikiju smatraju kao objavljeni pod licencom $2 (više na $1).\nAko ne želite da se vaši tekstovi menjaju i razmenjuju bez ograničenja, onda ih ne šaljite ovde.<br />\nIsto tako obećavate da ste vi autor teksta, ili da ste ga umnožili s izvora koji je u javnom vlasništvu.\n'''Ne šaljite radove zaštićene autorskim pravima bez dozvole!'''",
     "copyrightwarning2": "Imajte na umu da se svi doprinosi na ovom vikiju mogu menjati, vraćati ili brisati od drugih korisnika.\nAko ne želite da se vaši tekstovi slobodno menjaju i raspodeljuju, ne šaljite ih ovde.<br />\nIsto tako obećavate da ste vi autor teksta, ili da ste ga umnožili s izvora koji je u javnom vlasništvu (više na $1).\n'''Ne šaljite radove zaštićene autorskim pravima bez dozvole!'''",
     "longpageerror": "'''Greška: tekst koji ste uneli je veličine {{PLURAL:$1|jedan kilobajt|$1 kilobajta|$1 kilobajta}}, što je veće od {{PLURAL:$2|dozvoljenog jednog kilobajta|dozvoljena $2 kilobajta|dozvoljenih $2 kilobajta}}.'''\nStranica ne može biti sačuvana.",
-    "readonlywarning": "'''Upozorenje: baza podataka je zaključana radi održavanja, tako da nećete moći da sačuvate izmene.\nNajbolje bi bilo da umnožite tekst u uređivač teksta i sačuvate ga za kasnije.'''\n\nAdministrator koji je zaključao bazu podataka je naveo sledeće objašnjenje: $1",
+    "readonlywarning": "<strong>Upozorenje: baza podataka je zaključana radi održavanja, tako da trenutno nećete moći da sačuvate izmene.</strong>\nMožda biste želeli sačuvati tekst za kasnije u nekoj tekstualnoj datoteci.\n\nAdministrator koji je zaključao bazu dao je sledeće objašnjenje: $1",
     "protectedpagewarning": "'''Upozorenje: ova stranica je zaštićena, tako da samo administratori mogu da je menjaju.'''\nPoslednja stavka u istoriji je prikazana ispod:",
     "semiprotectedpagewarning": "'''Napomena:''' ova stranica je zaštićena, tako da samo registrovani korisnici mogu da je uređuju.\nPoslednji zapis u dnevniku je prikazan ispod:",
     "cascadeprotectedwarning": "<div style=\"background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;\">'''Upozorenje:''' Ova stranica je zaštićena tako da je mogu uređivati samo administratori, jer je ona uključena u {{PLURAL:$1|sledeću stranicu koja je|sledeće stranice koje su}} zaštićene „prenosivom“ zaštitom:</div>",
     "content-failed-to-parse": "Ne mogu da raščlanim sadržaj tipa $2 za model $1: $3",
     "invalid-content-data": "Neispravni podaci sadržaja",
     "content-not-allowed-here": "Sadržaj modela „$1“ nije dozvoljen na stranici [[$2]]",
-    "editwarning-warning": "Ako napustite ovu stranicu, izgubićete sve izmene koje ste napravili.\nAko ste prijavljeni, možete onemogućiti ovo upozorenje u svojim podešavanjima, u odeljku „Uređivanje“.",
+    "editwarning-warning": "Ako napustite ovu stranicu, izgubićete sve izmene koje ste napravili.\nAko ste prijavljeni, možete onemogućiti ovo upozorenje u svojim podešavanjima, u odeljku „{{int:prefs-editing}}“.",
     "content-model-wikitext": "vikitekst",
     "content-model-text": "čist tekst",
     "content-model-javascript": "javaskript",
     "undo-failure": "Ova izmena se ne može poništiti zbog konflikta izmena.",
     "undo-norev": "Ne mogu da vratim izmenu jer ne postoji ili je obrisana.",
     "undo-summary": "Poništena izmena $1 {{GENDER:$2|korisnika|korisnice}} [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]])",
+    "undo-summary-username-hidden": "Poništi izmenu $1 skrivenog korisnika",
     "cantcreateaccounttitle": "Ne mogu da otvorim nalog",
     "cantcreateaccount-text": "Otvaranje naloga s ove IP adrese ('''$1''') je {{GENDER:$3|blokirao|blokirala|blokirao}} [[User:$3|$3]].\n\nRazlog koji je naveo {{GENDER:$3|korisnik|korisnica|korisnik}} $3 je ''$2''",
     "viewpagelogs": "Pogledaj dnevnike ove stranice",
     "revdelete-no-file": "Tražena datoteka ne postoji.",
     "revdelete-show-file-confirm": "Želite li da vidite obrisanu izmenu datoteke „<nowiki>$1</nowiki>“ od $2; $3?",
     "revdelete-show-file-submit": "Da",
+    "revdelete-selected-text": "{{PLURAL:$1|Izabrana izmena|Izabrane izmene}} [[:$2]]:",
+    "revdelete-selected-file": "{{PLURAL:$1|Izabrana verzija datoteke|Izabrane verzije datoteke}} [[:$2]]:",
     "logdelete-selected": "{{PLURAL:$1|Izabrana stavka u istoriji|Izabrane stavke u istoriji}}:",
     "revdelete-confirm": "Potvrdite da nameravate ovo uraditi, da razumete posledice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].",
     "revdelete-suppress-text": "Sakrivanje izmena bi trebalo koristiti '''samo''' u sledećim slučajevima:\n* Zlonamerni ili pogrdni podaci\n* Neprikladni lični podaci\n*: ''kućna adresa i broj telefona, broj bankovne kartice itd.''",
     "revdelete-legend": "Ograničenja vidljivosti",
-    "revdelete-hide-text": "sakrij tekst izmene",
+    "revdelete-hide-text": "Tekst revizije",
     "revdelete-hide-image": "Sakrij sadržaj datoteke",
     "revdelete-hide-name": "Sakrij radnju i odredište",
     "revdelete-hide-comment": "Opis izmene",
-    "revdelete-hide-user": "sakrij ime uređivača",
+    "revdelete-hide-user": "Korisnčko ime urednika/IP adresa",
     "revdelete-hide-restricted": "Sakrij podatke od administratora i drugih korisnika",
     "revdelete-radio-same": "(ne menjaj)",
     "revdelete-radio-set": "Sakriveno",
     "preferences": "Podešavanja",
     "mypreferences": "Podešavanja",
     "prefs-edits": "Broj izmena:",
+    "prefsnologintext2": "Morate biti $1 da biste menjali svoja podešavanja.",
     "prefs-skin": "Tema",
     "skin-preview": "Pregledaj",
     "datedefault": "Svejedno",
     "prefs-dateformat": "Format datuma",
     "prefs-timeoffset": "Vremenska razlika",
     "prefs-advancedediting": "Glavna podešavanja",
+    "prefs-editor": "Uređivač",
+    "prefs-preview": "Pretpregled",
     "prefs-advancedrc": "Napredne postavke",
     "prefs-advancedrendering": "Napredne postavke",
     "prefs-advancedsearchoptions": "Napredne postavke",
     "right-unblockself": "odblokiraj samog sebe",
     "right-protect": "promeni nivoe zaštite i uredi stranice sa prenosivom zaštitom",
     "right-editprotected": "uredi stranice pod zaštitom „{{int:protect-level-sysop}}“",
+    "right-editsemiprotected": "uredi stranice pod zaštitom „{{int:protect-level-autoconfirmed}}“",
     "right-editinterface": "uređivanje korisničkog sučelja",
     "right-editusercssjs": "uređivanje tuđih CSS i javaskript datoteka",
     "right-editusercss": "uređivanje tuđih CSS datoteka",
     "right-edituserjs": "uređivanje tuđih javaskript datoteka",
+    "right-viewmyprivateinfo": "vidite svoje lične podatke (npr. adresu e-pošte, pravo ime)",
+    "right-editmyprivateinfo": "uredi svoje lične podatke (npr. adresu e-pošte, pravo ime)",
+    "right-editmyoptions": "uredite svoja podešavanja",
     "right-rollback": "brzo vraćanje izmena poslednjeg korisnika koji je menjao određenu stranicu",
     "right-markbotedits": "označavanje vraćenih izmena kao izmene bota",
     "right-noratelimit": "otpornost na ograničenja",
     "action-userrights-interwiki": "uređivanje korisničkih prava na drugim vikijima",
     "action-siteadmin": "zaključavanje ili otključavanje baze podataka",
     "action-sendemail": "slanje e-poruka",
+    "action-editmywatchlist": "izmeni svoj spisak nadgledanja",
     "nchanges": "$1 {{PLURAL:$1|izmena|izmene|izmena}}",
+    "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|izmena od vaše poslednje posete}}",
+    "enhancedrc-history": "istorija",
     "recentchanges": "Skorašnje izmene",
     "recentchanges-legend": "Postavke skorašnjih izmena",
     "recentchanges-summary": "Pratite skorašnje izmene na ovoj stranici.",
     "uploaddisabledtext": "Otpremanje datoteka je onemogućeno.",
     "php-uploaddisabledtext": "Slanje datoteka je onemogućeno u PHP-u.\nProverite postavke file_uploads.",
     "uploadscripted": "Datoteka sadrži HTML ili skriptni kod koji može biti pogrešno protumačen od strane pregledača.",
+    "uploadscriptednamespace": "Ova SVG datoteka sadrži pogrešan imenski prostor „$1“",
     "uploadvirus": "Datoteka sadrži virus!\nDetalji: $1",
     "uploadjava": "Datoteka je formata ZIP koji sadrži java .class element.\nSlanje java datoteka nije dozvoljeno jer one mogu izazvati zaobilaženje sigurnosnih ograničenja.",
     "upload-source": "Izvorna datoteka",
     "unusedtemplateswlh": "ostale veze",
     "randompage": "Slučajna stranica",
     "randompage-nopages": "Nema stranica u {{PLURAL:$2|sledećem imenskom prostoru|sledećim imenskim prostorima}}: $1.",
+    "randomincategory": "Slučajna stranica u kategoriji",
+    "randomincategory-selectcategory-submit": "Idi",
     "randomredirect": "Slučajno preusmerenje",
     "randomredirect-nopages": "Nema preusmerenja u imenskom prostoru „$1”.",
     "statistics": "Statistike",
     "statistics-users-active": "Aktivni korisnici",
     "statistics-users-active-desc": "Korisnici koji su izvršili bar jednu radnju {{PLURAL:$1|prethodni dan|u poslednja $1 dana|u poslednjih $1 dana}}",
     "statistics-mostpopular": "Najposećenije stranice",
+    "pageswithprop": "Strane s osobinom strane",
+    "pageswithprop-legend": "Strane s osobinom strane",
+    "pageswithprop-text": "Ova strana izlistava strane koje imaju određenu osobinu",
     "pageswithprop-prop": "Ime osobine:",
     "pageswithprop-submit": "Idi",
     "doubleredirects": "Dvostruka preusmerenja",
     "mostrevisions": "Stranice s najviše izmena",
     "prefixindex": "Sve stranice s prefiksom",
     "prefixindex-namespace": "Sve stranice s predmetkom (imenski prostor $1)",
+    "prefixindex-strip": "Sakrij prefiks u spisku",
     "shortpages": "Kratke stranice",
     "longpages": "Dugačke stranice",
     "deadendpages": "Stranice bez unutrašnjih veza",
     "enotif_mailer": "{{SITENAME}} e-obaveštenje",
     "enotif_reset": "Označi sve stranice kao posećene",
     "enotif_impersonal_salutation": "{{SITENAME}} korisnik",
+    "enotif_subject_deleted": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|obrisao je|obrisala je}} $2",
+    "enotif_subject_created": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|napravio je|napravila je}} $2",
+    "enotif_subject_moved": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|premestio je|premestila je}} $2",
+    "enotif_subject_restored": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|vratio je|vratila je}} $2",
+    "enotif_subject_changed": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|promenio je|promenila je}} $2",
+    "enotif_body_intro_deleted": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|obrisao je|obrisala je}} $2 dana $PAGEEDITDATE. Pogledajte $3.",
+    "enotif_body_intro_created": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|napravio je|napravila je|napravio je}} $2 dana $PAGEEDITDATE. Trenutna izmena nalazi se na $3.",
+    "enotif_body_intro_moved": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|premestio je|premestila je}} $2 dana $PAGEEDITDATE. Trenutna izmena nalazi se na  $3.",
+    "enotif_body_intro_restored": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|vratio je|vratila je|vratio je}} $2 dana $PAGEEDITDATE. Trenutna izmena nalazi se na $3.",
+    "enotif_body_intro_changed": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|promenio je|promenila je|promenio je}} $2 dana $PAGEEDITDATE. Trenutna izmena nalazi se na $3.",
     "enotif_lastvisited": "Pogledajte $1 za sve izmene od vaše poslednje posete.",
     "enotif_lastdiff": "Pogledajte $1 da vidite ovu izmenu.",
     "enotif_anon_editor": "anoniman korisnik $1",
     "import-error-interwiki": "Ne mogu da uvezem stranicu „$1“ jer je njen naziv rezervisan za spoljno povezivanje (međuviki).",
     "import-error-special": "Ne mogu da uvezem stranicu „$1“ jer ona pripada posebnom imenskom prostoru koje ne prihvata stranice.",
     "import-error-invalid": "Ne mogu da uvezem stranicu „$1“ jer je njen naziv neispravan.",
+    "import-error-unserialize": "Verzija $2 stranice $1 ne može biti pročitana/uvezena. Zapisano je da verzija koristi $3 tip sadržaja u $4 formatu.",
     "import-options-wrong": "{{PLURAL:$2|Pogrešna opcija|Pogrešne opcije}}: <nowiki>$1</nowiki>",
     "import-rootpage-invalid": "Navedena osnovna stranica ima neispravan naslov.",
     "import-rootpage-nosubpage": "Imenski prostor „$1“ osnovne stranice ne dozvoljava podstranice.",
     "tooltip-recreate": "Ponovo napravite stranicu iako je obrisana",
     "tooltip-upload": "Započnite otpremanje",
     "tooltip-rollback": "Opcija „Vrati“ vraća izmene poslednjeg korisnika",
-    "tooltip-undo": "Vraća ovu izmenu i otvara obrazac za uređivanje.",
+    "tooltip-undo": "Poništava ovu izmenu i otvara obrazac za uređivanje.",
     "tooltip-preferences-save": "Sačuvaj postavke",
     "tooltip-summary": "Unesite kratak opis",
     "common.css": "/** CSS postavljen ovde će se odraziti na sve teme */",
     "spam_reverting": "Vraćam na poslednju izmenu koja ne sadrži veze do $1",
     "spam_blanking": "Sve izmene sadrže veze do $1. Čistim",
     "spam_deleting": "Sve izmene sadrže veze do $1. Brišem",
-    "simpleantispam-label": "Provera spama. '''NE''' popunjavaj ovo unutra!",
+    "simpleantispam-label": "Anti-spama provera. \n<strong>NE</strong> popunjavaj ovo unutra!",
     "pageinfo-title": "Podaci o „$1“",
     "pageinfo-not-current": "Nažalost, nemoguće je pribaviti ove podatke za starije izmene.",
     "pageinfo-header-basic": "Osnovni podaci",
     "minutes": "{{PLURAL:$1|$1 minut|$1 minuta|$1 minuta}}",
     "hours": "{{PLURAL:$1|$1 sat|$1 sata|$1 sati}}",
     "days": "{{PLURAL:$1|$1 dan|$1 dana|$1 dana}}",
+    "weeks": "{{PLURAL:$1|$1 sedmica}}",
+    "months": "{{PLURAL:$1|$1 mesec|$1 meseci}}",
     "years": "{{PLURAL:$1|$1 godina|$1 godine}}",
     "ago": "pre $1",
     "just-now": "upravo sad",
+    "hours-ago": "Pre $1 {{PLURAL:$1|sat|sata|sati}}",
     "minutes-ago": "Pre $1 {{PLURAL:$1|minut|minuta}}",
     "bad_image_list": "Format je sledeći:\n\nRazmatraju se samo nabrajanja (redovi koji počinju sa zvezdicom).\nPrva veza u redu mora da bude veza do neispravne datoteke.\nSve daljnje veze u istom redu smatraju se izuzecima.",
     "variantname-zh-hans": "hans",
index e62ff64..af91034 100644 (file)
     "currentevents": "Tentakalo tanyalo",
     "currentevents-url": "Project:Tentakalo tanyalo",
     "edithelp": "Lusito ngekuhlela",
-    "helppage": "Help:Lokucuketfwe",
     "mainpage": "Likhasi Lelikhulu",
     "mainpage-description": "Likhasi lelikhulu",
     "policy-url": "Project:Umtsetfo",
index cf6626f..36075ed 100644 (file)
     "trackingcategories-msg": "Spårningskategori",
     "trackingcategories-name": "Meddelandenamn",
     "trackingcategories-desc": "Inklusionskriterier för kategori",
-    "noindex-category-desc": "Sidan innehåller det magiska ordet <nowiki>__NOINDEX__</nowiki> (och är i en namnrymd där denna flagga tillåts), och indexeras därför inte av robotar.",
-    "index-category-desc": "Denna sidan innehåller ett <nowiki>__INDEX__</nowiki> (och är i en namnrymd där denna flagga tillåts), och indexeras därför av robotar även där detta normalt inte skulle ske.",
+    "noindex-category-desc": "Sidan innehåller det magiska ordet <code><nowiki>__NOINDEX__</nowiki></code> (och är i en namnrymd där denna flagga tillåts), och indexeras därför inte av robotar.",
+    "index-category-desc": "Denna sidan innehåller ett <code><nowiki>__INDEX__</nowiki></code> (och är i en namnrymd där denna flagga tillåts), och indexeras därför av robotar även där detta normalt inte skulle ske.",
     "post-expand-template-inclusion-category-desc": "Efter att alla mallar har expanderats är denna sidan större än <code>$wgMaxArticleSize</code>, därför har vissa mallar inte expanderats.",
     "post-expand-template-argument-category-desc": "Efter att ett mallargument (något inom trippla parenteser, som <code>{{{Foo}}})</code> expanderats är denna sidan större än <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "För många kostsamma parser-funktioner (som <code>#ifexist</code>) har inkluderats på en sida. Se [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit användarhandboken].",
     "broken-file-category-desc": "Kategori som läggs till om sidan innehåller en bruten fillänk (en länk som bäddar in en fil som inte finns).",
-    "hidden-category-category-desc": "Detta är en kategori som innehåller <nowiki>__HIDDENCAT__</nowiki> vilket, som standard, förhindrar den från att visas i kategorirutan.",
+    "hidden-category-category-desc": "Detta är en kategori som innehåller <code><nowiki>__HIDDENCAT__</nowiki></code> vilket, som standard, förhindrar den från att visas i kategorirutan.",
     "trackingcategories-nodesc": "Ingen beskrivning tillgänglig.",
     "trackingcategories-disabled": "Kategorin är inaktiverad",
     "mailnologin": "Ingen adress att skicka till",
index 74b6d8b..7baf3db 100644 (file)
     "tog-hidepatrolled": "ซ่อนการแก้ไขที่ตรวจแล้วในหน้าปรับปรุงล่าสุด",
     "tog-newpageshidepatrolled": "ซ่อนหน้าที่ตรวจแล้วจากรายการหน้าใหม่",
     "tog-extendwatchlist": "ขยายรายการเฝ้าดูให้แสดงการเปลี่ยนแปลงทั้งหมด ไม่เพียงการเปลี่ยนแปลงล่าสุด",
-    "tog-usenewrc": "à¸\88ัà¸\94à¸\81ลุà¹\88มà¸\84วามเปลี่ยนแปลงแบ่งตามหน้าในรายการปรับปรุงล่าสุดและรายการเฝ้าดู",
+    "tog-usenewrc": "à¸\88ัà¸\94à¸\81ลุà¹\88มà¸\81ารเปลี่ยนแปลงแบ่งตามหน้าในรายการปรับปรุงล่าสุดและรายการเฝ้าดู",
     "tog-numberheadings": "ใส่เลขหัวข้อในสารบัญอัตโนมัติ",
     "tog-showtoolbar": "แสดงแถบเครื่องมือแก้ไข",
     "tog-editondblclick": "แก้ไขหน้าเมื่อดับเบิลคลิก",
-    "tog-editsectiononrightclick": "à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¹\80à¸\89à¸\9eาะสà¹\88วà¸\99à¹\82à¸\94ยà¸\84ลิà¸\81à¸\82วาà¸\97ีà¹\88หัวà¸\82à¹\89อ",
+    "tog-editsectiononrightclick": "à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¹\80à¸\89à¸\9eาะสà¹\88วà¸\99à¹\82à¸\94ยà¸\84ลิà¸\81à¸\82วาà¸\97ีà¹\88à¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87à¸\82อà¸\87สà¹\88วà¸\99à¸\99ัà¹\89à¸\99",
     "tog-rememberpassword": "จำการล็อกอินของฉันในเบราว์เซอร์นี้ (สูงสุด $1 วัน)",
     "tog-watchcreations": "เพิ่มหน้าที่ฉันสร้างและไฟล์ที่ฉันอัปโหลดเข้ารายการเฝ้าดู",
     "tog-watchdefault": "เพิ่มหน้าและไฟล์ที่ฉันแก้ไขเข้ารายการเฝ้าดู",
     "tog-watchmoves": "เพิ่มและไฟล์ที่ฉันเปลี่ยนชื่อเข้ารายการเฝ้าดู",
     "tog-watchdeletion": "เพิ่มหน้าและไฟล์ที่ฉันลบเข้ารายการเฝ้าดู",
     "tog-minordefault": "กำหนดให้การแก้ไขทุกครั้งเป็นการแก้ไขเล็กน้อยโดยปริยาย",
-    "tog-previewontop": "à¹\81สà¸\94à¸\87à¸\95ัวอยà¹\88าà¸\87à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\81à¹\88อนกล่องแก้ไข",
+    "tog-previewontop": "à¹\81สà¸\94à¸\87à¸\95ัวอยà¹\88าà¸\87à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\9aนกล่องแก้ไข",
     "tog-previewonfirst": "แสดงตัวอย่างการแก้ไขสำหรับการแก้ไขครั้งแรก",
     "tog-enotifwatchlistpages": "อีเมลหาเมื่อหน้าหรือไฟล์ในรายการเฝ้าดูมีการเปลี่ยนแปลง",
     "tog-enotifusertalkpages": "อีเมลหาเมื่อหน้าคุยกับผู้ใช้ของฉันมีการเปลี่ยนแปลง",
     "tog-diffonly": "ไม่แสดงเนื้อหาใต้ส่วนต่างการแก้ไข",
     "tog-showhiddencats": "แสดงหมวดหมู่ที่ซ่อนอยู่",
     "tog-norollbackdiff": "ไม่แสดงการเปลี่ยนแปลงหลังดำเนินการย้อนกลับฉุกเฉิน",
-    "tog-useeditwarning": "เตือนฉัน เมื่อฉันกำลังจะออกจากหน้าแก้ไขโดยมีข้อมูลที่ยังไม่ได้บันทึก",
+    "tog-useeditwarning": "เตือนฉันเมื่อออกหน้าแก้ไขโดยมีการเปลี่ยนแปลงที่ยังไม่บันทึก",
     "tog-prefershttps": "ใช้การเชื่อมต่อปลอดภัยทุกครั้งเมื่อล็อกอิน",
     "underline-always": "ทุกครั้ง",
     "underline-never": "ไม่",
-    "underline-default": "à¸\84à¹\88าà¹\82à¸\94ยà¸\9bริยายของหน้าตาหรือเบราว์เซอร์",
+    "underline-default": "à¸\84à¹\88าà¸\95ัà¹\89à¸\87à¸\95à¹\89à¸\99ของหน้าตาหรือเบราว์เซอร์",
     "editfont-style": "รูปแบบชุดแบบอักษรในพื้นที่แก้ไข:",
     "editfont-default": "ค่าตั้งต้นของเบราว์เซอร์",
     "editfont-monospace": "ชุดอักษรแบบความกว้างคงที่",
     "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 หมวดหมู่}}",
     "print": "พิมพ์",
     "view": "ดู",
     "edit": "แก้ไข",
+    "edit-local": "แก้ไขคำอธิบายท้องถิ่น",
     "create": "สร้าง",
+    "create-local": "เพิ่มคำอธิบายท้องถิ่น",
     "editthispage": "แก้ไขหน้านี้",
     "create-this-page": "สร้างหน้านี้",
     "delete": "ลบ",
     "currentevents-url": "Project:เหตุการณ์ปัจจุบัน",
     "disclaimers": "ข้อปฏิเสธความรับผิดชอบ",
     "disclaimerpage": "Project:ข้อปฏิเสธความรับผิดชอบทั่วไป",
-    "edithelp": "วิà¸\98ีà¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89า",
+    "edithelp": "à¸\84ำอà¸\98ิà¸\9aายà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82",
     "mainpage": "หน้าหลัก",
     "mainpage-description": "หน้าหลัก",
     "policy-url": "Project:นโยบาย",
     "cannotdelete": "ไม่สามารถลบหน้าหรือไฟล์ \"$1\" \nอาจมีผู้อื่นลบไปแล้ว",
     "cannotdelete-title": "ไม่สามารถลบหน้า ''$1''",
     "delete-hook-aborted": "การลบถูกฮุกยกเลิก\nโดยไม่มีคำอธิบาย",
+    "no-null-revision": "ไม่สามารถสร้างรุ่นว่างใหม่ของหน้า \"$1\"",
     "badtitle": "ใช้ชื่อเรื่องนี้ไม่ได้",
     "badtitletext": "ชื่อหน้าที่ขอไม่ถูกต้อง เป็นชื่อว่าง หรือชื่อข้ามภาษาหรือข้ามวิกิที่เชื่อมโยงไม่ถูกต้อง\nอาจมีอักขระที่ไม่สามารถใช้ในชื่อเรื่องได้",
     "perfcached": "ข้อมูลต่อไปนี้ถูกเก็บในแคช และอาจล้าสมัย มีผลการค้นหาสูงสุด $1 รายการในแคช",
     "postedit-confirmation": "บันทึกการแก้ไขของคุณแล้ว",
     "edit-already-exists": "ไม่สามารถสร้างหน้าใหม่ได้\nเพราะมีหน้านี้แล้ว",
     "defaultmessagetext": "ข้อความสารโดยปริยาย",
+    "content-failed-to-parse": "แจงส่วนเนื้อหา $2 ของตัวแบบ $1 ล้มเหลว: $3",
     "invalid-content-data": "ข้อมูลเนื้อหาไม่ถูกต้อง",
     "content-not-allowed-here": "เนื้อหา \"$1\" ไม่อนุญาตในหน้า [[$2]]",
     "editwarning-warning": "การออกจากหน้านี้อาจทำให้ความเปลี่ยนแปลงที่คุณดำเนินการสูญหาย\nถ้าคุณล็อกอินแล้ว คุณสามารถปิดคำเตือนนี้ได้ที่ส่วน \"{{int:prefs-editing}}\" ในการตั้งค่าของคุณ",
     "editpage-notsupportedcontentformat-title": "รูปแบบเนื้อหาไม่ได้รับการรองรับ",
+    "editpage-notsupportedcontentformat-text": "ตัวแบบเนื้อหา $2 ไม่รองรับตัวแบบเนื้อหา $1",
     "content-model-wikitext": "ข้อความวิกิ",
     "content-model-text": "ข้อความธรรมดา",
     "content-model-javascript": "จาวาสคริปต์",
     "parser-template-loop-warning": "ตรวจพบแม่แบบกลับมาเรียกตัวเอง: [[$1]]",
     "parser-template-recursion-depth-warning": "เรียกแม่แบบซ้อนหลายชั้นเกินขีดจำกัด ($1)",
     "language-converter-depth-warning": "คำสั่งในการแปลงภาษาลึกเกิน $1 ลำดับ",
+    "expansion-depth-exceeded-category": "หน้าที่ความลึกการขยายเกิน",
+    "expansion-depth-exceeded-warning": "หน้าเกินความลึกการขยาย",
+    "parser-unstrip-loop-warning": "พบวงวน unstrip",
+    "parser-unstrip-recursion-limit": "ขีดจำกัดการเรียกซ้ำ unstrip เกิน ($1)",
     "undo-success": "การแก้ไขนี้สามารถย้อนกลับได้ กรุณาตรวจสอบข้อแตกต่างด้านล่างให้แน่ใจว่านี่คือสิ่งที่คุณต้องการทำ จากนั้นให้บันทึกการเปลี่ยนแปลงด้านล่างเพื่อเสร็จสิ้นขั้นตอน",
     "undo-failure": "การแก้ไขนี้ไม่สามารถย้อนกลับได้ เนื่องจากขัดแย้งกับการแก้ไขปัจจุบัน",
     "undo-norev": "ไม่สามารถย้อนการแก้ไขนี้ เพราะไม่มีหรือถูกลบไปแล้ว",
     "yourrealname": "ชื่อจริง:",
     "yourlanguage": "ภาษา:",
     "yourvariant": "อักษรต่างรูปของเนื้อหา:",
+    "prefs-help-variant": "รูปแปรหรืออักขรวิธีที่คุณเลือกให้แสดงหน้าเนื้อหาของวิกินี้",
     "yournick": "ลายเซ็น:",
     "prefs-help-signature": "ความเห็นในหน้าพูดคุยควรลงลายเซ็นด้วย \"<nowiki>~~~~</nowiki>\" ซึ่งจะถูกแปลงเป็นลายเซ็นของคุณและตราเวลา",
     "badsig": "ลายเซ็นดิบไม่ถูกต้อง ให้ตรวจสอบแท็กเอชทีเอ็มแอล",
     "prefs-dateformat": "รูปแบบวันที่และเวลา",
     "prefs-timeoffset": "ส่วนต่างเวลา",
     "prefs-advancedediting": "ตัวเลือกทั่วไป",
+    "prefs-editor": "ตัวแก้ไข",
     "prefs-preview": "การแสดงตัวอย่าง",
     "prefs-advancedrc": "ตัวเลือกขั้นสูง",
     "prefs-advancedrendering": "ตัวเลือกขั้นสูง",
     "prefs-tokenwatchlist": "โทเค็น",
     "prefs-diffs": "ผลต่าง",
     "prefs-help-prefershttps": "การตั้งค่านี้จะมีผลเมื่อคุณล็อกอินครั้งถัดไป",
+    "prefs-tabs-navigation-hint": "แนะนำ: คุณสามารถใช้แป้นลูกศรซ้ายและขวาเพื่อนำทางระหว่างแถบในรายการแถบได้",
     "email-address-validity-valid": "ที่อยู่อีเมลดูถูกต้อง",
     "email-address-validity-invalid": "ป้อนที่อยู่อีเมลที่ถูกต้อง",
     "userrights": "บริหารสิทธิผู้ใช้",
     "listgrouprights-removegroup-self": "ลบ{{PLURAL:$2|กลุ่ม|กลุ่ม}}ออกจากบัญชี: $1",
     "listgrouprights-addgroup-self-all": "เพิ่มทุกกลุ่มเข้าไปในบัญชีนี้",
     "listgrouprights-removegroup-self-all": "นำทุกกลุ่มออกจากบัญชีนี้",
-    "hidden-category-category-desc": "นี่คือหมวดหมู่ที่ติด <nowiki>__HIDDENCAT__</nowiki> ซึ่งป้องกันมิให้แสดงในกล่องลิงก์หมวดหมู่ในหน้าโดยปริยาย",
+    "hidden-category-category-desc": "นี่คือหมวดหมู่ที่ติด <code><nowiki>__HIDDENCAT__</nowiki></code> ซึ่งป้องกันมิให้แสดงในกล่องลิงก์หมวดหมู่ในหน้าโดยปริยาย",
     "mailnologin": "ไม่มีที่อยู่ส่ง",
     "mailnologintext": "คุณต้อง[[Special:UserLogin|ล็อกอิน]]และมีที่อยู่อีเมลที่สมเหตุสมผลใน[[Special:Preferences|การตั้งค่า]]ของคุณ ในการส่งอีเมลหาผู้ใช้อื่น",
     "emailuser": "ส่งอีเมลหาผู้ใช้นี้",
index d58831b..c2591b8 100644 (file)
     "jumptosearch": "утчан",
     "currentevents": "Выль иворъёс",
     "currentevents-url": "Project:Выль иворъёс",
-    "helppage": "Help:Валэктон",
     "mainpage": "Кутскон бам",
     "mainpage-description": "Кутскон бам",
     "portal": "Сообщество",
index 9c71cfa..d6d771d 100644 (file)
@@ -1,6 +1,15 @@
 {
     "@metadata": {
-        "authors": []
+        "authors": [
+            "Abdulla",
+            "Akmalzhon",
+            "Casual",
+            "CoderSI",
+            "Lyncos",
+            "Nataev",
+            "Sociologist",
+            "Xexdof"
+        ]
     },
     "tog-underline": "Havolalarning tagiga chizish:",
     "tog-hideminor": "Yangi oʻzgarishlar roʻyxatida kichik tahrirlarni yashirish",
     "prefs-skin": "Tashqi ko‘rinishi",
     "skin-preview": "Ko‘rib chiqish",
     "datedefault": "Farqi yoʻq",
-    "prefs-beta": "Beta-imkoniyatlar",
     "prefs-datetime": "Sana va vaqt",
     "prefs-labs": "Tajribaviy imkoniyatlar",
     "prefs-user-pages": "Foydalanuvchi sahifalari",
     "recentchanges-label-plusminus": "Sahifa vazni qanchaga oʻzgargani (bayt)",
     "recentchanges-legend-heading": "'''Izoh:'''",
     "recentchanges-legend-newpage": "([[Special:NewPages|alohida roʻyxat]])",
-    "rcnotefrom": "Quyida <strong>$2</strong>dan boshlab boʻlgan oʻzgarishlar keltirilgan (<strong>$1</strong>dan koʻp boʻlmaganlari koʻrsatildi).",
-    "rclistfrom": "$1 dan boshlab yangi oʻzgarishlarni koʻrsat.",
+    "rcnotefrom": "Quyida <strong>$2</strong> dan boshlab boʻlgan oʻzgarishlar keltirilgan (<strong>$1</strong> tasi koʻrsatildi).",
+    "rclistfrom": "$3, $2 dan boshlab yangi oʻzgarishlarni koʻrsat.",
     "rcshowhideminor": "Kichik tahrirlarni $1",
     "rcshowhidebots": "Botlarni $1",
+    "rcshowhidebots-show": "koʻrsat",
+    "rcshowhidebots-hide": "yashir",
     "rcshowhideliu": "Roʻyxatdan oʻtgan foydalanuvchilarni $1",
+    "rcshowhideliu-show": "koʻrsat",
+    "rcshowhideliu-hide": "yashir",
     "rcshowhideanons": "Anonim foydalanuvchilarni $1",
+    "rcshowhideanons-show": "koʻrsat",
+    "rcshowhideanons-hide": "yashir",
     "rcshowhidepatr": "Tekshirilgan tahrirlarni $1",
     "rcshowhidemine": "Oʻz tahrirlarimni $1",
     "rclinks": "Oxirgi $2 kun ichida sodir boʻlgan $1 ta oʻzgarish koʻrsatildi<br />$3",
     "whatlinkshere-prev": "{{PLURAL:$1|oldingi}} $1",
     "whatlinkshere-next": "{{PLURAL:$1|keyingi}} $1",
     "whatlinkshere-links": "← ishoratlar",
-    "whatlinkshere-hideredirs": "$1 qayta yo'naltirishlar",
+    "whatlinkshere-hideredirs": "Qayta yoʻnaltirishlarni $1",
     "whatlinkshere-hidetrans": "$1 kiritmalar",
     "whatlinkshere-hidelinks": "$1 havolalar",
     "whatlinkshere-hideimages": "$1 fayllar uchun havolalar",
     "revertmove": "qaytarish",
     "delete_and_move": "O‘chirish va qayta nomlash",
     "delete_and_move_confirm": "Ha, ushbu sahifa o‘chirilsin",
+    "move-leave-redirect": "Qayta yoʻnaltirish qoldirish",
     "move-over-sharedrepo": "== Fayl allaqachon mavjud ==\nUmumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumiy omborda to‘silishiga olib keladi.",
     "export": "Sahifalar eksporti",
     "export-submit": "Eksport",
index d0070af..7c8e280 100644 (file)
     "trackingcategories-msg": "Thể loại phần mềm",
     "trackingcategories-name": "Tên thông điệp",
     "trackingcategories-desc": "Tiêu chuẩn xếp thể loại",
-    "noindex-category-desc": "Trang này không được các robot đánh chỉ mục vì trang có từ thần chú <nowiki>__NOINDEX__</nowiki> và nằm trong không gian tên cho phép từ thần chú này.",
-    "index-category-desc": "Trang này có từ thần chú <nowiki>__INDEX__</nowiki> và nằm trong một không gian tên cho phép từ thần chú này, nên được các robot đánh chỉ mục, trong khi bình thường nó không được đánh chỉ mục.",
+    "noindex-category-desc": "Trang này không được các robot đánh chỉ mục vì trang có từ thần chú <code><nowiki>__NOINDEX__</nowiki></code> và nằm trong không gian tên cho phép từ thần chú này.",
+    "index-category-desc": "Trang này có từ thần chú <code><nowiki>__INDEX__</nowiki></code> và nằm trong một không gian tên cho phép từ thần chú này, nên được các robot đánh chỉ mục, trong khi bình thường nó không được đánh chỉ mục.",
     "post-expand-template-inclusion-category-desc": "Nếu bung tất cả các bản mẫu, kích thước trang sẽ vượt quá <code>$wgMaxArticleSize</code>, nên một số bản mẫu không được bung.",
     "post-expand-template-argument-category-desc": "Nếu bung một tham số bản mẫu (tức định danh có mỗi bên ba dấu ngoặc móc, thí dụ <code>{{{Thí dụ}}}</code>), trang này sẽ vượt quá <code>$wgMaxArticleSize</code>.",
     "expensive-parserfunction-category-desc": "Trang có quá nhiều hàm cú pháp cần mức độ xử lý cao (chẳng hạn như <code>#ifexist</code>). Xem [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit?uselang=vi Manual:$wgExpensiveParserFunctionLimit].",
     "broken-file-category-desc": "Trang này muốn nhúng một tập tin không tồn tại.",
-    "hidden-category-category-desc": "Thể loại này có <nowiki>__HIDDENCAT__</nowiki>, nên, theo mặc định, thể loại không xuất hiện trong hộp thể loại trên các trang được xếp vào thể loại.",
+    "hidden-category-category-desc": "Thể loại này có <code><nowiki>__HIDDENCAT__</nowiki></code>, nên, theo mặc định, thể loại không xuất hiện trong hộp thể loại trên các trang được xếp vào thể loại.",
     "trackingcategories-nodesc": "Không có miêu tả.",
     "trackingcategories-disabled": "Thể loại bị tắt",
     "mailnologin": "Không có địa chỉ gửi thư",
index 1b9f7c3..3405680 100644 (file)
     "disclaimers": "gangjmingz mienxcwz",
     "disclaimerpage": "Project:Itbuen mienxcwz",
     "edithelp": "Caeuq mungz san-zonz",
-    "helppage": "Help:moegloeg",
     "mainpage": "Yiebdaeuz",
     "mainpage-description": "Yiebdeauz",
     "policy-url": "Project:fuengcim",
diff --git a/languages/i18n/zh-cn.json b/languages/i18n/zh-cn.json
deleted file mode 100644 (file)
index 3eef3dc..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "@metadata": {
-        "authors": [
-            "Liangent",
-            "PhiLiP",
-            "Shizhao",
-            "Wong128hk",
-            "Xiaomingyan"
-        ]
-    },
-    "tog-norollbackdiff": "进行回退后略过差异比较",
-    "mytalk": "我的讨论页",
-    "portal": "社区专页",
-    "editing": "正在编辑 $1"
-}
index 2396ae3..b7cf815 100644 (file)
     "trackingcategories-msg": "追踪分类",
     "trackingcategories-name": "信息名",
     "trackingcategories-desc": "分类收录标准",
-    "noindex-category-desc": "页面中有<nowiki>__NOINDEX__</nowiki>魔术字(并且在标记允许的名字空间)且因此未被机器人索引的。",
-    "index-category-desc": "页面中有<nowiki>__INDEX__</nowiki>魔术字(并且在标记允许的名字空间)且因此被机器人索引但本不应索引的。",
+    "noindex-category-desc": "页面中有<code><nowiki>__NOINDEX__</nowiki></code>魔术字(并且在标记允许的名字空间)且因此未被机器人索引的。",
+    "index-category-desc": "页面中有<code><nowiki>__INDEX__</nowiki></code>魔术字(并且在标记允许的名字空间)且因此被机器人索引但本不应索引的。",
     "post-expand-template-inclusion-category-desc": "在展开了所有模板后,页面大小大于<code>$wgMaxArticleSize</code>,所以一些模板未展开。",
     "post-expand-template-argument-category-desc": "展开了模板参数(三对花括号内,例如<code>{{{Foo}}}</code>)之后,页面大于<code>$wgMaxArticleSize</code>。",
     "expensive-parserfunction-category-desc": "页面包含了太多的高开销函数解析器(例如<code>#ifexist</code>)。参见[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit]。",
     "broken-file-category-desc": "当页面包含损坏文件连接(连接至嵌入的一个不存在文件)时分类被加入。",
-    "hidden-category-category-desc": "这是有<nowiki>__HIDDENCAT__</nowiki>的分类,该魔术字阻止分类默认在页面上的分类链接框中显示。",
+    "hidden-category-category-desc": "这是有<code><nowiki>__HIDDENCAT__</nowiki></code>的分类,该魔术字阻止分类默认在页面上的分类链接框中显示。",
     "trackingcategories-nodesc": "没有说明。",
     "trackingcategories-disabled": "分类被禁用",
     "mailnologin": "无电子邮件地址",
index 3332efd..7ada9fa 100644 (file)
     "trackingcategories-msg": "跟蹤分類",
     "trackingcategories-name": "資訊名",
     "trackingcategories-desc": "分類收錄準則",
-    "noindex-category-desc": "頁面中存在<nowiki>__NOINDEX__</nowiki>魔術字(並且於標記允許名字空間)並藉此未被機械人索引。",
-    "index-category-desc": "頁面中存在<nowiki>__INDEX__</nowiki>魔術字(並且於標記允許名字空間)並藉此被機械人錯誤索引。",
+    "noindex-category-desc": "頁面中存在<code><nowiki>__NOINDEX__</nowiki></code>魔術字(並且於標記允許名字空間)並藉此未被機械人索引。",
+    "index-category-desc": "頁面中存在<code><nowiki>__INDEX__</nowiki></code>魔術字(並且於標記允許名字空間)並藉此被機械人錯誤索引。",
     "post-expand-template-inclusion-category-desc": "展開所有模板后,頁面大小大於<code>$wgMaxArticleSize</code>,藉此某些模板未展開。",
     "post-expand-template-argument-category-desc": "展開模板參數(三隊花括弧內,例如<code>{{{Foo}}}</code>)後,頁面大於<code>$wgMaxArticleSize</code>。",
     "expensive-parserfunction-category-desc": "頁面包含太多高開銷函數解析器(例如<code>#ifexist</code>)。參見[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit]。",
     "broken-file-category-desc": "黨頁面包含受損檔案連接(連入被嵌入之不存在檔案)時。",
-    "hidden-category-category-desc": "此分類帶有<nowiki>__HIDDENCAT__</nowiki>,它預設防止於頁面分類連接盒中顯示。",
+    "hidden-category-category-desc": "此分類帶有<code><nowiki>__HIDDENCAT__</nowiki></code>,它預設防止於頁面分類連接盒中顯示。",
     "trackingcategories-nodesc": "並無說明。",
     "trackingcategories-disabled": "分類被禁用",
     "mailnologin": "無電郵地址",
index 437c47c..cd4ce7a 100644 (file)
@@ -80,7 +80,6 @@
     "currentevents": "Izehlakalo ezimanje",
     "currentevents-url": "Project:Izehlakalo ezimanje",
     "edithelp": "Usizo ngokuhlela",
-    "helppage": "Help:Isiqikili",
     "mainpage": "Ikhasi Elikhulu",
     "mainpage-description": "Ikhasi Elikhulu",
     "portal": "Umnyango wamgwamanda",
diff --git a/languages/utils/CLDRPluralRuleConverter.php b/languages/utils/CLDRPluralRuleConverter.php
new file mode 100644 (file)
index 0000000..65d57e0
--- /dev/null
@@ -0,0 +1,313 @@
+<?php
+
+/**
+ * @author Niklas Laxström, Tim Starling
+ *
+ * @copyright Copyright © 2010-2012, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ *
+ * @file
+ * @since 1.20
+ */
+
+/**
+ * Helper class for converting rules to reverse polish notation (RPN).
+ */
+class CLDRPluralRuleConverter {
+       /**
+        * The input string
+        *
+        * @var string
+        */
+       public $rule;
+
+       /**
+        * The current position
+        *
+        * @var int
+        */
+       public $pos;
+
+       /**
+        * The past-the-end position
+        *
+        * @var int
+        */
+       public $end;
+
+       /**
+        * The operator stack
+        *
+        * @var array
+        */
+       public $operators = array();
+
+       /**
+        * The operand stack
+        *
+        * @var array
+        */
+       public $operands = array();
+
+       /**
+        * Precedence levels. Note that there's no need to worry about associativity
+        * for the level 4 operators, since they return boolean and don't accept
+        * boolean inputs.
+        */
+       static $precedence = array(
+               'or' => 2,
+               'and' => 3,
+               'is' => 4,
+               'is-not' => 4,
+               'in' => 4,
+               'not-in' => 4,
+               'within' => 4,
+               'not-within' => 4,
+               'mod' => 5,
+               ',' => 6,
+               '..' => 7,
+       );
+
+       /**
+        * A character list defining whitespace, for use in strspn() etc.
+        */
+       const WHITESPACE_CLASS = " \t\r\n";
+
+       /**
+        * Same for digits. Note that the grammar given in UTS #35 doesn't allow
+        * negative numbers or decimal separators.
+        */
+       const NUMBER_CLASS = '0123456789';
+
+       /**
+        * A character list of symbolic operands.
+        */
+       const OPERAND_SYMBOLS = 'nivwft';
+
+       /**
+        * An anchored regular expression which matches a word at the current offset.
+        */
+       const WORD_REGEX = '/[a-zA-Z@]+/A';
+
+       /**
+        * Convert a rule to RPN. This is the only public entry point.
+        *
+        * @param string $rule The rule to convert
+        * @return string The RPN representation of the rule
+        */
+       public static function convert( $rule ) {
+               $parser = new self( $rule );
+               return $parser->doConvert();
+       }
+
+       /**
+        * Private constructor.
+        */
+       protected function __construct( $rule ) {
+               $this->rule = $rule;
+               $this->pos = 0;
+               $this->end = strlen( $rule );
+       }
+
+       /**
+        * Do the operation.
+        *
+        * @return string The RPN representation of the rule (e.g. "5 3 mod n is")
+        */
+       protected function doConvert() {
+               $expectOperator = true;
+
+               // Iterate through all tokens, saving the operators and operands to a
+               // stack per Dijkstra's shunting yard algorithm.
+               /** @var CLDRPluralRuleConverter_Operator $token */
+               while ( false !== ( $token = $this->nextToken() ) ) {
+                       // In this grammar, there are only binary operators, so every valid
+                       // rule string will alternate between operator and operand tokens.
+                       $expectOperator = !$expectOperator;
+
+                       if ( $token instanceof CLDRPluralRuleConverter_Expression ) {
+                               // Operand
+                               if ( $expectOperator ) {
+                                       $token->error( 'unexpected operand' );
+                               }
+                               $this->operands[] = $token;
+                               continue;
+                       } else {
+                               // Operator
+                               if ( !$expectOperator ) {
+                                       $token->error( 'unexpected operator' );
+                               }
+                               // Resolve higher precedence levels
+                               $lastOp = end( $this->operators );
+                               while ( $lastOp && self::$precedence[$token->name] <= self::$precedence[$lastOp->name] ) {
+                                       $this->doOperation( $lastOp, $this->operands );
+                                       array_pop( $this->operators );
+                                       $lastOp = end( $this->operators );
+                               }
+                               $this->operators[] = $token;
+                       }
+               }
+
+               // Finish off the stack
+               while ( $op = array_pop( $this->operators ) ) {
+                       $this->doOperation( $op, $this->operands );
+               }
+
+               // Make sure the result is sane. The first case is possible for an empty
+               // string input, the second should be unreachable.
+               if ( !count( $this->operands ) ) {
+                       $this->error( 'condition expected' );
+               } elseif ( count( $this->operands ) > 1 ) {
+                       $this->error( 'missing operator or too many operands' );
+               }
+
+               $value = $this->operands[0];
+               if ( $value->type !== 'boolean' ) {
+                       $this->error( 'the result must have a boolean type' );
+               }
+
+               return $this->operands[0]->rpn;
+       }
+
+       /**
+        * Fetch the next token from the input string.
+        *
+        * @return CLDRPluralRuleConverter_Fragment The next token
+        */
+       protected function nextToken() {
+               if ( $this->pos >= $this->end ) {
+                       return false;
+               }
+
+               // Whitespace
+               $length = strspn( $this->rule, self::WHITESPACE_CLASS, $this->pos );
+               $this->pos += $length;
+
+               if ( $this->pos >= $this->end ) {
+                       return false;
+               }
+
+               // Number
+               $length = strspn( $this->rule, self::NUMBER_CLASS, $this->pos );
+               if ( $length !== 0 ) {
+                       $token = $this->newNumber( substr( $this->rule, $this->pos, $length ), $this->pos );
+                       $this->pos += $length;
+                       return $token;
+               }
+
+               // Two-character operators
+               $op2 = substr( $this->rule, $this->pos, 2 );
+               if ( $op2 === '..' || $op2 === '!=' ) {
+                       $token = $this->newOperator( $op2, $this->pos, 2 );
+                       $this->pos += 2;
+                       return $token;
+               }
+
+               // Single-character operators
+               $op1 = $this->rule[$this->pos];
+               if ( $op1 === ',' || $op1 === '=' || $op1 === '%' ) {
+                       $token = $this->newOperator( $op1, $this->pos, 1 );
+                       $this->pos ++;
+                       return $token;
+               }
+
+               // Word
+               if ( !preg_match( self::WORD_REGEX, $this->rule, $m, 0, $this->pos ) ) {
+                       $this->error( 'unexpected character "' . $this->rule[$this->pos] . '"' );
+               }
+               $word1 = strtolower( $m[0] );
+               $word2 = '';
+               $nextTokenPos = $this->pos + strlen( $word1 );
+               if ( $word1 === 'not' || $word1 === 'is' ) {
+                       // Look ahead one word
+                       $nextTokenPos += strspn( $this->rule, self::WHITESPACE_CLASS, $nextTokenPos );
+                       if ( $nextTokenPos < $this->end
+                               && preg_match( self::WORD_REGEX, $this->rule, $m, 0, $nextTokenPos )
+                       ) {
+                               $word2 = strtolower( $m[0] );
+                               $nextTokenPos += strlen( $word2 );
+                       }
+               }
+
+               // Two-word operators like "is not" take precedence over single-word operators like "is"
+               if ( $word2 !== '' ) {
+                       $bothWords = "{$word1}-{$word2}";
+                       if ( isset( self::$precedence[$bothWords] ) ) {
+                               $token = $this->newOperator( $bothWords, $this->pos, $nextTokenPos - $this->pos );
+                               $this->pos = $nextTokenPos;
+                               return $token;
+                       }
+               }
+
+               // Single-word operators
+               if ( isset( self::$precedence[$word1] ) ) {
+                       $token = $this->newOperator( $word1, $this->pos, strlen( $word1 ) );
+                       $this->pos += strlen( $word1 );
+                       return $token;
+               }
+
+               // The single-character operand symbols
+               if ( strpos( self::OPERAND_SYMBOLS, $word1 ) !== false ) {
+                       $token = $this->newNumber( $word1, $this->pos );
+                       $this->pos ++;
+                       return $token;
+               }
+
+               // Samples
+               if ( $word1 === '@integer' || $word1 === '@decimal' ) {
+                       // Samples are like comments, they have no effect on rule evaluation.
+                       // They run from the first sample indicator to the end of the string.
+                       $this->pos = $this->end;
+                       return false;
+               }
+
+               $this->error( 'unrecognised word' );
+       }
+
+       /**
+        * For the binary operator $op, pop its operands off the stack and push
+        * a fragment with rpn and type members describing the result of that
+        * operation.
+        *
+        * @param CLDRPluralRuleConverter_Operator $op
+        */
+       protected function doOperation( $op ) {
+               if ( count( $this->operands ) < 2 ) {
+                       $op->error( 'missing operand' );
+               }
+               $right = array_pop( $this->operands );
+               $left = array_pop( $this->operands );
+               $result = $op->operate( $left, $right );
+               $this->operands[] = $result;
+       }
+
+       /**
+        * Create a numerical expression object
+        *
+        * @param string $text
+        * @param int $pos
+        * @return CLDRPluralRuleConverter_Expression The numerical expression
+        */
+       protected function newNumber( $text, $pos ) {
+               return new CLDRPluralRuleConverter_Expression( $this, 'number', $text, $pos, strlen( $text ) );
+       }
+
+       /**
+        * Create a binary operator
+        *
+        * @param string $type
+        * @param int $pos
+        * @param int $length
+        * @return CLDRPluralRuleConverter_Operator The operator
+        */
+       protected function newOperator( $type, $pos, $length ) {
+               return new CLDRPluralRuleConverter_Operator( $this, $type, $pos, $length );
+       }
+
+       /**
+        * Throw an error
+        */
+       protected function error( $message ) {
+               throw new CLDRPluralRuleError( $message );
+       }
+}
diff --git a/languages/utils/CLDRPluralRuleConverter_Expression.php b/languages/utils/CLDRPluralRuleConverter_Expression.php
new file mode 100644 (file)
index 0000000..8352e72
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @author Niklas Laxström, Tim Starling
+ *
+ * @copyright Copyright © 2010-2012, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ *
+ * @file
+ * @since 1.20
+ */
+
+/**
+ * Helper for CLDRPluralRuleConverter.
+ * An expression object, representing a region of the input string (for error
+ * messages), the RPN notation used to evaluate it, and the result type for
+ * validation.
+ */
+class CLDRPluralRuleConverter_Expression extends CLDRPluralRuleConverter_Fragment {
+       /** @var string */
+       public $type;
+
+       /** @var string */
+       public $rpn;
+
+       function __construct( $parser, $type, $rpn, $pos, $length ) {
+               parent::__construct( $parser, $pos, $length );
+               $this->type = $type;
+               $this->rpn = $rpn;
+       }
+
+       public function isType( $type ) {
+               if ( $type === 'range' && ( $this->type === 'range' || $this->type === 'number' ) ) {
+                       return true;
+               }
+               if ( $type === $this->type ) {
+                       return true;
+               }
+               return false;
+       }
+}
diff --git a/languages/utils/CLDRPluralRuleConverter_Fragment.php b/languages/utils/CLDRPluralRuleConverter_Fragment.php
new file mode 100644 (file)
index 0000000..88795a0
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @author Niklas Laxström, Tim Starling
+ *
+ * @copyright Copyright © 2010-2012, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ *
+ * @file
+ * @since 1.20
+ */
+
+/**
+ * Helper for CLDRPluralRuleConverter.
+ * The base class for operators and expressions, describing a region of the input string.
+ */
+class CLDRPluralRuleConverter_Fragment {
+       public $parser, $pos, $length, $end;
+
+       function __construct( $parser, $pos, $length ) {
+               $this->parser = $parser;
+               $this->pos = $pos;
+               $this->length = $length;
+               $this->end = $pos + $length;
+       }
+
+       public function error( $message ) {
+               $text = $this->getText();
+               throw new CLDRPluralRuleError( "$message at position " . ( $this->pos + 1 ) . ": \"$text\"" );
+       }
+
+       public function getText() {
+               return substr( $this->parser->rule, $this->pos, $this->length );
+       }
+}
diff --git a/languages/utils/CLDRPluralRuleConverter_Operator.php b/languages/utils/CLDRPluralRuleConverter_Operator.php
new file mode 100644 (file)
index 0000000..c42953c
--- /dev/null
@@ -0,0 +1,114 @@
+<?php
+
+/**
+ * @author Niklas Laxström, Tim Starling
+ *
+ * @copyright Copyright © 2010-2012, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ *
+ * @file
+ * @since 1.20
+ */
+
+/**
+ * Helper for CLDRPluralRuleConverter.
+ * An operator object, representing a region of the input string (for error
+ * messages), and the binary operator at that location.
+ */
+class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment {
+       /** @var string The name */
+       public $name;
+
+       /**
+        * Each op type has three characters: left operand type, right operand type and result type
+        *
+        *   b = boolean
+        *   n = number
+        *   r = range
+        *
+        * A number is a kind of range.
+        *
+        * @var array
+        */
+       static $opTypes = array(
+               'or' => 'bbb',
+               'and' => 'bbb',
+               'is' => 'nnb',
+               'is-not' => 'nnb',
+               'in' => 'nrb',
+               'not-in' => 'nrb',
+               'within' => 'nrb',
+               'not-within' => 'nrb',
+               'mod' => 'nnn',
+               ',' => 'rrr',
+               '..' => 'nnr',
+       );
+
+       /**
+        * Map converting from the abbrevation to the full form.
+        *
+        * @var array
+        */
+       static $typeSpecMap = array(
+               'b' => 'boolean',
+               'n' => 'number',
+               'r' => 'range',
+       );
+
+       /**
+        * Map for converting the new operators introduced in Rev 33 to the old forms
+        */
+       static $aliasMap = array(
+               '%' => 'mod',
+               '!=' => 'not-in',
+               '=' => 'in'
+       );
+
+       /**
+        * Initialize a new instance of a CLDRPluralRuleConverter_Operator object
+        *
+        * @param CLDRPluralRuleConverter $parser The parser
+        * @param string $name The operator name
+        * @param int $pos The length
+        * @param int $length
+        */
+       function __construct( $parser, $name, $pos, $length ) {
+               parent::__construct( $parser, $pos, $length );
+               if ( isset( self::$aliasMap[$name] ) ) {
+                       $name = self::$aliasMap[$name];
+               }
+               $this->name = $name;
+       }
+
+       /**
+        * Compute the operation
+        *
+        * @param CLDRPluralRuleConverter_Expression $left The left part of the expression
+        * @param CLDRPluralRuleConverter_Expression $right The right part of the expression
+        * @return CLDRPluralRuleConverter_Expression The result of the operation
+        */
+       public function operate( $left, $right ) {
+               $typeSpec = self::$opTypes[$this->name];
+
+               $leftType = self::$typeSpecMap[$typeSpec[0]];
+               $rightType = self::$typeSpecMap[$typeSpec[1]];
+               $resultType = self::$typeSpecMap[$typeSpec[2]];
+
+               $start = min( $this->pos, $left->pos, $right->pos );
+               $end = max( $this->end, $left->end, $right->end );
+               $length = $end - $start;
+
+               $newExpr = new CLDRPluralRuleConverter_Expression( $this->parser, $resultType,
+                       "{$left->rpn} {$right->rpn} {$this->name}",
+                       $start, $length );
+
+               if ( !$left->isType( $leftType ) ) {
+                       $newExpr->error( "invalid type for left operand: expected $leftType, got {$left->type}" );
+               }
+
+               if ( !$right->isType( $rightType ) ) {
+                       $newExpr->error( "invalid type for right operand: expected $rightType, got {$right->type}" );
+               }
+               return $newExpr;
+       }
+}
diff --git a/languages/utils/CLDRPluralRuleError.php b/languages/utils/CLDRPluralRuleError.php
new file mode 100644 (file)
index 0000000..2ca3410
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @author Niklas Laxström, Tim Starling
+ *
+ * @copyright Copyright © 2010-2012, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ *
+ * @file
+ * @since 1.20
+ */
+
+/**
+ * The exception class for all the classes in this file. This will be thrown
+ * back to the caller if there is any validation error.
+ */
+class CLDRPluralRuleError extends MWException {
+       function __construct( $message ) {
+               parent::__construct( 'CLDR plural rule error: ' . $message );
+       }
+}
\ No newline at end of file
index e420cb2..61ab947 100644 (file)
@@ -30,6 +30,7 @@
  * @file
  * @since 1.20
  */
+
 class CLDRPluralRuleEvaluator {
        /**
         * Evaluate a number against a set of plural rules. If a rule passes,
@@ -179,570 +180,3 @@ class CLDRPluralRuleEvaluator {
                }
        }
 }
-
-/**
- * Evaluator helper class representing a range list.
- */
-class CLDRPluralRuleEvaluator_Range {
-       /**
-        * The parts
-        *
-        * @var array
-        */
-       public $parts = array();
-
-       /**
-        * Initialize a new instance of CLDRPluralRuleEvaluator_Range
-        *
-        * @param int $start The start of the range
-        * @param int|bool $end The end of the range, or false if the range is not bounded.
-        */
-       function __construct( $start, $end = false ) {
-               if ( $end === false ) {
-                       $this->parts[] = $start;
-               } else {
-                       $this->parts[] = array( $start, $end );
-               }
-       }
-
-       /**
-        * Determine if the given number is inside the range.
-        *
-        * @param int $number The number to check
-        * @param bool $integerConstraint If true, also asserts the number is an integer; otherwise, number simply has to be inside the range.
-        * @return bool True if the number is inside the range; otherwise, false.
-        */
-       function isNumberIn( $number, $integerConstraint = true ) {
-               foreach ( $this->parts as $part ) {
-                       if ( is_array( $part ) ) {
-                               if ( ( !$integerConstraint || floor( $number ) === (float)$number )
-                                       && $number >= $part[0] && $number <= $part[1]
-                               ) {
-                                       return true;
-                               }
-                       } else {
-                               if ( $number == $part ) {
-                                       return true;
-                               }
-                       }
-               }
-               return false;
-       }
-
-       /**
-        * Readable alias for isNumberIn( $number, false ), and the implementation
-        * of the "within" operator.
-        *
-        * @param int $number The number to check
-        * @return bool True if the number is inside the range; otherwise, false.
-        */
-       function isNumberWithin( $number ) {
-               return $this->isNumberIn( $number, false );
-       }
-
-       /**
-        * Add another part to this range.
-        *
-        * @param CLDRPluralRuleEvaluator_Range|int $other The part to add, either
-        *   a range object itself or a single number.
-        */
-       function add( $other ) {
-               if ( $other instanceof self ) {
-                       $this->parts = array_merge( $this->parts, $other->parts );
-               } else {
-                       $this->parts[] = $other;
-               }
-       }
-
-       /**
-        * Returns the string representation of the rule evaluator range.
-        * The purpose of this method is to help debugging.
-        *
-        * @return string The string representation of the rule evaluator range
-        */
-       function __toString() {
-               $s = 'Range(';
-               foreach ( $this->parts as $i => $part ) {
-                       if ( $i ) {
-                               $s .= ', ';
-                       }
-                       if ( is_array( $part ) ) {
-                               $s .= $part[0] . '..' . $part[1];
-                       } else {
-                               $s .= $part;
-                       }
-               }
-               $s .= ')';
-               return $s;
-       }
-
-}
-
-/**
- * Helper class for converting rules to reverse polish notation (RPN).
- */
-class CLDRPluralRuleConverter {
-       /**
-        * The input string
-        *
-        * @var string
-        */
-       public $rule;
-
-       /**
-        * The current position
-        *
-        * @var int
-        */
-       public $pos;
-
-       /**
-        * The past-the-end position
-        *
-        * @var int
-        */
-       public $end;
-
-       /**
-        * The operator stack
-        *
-        * @var array
-        */
-       public $operators = array();
-
-       /**
-        * The operand stack
-        *
-        * @var array
-        */
-       public $operands = array();
-
-       /**
-        * Precedence levels. Note that there's no need to worry about associativity
-        * for the level 4 operators, since they return boolean and don't accept
-        * boolean inputs.
-        */
-       static $precedence = array(
-               'or' => 2,
-               'and' => 3,
-               'is' => 4,
-               'is-not' => 4,
-               'in' => 4,
-               'not-in' => 4,
-               'within' => 4,
-               'not-within' => 4,
-               'mod' => 5,
-               ',' => 6,
-               '..' => 7,
-       );
-
-       /**
-        * A character list defining whitespace, for use in strspn() etc.
-        */
-       const WHITESPACE_CLASS = " \t\r\n";
-
-       /**
-        * Same for digits. Note that the grammar given in UTS #35 doesn't allow
-        * negative numbers or decimal separators.
-        */
-       const NUMBER_CLASS = '0123456789';
-
-       /**
-        * A character list of symbolic operands.
-        */
-       const OPERAND_SYMBOLS = 'nivwft';
-
-       /**
-        * An anchored regular expression which matches a word at the current offset.
-        */
-       const WORD_REGEX = '/[a-zA-Z@]+/A';
-
-       /**
-        * Convert a rule to RPN. This is the only public entry point.
-        *
-        * @param string $rule The rule to convert
-        * @return string The RPN representation of the rule
-        */
-       public static function convert( $rule ) {
-               $parser = new self( $rule );
-               return $parser->doConvert();
-       }
-
-       /**
-        * Private constructor.
-        */
-       protected function __construct( $rule ) {
-               $this->rule = $rule;
-               $this->pos = 0;
-               $this->end = strlen( $rule );
-       }
-
-       /**
-        * Do the operation.
-        *
-        * @return string The RPN representation of the rule (e.g. "5 3 mod n is")
-        */
-       protected function doConvert() {
-               $expectOperator = true;
-
-               // Iterate through all tokens, saving the operators and operands to a
-               // stack per Dijkstra's shunting yard algorithm.
-               /** @var CLDRPluralRuleConverter_Operator $token */
-               while ( false !== ( $token = $this->nextToken() ) ) {
-                       // In this grammar, there are only binary operators, so every valid
-                       // rule string will alternate between operator and operand tokens.
-                       $expectOperator = !$expectOperator;
-
-                       if ( $token instanceof CLDRPluralRuleConverter_Expression ) {
-                               // Operand
-                               if ( $expectOperator ) {
-                                       $token->error( 'unexpected operand' );
-                               }
-                               $this->operands[] = $token;
-                               continue;
-                       } else {
-                               // Operator
-                               if ( !$expectOperator ) {
-                                       $token->error( 'unexpected operator' );
-                               }
-                               // Resolve higher precedence levels
-                               $lastOp = end( $this->operators );
-                               while ( $lastOp && self::$precedence[$token->name] <= self::$precedence[$lastOp->name] ) {
-                                       $this->doOperation( $lastOp, $this->operands );
-                                       array_pop( $this->operators );
-                                       $lastOp = end( $this->operators );
-                               }
-                               $this->operators[] = $token;
-                       }
-               }
-
-               // Finish off the stack
-               while ( $op = array_pop( $this->operators ) ) {
-                       $this->doOperation( $op, $this->operands );
-               }
-
-               // Make sure the result is sane. The first case is possible for an empty
-               // string input, the second should be unreachable.
-               if ( !count( $this->operands ) ) {
-                       $this->error( 'condition expected' );
-               } elseif ( count( $this->operands ) > 1 ) {
-                       $this->error( 'missing operator or too many operands' );
-               }
-
-               $value = $this->operands[0];
-               if ( $value->type !== 'boolean' ) {
-                       $this->error( 'the result must have a boolean type' );
-               }
-
-               return $this->operands[0]->rpn;
-       }
-
-       /**
-        * Fetch the next token from the input string.
-        *
-        * @return CLDRPluralRuleConverter_Fragment The next token
-        */
-       protected function nextToken() {
-               if ( $this->pos >= $this->end ) {
-                       return false;
-               }
-
-               // Whitespace
-               $length = strspn( $this->rule, self::WHITESPACE_CLASS, $this->pos );
-               $this->pos += $length;
-
-               if ( $this->pos >= $this->end ) {
-                       return false;
-               }
-
-               // Number
-               $length = strspn( $this->rule, self::NUMBER_CLASS, $this->pos );
-               if ( $length !== 0 ) {
-                       $token = $this->newNumber( substr( $this->rule, $this->pos, $length ), $this->pos );
-                       $this->pos += $length;
-                       return $token;
-               }
-
-               // Two-character operators
-               $op2 = substr( $this->rule, $this->pos, 2 );
-               if ( $op2 === '..' || $op2 === '!=' ) {
-                       $token = $this->newOperator( $op2, $this->pos, 2 );
-                       $this->pos += 2;
-                       return $token;
-               }
-
-               // Single-character operators
-               $op1 = $this->rule[$this->pos];
-               if ( $op1 === ',' || $op1 === '=' || $op1 === '%' ) {
-                       $token = $this->newOperator( $op1, $this->pos, 1 );
-                       $this->pos ++;
-                       return $token;
-               }
-
-               // Word
-               if ( !preg_match( self::WORD_REGEX, $this->rule, $m, 0, $this->pos ) ) {
-                       $this->error( 'unexpected character "' . $this->rule[$this->pos] . '"' );
-               }
-               $word1 = strtolower( $m[0] );
-               $word2 = '';
-               $nextTokenPos = $this->pos + strlen( $word1 );
-               if ( $word1 === 'not' || $word1 === 'is' ) {
-                       // Look ahead one word
-                       $nextTokenPos += strspn( $this->rule, self::WHITESPACE_CLASS, $nextTokenPos );
-                       if ( $nextTokenPos < $this->end
-                               && preg_match( self::WORD_REGEX, $this->rule, $m, 0, $nextTokenPos )
-                       ) {
-                               $word2 = strtolower( $m[0] );
-                               $nextTokenPos += strlen( $word2 );
-                       }
-               }
-
-               // Two-word operators like "is not" take precedence over single-word operators like "is"
-               if ( $word2 !== '' ) {
-                       $bothWords = "{$word1}-{$word2}";
-                       if ( isset( self::$precedence[$bothWords] ) ) {
-                               $token = $this->newOperator( $bothWords, $this->pos, $nextTokenPos - $this->pos );
-                               $this->pos = $nextTokenPos;
-                               return $token;
-                       }
-               }
-
-               // Single-word operators
-               if ( isset( self::$precedence[$word1] ) ) {
-                       $token = $this->newOperator( $word1, $this->pos, strlen( $word1 ) );
-                       $this->pos += strlen( $word1 );
-                       return $token;
-               }
-
-               // The single-character operand symbols
-               if ( strpos( self::OPERAND_SYMBOLS, $word1 ) !== false ) {
-                       $token = $this->newNumber( $word1, $this->pos );
-                       $this->pos ++;
-                       return $token;
-               }
-
-               // Samples
-               if ( $word1 === '@integer' || $word1 === '@decimal' ) {
-                       // Samples are like comments, they have no effect on rule evaluation.
-                       // They run from the first sample indicator to the end of the string.
-                       $this->pos = $this->end;
-                       return false;
-               }
-
-               $this->error( 'unrecognised word' );
-       }
-
-       /**
-        * For the binary operator $op, pop its operands off the stack and push
-        * a fragment with rpn and type members describing the result of that
-        * operation.
-        *
-        * @param CLDRPluralRuleConverter_Operator $op
-        */
-       protected function doOperation( $op ) {
-               if ( count( $this->operands ) < 2 ) {
-                       $op->error( 'missing operand' );
-               }
-               $right = array_pop( $this->operands );
-               $left = array_pop( $this->operands );
-               $result = $op->operate( $left, $right );
-               $this->operands[] = $result;
-       }
-
-       /**
-        * Create a numerical expression object
-        *
-        * @param string $text
-        * @param int $pos
-        * @return CLDRPluralRuleConverter_Expression The numerical expression
-        */
-       protected function newNumber( $text, $pos ) {
-               return new CLDRPluralRuleConverter_Expression( $this, 'number', $text, $pos, strlen( $text ) );
-       }
-
-       /**
-        * Create a binary operator
-        *
-        * @param string $type
-        * @param int $pos
-        * @param int $length
-        * @return CLDRPluralRuleConverter_Operator The operator
-        */
-       protected function newOperator( $type, $pos, $length ) {
-               return new CLDRPluralRuleConverter_Operator( $this, $type, $pos, $length );
-       }
-
-       /**
-        * Throw an error
-        */
-       protected function error( $message ) {
-               throw new CLDRPluralRuleError( $message );
-       }
-}
-
-/**
- * Helper for CLDRPluralRuleConverter.
- * The base class for operators and expressions, describing a region of the input string.
- */
-class CLDRPluralRuleConverter_Fragment {
-       public $parser, $pos, $length, $end;
-
-       function __construct( $parser, $pos, $length ) {
-               $this->parser = $parser;
-               $this->pos = $pos;
-               $this->length = $length;
-               $this->end = $pos + $length;
-       }
-
-       public function error( $message ) {
-               $text = $this->getText();
-               throw new CLDRPluralRuleError( "$message at position " . ( $this->pos + 1 ) . ": \"$text\"" );
-       }
-
-       public function getText() {
-               return substr( $this->parser->rule, $this->pos, $this->length );
-       }
-}
-
-/**
- * Helper for CLDRPluralRuleConverter.
- * An expression object, representing a region of the input string (for error
- * messages), the RPN notation used to evaluate it, and the result type for
- * validation.
- */
-class CLDRPluralRuleConverter_Expression extends CLDRPluralRuleConverter_Fragment {
-       /** @var string */
-       public $type;
-
-       /** @var string */
-       public $rpn;
-
-       function __construct( $parser, $type, $rpn, $pos, $length ) {
-               parent::__construct( $parser, $pos, $length );
-               $this->type = $type;
-               $this->rpn = $rpn;
-       }
-
-       public function isType( $type ) {
-               if ( $type === 'range' && ( $this->type === 'range' || $this->type === 'number' ) ) {
-                       return true;
-               }
-               if ( $type === $this->type ) {
-                       return true;
-               }
-               return false;
-       }
-}
-
-/**
- * Helper for CLDRPluralRuleConverter.
- * An operator object, representing a region of the input string (for error
- * messages), and the binary operator at that location.
- */
-class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment {
-       /** @var string The name */
-       public $name;
-
-       /**
-        * Each op type has three characters: left operand type, right operand type and result type
-        *
-        *   b = boolean
-        *   n = number
-        *   r = range
-        *
-        * A number is a kind of range.
-        *
-        * @var array
-        */
-       static $opTypes = array(
-               'or' => 'bbb',
-               'and' => 'bbb',
-               'is' => 'nnb',
-               'is-not' => 'nnb',
-               'in' => 'nrb',
-               'not-in' => 'nrb',
-               'within' => 'nrb',
-               'not-within' => 'nrb',
-               'mod' => 'nnn',
-               ',' => 'rrr',
-               '..' => 'nnr',
-       );
-
-       /**
-        * Map converting from the abbrevation to the full form.
-        *
-        * @var array
-        */
-       static $typeSpecMap = array(
-               'b' => 'boolean',
-               'n' => 'number',
-               'r' => 'range',
-       );
-
-       /**
-        * Map for converting the new operators introduced in Rev 33 to the old forms
-        */
-       static $aliasMap = array(
-               '%' => 'mod',
-               '!=' => 'not-in',
-               '=' => 'in'
-       );
-
-       /**
-        * Initialize a new instance of a CLDRPluralRuleConverter_Operator object
-        *
-        * @param CLDRPluralRuleConverter $parser The parser
-        * @param string $name The operator name
-        * @param int $pos The length
-        * @param int $length
-        */
-       function __construct( $parser, $name, $pos, $length ) {
-               parent::__construct( $parser, $pos, $length );
-               if ( isset( self::$aliasMap[$name] ) ) {
-                       $name = self::$aliasMap[$name];
-               }
-               $this->name = $name;
-       }
-
-       /**
-        * Compute the operation
-        *
-        * @param CLDRPluralRuleConverter_Expression $left The left part of the expression
-        * @param CLDRPluralRuleConverter_Expression $right The right part of the expression
-        * @return CLDRPluralRuleConverter_Expression The result of the operation
-        */
-       public function operate( $left, $right ) {
-               $typeSpec = self::$opTypes[$this->name];
-
-               $leftType = self::$typeSpecMap[$typeSpec[0]];
-               $rightType = self::$typeSpecMap[$typeSpec[1]];
-               $resultType = self::$typeSpecMap[$typeSpec[2]];
-
-               $start = min( $this->pos, $left->pos, $right->pos );
-               $end = max( $this->end, $left->end, $right->end );
-               $length = $end - $start;
-
-               $newExpr = new CLDRPluralRuleConverter_Expression( $this->parser, $resultType,
-                       "{$left->rpn} {$right->rpn} {$this->name}",
-                       $start, $length );
-
-               if ( !$left->isType( $leftType ) ) {
-                       $newExpr->error( "invalid type for left operand: expected $leftType, got {$left->type}" );
-               }
-
-               if ( !$right->isType( $rightType ) ) {
-                       $newExpr->error( "invalid type for right operand: expected $rightType, got {$right->type}" );
-               }
-               return $newExpr;
-       }
-}
-
-/**
- * The exception class for all the classes in this file. This will be thrown
- * back to the caller if there is any validation error.
- */
-class CLDRPluralRuleError extends MWException {
-       function __construct( $message ) {
-               parent::__construct( 'CLDR plural rule error: ' . $message );
-       }
-}
diff --git a/languages/utils/CLDRPluralRuleEvaluator_Range.php b/languages/utils/CLDRPluralRuleEvaluator_Range.php
new file mode 100644 (file)
index 0000000..9732b8d
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+/**
+ * @author Niklas Laxström, Tim Starling
+ *
+ * @copyright Copyright © 2010-2012, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ *
+ * @file
+ * @since 1.20
+ */
+
+/**
+ * Evaluator helper class representing a range list.
+ */
+class CLDRPluralRuleEvaluator_Range {
+       /**
+        * The parts
+        *
+        * @var array
+        */
+       public $parts = array();
+
+       /**
+        * Initialize a new instance of CLDRPluralRuleEvaluator_Range
+        *
+        * @param int $start The start of the range
+        * @param int|bool $end The end of the range, or false if the range is not bounded.
+        */
+       function __construct( $start, $end = false ) {
+               if ( $end === false ) {
+                       $this->parts[] = $start;
+               } else {
+                       $this->parts[] = array( $start, $end );
+               }
+       }
+
+       /**
+        * Determine if the given number is inside the range.
+        *
+        * @param int $number The number to check
+        * @param bool $integerConstraint If true, also asserts the number is an integer; otherwise, number simply has to be inside the range.
+        * @return bool True if the number is inside the range; otherwise, false.
+        */
+       function isNumberIn( $number, $integerConstraint = true ) {
+               foreach ( $this->parts as $part ) {
+                       if ( is_array( $part ) ) {
+                               if ( ( !$integerConstraint || floor( $number ) === (float)$number )
+                                       && $number >= $part[0] && $number <= $part[1]
+                               ) {
+                                       return true;
+                               }
+                       } else {
+                               if ( $number == $part ) {
+                                       return true;
+                               }
+                       }
+               }
+               return false;
+       }
+
+       /**
+        * Readable alias for isNumberIn( $number, false ), and the implementation
+        * of the "within" operator.
+        *
+        * @param int $number The number to check
+        * @return bool True if the number is inside the range; otherwise, false.
+        */
+       function isNumberWithin( $number ) {
+               return $this->isNumberIn( $number, false );
+       }
+
+       /**
+        * Add another part to this range.
+        *
+        * @param CLDRPluralRuleEvaluator_Range|int $other The part to add, either
+        *   a range object itself or a single number.
+        */
+       function add( $other ) {
+               if ( $other instanceof self ) {
+                       $this->parts = array_merge( $this->parts, $other->parts );
+               } else {
+                       $this->parts[] = $other;
+               }
+       }
+
+       /**
+        * Returns the string representation of the rule evaluator range.
+        * The purpose of this method is to help debugging.
+        *
+        * @return string The string representation of the rule evaluator range
+        */
+       function __toString() {
+               $s = 'Range(';
+               foreach ( $this->parts as $i => $part ) {
+                       if ( $i ) {
+                               $s .= ', ';
+                       }
+                       if ( is_array( $part ) ) {
+                               $s .= $part[0] . '..' . $part[1];
+                       } else {
+                               $s .= $part;
+                       }
+               }
+               $s .= ')';
+               return $s;
+       }
+
+}
index bfe04d7..9847ccc 100644 (file)
@@ -91,7 +91,7 @@ class ResetUserTokens extends Maintenance {
 
                        wfWaitForSlaves();
 
-               } while ( $max <= $maxid );
+               } while ( $min <= $maxid );
 
        }
 
index 00251ef..642897c 100644 (file)
@@ -373,7 +373,6 @@ return array(
                                'resources/src/jquery.ui-themes/vector/jquery.ui.theme.css',
                        ),
                ),
-               'dependencies' => 'jquery',
                'group' => 'jquery.ui',
        ),
        'jquery.ui.widget' => array(
@@ -572,7 +571,6 @@ return array(
        // Effects
        'jquery.effects.core' => array(
                'scripts' => 'resources/lib/jquery.effects/jquery.effects.core.js',
-               'dependencies' => 'jquery',
                'group' => 'jquery.ui',
        ),
        'jquery.effects.blind' => array(
index c321ab1..409022a 100644 (file)
@@ -12,5 +12,6 @@
     "ooui-dialog-action-close": "বন্ধ",
     "ooui-outline-control-move-down": "আইটেম নিচে স্থানান্তর",
     "ooui-outline-control-move-up": "আইটেম উপরে স্থানান্তর",
+    "ooui-outline-control-remove": "আইটেম সরান",
     "ooui-toolbar-more": "আরও"
-}
\ No newline at end of file
+}
index 2013ee3..5381fd1 100644 (file)
@@ -7,5 +7,6 @@
     "ooui-dialog-action-close": "បិទ",
     "ooui-outline-control-move-down": "រុញ​ទៅ​ក្រោម",
     "ooui-outline-control-move-up": "រុញ​ទៅ​លើ",
+    "ooui-outline-control-remove": "ដក​វត្ថុ​ចេញ",
     "ooui-toolbar-more": "បន្ថែម"
-}
\ No newline at end of file
+}
diff --git a/resources/lib/oojs-ui/i18n/zh-hk.json b/resources/lib/oojs-ui/i18n/zh-hk.json
deleted file mode 100644 (file)
index 60e8fbd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "@metadata": [],
-    "ooui-dialog-action-close": "關閉"
-}
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/i18n/zh-tw.json b/resources/lib/oojs-ui/i18n/zh-tw.json
deleted file mode 100644 (file)
index f7987e5..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "@metadata": [],
-    "ooui-dialog-action-close": "關閉",
-    "ooui-outline-control-move-down": "向下移",
-    "ooui-outline-control-move-up": "向上移",
-    "ooui-toolbar-more": "更多"
-}
\ No newline at end of file
index 3ddb5b3..9629087 100644 (file)
   box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
 }
 
+.oo-ui-fieldLayout-disabled .oo-ui-labeledElement-label {
+  color: #ccc;
+}
+
 .oo-ui-fieldsetLayout {
   border: none;
 }
 .oo-ui-menuToolGroup.oo-ui-widget-disabled {
   color: #ccc;
   text-shadow: 0 1px 1px #fff;
-  background-color: #f3f3f3;
-  border-color: #ddd;
+  border-color: rgba(0, 0, 0, 0.05);
 }
 
 .oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator,
index cf838b9..6e00086 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (4975b8db90)
+ * OOjs UI v0.1.0-pre (ac6848398c)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Mon Apr 07 2014 15:17:10 GMT-0700 (PDT)
+ * Date: Wed Apr 09 2014 17:58:17 GMT-0700 (PDT)
  */
 ( function ( OO ) {
 
@@ -1483,6 +1483,8 @@ OO.ui.WindowSet.prototype.addWindow = function ( win ) {
        this.$element.append( win.$element );
 };
 /**
+ * Modal dialog window.
+ *
  * @abstract
  * @class
  * @extends OO.ui.Window
@@ -2028,7 +2030,10 @@ OO.ui.ClippableElement.prototype.clip = function () {
        return this;
 };
 /**
- * Element with named flags, used for styling, that can be added, removed and listed and checked.
+ * Element with named flags that can be added, removed, listed and checked.
+ *
+ * A flag, when set, adds a CSS class on the `$element` by combing `oo-ui-flaggableElement-` with
+ * the flag name. Flags are primarily useful for styling.
  *
  * @class
  * @abstract
@@ -3567,7 +3572,7 @@ OO.ui.ToolGroup.prototype.destroy = function () {
        this.$element.remove();
 };
 /**
- * Factory for tools.
+ * Factory for tool groups.
  *
  * @class
  * @extends OO.Factory
@@ -3691,11 +3696,13 @@ OO.ui.FieldLayout = function OoUiFieldLayout( field, config ) {
        if ( this.field instanceof OO.ui.InputWidget ) {
                this.$label.on( 'click', OO.ui.bind( this.onLabelClick, this ) );
        }
+       this.field.connect( this, { 'disable': 'onFieldDisable' } );
 
        // Initialization
        this.$element.addClass( 'oo-ui-fieldLayout' );
        this.$field
                .addClass( 'oo-ui-fieldLayout-field' )
+               .toggleClass( 'oo-ui-fieldLayout-disable', this.field.isDisabled() )
                .append( this.field.$element );
        this.setAlignment( config.align );
 };
@@ -3708,7 +3715,16 @@ OO.mixinClass( OO.ui.FieldLayout, OO.ui.LabeledElement );
 /* Methods */
 
 /**
- * Handles label mouse click events.
+ * Handle field disable events.
+ *
+ * @param {boolean} value Field is disabled
+ */
+OO.ui.FieldLayout.prototype.onFieldDisable = function ( value ) {
+       this.$element.toggleClass( 'oo-ui-fieldLayout-disabled', value );
+};
+
+/**
+ * Handle label mouse click events.
  *
  * @method
  * @param {jQuery.Event} e Mouse click event
@@ -4387,7 +4403,7 @@ OO.ui.PanelLayout = function OoUiPanelLayout( config ) {
 
 OO.inheritClass( OO.ui.PanelLayout, OO.ui.Layout );
 /**
- * Page within an OO.ui.BookletLayout.
+ * Page within an booklet layout.
  *
  * @class
  * @extends OO.ui.PanelLayout
@@ -4875,7 +4891,7 @@ OO.ui.MenuToolGroup.prototype.onUpdateState = function () {
        this.setLabel( labelTexts.join( ', ' ) || ' ' );
 };
 /**
- * UserInterface popup tool.
+ * Tool that shows a popup when selected.
  *
  * @abstract
  * @class
@@ -5027,7 +5043,7 @@ OO.ui.ItemWidget.prototype.setElementGroup = function ( group ) {
        return this;
 };
 /**
- * Creates an OO.ui.IconWidget object.
+ * Icon widget.
  *
  * @class
  * @extends OO.ui.Widget
@@ -5062,7 +5078,7 @@ OO.mixinClass( OO.ui.IconWidget, OO.ui.TitledElement );
 
 OO.ui.IconWidget.static.tagName = 'span';
 /**
- * Creates an OO.ui.IndicatorWidget object.
+ * Indicator widget.
  *
  * @class
  * @extends OO.ui.Widget
@@ -5099,6 +5115,8 @@ OO.ui.IndicatorWidget.static.tagName = 'span';
 /**
  * Container for multiple related buttons.
  *
+ * Use together with OO.ui.ButtonWidget.
+ *
  * @class
  * @extends OO.ui.Widget
  * @mixins OO.ui.GroupElement
@@ -5126,7 +5144,7 @@ OO.ui.ButtonGroupWidget = function OoUiButtonGroupWidget( config ) {
 OO.inheritClass( OO.ui.ButtonGroupWidget, OO.ui.Widget );
 OO.mixinClass( OO.ui.ButtonGroupWidget, OO.ui.GroupElement );
 /**
- * Creates an OO.ui.ButtonWidget object.
+ * Button widget.
  *
  * @class
  * @abstract
@@ -5229,7 +5247,7 @@ OO.ui.ButtonWidget.prototype.onKeyPress = function ( e ) {
        return false;
 };
 /**
- * Creates an OO.ui.InputWidget object.
+ * Input widget.
  *
  * @class
  * @abstract
@@ -5424,7 +5442,7 @@ OO.ui.InputWidget.prototype.setDisabled = function ( state ) {
        return this;
 };
 /**
- * Creates an OO.ui.CheckboxInputWidget object.
+ * Checkbox widget.
  *
  * @class
  * @extends OO.ui.InputWidget
@@ -5490,7 +5508,7 @@ OO.ui.CheckboxInputWidget.prototype.onEdit = function () {
        }
 };
 /**
- * Creates an OO.ui.LabelWidget object.
+ * Label widget.
  *
  * @class
  * @extends OO.ui.Widget
@@ -5778,7 +5796,9 @@ OO.ui.LookupInputWidget.prototype.getLookupMenuItemsFromData = function () {
        return [];
 };
 /**
- * Creates an OO.ui.OptionWidget object.
+ * Option widget.
+ *
+ * Use with OO.ui.SelectWidget.
  *
  * @class
  * @abstract
@@ -6003,7 +6023,9 @@ OO.ui.OptionWidget.prototype.getData = function () {
        return this.data;
 };
 /**
- * Create an OO.ui.SelectWidget object.
+ * Selection of options.
+ *
+ * Use together with OO.ui.OptionWidget.
  *
  * @class
  * @abstract
@@ -6515,7 +6537,9 @@ OO.ui.SelectWidget.prototype.clearItems = function () {
        return this;
 };
 /**
- * Creates an OO.ui.MenuItemWidget object.
+ * Menu item widget.
+ *
+ * Use with OO.ui.MenuWidget.
  *
  * @class
  * @extends OO.ui.OptionWidget
@@ -6539,7 +6563,9 @@ OO.ui.MenuItemWidget = function OoUiMenuItemWidget( data, config ) {
 
 OO.inheritClass( OO.ui.MenuItemWidget, OO.ui.OptionWidget );
 /**
- * Create an OO.ui.MenuWidget object.
+ * Menu widget.
+ *
+ * Use together with OO.ui.MenuItemWidget.
  *
  * @class
  * @extends OO.ui.SelectWidget
@@ -6781,6 +6807,8 @@ OO.ui.MenuWidget.prototype.hide = function () {
 /**
  * Inline menu of options.
  *
+ * Use with OO.ui.MenuOptionWidget.
+ *
  * @class
  * @extends OO.ui.Widget
  * @mixins OO.ui.IconedElement
@@ -6848,7 +6876,13 @@ OO.ui.InlineMenuWidget.prototype.getMenu = function () {
  * @param {OO.ui.MenuItemWidget} item Selected menu item
  */
 OO.ui.InlineMenuWidget.prototype.onMenuSelect = function ( item ) {
-       var selectedLabel = item.getLabel();
+       var selectedLabel;
+
+       if ( !item ) {
+               return;
+       }
+
+       selectedLabel = item.getLabel();
 
        // If the label is a DOM element, clone it, because setLabel will append() it
        if ( selectedLabel instanceof jQuery ) {
@@ -6880,7 +6914,9 @@ OO.ui.InlineMenuWidget.prototype.onClick = function ( e ) {
        return false;
 };
 /**
- * Creates an OO.ui.MenuSectionItemWidget object.
+ * Menu section item widget.
+ *
+ * Use with OO.ui.MenuWidget.
  *
  * @class
  * @extends OO.ui.OptionWidget
@@ -6909,6 +6945,8 @@ OO.ui.MenuSectionItemWidget.static.highlightable = false;
 /**
  * Create an OO.ui.OutlineWidget object.
  *
+ * Use with OO.ui.OutlineItemWidget.
+ *
  * @class
  * @extends OO.ui.SelectWidget
  *
@@ -6932,6 +6970,8 @@ OO.inheritClass( OO.ui.OutlineWidget, OO.ui.SelectWidget );
 /**
  * Creates an OO.ui.OutlineControlsWidget object.
  *
+ * Use together with OO.ui.OutlineWidget.js
+ *
  * @class
  *
  * @constructor
@@ -7045,6 +7085,8 @@ OO.ui.OutlineControlsWidget.prototype.onOutlineChange = function () {
 /**
  * Creates an OO.ui.OutlineItemWidget object.
  *
+ * Use with OO.ui.OutlineWidget.
+ *
  * @class
  * @extends OO.ui.OptionWidget
  *
@@ -7168,7 +7210,9 @@ OO.ui.OutlineItemWidget.prototype.setLevel = function ( level ) {
        return this;
 };
 /**
- * Create an OO.ui.ButtonOptionWidget object.
+ * Option widget that looks like a button.
+ *
+ * Use together with OO.ui.ButtonSelectWidget.
  *
  * @class
  * @extends OO.ui.OptionWidget
@@ -7212,7 +7256,9 @@ OO.ui.ButtonOptionWidget.prototype.setSelected = function ( state ) {
        return this;
 };
 /**
- * Create an OO.ui.ButtonSelect object.
+ * Select widget containing button options.
+ *
+ * Use together with OO.ui.ButtonOptionWidget.
  *
  * @class
  * @extends OO.ui.SelectWidget
@@ -7232,7 +7278,7 @@ OO.ui.ButtonSelectWidget = function OoUiButtonSelectWidget( config ) {
 
 OO.inheritClass( OO.ui.ButtonSelectWidget, OO.ui.SelectWidget );
 /**
- * Creates an OO.ui.PopupWidget object.
+ * Container for content that is overlaid and positioned absolutely.
  *
  * @class
  * @extends OO.ui.Widget
@@ -7542,7 +7588,9 @@ OO.ui.PopupButtonWidget.prototype.onClick = function ( e ) {
        return false;
 };
 /**
- * Creates an OO.ui.SearchWidget object.
+ * Search widget.
+ *
+ * Combines query and results selection widgets.
  *
  * @class
  * @extends OO.ui.Widget
@@ -7707,7 +7755,7 @@ OO.ui.SearchWidget.prototype.getResults = function () {
        return this.results;
 };
 /**
- * Creates an OO.ui.TextInputWidget object.
+ * Text input widget.
  *
  * @class
  * @extends OO.ui.InputWidget
@@ -7911,7 +7959,7 @@ OO.ui.TextInputWidget.prototype.popPending = function () {
        return this;
 };
 /**
- * Creates an OO.ui.TextInputMenuWidget object.
+ * Menu for a text input widget.
  *
  * @class
  * @extends OO.ui.MenuWidget
@@ -8015,6 +8063,8 @@ OO.ui.TextInputMenuWidget.prototype.position = function () {
        return this;
 };
 /**
+ * Width with on and off states.
+ *
  * Mixin for widgets with a boolean state.
  *
  * @class
@@ -8074,6 +8124,8 @@ OO.ui.ToggleWidget.prototype.setValue = function ( value ) {
        return this;
 };
 /**
+ * Button that toggles on and off.
+ *
  * @class
  * @extends OO.ui.ButtonWidget
  * @mixins OO.ui.ToggleWidget
@@ -8130,6 +8182,8 @@ OO.ui.ToggleButtonWidget.prototype.setValue = function ( value ) {
        return this;
 };
 /**
+ * Switch that slides on and off.
+ *
  * @class
  * @abstract
  * @extends OO.ui.Widget
index 873fd19..b2ba750 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (4975b8db90)
+ * OOjs UI v0.1.0-pre (ac6848398c)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Mon Apr 07 2014 15:17:10 GMT-0700 (PDT)
+ * Date: Wed Apr 09 2014 17:58:17 GMT-0700 (PDT)
  */
 
 /* Textures */
index eb38936..50349c3 100644 (file)
@@ -63,7 +63,6 @@ table.mw-listgrouprights-table tr {
 }
 
 /**** Special:Prefixindex ****/
-table#mw-prefixindex-list-table, /* HTML backwards-compatibility, to be removed before 1.23 */
 table.mw-prefixindex-list-table,
 table#mw-prefixindex-nav-table {
        width: 100%;
index 707f8d5..8ce9b58 100644 (file)
                },
 
                /**
-                * Get the main page name (transformed by #text)
+                * Get the main page name
                 *
                 * Example: "Example_image.svg" for "File:Example_image.svg".
                 *
index f6bc81d..9b0711a 100644 (file)
                                        [ tail, 8 ],
                                        [ tail, 19 ],
                                        [ tail - 8, 8 ],
-                                       [ tail, 8 ],
+                                       [ tail, 8 ]
                                ] ) );
                                g.appendChild( node );
 
                                trigger: 'manual',
                                title: function () {
                                        return profile.buildFlyout( $( this ).data( 'period' ) ).html();
-                               },
+                               }
                        } ).on( 'mouseenter', function () {
                                hide();
                                addClass( this, 'tipsy-visible' );
                 */
                xCoord: function ( msTimestamp ) {
                        return ( msTimestamp - profile.data.timespan.start ) * profile.ratio;
-               },
+               }
        };
 
        function ProfileData( data, width, mergeThresholdPx, dropThresholdPx ) {
                return Object.keys( groups ).map( function ( group ) {
                        return {
                                name: group,
-                               events: groups[group],
+                               events: groups[group]
                        };
                } );
        };
                                return [{
                                        start: period.start,
                                        end: period.end,
-                                       contained: [period],
+                                       contained: [period]
                                }];
                        }
                        var last = result[result.length - 1];
                                result.push({
                                        start: period.start,
                                        end: period.end,
-                                       contained: [period],
+                                       contained: [period]
                                });
                        }
                        return result;
index 0a0b4f6..32a9927 100644 (file)
                        try {
                                return parser.parse( key, argsArray );
                        } catch ( e ) {
-                               return $( '<span>' ).text( key + ': ' + e.message );
+                               var fallback = parser.settings.messages.get( key );
+                               mw.log.warn( 'mediawiki.jqueryMsg: ' + key + ': ' + e.message );
+                               return $( '<span>' ).text( fallback );
                        }
                };
        }
                 * @param {Array} nodes List of nodes
                 * @return {string} Other message
                 */
-               int: function ( nodes ) {
+               'int': function ( nodes ) {
                        return mw.jqueryMsg.getMessageFunction()( nodes[0].toLowerCase() );
                },
 
index 03f133e..3174af1 100644 (file)
@@ -91,7 +91,7 @@ relativeforfloats = window.relativeforfloats = function () {
 setrelative = window.setrelative = function ( nodes ) {
        var i = 0;
        while ( i < nodes.length ) {
-               if ( ( ( nodes[i].style.float && nodes[i].style.float !== ( 'none' ) ||
+               if ( ( ( nodes[i].style['float'] && nodes[i].style['float'] !== ( 'none' ) ||
                        ( nodes[i].align && nodes[i].align !== ( 'none' ) ) ) &&
                        ( !nodes[i].style.position || nodes[i].style.position !== 'relative' ) ) )
                {
index 9b8c41a..25ba301 100644 (file)
@@ -28,7 +28,6 @@ body {
 
 /* Content */
 div#content {
-       line-height: @content-line-height;
        margin-left: 10em;
        padding: @content-padding;
        /* Border on top, left, and bottom side */
@@ -131,7 +130,7 @@ pre, .mw-code {
 #bodyContent {
        position: relative;
        width: 100%;
-       line-height: 1.5em;
+       line-height: @content-line-height;
        font-size: @content-font-size;
 }
 
index 60792d5..91388c6 100644 (file)
@@ -1,9 +1,10 @@
-// FIXME: This size of this CSS is ridiculous. Please refactor (see bug 54604)
 @import "mediawiki.mixins.less";
 // External links
-.external {
-       background-position: center right;
-       background-repeat: no-repeat;
-       .background-image-svg('images/external-link-ltr-icon.svg', 'images/external-link-ltr-icon.png' );
-       padding-right: 13px;
+#content {
+       .external {
+               background-position: center right;
+               background-repeat: no-repeat;
+               .background-image-svg('images/external-link-ltr-icon.svg', 'images/external-link-ltr-icon.png');
+               padding-right: 13px;
+       }
 }
index fc23919..48a4017 100644 (file)
@@ -179,7 +179,7 @@ class RevisionTest extends MediaWikiTestCase {
         * @param string $text
         * @param string $title
         * @param string $model
-        * @param null $format
+        * @param string $format
         *
         * @return Revision
         */
index d1c214a..080ff54 100644 (file)
@@ -315,22 +315,24 @@ class DummyContentHandlerForTesting extends ContentHandler {
        }
 
        /**
-        * Serializes Content object of the type supported by this ContentHandler.
+        * @see ContentHandler::serializeContent
         *
-        * @param Content $content the Content object to serialize
-        * @param null $format the desired serialization format
-        * @return String serialized form of the content
+        * @param Content $content
+        * @param string $format
+        *
+        * @return string
         */
        public function serializeContent( Content $content, $format = null ) {
                return $content->serialize();
        }
 
        /**
-        * Unserializes a Content object of the type supported by this ContentHandler.
+        * @see ContentHandler::unserializeContent
+        *
+        * @param string $blob
+        * @param string $format Unused.
         *
-        * @param $blob String serialized form of the content
-        * @param null $format the format used for serialization
-        * @return Content the Content object created by deserializing $blob
+        * @return Content
         */
        public function unserializeContent( $blob, $format = null ) {
                $d = unserialize( $blob );
@@ -437,7 +439,7 @@ class DummyContentForTesting extends AbstractContent {
 
        /**
         * @param Title $title
-        * @param null $revId
+        * @param int $revId Unused.
         * @param null|ParserOptions $options
         * @param boolean $generateHtml whether to generate Html (default: true). If false,
         *  the result of calling getText() on the ParserOutput object returned by
index cce1b7e..cfcc771 100644 (file)
@@ -34,6 +34,21 @@ class ResourcesTest extends MediaWikiTestCase {
                $this->assertTrue( strpos( $cssText, '@media' ) === false, 'Stylesheets should not both specify "media" and contain @media' );
        }
 
+       public function testDependencies() {
+               $data = self::getAllModules();
+               $illegalDeps = array( 'jquery', 'mediawiki' );
+
+               foreach ( $data['modules'] as $moduleName => $module ) {
+                       foreach ( $illegalDeps as $illegalDep ) {
+                               $this->assertNotContains(
+                                       $illegalDep,
+                                       $module->getDependencies(),
+                                       "Module '$moduleName' must not depend on '$illegalDep'"
+                               );
+                       }
+               }
+       }
+
        /**
         * Get all registered modules from ResouceLoader.
         */
index 607c435..74ea58e 100644 (file)
@@ -94,7 +94,6 @@ return array(
                        'jquery.tabIndex',
                        'jquery.tablesorter',
                        'jquery.textSelection',
-                       'mediawiki',
                        'mediawiki.api',
                        'mediawiki.api.parse',
                        'mediawiki.api.watch',
index f49be49..f5fd16d 100644 (file)
@@ -1,3 +1,4 @@
+/*jshint -W024 */
 ( function ( mw, $ ) {
        // mw.Title relies on these three config vars
        // Restore them after each test run
index b6a8a46..7a58d38 100644 (file)
@@ -1,3 +1,4 @@
+/*jshint -W024 */
 ( function ( mw, $ ) {
        QUnit.module( 'mediawiki.Uri', QUnit.newMwEnvironment( {
                setup: function () {
index a2ad50d..995c1ed 100644 (file)
 
                // Pipe trick is not supported currently, but should not parse as text either.
                mw.messages.set( 'pipe-trick', '[[Tampa, Florida|]]' );
+               this.suppressWarnings();
                assert.equal(
                        formatParse( 'pipe-trick' ),
-                       'pipe-trick: Parse error at position 0 in input: [[Tampa, Florida|]]',
-                       'Pipe trick should return error string.'
+                       '[[Tampa, Florida|]]',
+                       'Pipe trick should not be parsed.'
                );
+               this.restoreWarnings();
 
                expectedMultipleBars = '<a title="Main Page" href="/wiki/Main_Page">Main|Page</a>';
                mw.messages.set( 'multiple-bars', '[[Main Page|Main|Page]]' );
@@ -734,4 +736,25 @@ QUnit.test( 'HTML', 26, function ( assert ) {
        );
 } );
 
+       QUnit.test( 'Behavior in case of invalid wikitext', 3, function ( assert ) {
+               mw.messages.set( 'invalid-wikitext', '<b>{{FAIL}}</b>' );
+
+               this.suppressWarnings();
+               var logSpy = this.sandbox.spy( mw.log, 'warn' );
+
+               assert.equal(
+                       formatParse( 'invalid-wikitext' ),
+                       '&lt;b&gt;{{FAIL}}&lt;/b&gt;',
+                       'Invalid wikitext: \'parse\' format'
+               );
+
+               assert.equal(
+                       formatText( 'invalid-wikitext' ),
+                       '<b>{{FAIL}}</b>',
+                       'Invalid wikitext: \'text\' format'
+               );
+
+               assert.equal( logSpy.callCount, 2, 'mw.log.warn calls' );
+       } );
+
 }( mediaWiki, jQuery ) );
index 8fd789a..4e26bdc 100644 (file)
@@ -73,7 +73,7 @@
                        'Mozilla/5.0 (Series40; NokiaX3-02/05.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.2.0.0.6',
                        'Mozilla/5.0 (Series40; Nokia305/05.92; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11',
                        // Google Glass
-                       'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/IMM76L; XE11) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
+                       'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/IMM76L; XE11) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
                ],
                // No explicit support for or against these browsers, they're
                // given a shot at Grade A at their own risk.