Merge "mediawiki.log: Remove call to console.trace() for each warning"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sat, 27 Jun 2015 12:49:25 +0000 (12:49 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 27 Jun 2015 12:49:25 +0000 (12:49 +0000)
65 files changed:
.gitattributes
RELEASE-NOTES-1.26
autoload.php
composer.json
docs/hooks.txt
includes/DefaultSettings.php
includes/MimeMagic.php
includes/Setup.php
includes/ZhConversion.php
includes/actions/InfoAction.php
includes/api/i18n/de.json
includes/api/i18n/es.json
includes/api/i18n/gl.json
includes/api/i18n/he.json
includes/api/i18n/qqq.json
includes/changes/ChangesList.php
includes/changes/EnhancedChangesList.php
includes/db/Database.php
includes/db/LoadBalancer.php
includes/db/LoadMonitor.php
includes/installer/i18n/uk.json
includes/libs/RiffExtractor.php [new file with mode: 0644]
includes/libs/composer/ComposerLock.php
includes/media/Bitmap.php
includes/media/WebP.php [new file with mode: 0644]
includes/specialpage/SpecialPage.php
includes/specialpage/SpecialPageFactory.php
includes/specials/SpecialVersion.php
languages/i18n/be-tarask.json
languages/i18n/bs.json
languages/i18n/cs.json
languages/i18n/dty.json
languages/i18n/en.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/hr.json
languages/i18n/ia.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/kn.json
languages/i18n/lrc.json
languages/i18n/nan.json
languages/i18n/ne.json
languages/i18n/or.json
languages/i18n/pa.json
languages/i18n/pl.json
languages/i18n/qqq.json
languages/i18n/roa-tara.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sv.json
languages/i18n/uk.json
maintenance/convertExtensionToRegistration.php
maintenance/language/zhtable/simpphrases.manual
maintenance/language/zhtable/toCN.manual
maintenance/language/zhtable/toTW.manual
maintenance/language/zhtable/tradphrases.manual
maintenance/language/zhtable/tradphrases_exclude.manual
resources/src/mediawiki.special/mediawiki.special.version.css
tests/phpunit/data/media/2_webp_a.webp [new file with mode: 0644]
tests/phpunit/data/media/2_webp_ll.webp [new file with mode: 0644]
tests/phpunit/data/media/webp_animated.webp [new file with mode: 0644]
tests/phpunit/includes/libs/composer/ComposerLockTest.php
tests/phpunit/includes/media/WebPTest.php [new file with mode: 0644]

index 69d7b1b..09f86a3 100644 (file)
@@ -1,2 +1,3 @@
 *.sh eol=lf
 *.icc binary
+*.webp binary
index c2228ae..940adc9 100644 (file)
@@ -30,6 +30,12 @@ production.
 * (T68699) The expiration of the UserID and Token login cookies
   ($wgExtendedLoginCookieExpiration) can be configured independently of the
   expiration of all other cookies ($wgCookieExpiration).
+* (T50519) Support for generating JPEG/PNG thumbnails from WebP images added
+  if ImageMagick is used as image scaler ($wgUseImageMagick = true). Uploading
+  of WebP images still disabled by default. Add $wgFileExtensions[] =
+  'webp'; to LocalSettings.php to enable uploading of WebP images.
+* Added a new hook 'EnhancedChangesListModifyLineData', to
+  modify the data used to build lines in enhanced recentchanges and watchlist.
 
 ==== External libraries ====
 * Update es5-shim from v4.0.0 to v4.1.5.
@@ -39,7 +45,7 @@ production.
 * Added mediawiki/at-ease 1.0.0
 
 === Bug fixes in 1.26 ===
-* (bug 51283) load.php sometimes sends 304 response without full headers
+* (T53283) load.php sometimes sends 304 response without full headers
 * (T65198) Talk page tabs now have a "rel=discussion" attribute
 
 === Action API changes in 1.26 ===
@@ -65,7 +71,7 @@ production.
 
 MediaWiki supports over 350 languages. Many localisations are updated
 regularly. Below only new and removed languages are listed, as well as
-changes to languages because of Bugzilla reports.
+changes to languages because of Phabricator reports.
 
 * Languages added:
 ** dty (डोटेली/Doteli), thanks to translators जनक राज भट्ट, बिप्लब आनन्द,
@@ -111,7 +117,9 @@ changes to languages because of Bugzilla reports.
   instead of many optional positional arguments. Calling the constructor the old
   way will issue a deprecation warning.
 * The jquery.mwExtension module was deprecated.
-
+* $wgSpecialPageGroups was removed (deprecated in 1.21).
+* SpecialPageFactory::setGroup was removed (deprecated in 1.21).
+* SpecialPageFactory::getGroup was removed (deprecated in 1.21).
 
 == Compatibility ==
 
@@ -178,4 +186,3 @@ going to run a public MediaWiki, so you can be notified of security fixes.
 == IRC help ==
 
 There's usually someone online in #mediawiki on irc.freenode.net.
-
index 504eaf2..917b022 100644 (file)
@@ -1040,6 +1040,7 @@ $wgAutoloadLocalClasses = array(
        'RevisionList' => __DIR__ . '/includes/RevisionList.php',
        'RevisionListBase' => __DIR__ . '/includes/RevisionList.php',
        'RevisiondeleteAction' => __DIR__ . '/includes/actions/RevisiondeleteAction.php',
+       'RiffExtractor' => __DIR__ . '/includes/libs/RiffExtractor.php',
        'RightsLogFormatter' => __DIR__ . '/includes/logging/RightsLogFormatter.php',
        'RollbackAction' => __DIR__ . '/includes/actions/RollbackAction.php',
        'RollbackEdits' => __DIR__ . '/maintenance/rollbackEdits.php',
@@ -1342,6 +1343,7 @@ $wgAutoloadLocalClasses = array(
        'WebInstallerUpgrade' => __DIR__ . '/includes/installer/WebInstallerPage.php',
        'WebInstallerUpgradeDoc' => __DIR__ . '/includes/installer/WebInstallerPage.php',
        'WebInstallerWelcome' => __DIR__ . '/includes/installer/WebInstallerPage.php',
+       'WebPHandler' => __DIR__ . '/includes/media/WebP.php',
        'WebRequest' => __DIR__ . '/includes/WebRequest.php',
        'WebRequestUpload' => __DIR__ . '/includes/WebRequest.php',
        'WebResponse' => __DIR__ . '/includes/WebResponse.php',
index 7419eb5..f72e7e4 100644 (file)
                "psr/log": "1.0.0",
                "wikimedia/cdb": "1.0.1",
                "wikimedia/assert": "0.2.2",
-               "wikimedia/composer-merge-plugin": "1.1.0",
+               "wikimedia/composer-merge-plugin": "1.2.0",
                "wikimedia/utfnormal": "1.0.2",
                "zordius/lightncandy": "0.21"
        },
        "require-dev": {
-               "jakub-onderka/php-parallel-lint": "~0.8",
+               "jakub-onderka/php-parallel-lint": "0.9",
                "justinrainbow/json-schema": "~1.3",
                "phpunit/phpunit": "3.7.37",
-               "mediawiki/mediawiki-codesniffer": "0.2.0"
+               "mediawiki/mediawiki-codesniffer": "0.3.0"
        },
        "suggest": {
                "ext-fileinfo": "*",
index 8cfdee9..bcdfa40 100644 (file)
@@ -1304,6 +1304,13 @@ $changesList: EnhancedChangesList object
 &$links: The links that were generated by EnhancedChangesList
 $block: The RecentChanges objects in that block
 
+'EnhancedChangesListModifyLineData': to alter data used to build
+a recent change inner line in EnhancedChangesList.
+$changesList: EnhancedChangesList object
+&$data: An array with all the components that will be joined in order to create the line
+$block: An array of RecentChange objects in that block
+$rc: The RecentChange object for this line
+
 'ExemptFromAccountCreationThrottle': Exemption from the account creation
 throttle.
 $ip: The ip address of the user
@@ -2403,7 +2410,9 @@ such as Special:MyPage and Special:MyTalk.
 &$redirectParams: An array of parameters preserved by redirecting special pages.
 
 'RejectParserCacheValue': Return false to reject an otherwise usable
-cached value from the Parser cache.
+cached value from the Parser cache. NOTE: CARELESS USE OF THIS HOOK CAN
+HAVE CATASTROPHIC CONSEQUENCES FOR HIGH-TRAFFIC INSTALLATIONS. USE WITH
+EXTREME CARE.
 $parserOutput: ParserOutput value.
 $wikiPage: WikiPage object.
 $parserOptions: ParserOptions object.
index 0e6ff16..6f2f5b9 100644 (file)
@@ -884,6 +884,7 @@ $wgMediaHandlers = array(
        'image/png' => 'PNGHandler',
        'image/gif' => 'GIFHandler',
        'image/tiff' => 'TiffHandler',
+       'image/webp' => 'WebPHandler',
        'image/x-ms-bmp' => 'BmpHandler',
        'image/x-bmp' => 'BmpHandler',
        'image/x-xcf' => 'XCFHandler',
@@ -6968,14 +6969,6 @@ $wgAllowSpecialInclusion = true;
  */
 $wgDisableQueryPageUpdate = false;
 
-/**
- * List of special pages, followed by what subtitle they should go under
- * at Special:SpecialPages
- *
- * @deprecated since 1.21 Override SpecialPage::getGroupName instead
- */
-$wgSpecialPageGroups = array();
-
 /**
  * On Special:Unusedimages, consider images "used", if they are put
  * into a category. Default (false) is not to count those as used.
index 3b06525..2b240c3 100644 (file)
@@ -695,7 +695,7 @@ class MimeMagic {
                }
 
                /* Look for WebP */
-               if ( strncmp( $head, "RIFF", 4 ) == 0 && strncmp( substr( $head, 8, 8 ), "WEBPVP8 ", 8 ) == 0 ) {
+               if ( strncmp( $head, "RIFF", 4 ) == 0 && strncmp( substr( $head, 8, 7 ), "WEBPVP8", 7 ) == 0 ) {
                        wfDebug( __METHOD__ . ": recognized file as image/webp\n" );
                        return "image/webp";
                }
index a97cfa6..90fbf61 100644 (file)
@@ -536,7 +536,9 @@ if ( $wgTmpDirectory === false ) {
 
 // We don't use counters anymore. Left here for extensions still
 // expecting this to exist. Should be removed sometime 1.26 or later.
-$wgDisableCounters = true;
+if ( !isset( $wgDisableCounters ) ) {
+       $wgDisableCounters = true;
+}
 
 if ( $wgMainWANCache === false ) {
        // Setup a WAN cache from $wgMainCacheType with no relayer.
index b59be8c..87cc48e 100644 (file)
@@ -3186,6 +3186,7 @@ $zh2Hant = array(
 '下签' => '下籤',
 '下课钟' => '下課鐘',
 '不干不净' => '不乾不淨',
+'不干胶' => '不乾膠',
 '不克自制' => '不克自制',
 '不加自制' => '不加自制',
 '不占凶吉' => '不占凶吉',
@@ -3372,7 +3373,6 @@ $zh2Hant = array(
 '干擦' => '乾擦',
 '干支剌' => '乾支剌',
 '干支支' => '乾支支',
-'干敲梆子不卖油' => '乾敲梆子不賣油',
 '干料' => '乾料',
 '干旱' => '乾旱',
 '干暖' => '乾暖',
@@ -3480,8 +3480,7 @@ $zh2Hant = array(
 '乱发生' => '亂發生',
 '乱发脾气' => '亂發脾氣',
 '乱发' => '亂髮',
-'乱哄' => '亂鬨',
-'乱哄不过来' => '亂鬨不過來',
+'乱哄哄' => '亂鬨鬨',
 '了然后' => '了然後',
 '事有斗巧' => '事有鬥巧',
 '事里' => '事裡',
@@ -3726,6 +3725,7 @@ $zh2Hant = array(
 '亮钟' => '亮鐘',
 '人云' => '人云',
 '人如风后入江云' => '人如風後入江雲',
+'人干的' => '人幹的',
 '人欲' => '人慾',
 '人数只' => '人數只',
 '人数里' => '人數裡',
@@ -3734,6 +3734,7 @@ $zh2Hant = array(
 '什锦面' => '什錦麵',
 '仇仇' => '仇讎',
 '介胄' => '介冑',
+'他干的' => '他幹的',
 '他钟' => '他鐘',
 '付托' => '付託',
 '仙后' => '仙后',
@@ -3846,6 +3847,7 @@ $zh2Hant = array(
 '个里' => '個裡',
 '个钟' => '個鐘',
 '个钟表' => '個鐘錶',
+'们干的' => '們幹的',
 '幸免' => '倖免',
 '幸存' => '倖存',
 '幸幸' => '倖幸',
@@ -4109,7 +4111,6 @@ $zh2Hant = array(
 '利于' => '利於',
 '刮来刮去' => '刮來刮去',
 '刮起来' => '刮起來',
-'刮风下雪倒便宜' => '刮風下雪倒便宜',
 '刮胡' => '刮鬍',
 '到山里' => '到山裡',
 '制冷机' => '制冷機',
@@ -4235,7 +4236,6 @@ $zh2Hant = array(
 '博尔术' => '博爾朮',
 '卜云吉' => '卜云吉',
 '占了卜' => '占了卜',
-'占便宜的是呆' => '占便宜的是獃',
 '印累绶若' => '印纍綬若',
 '印制' => '印製',
 '印鉴' => '印鑑',
@@ -4702,7 +4702,6 @@ $zh2Hant = array(
 '太后' => '太后',
 '太丑' => '太醜',
 '太阁' => '太閤',
-'夯干' => '夯幹',
 '夸克' => '夸克',
 '夸父' => '夸父',
 '夸特' => '夸特',
@@ -4839,6 +4838,7 @@ $zh2Hant = array(
 '对准表' => '對準錶',
 '对准钟' => '對準鐘',
 '对准钟表' => '對準鐘錶',
+'对着干' => '對着幹',
 '对华发' => '對華發',
 '对表中' => '對表中',
 '对表扬' => '對表揚',
@@ -4934,7 +4934,6 @@ $zh2Hant = array(
 '工作台' => '工作檯',
 '工致' => '工緻',
 '左冲右突' => '左衝右突',
-'巧妇做不得无面馎饦' => '巧婦做不得無麵餺飥',
 '巧干' => '巧幹',
 '巧历' => '巧曆',
 '巧历史' => '巧歷史',
@@ -4996,6 +4995,7 @@ $zh2Hant = array(
 '干吗' => '幹嗎',
 '干嘛' => '幹嘛',
 '干坏事' => '幹壞事',
+'干大事' => '幹大事',
 '干完' => '幹完',
 '干家' => '幹家',
 '干得' => '幹得',
@@ -5013,7 +5013,8 @@ $zh2Hant = array(
 '干甚么' => '幹甚麼',
 '干略' => '幹略',
 '干当' => '幹當',
-'干的停当' => '幹的停當',
+'干的事' => '幹的事',
+'干的好事' => '幹的好事',
 '干细胞' => '幹細胞',
 '干线' => '幹線',
 '干练' => '幹練',
@@ -5141,6 +5142,7 @@ $zh2Hant = array(
 '很凶' => '很兇',
 '很准' => '很準',
 '很丑' => '很醜',
+'很松' => '很鬆',
 '律历志' => '律曆志',
 '后印' => '後印',
 '后台老板' => '後台老板',
@@ -5356,7 +5358,9 @@ $zh2Hant = array(
 '怪里怪气' => '怪裡怪氣',
 '怫郁' => '怫鬱',
 '恂栗' => '恂慄',
+'恒基' => '恒基',
 '恒生' => '恒生',
+'恒隆' => '恒隆',
 '恕乏价催' => '恕乏价催',
 '息交绝游' => '息交絕遊',
 '息谷' => '息穀',
@@ -5503,7 +5507,6 @@ $zh2Hant = array(
 '批复' => '批覆',
 '批注' => '批註',
 '批斗' => '批鬥',
-'承制' => '承製',
 '抑制作用' => '抑制作用',
 '抑制剂' => '抑制劑',
 '抑郁' => '抑鬱',
@@ -6547,6 +6550,7 @@ $zh2Hant = array(
 '滃郁' => '滃鬱',
 '滑借' => '滑藉',
 '汇丰' => '滙豐',
+'渗漓' => '滲灕',
 '卤了' => '滷了',
 '卤五花' => '滷五花',
 '卤味' => '滷味',
@@ -6590,7 +6594,6 @@ $zh2Hant = array(
 '澄江县' => '澂江縣',
 '澄澹精致' => '澄澹精致',
 '澒蒙' => '澒濛',
-'泽渗漓而下降' => '澤滲灕而下降',
 '淀乃不耕之地' => '澱乃不耕之地',
 '淀北片' => '澱北片',
 '淀山' => '澱山',
@@ -6659,6 +6662,7 @@ $zh2Hant = array(
 '烘制' => '烘製',
 '烤干' => '烤乾',
 '烤卤' => '烤滷',
+'烹制' => '烹製',
 '焙干' => '焙乾',
 '无征不信' => '無徵不信',
 '无业游民' => '無業游民',
@@ -6730,7 +6734,6 @@ $zh2Hant = array(
 '犹如表' => '猶如錶',
 '犹如钟' => '猶如鐘',
 '犹如钟表' => '猶如鐘錶',
-'呆串了皮' => '獃串了皮',
 '狱里' => '獄裡',
 '奖杯' => '獎盃',
 '独裁制' => '獨裁制',
@@ -6743,6 +6746,7 @@ $zh2Hant = array(
 '玉米面' => '玉米面',
 '王侯后' => '王侯后',
 '王后' => '王后',
+'王添灯' => '王添灯',
 '王田里' => '王田里',
 '王鉴' => '王鑑',
 '王余鱼' => '王餘魚',
@@ -7336,7 +7340,6 @@ $zh2Hant = array(
 '系辞' => '繫辭',
 '系鞋带' => '繫鞋帶',
 '系风捕影' => '繫風捕影',
-'继承制' => '繼承制',
 '累囚' => '纍囚',
 '累堆' => '纍堆',
 '累瓦结绳' => '纍瓦結繩',
@@ -7462,6 +7465,7 @@ $zh2Hant = array(
 '卧游' => '臥遊',
 '臧谷亡羊' => '臧穀亡羊',
 '临潼斗宝' => '臨潼鬥寶',
+'自干五' => '自乾五',
 '自制一下' => '自制一下',
 '自制下来' => '自制下來',
 '自制不' => '自制不',
@@ -8396,7 +8400,6 @@ $zh2Hant = array(
 '鄭凱云' => '鄭凱云',
 '配制饲料' => '配制飼料',
 '配图里' => '配圖裡',
-'配水干管' => '配水幹管',
 '配制' => '配製',
 '酒帘' => '酒帘',
 '酒气冲天' => '酒氣衝天',
@@ -8893,6 +8896,7 @@ $zh2Hant = array(
 '飘荡' => '飄蕩',
 '飘游' => '飄遊',
 '飘飘荡荡' => '飄飄蕩蕩',
+'飘发自由女神' => '飄髮自由女神',
 '飞扎' => '飛紮',
 '飞刍挽粟' => '飛芻輓粟',
 '飞行钟' => '飛行鐘',
@@ -9181,6 +9185,7 @@ $zh2Hant = array(
 '斗合' => '鬥合',
 '斗嘴' => '鬥嘴',
 '斗地主' => '鬥地主',
+'斗垮' => '鬥垮',
 '斗士' => '鬥士',
 '斗富' => '鬥富',
 '斗巧' => '鬥巧',
@@ -9196,6 +9201,7 @@ $zh2Hant = array(
 '斗打' => '鬥打',
 '斗批改' => '鬥批改',
 '斗技' => '鬥技',
+'斗败' => '鬥敗',
 '斗文' => '鬥文',
 '斗智' => '鬥智',
 '斗暴' => '鬥暴',
@@ -9211,6 +9217,7 @@ $zh2Hant = array(
 '斗牛' => '鬥牛',
 '斗犀台' => '鬥犀臺',
 '斗犬' => '鬥犬',
+'斗狗' => '鬥狗',
 '斗狠' => '鬥狠',
 '斗兽' => '鬥獸',
 '斗叠' => '鬥疊',
@@ -9225,6 +9232,7 @@ $zh2Hant = array(
 '斗草' => '鬥草',
 '斗叶儿' => '鬥葉兒',
 '斗叶子' => '鬥葉子',
+'斗蛐' => '鬥蛐',
 '斗蟋蟀' => '鬥蟋蟀',
 '斗话' => '鬥話',
 '斗艳' => '鬥豔',
@@ -9358,7 +9366,6 @@ $zh2Hant = array(
 '曲霉' => '麴黴',
 '麹霉' => '麴黴',
 '面人儿' => '麵人兒',
-'面价' => '麵價',
 '面包' => '麵包',
 '面坊' => '麵坊',
 '面坯儿' => '麵坯兒',
@@ -9370,7 +9377,6 @@ $zh2Hant = array(
 '面条' => '麵條',
 '面汤' => '麵湯',
 '面浆' => '麵漿',
-'面灰' => '麵灰',
 '面疙瘩' => '麵疙瘩',
 '面皮' => '麵皮',
 '面码儿' => '麵碼兒',
@@ -9380,6 +9386,7 @@ $zh2Hant = array(
 '面团' => '麵糰',
 '面缸' => '麵缸',
 '面茶' => '麵茶',
+'面制品' => '麵製品',
 '面食' => '麵食',
 '面饺' => '麵餃',
 '面饼' => '麵餅',
@@ -13327,7 +13334,6 @@ $zh2Hans = array(
 '乾崗' => '乾岗',
 '乾巛' => '乾巛',
 '乾州' => '乾州',
-'乾式' => '乾式',
 '乾录' => '乾录',
 '乾錄' => '乾录',
 '乾律' => '乾律',
@@ -14090,6 +14096,7 @@ $zh2TW = array(
 '老挝语' => '寮語',
 '老撾語' => '寮語',
 '波里活' => '寶萊塢',
+'对着干' => '對著幹',
 '高峰时段' => '尖峰時段',
 '高峰时间' => '尖峰時間',
 '贊比亞' => '尚比亞',
@@ -17765,6 +17772,7 @@ $zh2CN = array(
 '東南亞國家協會' => '东南亚国家联盟',
 '亚细安' => '东盟',
 '東協' => '东盟',
+'仲介' => '中介',
 '臨著' => '临着',
 '臨著書' => '临著书',
 '臨著作' => '临著作',
@@ -19249,6 +19257,7 @@ $zh2CN = array(
 '涵著者' => '涵著者',
 '涵著述' => '涵著述',
 '混帳' => '混账',
+'清澈' => '清澈',
 '清帳' => '清账',
 '渴著' => '渴着',
 '渴著書' => '渴著书',
@@ -20438,8 +20447,8 @@ $zh2CN = array(
 '髭著稱' => '髭著称',
 '髭著者' => '髭著者',
 '髭著述' => '髭著述',
-'魚雷射' => '鱼雷射',
-'鱼雷射' => '鱼雷射',
+'魚雷' => '鱼雷',
+'鱼雷' => '鱼雷',
 '咪高峰' => '麦克风',
 '黏著' => '黏着',
 '黏著書' => '黏著书',
index bf86b51..0c34ddb 100644 (file)
@@ -234,7 +234,7 @@ class InfoAction extends FormlessAction {
 
                // Display title
                $displayTitle = $title->getPrefixedText();
-               if ( !empty( $pageProperties['displaytitle'] ) ) {
+               if ( isset( $pageProperties['displaytitle'] ) ) {
                        $displayTitle = $pageProperties['displaytitle'];
                }
 
@@ -259,7 +259,7 @@ class InfoAction extends FormlessAction {
 
                // Default sort key
                $sortKey = $title->getCategorySortkey();
-               if ( !empty( $pageProperties['defaultsort'] ) ) {
+               if ( isset( $pageProperties['defaultsort'] ) ) {
                        $sortKey = $pageProperties['defaultsort'];
                }
 
index 228dc24..0f0f548 100644 (file)
        "apihelp-imagerotate-param-rotation": "Anzahl der Grad, um die das Bild im Uhrzeigersinn gedreht werden soll.",
        "apihelp-imagerotate-example-simple": "<kbd>Datei:Beispiel.png</kbd> um <kbd>90</kbd> Grad drehen.",
        "apihelp-imagerotate-example-generator": "Alle Bilder in der <kbd>Kategorie:Flip</kbd> um <kbd>180</kbd> Grad drehen.",
-       "apihelp-import-description": "Importiert eine Seite von einem anderen Wiki oder einer XML-Datei.\n\nBitte beachte, dass der HTTP-POST-Vorgang als Dateiupload ausgeführt werden muss (z.B. durch multipart/form-data), um eine Datei über den <var>xml</var>-Parameter zu senden.",
+       "apihelp-import-description": "Importiert eine Seite aus einem anderen Wiki oder von einer XML-Datei.\n\nBitte beachte, dass der HTTP-POST-Vorgang als Dateiupload ausgeführt werden muss (z.B. durch multipart/form-data), um eine Datei über den <var>xml</var>-Parameter zu senden.",
        "apihelp-import-param-summary": "Import-Zusammenfassung.",
        "apihelp-import-param-xml": "Hochgeladene XML-Datei.",
        "apihelp-import-param-interwikisource": "Für Interwiki-Importe: Wiki, von dem importiert werden soll.",
index 97c38a6..1923dc9 100644 (file)
@@ -9,7 +9,8 @@
                        "Edslov",
                        "Carlos Cristia",
                        "Ryo567",
-                       "Csbotero"
+                       "Csbotero",
+                       "Chris TR"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentación]]\n* [[mw:API:FAQ|Preguntas frecuentes]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de correos]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API de anuncios]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Errores y peticiones]\n</div>\n<strong>Estado:</strong> Todas las características que se muestran en esta página debería funcionar, pero la API aún está en desarrollo activo y puede cambiar en cualquier momento. Suscríbete a [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la lista de correo de mediawiki-api-announce] para estar al día de las actualizaciones.\n\n<strong>Solicitudes erróneas:</strong> Cuando se envían solicitudes erróneas a la API, se envía un encabezado HTTP con la clave \"MediaWiki-API-Error\" y ambos valores, del encabezado y el código de error, se establecerán en el mismo valor. Para más información, véase [[mw:API:Errors_and_warnings|API: Errores y advertencias]].",
@@ -17,6 +18,7 @@
        "apihelp-main-param-format": "El formato de la salida.",
        "apihelp-main-param-smaxage": "Establece el encabezado <code>s-maxage</code> durante estos segundos. Los errores nunca se almacenan en caché.",
        "apihelp-main-param-maxage": "Establece el encabezado <code>max-age</code> durante estos segundos. Los errores nunca se almacenan en caché.",
+       "apihelp-main-param-assert": "Comprobar que el usuario haya iniciado sesión si el valor es <kbd>user</kbd> o si tiene el permiso de bot si <kbd>bot</kbd>.",
        "apihelp-main-param-requestid": "Cualquier valor dado aquí se incluirá en la respuesta. Se puede utilizar para distinguir solicitudes.",
        "apihelp-main-param-servedby": "Incluir el nombre del host que ha servido la solicitud en los resultados.",
        "apihelp-main-param-curtimestamp": "Incluir la marca de tiempo actual en el resultado.",
index d87bc30..7a3355a 100644 (file)
        "api-help-param-type-limit": "Tipo: enteiro ou <kbd>max</kbd>",
        "api-help-param-type-integer": "Tipo: {{PLURAL:$1|1=enteiro|2=lista de enteiros}}",
        "api-help-param-type-boolean": "Tipo: booleano ([[Special:ApiHelp/main#main/datatypes|detalles]])",
-       "api-help-param-type-password": "",
        "api-help-param-type-timestamp": "Tipo: {{PLURAL:$1|1=selo de tempo|2=lista de selos de tempo}} ([[Special:ApiHelp/main#main/datatypes|formatos permitidos]])",
        "api-help-param-type-user": "Tipo: {{PLURAL:$1|1=nome de usuario|2=lista de nomes de usuarios}}",
        "api-help-param-list": "{{PLURAL:$1|1=Un valor|2=Valores (separados con <kbd>{{!}}</kbd>)}}: $2",
index c1c96e7..d3a76ba 100644 (file)
        "apihelp-block-param-nocreate": "מניעת יצירת חשבונות",
        "apihelp-block-param-autoblock": "חסימה אוטומטית גם של כתובת ה־IP האחרונה שהשתמש בה ושל כל כתובת IP שינסה להשתמש בה בעתיד.",
        "apihelp-block-param-reblock": "אם המשתמש כבר חסום, לדרוס את החסימה הנוכחית.",
+       "apihelp-block-param-watchuser": "לעקוב אחרי דף המשתמש ודף השיחה של המשתמש או של כתובת ה־IP.",
+       "apihelp-checktoken-param-type": "סוג האסימון שבבדיקה.",
+       "apihelp-checktoken-param-token": "איזה אסימון לבדוק.",
+       "apihelp-checktoken-param-maxtokenage": "הגיל המרבי המותר של האסימון, בשניות.",
+       "apihelp-checktoken-example-simple": "בדיקת התקינות של אסימון <kbd>csrf</kbd>.",
        "apihelp-compare-param-fromtitle": "כותרת ראשונה להשוואה.",
        "apihelp-compare-param-fromid": "מס׳ זיהוי של העמוד הראשון להשוואה.",
        "apihelp-compare-param-fromrev": "גרסה ראשונה להשוואה.",
        "apihelp-delete-param-unwatch": "הסרת הדף מרשימת המעקב של של המשתמש הנוכחי.",
        "apihelp-delete-example-simple": "מחיקת <kbd>Main Page</kbd>.",
        "apihelp-delete-example-reason": "מחיקת <kbd>Main Page</kbd>. סיבה: <kbd>Preparing for move</kbd>.",
+       "apihelp-disabled-description": "היחידה הזאת כובתה.",
        "apihelp-edit-description": "יצירה ועריכה של דפים.",
        "apihelp-edit-param-title": "שם הדף לעריכה. לא לשימוש עם <var>$1pageid</var>.",
        "apihelp-edit-param-pageid": "מזהה הדף לעריכה. לא לשימוש עם <var>$1title</var>.",
+       "apihelp-edit-param-section": "מספר הפסקה <kbd>0</kbd> לפסקה העליונה, <kbd>new</kbd> לפסקה חדשה.",
+       "apihelp-edit-param-sectiontitle": "הכותרת לפסקה החדשה.",
        "apihelp-edit-param-text": "תוכן הדף.",
+       "apihelp-edit-param-summary": "תקציר עריכה. גם גותרת פסקה כש־$1section=new ו־$1sectiontitle אינו מוגדר.",
        "apihelp-edit-param-tags": "אילו תגי שינוי להחיל על הגרסה.",
        "apihelp-edit-param-minor": "עריכה משנית.",
        "apihelp-edit-param-notminor": "שינוי לא משני.",
        "apihelp-edit-param-bot": "סימון עריכה זו כבוט.",
+       "apihelp-edit-param-basetimestamp": "חותם־זמן של גרסת הבסיס, משמש לזיהוי התנגשויות עריכה. אפשר לקבל אותו באמצעות [[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]].",
+       "apihelp-edit-param-recreate": "לעקוב את כל הטעויות על כך שהדף נמחק בינתיים.",
+       "apihelp-edit-param-createonly": "לא לערוך את הדף אם הוא כבר קיים.",
+       "apihelp-edit-param-nocreate": "לזרוק שגיאה אם הדף אינו קיים.",
        "apihelp-edit-param-watch": "הוספת העמוד לרשימת המעקב של המשתמש הנוכחי.",
        "apihelp-edit-param-unwatch": "הסרת הדף מרשימת המעקב של של המשתמש הנוכחי.",
+       "apihelp-edit-param-watchlist": "להוסיף את הדף לרשימת המעקב של המשתמש הנוכחי או להסיר אותו משם, להשתמש בהעדפות, או לא לשנות את מצב המעקב.",
        "apihelp-edit-example-edit": "עריכת דף",
        "apihelp-emailuser-description": "שליחת דוא\"ל למשתמש.",
+       "apihelp-emailuser-param-target": "לאיזה משתמש לשלוח דוא\"ל.",
+       "apihelp-emailuser-param-subject": "כותרת נושא.",
+       "apihelp-emailuser-param-text": "גוף הדואר.",
+       "apihelp-emailuser-param-ccme": "שליחת עותק של הדואר הזה אליי.",
+       "apihelp-expandtemplates-description": "הרחבת כל התבניות בקוד הוויקי.",
        "apihelp-expandtemplates-param-title": "כותרת הדף.",
+       "apihelp-expandtemplates-param-text": "איזה קוד ויקי להמיר.",
+       "apihelp-expandtemplates-paramvalue-prop-wikitext": "קוד הוויקי המורחב.",
        "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה.",
        "apihelp-expandtemplates-paramvalue-prop-encodedjsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה בתור מחרוזת JSON.",
+       "apihelp-expandtemplates-paramvalue-prop-parsetree": "עץ פענוח XML של הקלט.",
+       "apihelp-expandtemplates-param-includecomments": "האם לכלול הערות HTML בפלט.",
+       "apihelp-expandtemplates-param-generatexml": "יצירת עץ פענוח XML (מוחלף ב־$1prop=parsetree).",
+       "apihelp-feedcontributions-description": "החזרת הזנת תרומות משתמש.",
        "apihelp-feedcontributions-param-feedformat": "תסדיר ההזנה.",
+       "apihelp-feedcontributions-param-user": "לקבל תרומות של אילו משמשים.",
+       "apihelp-feedcontributions-param-namespace": "לפי איזה מרחב שם לסנן את התרומות.",
        "apihelp-feedcontributions-param-year": "החל משנה (ולפני כן).",
        "apihelp-feedcontributions-param-month": "החל מחודש (ולפני כן).",
        "apihelp-feedcontributions-param-tagfilter": "סינון תרומות בעלות התגיות הבאות.",
        "apihelp-feedcontributions-param-deletedonly": "הצגת תרומות שנמחקו בלבד.",
        "apihelp-feedcontributions-param-toponly": "הצגת עריכות שהן הגרסה העדכנית ביותר בלבד.",
+       "apihelp-feedcontributions-param-newonly": "להציג רק עריכות שהן יצירות דפים.",
+       "apihelp-feedcontributions-param-showsizediff": "להציג את ההבדל בגודל בין גרסאות.",
        "apihelp-feedcontributions-example-simple": "החזרת תרומות עבור המשתמש <kbd>Example</kbd>.",
+       "apihelp-feedrecentchanges-description": "להחזיר הזנת שינויים אחרונים.",
        "apihelp-feedrecentchanges-param-feedformat": "תסדיר ההזנה.",
+       "apihelp-feedrecentchanges-param-namespace": "לאיזה מרחב שם להגביל את התוצאות.",
+       "apihelp-feedrecentchanges-param-invert": "כל מרחבי השם למעט זה שנבחר.",
+       "apihelp-feedrecentchanges-param-associated": "לכלול מרחב שם משויך (שיחה או ראשי).",
+       "apihelp-feedrecentchanges-param-days": "לכמה ימים להגביל את התוצאות.",
+       "apihelp-feedrecentchanges-param-limit": "המספר המרבי של התוצאות להחזיר.",
+       "apihelp-feedrecentchanges-param-from": "להציג תוצאות מאז.",
        "apihelp-feedrecentchanges-param-hideminor": "הסתרת שינוים משניים.",
        "apihelp-feedrecentchanges-param-hidebots": "הסתרת שינויים שנעשו על ידי בוטים.",
        "apihelp-feedrecentchanges-param-hideanons": "הסתרת שינויים שנעשו על ידי אנונימים.",
        "apihelp-feedrecentchanges-param-hidemyself": "הסתרת שינוים שנעשו על ידי המשתמש הנוכחי.",
        "apihelp-feedrecentchanges-param-tagfilter": "סינון לפי תגית.",
        "apihelp-feedrecentchanges-param-target": "הצגת שינויים שנעשו בדפים המקושרים לדף זה בלבד.",
+       "apihelp-feedrecentchanges-param-showlinkedto": "להציג את השינויים בדפים שמקושרים לדף שנבחר במקום זה.",
        "apihelp-feedrecentchanges-example-simple": "הצגת שינויים אחרונים.",
        "apihelp-feedrecentchanges-example-30days": "הצגת שינויים אחרונים עבור 30 ימים.",
+       "apihelp-feedwatchlist-description": "החזרת הזנת רשימת מעקב.",
        "apihelp-feedwatchlist-param-feedformat": "תסדיר ההזנה.",
+       "apihelp-feedwatchlist-param-hours": "רשימת דפים ששונו בתוך מספר כזה של שעות מעכשיו.",
+       "apihelp-feedwatchlist-param-linktosections": "לקשר ישר לפסקאות ששונו אם אפשר.",
+       "apihelp-feedwatchlist-example-default": "הצגת הזנת רשימת מעקב.",
+       "apihelp-feedwatchlist-example-all6hrs": "להציג את כל השינויים בדפים שבמעקב ב־6 השעות האחרונות.",
+       "apihelp-filerevert-description": "לשחזר את הקובץ לגרסה ישנה יותר.",
+       "apihelp-filerevert-param-filename": "שם קובץ היעד, ללא התחילית File:.",
+       "apihelp-filerevert-param-comment": "הערת העלאה.",
+       "apihelp-filerevert-param-archivename": "שם הארכיון של הגרסה שאליה ישוחזר הקובץ.",
        "apihelp-help-description": "הצגת עזרה עבור היחידות שצוינו.",
+       "apihelp-help-param-recursivesubmodules": "לכלול עזרה לתת־יחידות באופן רקורסיבי.",
        "apihelp-help-param-helpformat": "תסדיר פלט העזרה.",
        "apihelp-help-param-toc": "לכלול תוכן עניינים בפלט HTML.",
-       "apihelp-help-example-main": "×¢×\96ר×\94 ×\9c×\9e×\95×\93×\95×\9c ×\94ר×\90ש×\99.",
+       "apihelp-help-example-main": "×¢×\96ר×\94 ×\9c×\99×\97×\99×\93×\94 ×\94ר×\90ש×\99ת.",
        "apihelp-help-example-recursive": "כל העזרה בדף אחד.",
        "apihelp-help-example-help": "עזרה ליחידת העזרה עצמה.",
        "apihelp-help-example-query": "עזרה לשתי תת־יחידות של שאילתה.",
        "apihelp-opensearch-param-search": "מחרוזת לחיפוש.",
        "apihelp-opensearch-param-namespace": "שמות מתחם לחיפוש.",
        "apihelp-opensearch-param-format": "תסדיר הפלט.",
+       "apihelp-options-param-reset": "אתחול ההעדפות לבררות המחדל של האתר.",
+       "apihelp-options-example-reset": "אתחול כל ההעדפות.",
+       "apihelp-paraminfo-description": "קבלת מידע על יחידות של API.",
+       "apihelp-paraminfo-param-helpformat": "תסדיר מחרוזות העזרה.",
+       "apihelp-paraminfo-param-pagesetmodule": "קבלת מידע גם על יחידת pageset (שמספק את titles=‎ וידידיו).",
+       "apihelp-parse-param-summary": "התקציר שצריך לפענח.",
+       "apihelp-parse-param-prop": "אילו פריטי מידע לקבל:",
+       "apihelp-parse-paramvalue-prop-text": "נותן טקסט מפוענח של קוד הוויקי.",
+       "apihelp-parse-paramvalue-prop-langlinks": "נותן קישורי שפה בקוד הוויקי המפוענח.",
+       "apihelp-parse-paramvalue-prop-categories": "נותן קטגוריות בקוד ויקי מפוענח.",
+       "apihelp-parse-paramvalue-prop-categorieshtml": "נותן את גרסת ה־HTML של הקטגוריות.",
+       "apihelp-parse-paramvalue-prop-links": "נותן קישורים פנימיים בקוד הוויקי המפוענח.",
+       "apihelp-parse-paramvalue-prop-templates": "נותן תבניות בקוד הוויקי המפוענח.",
+       "apihelp-parse-paramvalue-prop-images": "נותן תמונות בקוד הוויקי המפוענח.",
        "apihelp-parse-paramvalue-prop-jsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה.",
        "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה בתור מחרוזת JSON.",
        "apihelp-protect-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.",
        "apihelp-query-param-list": "אילו רשימות לקבל.",
        "apihelp-query+allcategories-description": "מניין של כל הקטגוריות.",
        "apihelp-query+allcategories-param-from": "הקטגוריה ממנה להתחיל למנות.",
+       "apihelp-query+allcategories-param-to": "באיזו קטגוריה להפסיק לרשום.",
+       "apihelp-query+allcategories-param-prefix": "חיפוש כל כותרות הקטגוריות שמתחילות בערך הזה.",
        "apihelp-query+allcategories-param-dir": "באיזה כיוון למיין.",
+       "apihelp-query+allcategories-param-min": "להחזיר רק קטגוריות עם מספר כזה לפחות של חברים.",
+       "apihelp-query+allcategories-param-max": "להחזיר רק קטגוריות עם מספר כזה לכל היותר של חברים.",
        "apihelp-query+allcategories-param-limit": "כמה קטגוריות להחזיר.",
+       "apihelp-query+allcategories-param-prop": "אילו מאפיינים לקבל:\n;size:הוספת מספר הדפים בקטגוריה.\n;hidden:מתייג קטגוריות מוסתרות עם _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+allcategories-example-size": "רשימת קטגוריות עם מידע על מספר הדפים בכל אחת מהן.",
        "apihelp-query+alldeletedrevisions-param-start": "באיזה חותם זמן להתחיל לרשום.",
        "apihelp-query+alldeletedrevisions-param-end": "באיזה חותם זמן להפסיק לרשום.",
        "apihelp-query+alldeletedrevisions-param-from": "להתחיל את הרשימה בשם הזה.",
        "api-help-lead": "זהו דף תיעוד של API שנוצר באופן אוטומטי.\n\nתיעוד ודוגמאות: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "יחידה ראשית",
        "api-help-flag-deprecated": "יחידה זו אינה מומלצת לשימוש.",
-       "api-help-flag-internal": "<strong>×\99×\97×\99×\93×\94 ×\96×\95 ×\94×\99×\90 ×¤× ×\99×\9e×\99ת ×\90×\95 ×\9c×\90 ×\99צ×\99×\91×\94.</strong>\n×\94פע×\95×\9c×\94 ×©×\9c×\94 ×¢×©×\95×\99ה להשתנות ללא הודעה מוקדמת.",
+       "api-help-flag-internal": "<strong>×\94×\99×\97×\99×\93×\94 ×\94×\96×\90ת ×\94×\99×\90 ×¤× ×\99×\9e×\99ת ×\90×\95 ×\91×\9cת×\99Ö¾×\99צ×\99×\91×\94.</strong> ×\94פע×\95×\9c×\94 ×©×\9c×\94 ×\99×\9b×\95×\9cה להשתנות ללא הודעה מוקדמת.",
        "api-help-flag-readrights": "יחידה זו דורשת הרשאות קריאה.",
        "api-help-flag-writerights": "יחידה זו דורשת הרשאות כתיבה.",
        "api-help-flag-mustbeposted": "יחידה זו מקבלת רק בקשות POST.",
-       "api-help-flag-generator": "×\94×\99×\97×\99×\93×\94 ×\94×\96×\90ת ×\99×\9b×\95×\9c×\94 ×\9c×\94×\99×\95ת מחולל.",
+       "api-help-flag-generator": "×\90פשר ×\9c×\94שת×\9eש ×\91×\99×\97×\99×\93×\94 ×\94×\96×\90ת ×\91ת×\95ר מחולל.",
        "api-help-source": "מקור: $1",
        "api-help-source-unknown": "מקור: <span class=\"apihelp-unknown\">לא ידוע</span>",
        "api-help-license": "רישיון: <span dir=\"auto\">[[$1|$2]]</span>",
        "api-help-param-deprecated": "מיושן.",
        "api-help-param-required": "פרמטר זה נדרש.",
        "api-help-datatypes-header": "סוגי נתונים",
+       "api-help-datatypes": "חלק מסוגי הפרמטרים בבקשות API דורשים הסבר נוסף:\n;בוליאני (boolean)\n:פרמטרים בוליאניים עובדים כמו תיבות סימון של HTML: אם הפרמטר צוין, בלי קשר לערך שלו, הוא אמת (true). בשביל ערך שקר (false), יש להשמיט את הפרמטר לגמרי.\n;חותם־זמן (timestamp)\n:אפשר לכתוב חותמי־זמן במספר תסדירים. תאריך ושעה לפי ISO 8601 הוא הדבר המומלת. כל הזמנים מצוינים ב־ UTC, לא תהיה השפעה לשום אזור זמן שיצוין.\n:* תאריך ושעה לפי ISO 8601‏, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (לא חובה לכתוב פיסוק ו־<kbd>Z</kbd>)\n:* תאריך ושעה לפי ISO 8601 עם חלקי שנייה (שלא תהיה להם שום השפעה), <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd> (לא חובה לכתוב קווים מפרידים, נקודתיים ו־<kbd>Z</kbd>)\n:* תסדיר MediaWiki‏, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* תסדיר מספרי כללי, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (לאזור זמן אופציונלי של <kbd>GMT</kbd>‏, <kbd dir=\"ltr\">+<var>##</var></kbd>, או <kbd dir=\"ltr\">-<var>##</var></kbd> אין השפעה)\n:* תסדיר EXIF‏, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* תסדיר RFC 2822 (אפשר להשמיט את אזור הזמן), <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* תסדיר RFC 850 (אפשר להשמיט את אזור הזמן), <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* תסדיר C ctime‏, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* שניות מאז 1970-01-01T00:00:00Z בתור מספר שלך בין 1 ל־13 (לא כולל <kbd>0</kbd>)\n:* המחרוזת <kbd>now</kbd>",
        "api-help-param-type-integer": "סוג: {{PLURAL:$1|1=מספר שלם|2=רשימת מספרים שלמים}}",
        "api-help-param-type-boolean": "סוג: בוליאני ([[Special:ApiHelp/main#main/datatypes|פרטים]])",
        "api-help-param-list": "{{PLURAL:$1|1=ערך אחד|2=ערכים (מופרדים באמצעות \"<kbd>{{!}}</kbd>\")}}: $2",
index 051ef07..c436d4f 100644 (file)
@@ -8,7 +8,9 @@
                        "McDutchie",
                        "Raymond",
                        "Anomie",
-                       "Nemo bis"
+                       "Nemo bis",
+                       "Amire80",
+                       "Siebrand"
                ]
        },
        "apihelp-main-description": "{{doc-apihelp-description|main}}",
        "apihelp-feedwatchlist-example-all6hrs": "{{doc-apihelp-example|feedwatchlist}}",
        "apihelp-filerevert-description": "{{doc-apihelp-description|filerevert}}",
        "apihelp-filerevert-param-filename": "{{doc-apihelp-param|filerevert|filename}}",
-       "apihelp-filerevert-param-comment": "{{doc-apihelp-param|filerevert|comment}}",
+       "apihelp-filerevert-param-comment": "Translate as \"a comment about the upload\".\n\n{{doc-apihelp-param|filerevert|comment}}",
        "apihelp-filerevert-param-archivename": "{{doc-apihelp-param|filerevert|archivename}}",
        "apihelp-filerevert-example-revert": "{{doc-apihelp-example|filerevert}}",
        "apihelp-help-description": "{{doc-apihelp-description|help}}",
        "api-help-fallback-description": "{{notranslate}}",
        "api-help-fallback-parameter": "{{notranslate}}",
        "api-help-fallback-example": "{{notranslate}}",
-       "api-help-flags": "{{optional}} Label for the API help flags box\n\nParameters:\n* $1 - Number of flags to be displayed",
+       "api-help-flags": "{{ignored}} Label for the API help flags box\n\nParameters:\n* $1 - Number of flags to be displayed",
        "api-help-flag-deprecated": "Flag displayed for an API module that is deprecated",
        "api-help-flag-internal": "Flag displayed for an API module that is considered internal or unstable",
        "api-help-flag-readrights": "Flag displayed for an API module that requires read rights",
        "api-help-license": "Displayed in the flags box to indicate the license of an API module.\n\nParameters:\n* $1 - Page to link to display the full license text\n* $2 - Display text for the link\n\nSee also:\n* {{msg-mw|api-help-license-noname}}\n* {{msg-mw|api-help-license-unknown}}",
        "api-help-license-noname": "Displayed in the flags box to indicate the license of an API module, when the tag for the license is not known.\n\nParameters:\n* $1 - Page to link to display the full license text\n\nSee also:\n* {{msg-mw|api-help-license}}\n* {{msg-mw|api-help-license-unknown}}",
        "api-help-license-unknown": "Displayed in the flags box to indicate that the license of the API module is not known.\n\nSee also:\n* {{msg-mw|api-help-license}}\n* {{msg-mw|api-help-license-noname}}",
-       "api-help-help-urls": "{{optional}} Label for the API help urls section\n\nParameters:\n* $1 - Number of urls to be displayed",
+       "api-help-help-urls": "{{ignored}} Label for the API help urls section\n\nParameters:\n* $1 - Number of urls to be displayed",
        "api-help-parameters": "Label for the API help parameters section\n\nParameters:\n* $1 - Number of parameters to be displayed\n{{Identical|Parameter}}",
        "api-help-param-deprecated": "Displayed in the API help for any deprecated parameter\n{{Identical|Deprecated}}",
        "api-help-param-required": "Displayed in the API help for any required parameter",
        "api-help-param-type-limit": "{{technical}} {{doc-important|Do not translate text inside &lt;kbd%gt; tags}} Used to indicate that a parameter is a \"limit\" type. Parameters:\n* $1 - Always 1.\nSee also:\n* {{msg-mw|api-help-datatypes}}\n* [[Special:PrefixIndex/MediaWiki:api-help-param-type]]",
        "api-help-param-type-integer": "{{technical}} Used to indicate that a parameter is an integer or list of integers. Parameters:\n* $1 - 1 if the parameter takes one value, 2 if the parameter takes a list of values.\nSee also:\n* {{msg-mw|api-help-datatypes}}\n* [[Special:PrefixIndex/MediaWiki:api-help-param-type]]",
        "api-help-param-type-boolean": "{{technical}} {{doc-important|Do not translate <code>Special:ApiHelp</code> in this message.}} Used to indicate that a parameter is a boolean. Parameters:\n* $1 - Always 1.\nSee also:\n* {{msg-mw|api-help-datatypes}}\n* [[Special:PrefixIndex/MediaWiki:api-help-param-type]]",
-       "api-help-param-type-password": "{{optional}}{{technical}} Used to indicate that a parameter is a password or list of passwords. Parameters:\n* $1 - 1 if the parameter takes one value, 2 if the parameter takes a list of values.\nSee also:\n* {{msg-mw|api-help-datatypes}}\n* [[Special:PrefixIndex/MediaWiki:api-help-param-type]]",
+       "api-help-param-type-password": "{{ignored}}{{technical}} Used to indicate that a parameter is a password or list of passwords. Parameters:\n* $1 - 1 if the parameter takes one value, 2 if the parameter takes a list of values.\nSee also:\n* {{msg-mw|api-help-datatypes}}\n* [[Special:PrefixIndex/MediaWiki:api-help-param-type]]",
        "api-help-param-type-timestamp": "{{technical}} {{doc-important|Do not translate <code>Special:ApiHelp</code> in this message.}} Used to indicate that a parameter is a timestamp or list of timestamps. Parameters:\n* $1 - 1 if the parameter takes one value, 2 if the parameter takes a list of values.\nSee also:\n* {{msg-mw|api-help-datatypes}}\n* [[Special:PrefixIndex/MediaWiki:api-help-param-type]]",
        "api-help-param-type-user": "{{technical}} Used to indicate that a parameter is a username or list of usernames. Parameters:\n* $1 - 1 if the parameter takes one value, 2 if the parameter takes a list of values.\nSee also:\n* {{msg-mw|api-help-datatypes}}\n* [[Special:PrefixIndex/MediaWiki:api-help-param-type]]",
        "api-help-param-list": "Used to display the possible values for a parameter taking a list of values\n\nParameters:\n* $1 - 1 if the parameter takes one value, 2 if the parameter takes any number of values\n* $2 - Comma-separated list of values, possibly formatted using {{msg-mw|api-help-param-list-can-be-empty}}\n{{Identical|Value}}",
index 932006d..8989b2a 100644 (file)
@@ -204,7 +204,8 @@ class ChangesList extends ContextSource {
                $code = $lang->getCode();
                static $fastCharDiff = array();
                if ( !isset( $fastCharDiff[$code] ) ) {
-                       $fastCharDiff[$code] = $config->get( 'MiserMode' ) || $context->msg( 'rc-change-size' )->plain() === '$1';
+                       $fastCharDiff[$code] = $config->get( 'MiserMode' )
+                               || $context->msg( 'rc-change-size' )->plain() === '$1';
                }
 
                $formattedSize = $lang->formatNum( $szdiff );
@@ -542,6 +543,17 @@ class ChangesList extends ContextSource {
                }
        }
 
+       /**
+        * @param RecentChange $rc
+        * @return string
+        * @since 1.26
+        */
+       public function getRollback( RecentChange $rc ) {
+               $s = '';
+               $this->insertRollback( $s, $rc );
+               return $s;
+       }
+
        /**
         * @param string $s
         * @param RecentChange $rc
@@ -560,6 +572,18 @@ class ChangesList extends ContextSource {
                $s .= ' ' . $tagSummary;
        }
 
+       /**
+        * @param RecentChange $rc
+        * @param array $classes
+        * @return string
+        * @since 1.26
+        */
+       public function getTags( RecentChange $rc, array &$classes ) {
+               $s = '';
+               $this->insertTags( $s, $rc, $classes );
+               return $s;
+       }
+
        public function insertExtra( &$s, &$rc, &$classes ) {
                // Empty, used for subclasses to add anything special.
        }
index 54cde0d..545ea26 100644 (file)
@@ -304,18 +304,18 @@ class EnhancedChangesList extends ChangesList {
                        # Classes to apply -- TODO implement
                        $classes = array();
                        $type = $rcObj->mAttribs['rc_type'];
+                       $data = array();
 
                        $trClass = $rcObj->watched && $rcObj->mAttribs['rc_timestamp'] >= $rcObj->watched
                                ? ' class="mw-enhanced-watched"' : '';
+                       $separator = ' <span class="mw-changeslist-separator">. .</span> ';
 
-                       $r .= '<tr' . $trClass . '><td></td><td class="mw-enhanced-rc">';
-                       $r .= $this->recentChangesFlags( array(
+                       $data['recentChangesFlags'] = array(
                                'newpage' => $type == RC_NEW,
                                'minor' => $rcObj->mAttribs['rc_minor'],
                                'unpatrolled' => $rcObj->unpatrolled,
                                'bot' => $rcObj->mAttribs['rc_bot'],
-                       ) );
-                       $r .= '&#160;</td><td class="mw-enhanced-rc-nested"><span class="mw-enhanced-rc-time">';
+                       );
 
                        $params = $queryParams;
 
@@ -340,40 +340,65 @@ class EnhancedChangesList extends ChangesList {
                                        $link = '<span class="history-deleted">' . $link . '</span> ';
                                }
                        }
-                       $r .= $link . '</span>';
+                       $data['timestampLink'] = $link;
 
+                       $currentAndLastLinks = '';
                        if ( !$type == RC_LOG || $type == RC_NEW ) {
-                               $r .= ' ' . $this->msg( 'parentheses' )->rawParams(
+                               $currentAndLastLinks .= ' ' . $this->msg( 'parentheses' )->rawParams(
                                        $rcObj->curlink .
                                                $this->message['pipe-separator'] .
                                                $rcObj->lastlink
                                )->escaped();
                        }
-                       $r .= ' <span class="mw-changeslist-separator">. .</span> ';
+                       $data['currentAndLastLinks'] = $currentAndLastLinks;
+                       $data['separatorAfterCurrentAndLastLinks'] = $separator;
 
                        # Character diff
                        if ( $RCShowChangedSize ) {
                                $cd = $this->formatCharacterDifference( $rcObj );
                                if ( $cd !== '' ) {
-                                       $r .= $cd . ' <span class="mw-changeslist-separator">. .</span> ';
+                                       $data['characterDiff'] = $cd;
+                                       $data['separatorAfterCharacterDiff'] = $separator;
                                }
                        }
 
                        if ( $rcObj->mAttribs['rc_type'] == RC_LOG ) {
-                               $r .= $this->insertLogEntry( $rcObj );
+                               $data['logEntry'] = $this->insertLogEntry( $rcObj );
                        } else {
                                # User links
-                               $r .= $rcObj->userlink;
-                               $r .= $rcObj->usertalklink;
-                               $r .= $this->insertComment( $rcObj );
+                               $data['userLink'] = $rcObj->userlink;
+                               $data['userTalkLink'] = $rcObj->usertalklink;
+                               $data['comment'] = $this->insertComment( $rcObj );
                        }
 
                        # Rollback
-                       $this->insertRollback( $r, $rcObj );
+                       $data['rollback'] = $this->getRollback( $rcObj );
+
                        # Tags
-                       $this->insertTags( $r, $rcObj, $classes );
+                       $data['tags'] = $this->getTags( $rcObj, $classes );
+
+                       // give the hook a chance to modify the data
+                       Hooks::run( 'EnhancedChangesListModifyLineData',
+                               array( $this, &$data, $block, $rcObj ) );
+
+                       $line = '<tr' . $trClass . '><td></td><td class="mw-enhanced-rc">';
+                       if ( isset( $data['recentChangesFlags'] ) ) {
+                               $line .= $this->recentChangesFlags( $data['recentChangesFlags'] );
+                               unset( $data['recentChangesFlags'] );
+                       }
+                       $line .= '&#160;</td><td class="mw-enhanced-rc-nested">';
+
+                       if ( isset( $data['timestampLink'] ) ) {
+                               $line .= '<span class="mw-enhanced-rc-time">' . $data['timestampLink'] . '</span>';
+                               unset( $data['timestampLink'] );
+                       }
+
+                       // everything else: makes it easier for extensions to add or remove data
+                       $line .= implode( '', $data );
+
+                       $line .= "</td></tr>\n";
 
-                       $r .= "</td></tr>\n";
+                       $r .= $line;
                }
                $r .= "</table>\n";
 
index 94cf1f2..2b8cfe2 100644 (file)
@@ -3829,6 +3829,7 @@ abstract class DatabaseBase implements IDatabase {
         * @param string $prefix Only show tables with this prefix, e.g. mw_
         * @param string $fname Calling function name
         * @throws MWException
+        * @return array
         */
        function listTables( $prefix = null, $fname = __METHOD__ ) {
                throw new MWException( 'DatabaseBase::listTables is not implemented in descendant class' );
@@ -3851,6 +3852,7 @@ abstract class DatabaseBase implements IDatabase {
         * @param string $prefix Only show VIEWs with this prefix, eg. unit_test_
         * @param string $fname Name of calling function
         * @throws MWException
+        * @return array
         * @since 1.22
         */
        public function listViews( $prefix = null, $fname = __METHOD__ ) {
@@ -3862,6 +3864,7 @@ abstract class DatabaseBase implements IDatabase {
         *
         * @param string $name Name of the database-structure to test.
         * @throws MWException
+        * @return bool
         * @since 1.22
         */
        public function isView( $name ) {
index 1281187..52dca08 100644 (file)
@@ -60,8 +60,6 @@ class LoadBalancer {
        private $mLastError = 'Unknown error';
        /** @var integer Total connections opened */
        private $connsOpened = 0;
-       /** @var ProcessCacheLRU */
-       private $mProcCache;
 
        /** @var integer Warn when this many connection are held */
        const CONN_HELD_WARN_THRESHOLD = 10;
@@ -113,8 +111,6 @@ class LoadBalancer {
                                }
                        }
                }
-
-               $this->mProcCache = new ProcessCacheLRU( 30 );
        }
 
        /**
@@ -1240,16 +1236,8 @@ class LoadBalancer {
                        return array( 0 => 0 ); // no replication = no lag
                }
 
-               if ( $this->mProcCache->has( 'slave_lag', 'times', 1 ) ) {
-                       return $this->mProcCache->get( 'slave_lag', 'times' );
-               }
-
                # Send the request to the load monitor
-               $times = $this->getLoadMonitor()->getLagTimes( array_keys( $this->mServers ), $wiki );
-
-               $this->mProcCache->set( 'slave_lag', 'times', $times );
-
-               return $times;
+               return $this->getLoadMonitor()->getLagTimes( array_keys( $this->mServers ), $wiki );
        }
 
        /**
@@ -1276,8 +1264,10 @@ class LoadBalancer {
 
        /**
         * Clear the cache for slag lag delay times
+        *
+        * This is only used for testing
         */
        public function clearLagTimeCache() {
-               $this->mProcCache->clear( 'slave_lag' );
+               $this->getLoadMonitor()->clearCaches();
        }
 }
index 8c4d0ed..7dc2da0 100644 (file)
@@ -75,13 +75,17 @@ class LoadMonitorMySQL implements LoadMonitor {
        /** @var LoadBalancer */
        public $parent;
        /** @var BagOStuff */
-       protected $cache;
+       protected $srvCache;
+       /** @var BagOStuff */
+       protected $mainCache;
 
        public function __construct( $parent ) {
                global $wgMemc;
 
                $this->parent = $parent;
-               $this->cache = $wgMemc ?: wfGetMainCache();
+
+               $this->srvCache = ObjectCache::newAccelerator( array(), 'hash' );
+               $this->mainCache = $wgMemc ?: wfGetMainCache();
        }
 
        public function scaleLoads( &$loads, $group = false, $wiki = false ) {
@@ -89,65 +93,79 @@ class LoadMonitorMySQL implements LoadMonitor {
 
        public function getLagTimes( $serverIndexes, $wiki ) {
                if ( count( $serverIndexes ) == 1 && reset( $serverIndexes ) == 0 ) {
-                       // Single server only, just return zero without caching
+                       # Single server only, just return zero without caching
                        return array( 0 => 0 );
                }
 
-               $expiry = 5;
-               $requestRate = 10;
-
-               $cache = $this->cache;
-               $masterName = $this->parent->getServerName( 0 );
-               $memcKey = wfMemcKey( 'lag_times', $masterName );
-               $times = $cache->get( $memcKey );
-               if ( is_array( $times ) ) {
-                       # Randomly recache with probability rising over $expiry
-                       $elapsed = time() - $times['timestamp'];
-                       $chance = max( 0, ( $expiry - $elapsed ) * $requestRate );
-                       if ( mt_rand( 0, $chance ) != 0 ) {
-                               unset( $times['timestamp'] ); // hide from caller
-
-                               return $times;
-                       }
-                       wfIncrStats( 'lag_cache.miss.expired' );
-               } else {
-                       wfIncrStats( 'lag_cache.miss.absent' );
+               $key = $this->getLagTimeCacheKey();
+               # Randomize TTLs to reduce stampedes (4.0 - 5.0 sec)
+               $ttl = mt_rand( 4e6, 5e6 ) / 1e6;
+               # Keep keys around longer as fallbacks
+               $staleTTL = 60;
+
+               # (a) Check the local APC cache
+               $value = $this->srvCache->get( $key );
+               if ( $value && $value['timestamp'] > ( microtime( true ) - $ttl ) ) {
+                       wfDebugLog( 'replication',  __FUNCTION__ . ": got lag times ($key) from local cache" );
+                       return $value['lagTimes']; // cache hit
+               }
+               $staleValue = $value ?: false;
+
+               # (b) Check the shared cache and backfill APC
+               $value = $this->mainCache->get( $key );
+               if ( $value && $value['timestamp'] > ( microtime( true ) - $ttl ) ) {
+                       $this->srvCache->set( $key, $value, $staleTTL );
+                       wfDebugLog( 'replication',  __FUNCTION__ . ": got lag times ($key) from main cache" );
+
+                       return $value['lagTimes']; // cache hit
                }
+               $staleValue = $value ?: $staleValue;
 
-               # Cache key missing or expired
-               if ( $cache->lock( $memcKey, 0, 10 ) ) {
+               # (c) Cache key missing or expired; regenerate and backfill
+               if ( $this->mainCache->lock( $key, 0, 10 ) ) {
                        # Let this process alone update the cache value
-                       $unlocker = new ScopedCallback( function () use ( $cache, $memcKey ) {
-                               $cache->unlock( $memcKey );
+                       $cache = $this->mainCache;
+                       $unlocker = new ScopedCallback( function () use ( $cache, $key ) {
+                               $cache->unlock( $key );
                        } );
-               } elseif ( is_array( $times ) ) {
+               } elseif ( $staleValue ) {
                        # Could not acquire lock but an old cache exists, so use it
-                       unset( $times['timestamp'] ); // hide from caller
-
-                       return $times;
+                       return $value['lagTimes'];
                }
 
-               $times = array();
+               $lagTimes = array();
                foreach ( $serverIndexes as $i ) {
                        if ( $i == 0 ) { # Master
-                               $times[$i] = 0;
+                               $lagTimes[$i] = 0;
                        } elseif ( false !== ( $conn = $this->parent->getAnyOpenConnection( $i ) ) ) {
-                               $times[$i] = $conn->getLag();
+                               $lagTimes[$i] = $conn->getLag();
                        } elseif ( false !== ( $conn = $this->parent->openConnection( $i, $wiki ) ) ) {
-                               $times[$i] = $conn->getLag();
-                               // Close the connection to avoid sleeper connections piling up.
-                               // Note that the caller will pick one of these DBs and reconnect,
-                               // which is slightly inefficient, but this only matters for the lag
-                               // time cache miss cache, which is far less common that cache hits.
+                               $lagTimes[$i] = $conn->getLag();
+                               # Close the connection to avoid sleeper connections piling up.
+                               # Note that the caller will pick one of these DBs and reconnect,
+                               # which is slightly inefficient, but this only matters for the lag
+                               # time cache miss cache, which is far less common that cache hits.
                                $this->parent->closeConnection( $conn );
                        }
                }
 
                # Add a timestamp key so we know when it was cached
-               $times['timestamp'] = time();
-               $cache->set( $memcKey, $times, $expiry + 10 );
-               unset( $times['timestamp'] ); // hide from caller
+               $value = array( 'lagTimes' => $lagTimes, 'timestamp' => microtime( true ) );
+               $this->mainCache->set( $key, $value, $staleTTL );
+               $this->srvCache->set( $key, $value, $staleTTL );
+               wfDebugLog( 'replication',  __FUNCTION__ . ": re-calculated lag times ($key)" );
+
+               return $value['lagTimes'];
+       }
+
+       public function clearCaches() {
+               $key = $this->getLagTimeCacheKey();
+               $this->srvCache->delete( $key );
+               $this->mainCache->delete( $key );
+       }
 
-               return $times;
+       private function getLagTimeCacheKey() {
+               # Lag is per-server, not per-DB, so key on the master DB name
+               return wfForeignMemcKey( $this->parent->getServerName( 0 ), '', 'lag_times' );
        }
 }
index 345b475..73e1764 100644 (file)
@@ -68,7 +68,7 @@
        "config-magic-quotes-sybase": "'''Проблема: Опція PHP [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] увімкнена!'''\nЦя опція призводить до непередбачуваного пошкодження даних.\nВи не можете встановити і використовувати MediaWiki, поки не буде вимкнено цю опцію.",
        "config-mbstring": "'''Проблема: Опція PHP [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] увімкнена!'''\nЦя опція призводить до непередбачуваного пошкодження даних.\nВи не можете встановити і використовувати MediaWiki, поки не буде вимкнено цю опцію.",
        "config-safe-mode": "'''Увага:''' Опція PHP [http://www.php.net/features.safe-mode «безпечний режим»] увімкнена.\nЦе може спричинити проблеми, зокрема із завантаженням файлів та вставкою математичних формул.",
-       "config-xml-bad": "XML-модÑ\83Ñ\82Ñ\8c PHP Ð²Ñ\96дÑ\81Ñ\83Ñ\82нÑ\96й.\nMediaWiki Ð½ÐµÐ¾Ð±Ñ\85Ñ\96днÑ\96 Ð¹Ð¾Ð³Ð¾ Ñ\84Ñ\83нкÑ\86Ñ\96Ñ\97, Ð±ÐµÐ· Ñ\86Ñ\8cого Ð¼Ð¾Ð´Ñ\83лÑ\8f Ð²Ð¾Ð½Ð° Ð¿Ñ\80аÑ\86Ñ\8eваÑ\82и Ð½Ðµ Ð±Ñ\83де.\nЯкÑ\89о Ð\92и Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83Ñ\94Ñ\82е Mandrake, Ð²Ñ\81Ñ\82ановÑ\96Ñ\82Ñ\8c php-xml пакет.",
+       "config-xml-bad": "XML-модÑ\83Ñ\82Ñ\8c PHP Ð²Ñ\96дÑ\81Ñ\83Ñ\82нÑ\96й.\nMediaWiki Ð½ÐµÐ¾Ð±Ñ\85Ñ\96днÑ\96 Ð¹Ð¾Ð³Ð¾ Ñ\84Ñ\83нкÑ\86Ñ\96Ñ\97, Ð±ÐµÐ· Ñ\86Ñ\8cого Ð¼Ð¾Ð´Ñ\83лÑ\8f Ð²Ð¾Ð½Ð° Ð¿Ñ\80аÑ\86Ñ\8eваÑ\82и Ð½Ðµ Ð±Ñ\83де.\nÐ\92ам Ð¼Ð¾Ð¶Ðµ Ð·Ð½Ð°Ð´Ð¾Ð±Ð¸Ñ\82иÑ\81Ñ\8f Ð²Ñ\81Ñ\82ановиÑ\82и php-xml RPM пакет.",
        "config-pcre-old": "'''Фатальна помилка:''' потрібно PCRE версії $1 або пізнішої.\nВаш виконуваний файл PHP пов'язаний з PCRE версії $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Подробиці].",
        "config-pcre-no-utf8": "'''Помилка''': PCRE-модуть PHP, вочевидь, було зібрано без підтримки PCRE_UTF8.\nMediaWiki вимагає підтримку UTF-8 для коректної роботи.",
        "config-memory-raised": "Обмеження пам'яті PHP (<code>memory_limit</code>) $1, піднято до $2.",
diff --git a/includes/libs/RiffExtractor.php b/includes/libs/RiffExtractor.php
new file mode 100644 (file)
index 0000000..f987c59
--- /dev/null
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Extractor for the Resource Interchange File Format
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Bryan Tong Minh
+ * @ingroup Media
+ */
+
+class RiffExtractor {
+       public static function findChunksFromFile( $filename, $maxChunks = -1 ) {
+               $file = fopen( $filename, 'rb' );
+               $info = self::findChunks( $file, $maxChunks );
+               fclose( $file );
+               return $info;
+       }
+
+       public static function findChunks( $file, $maxChunks = -1 ) {
+               $riff = fread( $file, 4 );
+               if ( $riff !== 'RIFF' ) {
+                       return false;
+               }
+
+               // Next four bytes are fileSize
+               $fileSize = fread( $file, 4 );
+               if ( !$fileSize || strlen( $fileSize ) != 4 ) {
+                       return false;
+               }
+
+               // Next four bytes are the FourCC
+               $fourCC = fread( $file, 4 );
+               if ( !$fourCC || strlen( $fourCC ) != 4 ) {
+                       return false;
+               }
+
+               // Create basic info structure
+               $info = array(
+                       'fileSize' => self::extractUInt32( $fileSize ),
+                       'fourCC' => $fourCC,
+                       'chunks' => array(),
+               );
+               $numberOfChunks = 0;
+
+               // Find out the chunks
+               while ( !feof( $file ) && !( $numberOfChunks >= $maxChunks && $maxChunks >= 0 ) ) {
+                       $chunkStart = ftell( $file );
+
+                       $chunkFourCC = fread( $file, 4 );
+                       if ( !$chunkFourCC || strlen( $chunkFourCC ) != 4 ) {
+                               return $info;
+                       }
+
+                       $chunkSize = fread( $file, 4 );
+                       if ( !$chunkSize || strlen( $chunkSize ) != 4 ) {
+                               return $info;
+                       }
+                       $intChunkSize = self::extractUInt32( $chunkSize );
+
+                       // Add chunk info to the info structure
+                       $info['chunks'][] = array(
+                               'fourCC' => $chunkFourCC,
+                               'start' => $chunkStart,
+                               'size' => $intChunkSize
+                       );
+
+                       // Uneven chunks have padding bytes
+                       $padding = $intChunkSize % 2;
+                       // Seek to the next chunk
+                       fseek( $file, $intChunkSize + $padding, SEEK_CUR );
+
+               }
+
+               return $info;
+       }
+
+       /**
+        * Extract a little-endian uint32 from a 4 byte string
+        * @param string $string 4-byte string
+        * @return int
+        */
+       public static function extractUInt32( $string ) {
+               $unpacked = unpack( 'V', $string );
+               return $unpacked[1];
+       }
+};
index 9c7bf2f..22c3319 100644 (file)
@@ -30,6 +30,9 @@ class ComposerLock {
                        $deps[$installed['name']] = array(
                                'version' => ComposerJson::normalizeVersion( $installed['version'] ),
                                'type' => $installed['type'],
+                               'licenses' => isset( $installed['license'] ) ? $installed['license'] : array(),
+                               'authors' => isset( $installed['authors'] ) ? $installed['authors'] : array(),
+                               'description' => isset( $installed['description'] ) ? $installed['description']: '',
                        );
                }
 
index 5af7fbe..4be20b2 100644 (file)
@@ -93,9 +93,8 @@ class BitmapHandler extends TransformationalImageHandler {
                                // JPEG decoder hint to reduce memory, available since IM 6.5.6-2
                                $decoderHint = array( '-define', "jpeg:size={$params['physicalDimensions']}" );
                        }
-               } elseif ( $params['mimeType'] == 'image/png' ) {
+               } elseif ( $params['mimeType'] == 'image/png' || $params['mimeType'] == 'image/webp' ) {
                        $quality = array( '-quality', '95' ); // zlib 9, adaptive filtering
-
                } elseif ( $params['mimeType'] == 'image/gif' ) {
                        if ( $this->getImageArea( $image ) > $wgMaxAnimatedGifArea ) {
                                // Extract initial frame only; we're so big it'll
diff --git a/includes/media/WebP.php b/includes/media/WebP.php
new file mode 100644 (file)
index 0000000..05d12c4
--- /dev/null
@@ -0,0 +1,306 @@
+<?php
+/**
+ * Handler for Google's WebP format <https://developers.google.com/speed/webp/>
+ *
+ * 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 Media
+ */
+
+/**
+ * Handler for Google's WebP format <https://developers.google.com/speed/webp/>
+ *
+ * @ingroup Media
+ */
+class WebPHandler extends BitmapHandler {
+       const BROKEN_FILE = '0'; // value to store in img_metadata if error extracting metadata.
+       /**
+        * @var int Minimum chunk header size to be able to read all header types
+        */
+       const MINIMUM_CHUNK_HEADER_LENGTH = 18;
+       /**
+        * @var int version of the metadata stored in db records
+        */
+       const _MW_WEBP_VERSION = 1;
+
+       const VP8X_ICC = 32;
+       const VP8X_ALPHA = 16;
+       const VP8X_EXIF = 8;
+       const VP8X_XMP = 4;
+       const VP8X_ANIM = 2;
+
+       public function getMetadata( $image, $filename ) {
+               $parsedWebPData = self::extractMetadata( $filename );
+               if ( !$parsedWebPData ) {
+                       return self::BROKEN_FILE;
+               }
+
+               $parsedWebPData['metadata']['_MW_WEBP_VERSION'] = self::_MW_WEBP_VERSION;
+               return serialize( $parsedWebPData );
+       }
+
+       public function getMetadataType( $image ) {
+               return 'parsed-webp';
+       }
+
+       public function isMetadataValid( $image, $metadata ) {
+               if ( $metadata === self::BROKEN_FILE ) {
+                               // Do not repetitivly regenerate metadata on broken file.
+                               return self::METADATA_GOOD;
+               }
+
+               wfSuppressWarnings();
+               $data = unserialize( $metadata );
+               wfRestoreWarnings();
+
+               if ( !$data || !is_array( $data ) ) {
+                               wfDebug( __METHOD__ . " invalid WebP metadata\n" );
+
+                               return self::METADATA_BAD;
+               }
+
+               if ( !isset( $data['metadata']['_MW_WEBP_VERSION'] )
+                               || $data['metadata']['_MW_WEBP_VERSION'] != self::_MW_WEBP_VERSION
+               ) {
+                               wfDebug( __METHOD__ . " old but compatible WebP metadata\n" );
+
+                               return self::METADATA_COMPATIBLE;
+               }
+               return self::METADATA_GOOD;
+       }
+
+       /**
+        * Extracts the image size and WebP type from a file
+        *
+        * @param string $chunks Chunks as extracted by RiffExtractor
+        * @return array|bool Header data array with entries 'compression', 'width' and 'height',
+        * where 'compression' can be 'lossy', 'lossless', 'animated' or 'unknown'. False if
+        * file is not a valid WebP file.
+        */
+       public static function extractMetadata( $filename ) {
+               wfDebugLog( 'WebP', __METHOD__ . ": Extracting metadata from $filename\n" );
+
+               $info = RiffExtractor::findChunksFromFile( $filename, 100 );
+               if ( $info === false ) {
+                       wfDebugLog( 'WebP', __METHOD__ . ": Not a valid RIFF file\n" );
+                       return false;
+               }
+
+               if ( $info['fourCC'] != 'WEBP' ) {
+                       wfDebugLog( 'WebP', __METHOD__ . ': FourCC was not WEBP: ' .
+                               bin2hex( $info['fourCC'] ) .  " \n" );
+                       return false;
+               }
+
+               $metadata = self::extractMetadataFromChunks( $info['chunks'], $filename );
+               if ( !$metadata ) {
+                       wfDebugLog( 'WebP', __METHOD__ . ": No VP8 chunks found\n" );
+                       return false;
+               }
+
+               return $metadata;
+       }
+
+       /**
+        * Extracts the image size and WebP type from a file based on the chunk list
+        * @param array $chunks Chunks as extracted by RiffExtractor
+        * @return array Header data array with entries 'compression', 'width' and 'height', where
+        * 'compression' can be 'lossy', 'lossless', 'animated' or 'unknown'
+        */
+       public static function extractMetadataFromChunks( $chunks, $filename ) {
+               $vp8Info = array();
+
+               foreach ( $chunks as $chunk ) {
+                       if ( !in_array( $chunk['fourCC'], array( 'VP8 ', 'VP8L', 'VP8X' ) ) ) {
+                               // Not a chunk containing interesting metadata
+                               continue;
+                       }
+
+                       $chunkHeader = file_get_contents( $filename, false, null,
+                               $chunk['start'], self::MINIMUM_CHUNK_HEADER_LENGTH );
+                       wfDebugLog( 'WebP', __METHOD__ . ": {$chunk['fourCC']}\n" );
+
+                       switch ( $chunk['fourCC'] ) {
+                               case 'VP8 ':
+                                       return array_merge( $vp8Info,
+                                               self::decodeLossyChunkHeader( $chunkHeader ) );
+                               case 'VP8L':
+                                       return array_merge( $vp8Info,
+                                               self::decodeLosslessChunkHeader( $chunkHeader ) );
+                               case 'VP8X':
+                                       $vp8Info = array_merge( $vp8Info,
+                                               self::decodeExtendedChunkHeader( $chunkHeader ) );
+                                       // Continue looking for other chunks to improve the metadata
+                                       break;
+                       }
+               }
+               return $vp8Info;
+       }
+
+       /**
+        * Decodes a lossy chunk header
+        * @param string $header Header string
+        * @return boolean|array See WebPHandler::decodeHeader
+        */
+       protected static function decodeLossyChunkHeader( $header ) {
+               // Bytes 0-3 are 'VP8 '
+               // Bytes 4-7 are the VP8 stream size
+               // Bytes 8-10 are the frame tag
+               // Bytes 11-13 are 0x9D 0x01 0x2A called the sync code
+               $syncCode = substr( $header, 11, 3 );
+               if ( $syncCode != "\x9D\x01\x2A" ) {
+                       wfDebugLog( 'WebP', __METHOD__ . ': Invalid sync code: ' .
+                               bin2hex( $syncCode ) . "\n" );
+                       return array();
+               }
+               // Bytes 14-17 are image size
+               $imageSize = unpack( 'v2', substr( $header, 14, 4 ) );
+               // Image sizes are 14 bit, 2 MSB are scaling parameters which are ignored here
+               return array(
+                       'compression' => 'lossy',
+                       'width' => $imageSize[1] & 0x3FFF,
+                       'height' => $imageSize[2] & 0x3FFF
+               );
+       }
+
+       /**
+        * Decodes a lossless chunk header
+        * @param string $header Header string
+        * @return boolean|array See WebPHandler::decodeHeader
+        */
+       public static function decodeLosslessChunkHeader( $header ) {
+               // Bytes 0-3 are 'VP8L'
+               // Bytes 4-7 are chunk stream size
+               // Byte 8 is 0x2F called the signature
+               if ( $header{8} != "\x2F" ) {
+                       wfDebugLog( 'WebP',  __METHOD__ . ': Invalid signature: ' .
+                               bin2hex( $header{8} ) . "\n" );
+                       return array();
+               }
+               // Bytes 9-12 contain the image size
+               // Bits 0-13 are width-1; bits 15-27 are height-1
+               $imageSize = unpack( 'C4', substr( $header, 9, 4 ) );
+               return array(
+                               'compression' => 'lossless',
+                               'width' => ( $imageSize[1] | ( ( $imageSize[2] & 0x3F ) << 8 ) ) + 1,
+                               'height' => ( ( ( $imageSize[2] & 0xC0 ) >> 6 ) |
+                                               ( $imageSize[3] << 2 ) | ( ( $imageSize[4] & 0x03 ) << 10 ) ) + 1
+               );
+       }
+
+       /**
+        * Decodes an extended chunk header
+        * @param string $header Header string
+        * @return boolean|array See WebPHandler::decodeHeader
+        */
+       public static function decodeExtendedChunkHeader( $header ) {
+               // Bytes 0-3 are 'VP8X'
+               // Byte 4-7 are chunk length
+               // Byte 8-11 are a flag bytes
+               $flags = unpack( 'c', substr( $header, 8, 1 ) );
+
+               // Byte 12-17 are image size (24 bits)
+               $width = unpack( 'V', substr( $header, 12, 3 ) . "\x00" );
+               $height = unpack( 'V', substr( $header, 15, 3 ) . "\x00" );
+
+               return array(
+                       'compression' => 'unknown',
+                       'animated' => ($flags[1] & self::VP8X_ANIM) == self::VP8X_ANIM,
+                       'transparency' => ($flags[1] & self::VP8X_ALPHA) == self::VP8X_ALPHA,
+                       'width' => ( $width[1] & 0xFFFFFF ) + 1,
+                       'height' => ( $height[1] & 0xFFFFFF ) + 1
+               );
+       }
+
+       public function getImageSize( $file, $path, $metadata = false ) {
+               if ( $file === null ) {
+                       $metadata = self::getMetadata( $file, $path );
+               }
+               if ( $metadata === false ) {
+                       $metadata = $file->getMetadata();
+               }
+
+               wfSuppressWarnings();
+               $metadata = unserialize( $metadata );
+               wfRestoreWarnings();
+
+               if ( $metadata == false ) {
+                       return false;
+               }
+               return array( $metadata['width'], $metadata['height'] );
+       }
+
+       /**
+        * @param $file
+        * @return bool True, not all browsers support WebP
+        */
+       public function mustRender( $file ) {
+               return true;
+       }
+
+       /**
+        * @param $file
+        * @return bool False if we are unable to render this image
+        */
+       public function canRender( $file ) {
+               if ( self::isAnimatedImage( $file ) ) {
+                       return false;
+               }
+               return true;
+       }
+
+       /**
+        * @param File $image
+        * @return bool
+        */
+       public function isAnimatedImage( $image ) {
+               $ser = $image->getMetadata();
+               if ( $ser ) {
+                       $metadata = unserialize( $ser );
+                       if ( isset($metadata['animated']) && $metadata['animated'] === true ) {
+                               return true;
+                       }
+               }
+
+               return false;
+       }
+
+       public function canAnimateThumbnail( $file ) {
+               return false;
+       }
+
+       /**
+        * Render files as PNG
+        *
+        * @param $ext
+        * @param $mime
+        * @param $params
+        * @return array
+        */
+       public function getThumbType( $ext, $mime, $params = null ) {
+               return array( 'png', 'image/png' );
+       }
+
+       /**
+        * Must use "im" for XCF
+        *
+        * @return string
+        */
+       protected function getScalerType( $dstPath, $checkDstPath = true ) {
+               return 'im';
+       }
+}
index a7a43b0..eb18b8f 100644 (file)
@@ -662,7 +662,6 @@ class SpecialPage {
         */
        public function getFinalGroupName() {
                $name = $this->getName();
-               $specialPageGroups = $this->getConfig()->get( 'SpecialPageGroups' );
 
                // Allow overbidding the group from the wiki side
                $msg = $this->msg( 'specialpages-specialpagegroup-' . strtolower( $name ) )->inContentLanguage();
@@ -671,18 +670,6 @@ class SpecialPage {
                } else {
                        // Than use the group from this object
                        $group = $this->getGroupName();
-
-                       // Group '-' is used as default to have the chance to determine,
-                       // if the special pages overrides this method,
-                       // if not overridden, $wgSpecialPageGroups is checked for b/c
-                       if ( $group === '-' && isset( $specialPageGroups[$name] ) ) {
-                               $group = $specialPageGroups[$name];
-                       }
-               }
-
-               // never give '-' back, change to 'other'
-               if ( $group === '-' ) {
-                       $group = 'other';
                }
 
                return $group;
@@ -697,8 +684,6 @@ class SpecialPage {
         * @since 1.21
         */
        protected function getGroupName() {
-               // '-' used here to determine, if this group is overridden or has a hardcoded 'other'
-               // Needed for b/c in getFinalGroupName
-               return '-';
+               return 'other';
        }
 }
index 3786b36..055e588 100644 (file)
@@ -347,34 +347,6 @@ class SpecialPageFactory {
                return array( $name, $par );
        }
 
-       /**
-        * Add a page to a certain display group for Special:SpecialPages
-        *
-        * @param SpecialPage|string $page
-        * @param string $group
-        * @deprecated since 1.21 Override SpecialPage::getGroupName
-        */
-       public static function setGroup( $page, $group ) {
-               wfDeprecated( __METHOD__, '1.21' );
-
-               global $wgSpecialPageGroups;
-               $name = is_object( $page ) ? $page->getName() : $page;
-               $wgSpecialPageGroups[$name] = $group;
-       }
-
-       /**
-        * Get the group that the special page belongs in on Special:SpecialPage
-        *
-        * @param SpecialPage $page
-        * @return string
-        * @deprecated since 1.21 Use SpecialPage::getFinalGroupName
-        */
-       public static function getGroup( &$page ) {
-               wfDeprecated( __METHOD__, '1.21' );
-
-               return $page->getFinalGroupName();
-       }
-
        /**
         * Check if a given name exist as a special page or as a special page alias
         *
index 4442d81..0a91957 100644 (file)
@@ -522,6 +522,9 @@ class SpecialVersion extends SpecialPage {
                $out .= Html::openElement( 'tr' )
                        . Html::element( 'th', array(), $this->msg( 'version-libraries-library' )->text() )
                        . Html::element( 'th', array(), $this->msg( 'version-libraries-version' )->text() )
+                       . Html::element( 'th', array(), $this->msg( 'version-libraries-license' )->text() )
+                       . Html::element( 'th', array(), $this->msg( 'version-libraries-description' )->text() )
+                       . Html::element( 'th', array(), $this->msg( 'version-libraries-authors' )->text() )
                        . Html::closeElement( 'tr' );
 
                foreach ( $lock->getInstalledDependencies() as $name => $info ) {
@@ -530,13 +533,28 @@ class SpecialVersion extends SpecialPage {
                                // in their proper section
                                continue;
                        }
+                       $authors = array_map( function( $arr ) {
+                               // If a homepage is set, link to it
+                               if ( isset( $arr['homepage'] ) ) {
+                                       return "[{$arr['homepage']} {$arr['name']}]";
+                               }
+                               return $arr['name'];
+                       }, $info['authors'] );
+                       $authors = $this->listAuthors( $authors, false, "$IP/vendor/$name" );
                        $out .= Html::openElement( 'tr' )
                                . Html::rawElement(
                                        'td',
                                        array(),
-                                       Linker::makeExternalLink( "https://packagist.org/packages/$name", $name )
+                                       Linker::makeExternalLink(
+                                               "https://packagist.org/packages/$name", $name,
+                                               true, '',
+                                               array( 'class' => 'mw-version-library-name' )
+                                       )
                                )
                                . Html::element( 'td', array(), $info['version'] )
+                               . Html::element( 'td', array(), $this->listToText( $info['licenses'] ) )
+                               . Html::element( 'td', array(), $info['description'] )
+                               . Html::rawElement( 'td', array(), $authors )
                                . Html::closeElement( 'tr' );
                }
                $out .= Html::closeElement( 'table' );
@@ -959,7 +977,8 @@ class SpecialVersion extends SpecialPage {
         *   'and others' will be added to the end of the credits.
         *
         * @param string|array $authors
-        * @param string $extName Name of the extension for link creation
+        * @param string|bool $extName Name of the extension for link creation,
+        *   false if no links should be created
         * @param string $extDir Path to the extension root directory
         *
         * @return string HTML fragment
@@ -972,7 +991,7 @@ class SpecialVersion extends SpecialPage {
                        if ( $item == '...' ) {
                                $hasOthers = true;
 
-                               if ( $this->getExtAuthorsFileName( $extDir ) ) {
+                               if ( $extName && $this->getExtAuthorsFileName( $extDir ) ) {
                                        $text = Linker::link(
                                                $this->getPageTitle( "Credits/$extName" ),
                                                $this->msg( 'version-poweredby-others' )->escaped()
@@ -991,7 +1010,7 @@ class SpecialVersion extends SpecialPage {
                        }
                }
 
-               if ( !$hasOthers && $this->getExtAuthorsFileName( $extDir ) ) {
+               if ( $extName && !$hasOthers && $this->getExtAuthorsFileName( $extDir ) ) {
                        $list[] = $text = Linker::link(
                                $this->getPageTitle( "Credits/$extName" ),
                                $this->msg( 'version-poweredby-others' )->escaped()
index 4da533f..2cd377b 100644 (file)
        "tags-delete-not-allowed": "Меткі, вызначаныя пашырэньнем, ня могуць быць выдаленыя, акрамя выпадку, калі пашырэньне дазваляе гэта.",
        "tags-delete-not-found": "Метка «$1» не існуе.",
        "tags-delete-too-many-uses": "Метка «$1» выкарыстаная ў больш чым $2 {{PLURAL:$2|вэрсіі|вэрсіях}}, адпаведна, яна ня можа быць выдаленая.",
+       "tags-delete-warnings-after-delete": "Метка «$1» была пасьпяхова выдаленая, але {{PLURAL:$2|1=атрыманае наступнае папярэджаньне|атрыманыя наступныя папярэджаньні}}:",
        "comparepages": "Параўнаньне старонак",
        "compare-page1": "Старонка 1",
        "compare-page2": "Старонка 2",
index 6ca3827..e5d4fd8 100644 (file)
        "category-empty": "''Ova kategorija trenutno ne sadrži članke ni medije.''",
        "hidden-categories": "{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}}",
        "hidden-category-category": "Skrivene kategorije",
-       "category-subcat-count": "{{PLURAL:$2|Ova kategorija ima sljedeću potkategoriju.|Ova kategorija ima {{PLURAL:$1|sljedeću potkategoriju|sljedeće $1 potkategorije|sljedećih $1 potkategorija}}, od $2 ukupno.}}",
+       "category-subcat-count": "{{PLURAL:$2|Ova kategorija samo ima sljedeću potkategoriju.|Ova kategorija ima {{PLURAL:$1|sljedeću potkategoriju|sljedeće $1 potkategorije|sljedećih $1 potkategorija}}, od $2 ukupno.}}",
        "category-subcat-count-limited": "Ova kategorija sadrži {{PLURAL:$1|sljedeću $1 potkategoriju|sljedeće $1 potkategorije|sljedećih $1 potkategorija}}.",
        "category-article-count": "{{PLURAL:$2|U ovoj kategoriji nalazi se $1 članak.|{{PLURAL:$1|Prikazan je $1 članak|Prikazana su $1 članka|Prikazano je $1 članaka}} od ukupno $2 u ovoj kategoriji.}}",
        "category-article-count-limited": "{{PLURAL:$1|Slijedeća $1 stranica je|Slijedeće $1 stranice su|Slijedećih $1 stranica je}} u ovoj kategoriji.",
        "right-sendemail": "Slanje e-maila drugim korisnicima",
        "right-passwordreset": "Pogledaj e-mailove za obnavljanje šifre",
        "right-managechangetags": "Napravi i briši [[Special:Tags|oznake]] iz baze podataka",
+       "right-applychangetags": "Primijeni [[Special:Tags|oznake]] na nečije izmjene",
        "newuserlogpage": "Zapis novih korisnika",
        "newuserlogpagetext": "Ovo je zapis o registraciji novih korisnika.",
        "rightslog": "Zapisnik korisničkih prava",
        "action-createpage": "napravite stranicu",
        "action-createtalk": "kreirate stranice za razgovor",
        "action-createaccount": "napravite ovaj korisnički račun",
+       "action-history": "gledate historiju ove stranice",
        "action-minoredit": "da označite ovu izmjenu kao malu",
        "action-move": "premjestite ovu stranicu",
        "action-move-subpages": "premjestite ovu stranicu, i njene podstranice",
        "action-viewmywatchlist": "pogledajte svoj spisak praćenih stranica",
        "action-viewmyprivateinfo": "pogledajte svoje privatne informacije",
        "action-editmyprivateinfo": "uredite svoje privatne podatke",
+       "action-managechangetags": "napravite i uklonite oznake iz baze podataka",
        "nchanges": "$1 {{PLURAL:$1|promjena|promjene|promjena}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|izmjena od Vaše posljedne posjete}}",
        "enhancedrc-history": "historija",
        "recentchanges": "Nedavne izmjene",
        "recentchanges-legend": "Postavke nedavnih izmjena",
        "recentchanges-summary": "Na ovoj stranici možete pratiti nedavne izmjene.",
+       "recentchanges-noresult": "U zadanom vremenu nema promjena za zadane kriterije.",
        "recentchanges-feed-description": "Na ovoj stranici možete pratiti nedavne izmjene.",
        "recentchanges-label-newpage": "Ovom izmjenom pravi se nova stranica",
        "recentchanges-label-minor": "Ovo je mala izmjena",
        "lockfilenotwritable": "Datoteka zaključavanja baze je zaštićena za pisanje.\nAko želite otključati ili zaključati bazu, ova datoteka mora biti omogućena za pisanje od strane web servera.",
        "databasenotlocked": "Baza podataka nije zaključana.",
        "lockedbyandtime": "(od $1 dana $2 u $3)",
-       "move-page": "Premještanje $1",
-       "move-page-legend": "Premjestite stranicu",
+       "move-page": "Premjesti $1",
+       "move-page-legend": "Premjesti stranicu",
        "movepagetext": "Korištenjem ovog formulara možete preimenovati stranicu, premještajući cijelu historiju na novo ime.\nČlanak pod starim imenom postat će stranica koja preusmjerava na članak pod novim imenom. \nMožete automatski izmijeniti preusmjerenje do izvornog naslova.\nAko se ne odlučite na to, provjerite [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|neispravna preusmjeravanja]].\nDužni ste provjeriti da svi linkovi i dalje nastave voditi na prave stranice.\n\nImajte na umu da članak '''neće''' biti premješten ako već postoji članak pod imenom na koje ga namjeravate preusmjeriti osim u slučaju stranice za preusmjeravanje koja nema nikakvih starih izmjena.\nTo znači da možete vratiti stranicu na prethodno mjesto ako pogriješite, ali ne možete zamijeniti postojeću stranicu.\n\n'''Pažnja!'''\nOvo može biti drastična i neočekivana promjena kad su u pitanju popularne stranice.\nMolimo da dobro razmislite prije no što premjestite stranicu.",
-       "movepagetext-noredirectfixer": "Koristeći donji obrazac, preimenovat ćete stranicu i premjestiti cijelu njenu historiju na novi naziv.\nStari naziv postat će preusmjerenje na novi naziv.\nMolimo da provjerite postoje li [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|nedovršena preusmjerenja]].\nVi ste za to odgovorni te morate provjeriti jesu li linkovi ispravni i vode li tamo kamo bi trebali voditi.\n\nImajte na umu da stranica '''neće''' biti premještena ako već postoji stranica s tim imenom, osim ako je prazna ili je preusmjerenje ili nema ranije historije.\nOvo znači da možete preimenovati stranicu nazad gdje je ranije bila preimenovana ako ste pogriješili, ali ne možete ponovo preimenovati postojeću stranicu.\n\n'''Pažnja!'''\nImajte na umu da preusmjeravanje popularnog članka može biti\ndrastična i neočekivana promjena za korisnike; molimo da budete sigurni da ste shvatili posljedice prije no što nastavite.",
+       "movepagetext-noredirectfixer": "Koristeći donji obrazac, preimenovat ćete stranicu i premjestiti cijelu njenu historiju na novi naziv.\nStari naziv postat će preusmjerenje na novi naziv.\nMolimo da provjerite postoje li [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|nedovršena preusmjerenja]].\nVi ste za to odgovorni te morate provjeriti jesu li linkovi ispravni i vode li tamo kamo bi trebali voditi.\n\nImajte na umu da stranica '''neće''' biti premještena ako već postoji stranica s tim imenom, osim ako je prazna ili je preusmjerenje ili nema ranije historije.\nOvo znači da možete preimenovati stranicu nazad gdje je ranije bila preimenovana ako ste pogriješili, ali ne možete ponovo preimenovati postojeću stranicu.\n\n'''Pažnja!'''\nImajte na umu da premještanje popularnog članka može biti\ndrastična i neočekivana promjena za korisnike; molimo da budete sigurni da ste shvatili posljedice prije no što nastavite.",
        "movepagetalktext": "Odgovarajuća stranica za razgovor, ako postoji, automatski će biti pomjerena istovremeno '''osim ako:'''\n*pomjerate stranicu preko imenskih prostora\n*neprazna stranica za razgovor već postoji pod novim imenom\n*odčekirate donju kutiju.\n\nU tim slučajevima morat ćete ručno pomjeriti stranicu ako to želite.",
-       "movearticle": "Premjestite stranicu",
+       "movearticle": "Premjesti stranicu:",
        "moveuserpage-warning": "'''Upozorenje:''' Premještate korisničku stranicu. Molimo da zapamtite da će se samo stranica premjestiti a korisnik se ''neće'' preimenovati.",
        "movenologintext": "Morate biti registrovani korisnik i [[Special:UserLogin|prijavljeni]] da biste premjestili stranicu.",
        "movenotallowed": "Nemate dopuštenje za premještanje stranica.",
        "cant-move-to-user-page": "Nemate dopuštenje da premjestite stranicu na korisničku stranicu (osim na korisničku podstranicu).",
        "newtitle": "Novi naslov",
        "move-watch": "Prati ovu stranicu",
-       "movepagebtn": "premjestite stranicu",
+       "movepagebtn": "Premjesti članak",
        "pagemovedsub": "Premještanje uspjelo",
        "movepage-moved": "'''\"$1\" je premještena na \"$2\"'''",
        "movepage-moved-redirect": "Preusmjerenje je napravljeno.",
        "watchlistedit-clear-submit": "Isprazni spisak nadgledanja (Ovo je trajno!)",
        "watchlistedit-clear-done": "Vaš spisak praćenja je očišćen.",
        "watchlisttools-clear": "Očisti spisak nadgledanja",
-       "watchlisttools-view": "Pregled promjena praćenih stranica",
-       "watchlisttools-edit": "Pogledaj i uredi listu praćenih članaka.",
-       "watchlisttools-raw": "Uređivanje praćenih stranica u okviru praćenja.",
+       "watchlisttools-view": "Pogledaj srodne izmjene",
+       "watchlisttools-edit": "Pogledaj i uredi spisak praćenja",
+       "watchlisttools-raw": "Uredi spisak praćenja u okviru za uređivanje",
        "iranian-calendar-m1": "Farvardin (Iranski kalendar)",
        "iranian-calendar-m2": "Ordibehesht",
        "iranian-calendar-m3": "Khordad",
        "tags-delete-title": "Izbriši oznaku",
        "tags-delete-reason": "Razlog:",
        "tags-delete-not-found": "Oznaka \"$1\" ne postoji.",
+       "tags-activate-reason": "Razlog:",
+       "tags-activate-not-found": "Oznaka \"$1\" ne postoji.",
        "comparepages": "Usporedi stranice",
        "compare-page1": "Stranica 1",
        "compare-page2": "Stranica 2",
index 4def6dd..cd6951e 100644 (file)
        "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í!'''",
+       "editpage-cannot-use-custom-model": "Model obsahu této stránky nelze změnit.",
        "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": "<strong>Varování: Databáze byla uzamčena kvůli údržbě, takže momentálně nebudete moci uložit své změny.</strong>\nMůžete si okopírovat text do souboru a uložit si ho na 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:",
index bbb8d91..59175be 100644 (file)
        "hidetoc": "लुकाउन्या",
        "collapsible-collapse": "खुम्च्याउन्या",
        "collapsible-expand": "फैलाउ",
-       "confirmable-confirm": "तमरà¥\8b {{GENDER:$1|लिà¤\99à¥\8dà¤\97}} à¤¹à¥\8b?",
+       "confirmable-confirm": "à¤\95à¥\8dया {{GENDER:$1|तम}} à¤¸à¥\81निशà¥\8dà¤\9aित à¤\9bà¥\8c ?",
        "confirmable-yes": "हो",
        "confirmable-no": "नाइँ",
        "thisisdeleted": "$1 हेर्न्या या पैल्लीका रुपमी फर्काउन्या हो?",
        "editconflict": "सम्पादन बाँझ्यो: $1",
        "yourtext": "तमरा पाठहरू",
        "storedversion": "संग्रहित पुनरावलोकन",
+       "editingold": "<strong>चेतावनी: तम यै पानाको अति पुरानो अप्रचलित संशोधनलाई सम्पादन गद्द लाग्याछौ ।<strong>\nयदि तमीले यै परिवर्तनलाई सङ्ग्रह गर्यौ भण्या यै पछिका संशोधनहरू नष्ट हुन्याछन् ।",
        "yourdiff": "भिन्नताहरू",
+       "copyrightwarning2": "कृपया ध्यान देओ यै {{SITENAME}}मी दियाका योगदानहरूलाई अन्य योगदानकर्ताहरूद्वारा सम्पादन गरिन्याछ, परिवर्तन गरिन्याछ अथवा हटाइन्याछ । यदि तमरो लेखलाई निर्दयता पूर्वक सम्पादन गरेको चाहदैनौ भण्या त्यो यहाँ जनराख।<br />\nयदि तमी किटानसाथ भन्नाछौ कि यो लेख तम आफैले लेख्याको हो अथवा सार्वजनिक ज्ञानक्षेत्र अथवा मुक्त संसाधनबठे लियाको हो (विवरणकोलागि हेर $1 ). \n'''कपीराइट भयाको रचना अनुमति बिना  यहाँ जनराख!'''",
+       "readonlywarning": "<strong>चेतावनी: तथ्याङ्क मर्मतको निम्ति बन्द गरियाकोछ, यै कारण तमी आफ्नो सम्पादन अहिले सङ्ग्रह गद्द सक्द्याहौन ।</strong>\n\nयदि तमी चाहन्छौ भण्या अहिले यहाँ भयाका पाठलाई कपि गरि कतै टेक्स्ट फाइलमी पेस्ट गरिबर सङ्ग्रह गद्द सक्द्याहौ ।\n\nप्रवन्धक जनले यो बन्द गर्याको छ उनले यसो विवरण दियाको छ: $1",
        "protectedpagewarning": "<strong>सूचना: यै पानालाई सुरक्षित गरियाको छ यसकारण प्रवन्धकको विशेषाधिकार प्राप्त प्रयोगकर्ताहरूले मात्र यैलाई सम्पादन गद्द सक्द्याछन् ।</strong>\nसन्दर्भको लागि नविनतम लग प्रविष्टि तल दिइयाको छ:",
        "templatesused": "यै पानामी राखियाका {{PLURAL:$1|Template|ढाँचाहरू}} :",
        "template-protected": "(सुरक्षित)",
        "content-failed-to-parse": "$1 को लागि $2 सामग्रीलाई पार्स गर्न विफल, गल्ती: $3",
        "invalid-content-data": "अमान्य सामग्री डेटा",
        "content-not-allowed-here": "सामग्री \"$1\"  [[$2]] पानामी राख्न अनुमती छैन ।",
+       "editwarning-warning": "यै पानाबठे बाहिर जाँदा तमले गर्याको कुनै पनि परिवर्तन हराउन्याछ ।\nयदि तमले लग इन गर्याको छ भण्या तमी यै सूचनालाई धेकाउन आफ्नो रोजाईहरूको \"{{int:prefs-editing}}\" भागमी गइबर बन्द गद्द सक्द्याहौ।",
        "content-model-wikitext": "विकिपाठ",
        "content-model-text": "साधारण पाठ",
        "content-model-javascript": "जाभास्क्रिप्ट",
        "upload-recreate-warning": "'''चेतावनी: त्यस नाममी रह्याका फाइलहरू सारियाको या हटायाको छ।'''\n\nयै पानाको सारियाको र हटायाको लग तमरो सहजताको लागि दियाको छ।",
        "filedesc": "सारांश:",
        "large-file": "यो सिफारिस गर्याछकि फाइलहरूको आकार $1 भन्दा ठूला हुनु हुँदैन;\nयै फाइलको आकार $2 छ ।",
+       "fileexists": "यै नामको फाइल पैल्ली नैं छ, यदि तम परिवर्तन गद्या कुरडीमू सुनिश्चित छैनौ भण्या कृपया <strong>[[:$1]]</strong> जाँच गर।\n[[$1|thumb]]",
+       "filewasdeleted": "यै नामको एक फाइल पहिली पनि अपलोड गरिबर पछि हटाई सकियाको छ।\nपुनः अपलोड गद्दु पूर्व तम $1 लाई निक्करी जाँच गर ।",
        "uploadstash-nofiles": "तमरा कोइ पनि स्टाश गर्याका फाइलहरू नाइथिन् ।",
        "uploadstash-refresh": "फाइलहरूको सूची ताजा गर्न्या",
        "license-header": "कोइ केइ नाइथिन",
        "activeusers-hidesysops": "प्रवन्धकहरू लुकाउन्या",
        "activeusers-noresult": "प्रयोगकर्ताहरू भेटियानन्",
        "mailnologintext": "तमीले अरु प्रयोगकर्तानलाई ईमेल पठाउनको लागि आफु पहिली [[Special:UserLogin|प्रवेश(लगइन)गर्याको]] हुनुपडन्छ र [[Special:Preferences|आफ्नो रोजाइहरूमी]] एउटा वैध ईमेल ठेगाना भयाको हुनुपडन्छ ।",
+       "emailpagetext": "तल दियाको फार्मले तमी यै {{GENDER:$1|प्रयोगकर्ता}}लाई इमेल पठाउन सक्द्या हौ । तमीले जो ठेगाना [[Special:Preferences|आफ्नो प्रयोगकर्ता रोजाईहरू]]मी दियाका छियौ त्यो यै इमेललाई \"पठाउने\" को रूपमी आउन्याछ, अतः प्राप्तकर्ता तमीलाई सिधै जवाफ दिनसक्द्याछ ।",
+       "usermaildisabledtext": "यै विकिमी तम और प्रयोगकर्तानलाई ई-मेल पठाउन नाइसक्दा",
        "mywatchlist": "मेरो ध्यान सूची",
        "watch": "ध्यान राख",
        "watchthispage": "यै पानाको ध्यान राख",
        "notanarticle": "सामाग्री छैन",
        "enotif_reset": "सब्बै पानाहरू हेर्याको भनी चिनो लाउन्या",
        "enotif_body": "प्रिय $WATCHINGUSERNAME,\n\n\n{{SITENAME}}को पाना $PAGETITLE  $PAGEEDITDATE का दिन $PAGEEDITOR द्वारा $CHANGEDORCREATED, \nअहिलको संशोधनको निउती हेर  $PAGETITLE_URL ।\n\n$NEWPAGE\n\nसम्पादकको सारांश: $PAGESUMMARY $PAGEMINOREDIT\n\nसम्पादकसित सम्पर्क राख:\nमेल: $PAGEEDITOR_EMAIL\nविकि: $PAGEEDITOR_WIKI\n\nतमी यै पानामी नगयासम्म अब उसो कुनै परिवर्तन भयाका खण्डमी कुनै सूचना दिन्याछैन ।\nतमरा सम्पूर्ण ध्यान सूचीका पानानको लागि तमीले सूचना पताकालाई ध्यान सूचीमी पुनर्बहाली गद्द सक्द्या हौ । \n\n             तमरो मित्र {{SITENAME}} सूचना प्रणाली\n--\nइमेल सूचना व्यवस्था परिवर्तन गद्द, जाओ\n{{canonicalurl:{{#special:Preferences}}}}\n\nध्यान सूची व्यवस्थित गर्न, जाओ\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nध्यान सूची मेट्न, जाओ\n$UNWATCHURL\n\nप्रतिक्रिया र अन्य सहयोगका निउती:\n$HELPPAGE",
+       "confirmdeletetext": "तमी यो पानो र यैको इतिहास मेट्ट लाग्याछौ । कृपया पुष्टि गर कि [[{{MediaWiki:Policy-url}}|नियम]] मुताबिक तम मेट्ट लाग्याछौ।",
        "dellogpage": "मेटाइयाको लग",
        "delete-toobig": "यै पानाको सम्पादन इतिहास भौतै र  $1 {{PLURAL:$1|पुनरावलोक|पुनरावलोकहरू}}भन्दा बढी रह्याको छ।\n {{SITENAME}}मी दुर्घटनाको कारणले गडबडी आउनसक्द्या कुरडीलाई रोक्न यसा पानाहरूलाई मेट्नबठे निषेध गरियाको छ ।",
        "rollback": "सम्पादनहरू उल्टाउन्या",
        "contribslink": "योगदानहरू",
        "block-log-flags-anononly": "नाम नभयाका प्रयोकर्ताहरू मात्र",
        "ipbblocked": "तमी अरु प्रयोगकर्तानहरूलाई ब्लक गर्न वा उनीहरूको ब्लक खोल्न नाइसक्दा किनभने तमी आफै ब्लक भयाका छौ ।",
+       "lockdbtext": "डेटाबेसमी ताला लगाउनाले सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो रौजाईमी परिवर्तन, आफ्नो ध्यानसूचीमी सम्पादन, र अन्य वस्तु जैको लागि डेटाबेसमी परिवर्तन गरें हुन्छ, त्यैबठे वन्चित हुन्याछ । कृपया यो सुनिश्चित गर कि तम यो गर्न चाहन्छौ, र तम रक्षण पश्चात ताला खोल्न्या हौ ।",
+       "movepagetext-noredirectfixer": "तल दियाको फारमले पानाको नाम परिवर्तन गद्याछ, उइको सबै इतिहास पनि नयाँ नामले धेकिन्याछ ।\nपुरानो शीर्षक नयाँ नाममी अनुप्रेषण गद्याछ ।\nमूल शीर्षक तर्फ लिएर जान्या सबै अनुप्रेषणहरूलाई तम स्वचालित रूपले परिवर्तन गद्द सक्द्या हौ ।\nयदि तम यसो नाइ गद्या भया कृपया [[Special:DoubleRedirects|दोहोरो]] पुनर्निर्देशन वा [[Special:BrokenRedirects|टुटेको पुनर्निर्देशन]]का लागि पक्कै जाँच गर ।\nलिङ्क आफ्नो स्थानमै रहोस्, यो सुनिश्चित गर्ने जिम्मेवारी तमरो हो ।\n\nयदि नयाँ शीर्षकको लेख पहिले देखि छ भण्या नाम परिवर्तन '''हुन''' सक्दैन । तर यदि नयाँ शीर्षक भयाको लेख खाली छ अथवा कतै अन्य स्थानमी अनुप्रेषित गद्दैछ र साथै उइको पुरानो संस्करण छैन भण्या त्यैको नाम परिवर्तन हुन्याछ ।\nयैको अभिप्राय यो हो कि यदि तमीबठे गल्ती भयाको छ भण्या तम फेरी पुरानो नाममी यस पानालाई सार्न सक्द्याछौ, र साथै तम कुनै पहिली बठे रह्याको पानाको सट्टा यो स्थानान्तरण गद्द सक्द्या हौन ।\n\n<strong>चेतावनी!<strong>\nयदि पानो खासै लोकप्रिय छ भण्या त्यैको लागि यो एउटा ठुलो र अकस्मात परिवर्तन हुन सक्छ;\nअगाडी बढ्नु भन्ना पहिली तमी यैको नतिजासँग परिचित भयाकाछौ ।",
        "cant-move-user-page": "तमसँग प्रयोगकर्ता पानाहरू साद्या अनुमती नाइथिन् (सहपानाहरू बाहेक)",
        "cant-move-to-user-page": "तमसँग पानाहरूलाई प्रयोगकर्ता पानामी साद्या अनुमती नाइथिन् (प्रयोगकर्ता सहपृष्ठहरूमी बाहेक)",
        "move-subpages": "उप पानाहरू सार्न्या($1 सम्मको)",
        "movenosubpage": "यै पानाको उपपाना नाइथी",
        "protectedpagemovewarning": "<strong>सूचना:</strong> यै पानालाई सुरक्षित गरियाको छ यसकारण प्रवन्धकको विशेषाधिकार प्राप्त प्रयोगकर्ताहरूले मात्र यैको नाम बदल्न सक्द्या छन् ।\nसन्दर्भको लागि नविनतम लग प्रविष्टि तल दियाको छ:",
        "export": "पानहरु पठौन्या",
+       "exporttext": "तमी विशिष्ठ पानाको विषय वस्तु र सम्पादन इतिहासलाई निर्यात गद्द सक्द्याहौ अथवा पानाहरूको समूहका केहि XML मी बेर्न सक्द्याहौ।\nयो [[Special:Import|आयात पाना]]को सहायताले मीडियाविकीको प्रयोग गरिवर दोश्रो विकीबठे आयात गद्द सकिन्याछ।\n\nपानाहरूको निर्यात गद्दका लागि, तल विषय वस्तु बाकसमी शीर्षक देओ, एक शीर्षक प्रति पङ्क्ति, र छान कि तम वर्तमान अवतरणसँग पुरानै अवतरण पनि चाहन्छौ वा चाहदैनौ, वा पछिल्लो सम्पादनका बारेमी जानकारीसँग मात्रै वर्तमान अवतरण चाहन्छौ।\n\nपछीको स्थितिको लागि तमी लिङ्कको पनि प्रयोग गद्द सक्द्याहौ, उदाहरणको लागि, \"[[{{MediaWiki:Mainpage}}]]\" पृष्ठको लागि [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]]।",
        "thumbnail-more": "ठूलो बनौन्या",
        "import-noarticle": "आयात गद्दाकी लाई पानाहरू नाइथिन्",
        "tooltip-pt-userpage": "तमरो प्रयोगकर्ता पानो",
        "exif-orientation-1": "सानतिनो",
        "namespacesall": "सब्बै",
        "monthsall": "सब्बै",
+       "confirmrecreate": "प्रयोगकर्ता [[User:$1|$1]] ([[User talk:$1|कुरडी]])ले  तमले  सम्पादन सुरु गर्यापछि यो पानो मेट्याकाछन् । कारण थ्यो:\n: ''$2''\nकृपया सुनिश्चित गर कि तम यो पानो साँच्चै निर्माण गद्द चाहन्छौ ।",
        "lag-warn-normal": " $1 {{PLURAL:$1|सेकेन्ड |सेकेन्डहरू}} भन्दा नौला फेरबदलहरू यै सूचीमी नधेकाउन सक्छ ।",
        "lag-warn-high": "डेटावेस सर्भरको मस्तै ढिलाको कारणले  $1 {{PLURAL:$1|सेकेन्ड|सेकेन्डहरू}} पछिका परिवर्तनहरू नधेकिन सक्छ ।",
        "watchlisttools-view": "आधारित फेरबदलीहरू हेर",
        "tag-filter": "[[Special:Tags|पुछड]] छानिन्या",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ट्याग|ट्यागहरू}}]]: $2)",
        "tags-hitcount": "$1 {{PLURAL:$1|परिवर्तन|परिवर्तनहरू}}",
+       "tags-delete-explanation-warning": "यो क्रिया <strong>अपरिवर्तनीय</strong> हो र <strong>त्यसलाई परिवर्तन गर्न नाईसकिंदो</strong>, डेटाबेस प्रवन्धक पनि यैलाई केहि गद्द सक्दाइनन् । विश्वासपूर्ण रूपले तम तय गर कि तमी यै ट्यागलाई हटाउन चाहन्छौ ।",
        "logentry-delete-delete": "$1 बठे पानो $3 {{GENDER:$2|मेटाइयो}}",
        "logentry-move-move": "$1 {{GENDER:$2|द्वारा}} $3 पृष्ठलाई $4 मि सारियो",
        "logentry-newusers-create": "प्रयोगकर्ता खाता $1 {{GENDER:$2|खोलियो}}",
        "logentry-upload-upload": "$1 ले $3 {{GENDER:$2|अपलोड अरेका छन्}}",
+       "feedback-bugornote": "यदि तमी कुनै प्राविधिक समस्यालाई विस्तारले सम्झाउन तयार छौ भण्या कृपया [$1 बग राख]।\nयदि हैन, भण्या तमी तल दियाको सरल फारमको प्रयोग गद्दसक्द्याहौ । तमरो टिप्पणी, तमरो प्रयोगकर्ता नाम र तमरो ब्राउजरको नाम सहित \"[$3 $2]\" पानामी जोडिन्याछ ।",
        "searchsuggest-search": "खोज",
        "api-error-duplicate": "यै साइटमी पहिलीबठे यस्तै सामग्री {{PLURAL:$1|भयाको [$2 अर्को फाइल छ]|भयाका  [$2 केहि अरु फाइलहरू छन्]}} ।",
        "api-error-duplicate-archive": "यै साइटमी पहिलेबाट यस्तै सामग्री {{PLURAL:$1|भयाको [$2 अर्को फाइल थियो]|भयाका  [$2 केहि अरु फाइलहरू थिए]}} ।\nतर {{PLURAL:$1|यो मेट्याको थियो|यी मेटायाका थिए}} ।",
index 25ae0a2..b63ddf4 100644 (file)
        "version-libraries": "Installed libraries",
        "version-libraries-library": "Library",
        "version-libraries-version": "Version",
+       "version-libraries-license": "License",
+       "version-libraries-description": "Description",
+       "version-libraries-authors": "Authors",
        "redirect": "Redirect by file, user, page or revision ID",
        "redirect-legend": "Redirect to a file or page",
        "redirect-text": "",
index 82b0741..8181c7d 100644 (file)
        "yourdiff": "Eroavaisuudet",
        "copyrightwarning": "'''Muutoksesi astuvat voimaan välittömästi.''' Kaikki {{GRAMMAR:illative|{{SITENAME}}}} tehtävät tuotokset katsotaan julkaistuksi $2 -lisenssin mukaisesti ($1). Jos et halua, että kirjoitustasi muokataan armottomasti ja uudelleenkäytetään vapaasti, älä tallenna kirjoitustasi. Tallentamalla muutoksesi lupaat, että kirjoitit tekstisi itse, tai kopioit sen jostain vapaasta lähteestä. '''ÄLÄ KÄYTÄ TEKIJÄNOIKEUDEN ALAISTA MATERIAALIA ILMAN LUPAA!'''",
        "copyrightwarning2": "Huomaa, että kuka tahansa voi muokata, muuttaa ja poistaa kaikkia sivustolle tekemiäsi lisäyksiä ja muutoksia. Muokkaamalla sivustoa luovutat sivuston käyttäjille tämän oikeuden ja takaat, että lisäämäsi aineisto on joko itse kirjoittamaasi tai peräisin jostain vapaasta lähteestä. Lisätietoja sivulla $1. '''TEKIJÄNOIKEUDEN ALAISEN MATERIAALIN KÄYTTÄMINEN ILMAN LUPAA ON EHDOTTOMASTI KIELLETTYÄ!'''",
+       "editpage-cannot-use-custom-model": "Tämän sivun sisältömallia (content model) ei voida muuttaa.",
        "longpageerror": "'''Virhe: Lähettämäsi tekstin pituus on {{PLURAL:$1|kilotavu|$1 kilotavua}}. Tekstiä ei voida tallentaa, koska se on pitempi kuin sallittu enimmäispituus {{PLURAL:$2|yksi kilotavu|$2 kilotavua}}.'''",
        "readonlywarning": "'''Varoitus: Tietokanta on lukittu huoltoa varten, joten et pysty tallentamaan muokkauksiasi juuri nyt.'''\nSaattaa olla paras leikata ja liimata tekstisi omaan tekstitiedostoosi ja tallentaa se tänne myöhemmin.\n\nLukitsemisen syy: $1",
        "protectedpagewarning": "'''Varoitus: Tämä sivu on suojattu niin, että vain ylläpitäjät voivat muokata sitä.'''\nAlla on viimeisin lokitapahtuma:",
        "special-characters-title-endash": "ajatusviiva",
        "special-characters-title-emdash": "pitkä ajatusviiva",
        "special-characters-title-minus": "miinusmerkki",
-       "mw-widgets-titleinput-description-new-page": "sivua ei ole vielä olemassa",
-       "mw-widgets-titleinput-description-redirect": "ohjaus sivulle $1"
+       "mw-widgets-titleinput-description-new-page": "sivua ei ole olemassa vielä",
+       "mw-widgets-titleinput-description-redirect": "ohjaus kohteeseen $1"
 }
index 692e037..be8a55b 100644 (file)
        "invalidtitle-unknownnamespace": "Titre invalide avec le numéro d'espace de noms $1 et l'intitulé « $2 » inconnus",
        "exception-nologin": "Non connecté",
        "exception-nologin-text": "Veuillez vous connecter pour pouvoir accéder à cette page ou cette action.",
-       "exception-nologin-text-manual": "Veuillez $1 pour pouvoir accéder à cette page ou cette action.",
+       "exception-nologin-text-manual": "Veuillez vous $1 pour pouvoir accéder à cette page ou cette action.",
        "virus-badscanner": "Mauvaise configuration : scanneur de virus inconnu : ''$1''",
        "virus-scanfailed": "Échec de la recherche (code $1)",
        "virus-unknownscanner": "antivirus inconnu :",
        "blockedtext": "'''Votre compte utilisateur ou votre adresse IP a été bloqué.'''\n\nLe blocage a été effectué par $1.\nLa raison invoquée est la suivante : ''$2''.\n\n* Début du blocage : $8\n* Expiration du blocage : $6\n* Compte bloqué : $7.\n\nVous pouvez contacter $1 ou un autre [[{{MediaWiki:Grouppage-sysop}}|administrateur]] pour en discuter.\nVous ne pouvez utiliser la fonction « {{MediaWiki:emailpage}} » que si une adresse de courriel valide est spécifiée dans vos [[Special:Preferences|préférences]] et que si cette fonctionnalité n’a pas été bloquée.\nVotre adresse IP actuelle est $3 et votre identifiant de blocage est $5.\nVeuillez préciser ces indications dans toutes les requêtes que vous ferez.",
        "autoblockedtext": "Votre adresse IP a été bloquée automatiquement car elle a été utilisée par un autre utilisateur, lui-même bloqué par $1.\nLa raison invoquée est :\n\n:''$2''\n\n* Début du blocage : $8\n* Expiration du blocage : $6\n* Compte bloqué : $7\n\nVous pouvez contacter $1 ou l’un des autres [[{{MediaWiki:Grouppage-sysop}}|administrateurs]] pour discuter de ce blocage.\n\nNotez que vous ne pourrez utiliser la fonctionnalité d’envoi de courriel que si vous avez une adresse de courriel validée dans vos [[Special:Preferences|préférences]] et que si cette fonctionnalité n’a pas été désactivée.\n\nVotre adresse IP actuelle est $3, et le numéro de blocage est $5.\nVeuillez préciser ces indications dans toutes les requêtes que vous ferez.",
        "blockednoreason": "aucune raison donnée",
-       "whitelistedittext": "Vous devez être $1 pour avoir la permission de modifier le contenu.",
+       "whitelistedittext": "Vous devez vous $1 pour avoir la permission de modifier le contenu.",
        "confirmedittext": "Vous devez confirmer votre adresse de courriel avant de modifier les pages.\nVeuillez entrer et valider votre adresse de courriel dans vos [[Special:Preferences|préférences]].",
        "nosuchsectiontitle": "Impossible de trouver la section",
        "nosuchsectiontext": "Vous avez essayé de modifier une section qui n'existe pas.\nElle a peut-être été déplacée ou supprimée depuis que vous avez lu cette page.",
        "reuploaddesc": "Annuler et retourner au formulaire d'import",
        "upload-tryagain": "Envoyer la description du fichier modifiée",
        "uploadnologin": "Non connecté",
-       "uploadnologintext": "Vous devez $1 pour importer des fichiers.",
+       "uploadnologintext": "Vous devez vous $1 pour importer des fichiers.",
        "upload_directory_missing": "Le répertoire d’import de fichier ($1) est introuvable et n’a pas pu être créé par le serveur web.",
        "upload_directory_read_only": "Le répertoire d’import de fichier ($1) n’est pas accessible en écriture depuis le serveur web.",
        "uploaderror": "Erreur lors de l’import",
index 40c3757..616ba8e 100644 (file)
        "moredotdotdot": "Više...",
        "morenotlisted": "Ovaj popis nije potpun.",
        "mypage": "Stranica",
-       "mytalk": "Moj razgovor",
+       "mytalk": "Razgovor",
        "anontalk": "Razgovor za ovu IP adresu",
        "navigation": "Orijentacija",
        "and": "&#32;i",
        "searchdisabled": "<p>Oprostite! Pretraga po cjelokupnoj bazi je zbog bržeg rada projekta {{SITENAME}} trenutačno onemogućena. Možete se poslužiti tražilicom Google.</p>",
        "search-error": "Greška prilikom pretrage: $1",
        "preferences": "Postavke",
-       "mypreferences": "Moje postavke",
+       "mypreferences": "Postavke",
        "prefs-edits": "Broj uređivanja:",
        "prefsnologintext2": "Molimo Vas prijavite se da biste promijenili postavke.",
        "prefs-skin": "Izgled",
index 8754712..f2fc89e 100644 (file)
        "no-null-revision": "Non ha potite crear un nove version vacue del le pagina \"$1\"",
        "badtitle": "Titulo invalide",
        "badtitletext": "Le titulo de pagina requestate es invalide, vacue, o un titulo interlingual o interwiki incorrectemente ligate.\nEs possibile que illo contine un o plure characteres que non pote esser usate in titulos.",
+       "title-invalid-empty": "Le titulo de pagina requestate es vacue o contine solmente le nomine de un spatio de nomines.",
+       "title-invalid-utf8": "Le titulo de pagina requestate contine un sequentia UTF-8 invalide.",
+       "title-invalid-interwiki": "Le titulo de pagina requestate contine un ligamine interwiki que non pote esser usate in titulos.",
+       "title-invalid-talk-namespace": "Le titulo de pagina requestate refere a un pagina de discussion que non pote exister.",
        "perfcached": "Le sequente datos esseva recuperate del cache e possibilemente non es actual. Un maximo de {{PLURAL:$1|un resultato|$1 resultatos}} es disponibile in le cache.",
        "perfcachedts": "Le sequente datos esseva recuperate del cache e ha essite actualisate le $3 a $4. Un maximo de {{PLURAL:$4|un resultato|$4 resultatos}} es disponibile in le cache.",
        "querypage-no-updates": "Le actualisationes pro iste pagina es disactivate. Pro le momento, le datos hic non se cambiara.",
        "nmembers": "$1 {{PLURAL:$1|membro|membros}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|membro|membros}}",
        "nrevisions": "$1 {{PLURAL:$1|version|versiones}}",
-       "nviews": "$1 {{PLURAL:$1|visita|visitas}}",
        "nimagelinks": "Usate in $1 {{PLURAL:$1|pagina|paginas}}",
        "ntransclusions": "usate in $1 {{PLURAL:$1|pagina|paginas}}",
        "specialpage-empty": "Il non ha resultatos pro iste reporto.",
index bc123bb..f8d30a8 100644 (file)
        "special-characters-title-endash": "lineetta enne",
        "special-characters-title-emdash": "lineetta emme",
        "special-characters-title-minus": "segno meno",
-       "mw-widgets-titleinput-description-new-page": "Questa pagina non esiste ancora.",
+       "mw-widgets-titleinput-description-new-page": "questa pagina non esiste ancora",
        "mw-widgets-titleinput-description-redirect": "reindirizzamento a $1"
 }
index b6d4dba..318ac12 100644 (file)
        "tags-edit-existing-tags": "既存のタグ:",
        "tags-edit-existing-tags-none": "(なし)",
        "tags-edit-new-tags": "新しいタグ:",
+       "tags-edit-add": "これらのタグを追加:",
+       "tags-edit-remove": "これらのタグを除去:",
        "tags-edit-remove-all-tags": "(すべてのタグを除去)",
+       "tags-edit-chosen-placeholder": "いくつかのタグを選択",
        "tags-edit-chosen-no-results": "一致するタグが見つかりません",
        "tags-edit-reason": "理由:",
+       "tags-edit-revision-submit": "変更を {{PLURAL:$1|this revision|$1 revisions}} に適用",
+       "tags-edit-logentry-submit": "変更を {{PLURAL:$1|this log entry|$1 log entries}} に適用",
        "tags-edit-success": "変更が正常に適用されました。",
        "tags-edit-failure": "変更は適用できませんでした: $1",
        "tags-edit-nooldid-title": "無効な対象版",
        "log-description-pagelang": "これはページ言語の変更の記録です。",
        "logentry-pagelang-pagelang": "$1 がページ $3 の言語を $4 から $5 に{{GENDER:$2|変更しました}}",
        "default-skin-not-found": "おっと! あなたのウィキの既定の外装「<code>$1</code>」 (<code>$wgDefaultSkin</code>)は利用できません。\n\nあなたのインストールには以下の外装が含まれています。外装の有効化と既定の選択については、[https://www.mediawiki.org/wiki/Manual:Skin_configuration マニュアル: 外装設定] をご覧ください。\n\n$2\n\n; MediaWikiをインストールしたばかりの場合:\n: gitからインストールしたか、その他の何らかの方法でソースコードから直接インストールした場合には、これは期待されたとおりの動作です。\n:* [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory] から外装をインストールしてみてください。\n:* [https://www.mediawiki.org/wiki/Download tarball installer] をダウンロードしてみてください。これにはいくつかの外装と拡張機能が含まれています。 <code>skins/</code> ディレクトリからコピー&ペーストできます。\n: あなたがMediaWiki開発者の場合、これを行うことであなたのgitリポジトリに干渉することはありません。\n\n; MediaWiki をアップグレードした場合:\n: MediaWiki 1.24 以降のバージョンでは、インストール済みの外装は自動的には有効になりません。 ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery マニュアル:外装の自動探索] をご覧ください)。<code>LocalSettings.php</code> に以下の行をペーストして、現在インストールされている外装を有効にできます。\n\n<pre>$3</pre>\n\n; <code>LocalSettings.php</code>を編集したばかりの場合:\n: 外装名に打ち間違いがないか再度確認してください。",
-       "default-skin-not-found-no-skins": "おっと! あなたのウィキの既定の外装「<code>$1</code>」 (<code>$wgDefaultSkin</code>)は利用できません。\n\n外装をインストールしていません。\n\n; MediaWikiをインストールしたばかりの場合:\n: gitからインストールしたか、その他の何らかの方法でソースコードから直接インストールした場合には、これは期待されたとおりの動作です。\n:* [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory] から外装をインストールしてみてください。\n:* [https://www.mediawiki.org/wiki/Download tarball installer] をダウンロードしてみてください。これには外装と拡張機能がいくつか含まれています。 <code>skins/</code> ディレクトリからコピー&ペーストできます。\n: あなたがMediaWiki開発者の場合、これを行うことであなたのgitリポジトリに干渉することはありません。外装の有効化と既定の選択についての情報は、[https://www.mediawiki.org/wiki/Manual:Skin_configuration マニュアル:外装設定] をご覧ください。",
+       "default-skin-not-found-no-skins": "おっと! <code>$1</code>で定義されている、あなたのウィキの既定の外装 (<code>$wgDefaultSkin</code>)は利用できません。\n\n外装をインストールしていません。\n\n; MediaWikiをインストールしたばかりか更新したばかりの場合:\n: gitからインストールしたか、その他の何らかの方法でソースコードから直接インストールした場合には、これは期待されたとおりの動作です。MediaWikiの1.24およびそれ以降は、メインのリポジトリ内には任意の外装が含まれていません。[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory] から外装をインストールしてみてください。, by:\n:* 個々の外装 tarballs を[https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org] ダウンロードすること。\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: あなたがMediaWiki開発者の場合、これを行うことであなたのgitリポジトリに干渉することはありません。外装の有効化と既定の選択についての情報は、[https://www.mediawiki.org/wiki/Manual:Skin_configuration マニュアル:外装設定] をご覧ください。",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (有効)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''無効''')",
        "mediastatistics": "メディア統計",
        "special-characters-group-khmer": "クメール文字",
        "special-characters-title-endash": "en ダッシュ",
        "special-characters-title-emdash": "em ダッシュ",
-       "special-characters-title-minus": "マイナス記号"
+       "special-characters-title-minus": "マイナス記号",
+       "mw-widgets-titleinput-description-new-page": "ページは存在しません",
+       "mw-widgets-titleinput-description-redirect": "$1 へのリダイレクト"
 }
index 31a11c0..36d18d4 100644 (file)
@@ -22,7 +22,8 @@
                        "The Evil IP address",
                        "VASANTH S.N.",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Pavanaja"
                ]
        },
        "tog-underline": "ಕೊಂಡಿಗಳ ಕೆಳಗೆ ಗೆರೆ ತೋರಿಸಿ",
        "mailerror": "ಅಂಚೆ ಕಳುಹಿಸುವಲ್ಲಿ ದೋಷ: $1",
        "acct_creation_throttle_hit": "ಕ್ಷಮಿಸಿ, ನೀವಾಗಲೇ{{PLURAL:$1|೧ ಖಾತೆಯನ್ನು|$1 ಖಾತೆಗಳನ್ನು}} ತೆರೆದಿದ್ದೀರಿ.\nಇನ್ನು ಹೆಚ್ಚಿನ ಖಾತೆಗಳನ್ನು ತೆರೆಯಲಾಗುವುದಿಲ್ಲ.",
        "emailauthenticated": "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವು ದಿನಾಂಕ $2 ಸಮಯ $3 ಅಂದು ಧೃಡೀಕೃತವಾಗಿದೆ.",
-       "emailnotauthenticated": "ನಿಮà³\8dಮ à²\87-à²\85à²\82à²\9aà³\86 à²µà²¿à²³à²¾à²¸ à²\87ನà³\8dನà³\82 à²§à³\83ಡà³\80à²\95à³\83ತವಾà²\97ಿಲà³\8dಲ.\nà²\88 à²\95à³\86ಳà²\97ಿನ à²µà³\88ಶಿಷà³\8dà²\9fತೆಗಳಿಗೆ ಇ-ಅಂಚೆಯನ್ನು ನಿಮಗೆ ಕಳುಹಿಸಲು ಆಗುವುದಿಲ್ಲ.",
+       "emailnotauthenticated": "ನಿಮà³\8dಮ à²\87-à²\85à²\82à²\9aà³\86 à²µà²¿à²³à²¾à²¸ à²\87ನà³\8dನà³\82 à²§à³\83ಡà³\80à²\95à³\83ತವಾà²\97ಿಲà³\8dಲ.\nà²\88 à²\95à³\86ಳà²\97ಿನ à²\86ಯà³\8dà²\95ೆಗಳಿಗೆ ಇ-ಅಂಚೆಯನ್ನು ನಿಮಗೆ ಕಳುಹಿಸಲು ಆಗುವುದಿಲ್ಲ.",
        "noemailprefs": "ಈ ಸೌಲಭ್ಯಗಳು ಕೆಲಸ ಮಾಡಬೇಕಾದರೆ ಒಂದು ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ.",
        "emailconfirmlink": "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ಧೃಡೀಕರಿಸಿ",
        "invalidemailaddress": "ಈ ಇ-ಅಂಚೆ ವಿಳಾಸವು ಸರಿಯಾದ ಪ್ರಕಾರದಲ್ಲಿ ಇಲ್ಲದಿರುವುದರಿಂದ ಇದನ್ನು ಸ್ವೀಕಾರ ಮಾಡಲಾಗುವುದಿಲ್ಲ.\nದಯವಿಟ್ಟು ಸರಿಯಾದ ಪ್ರಕಾರದ ವಿಳಾಸವನ್ನು ಸೇರಿಸಿ ಅಥವ ಆ ಚೌಕವನ್ನು ಖಾಲಿ ಬಿಡಿ.",
        "nlinks": "$1 {{PLURAL:$1|ಸಂಪರ್ಕ|ಸಂಪರ್ಕಗಳು}}",
        "nmembers": "$1 {{PLURAL:$1|ಸದಸ್ಯ|ಸದಸ್ಯರು}}",
        "nrevisions": "$1 {{PLURAL:$1|ಬದಲಾವಣೆ|ಬದಲಾವಣೆಗಳು}}",
-       "nviews": "$1 {{PLURAL:$1|ನೋಟ|ನೋಟಗಳು}}",
        "lonelypages": "ಒಬ್ಬಂಟಿ ಪುಟಗಳು",
        "lonelypagestext": "ಈ ಕೆಳಗಿನ ಪುಟಗಳು {{SITENAME}} ಅಲ್ಲಿರುವ ಇತರ ಯಾವ ಪುಟದಿಂದಲೂ ಕೊಂಡಿಯನ್ನು ಹೊಂದಿಲ್ಲ.",
        "uncategorizedpages": "ಅವರ್ಗೀಕೃತ ಪುಟಗಳು",
index af04196..72d3fb7 100644 (file)
        "tog-numberheadings": "سأربألگە خود شمارئشت کو",
        "tog-showtoolbar": "نأڤار أڤزار ڤیرایئشت نە نئشو بیە",
        "tog-editondblclick": "بألگە یا نە ڤا د نۊ پوٙرنیئن ڤیرایئشت بأکیت",
-       "tog-editsectiononrightclick": "بهرجا ویرایشت نه وا راس پورنین د بهرجا داسونیا کنشتگر کو",
-       "tog-watchcreations": "بلگیایی که مه راس کمه و جانیایایی که مه سوار کمه اضاف کو د سیل برگه مه",
-       "tog-watchdefault": "بلگیا و جانیایی که مه ویرایشت کمه اضاف کو د سیل برگم",
-       "tog-watchmoves": "بلگیاو جانیایی  که مه جاوه جا کمه د سیل برگم اضاف کو",
-       "tog-watchdeletion": "بلگیا و جانیایی که مه پاک کمه اضاف کو د سیل برگم",
+       "tog-editsectiononrightclick": "بأرجا ڤیرایئشت نە ڤا راس پوٙرنییئن د بأرجا داسوٙنیا کونئشتگأر کو",
+       "tog-watchcreations": "بألگە یایی کئ مئ رأڤأندیاری کئمە و جانیایی کئ مئ سوڤار کئمە ئضاف کو د سئیل بأرگە مئ",
+       "tog-watchdefault": "بألگە یایی کئ مئ رأڤأندیاری کئمە و جانیایی کئ مئ سوڤار کئمە ئضاف کو د سئیل بأرگە مئ",
+       "tog-watchmoves": "بألگە یایی و جانیایی کئ مئ جا ڤئ جا کئمە ئضاف کو د سئیل بأرگە مئ",
+       "tog-watchdeletion": "بألگە یایی و جانیایی کئ مئ پاکسا کئمە ئضاف کو د سئیل بأرگە مئ",
        "tog-watchrollback": "همه بلگه یا نه د جایی که مه د سیل برگم می کم اضاف کو.",
        "tog-minordefault": "همه ویرایشتیا کؤچک نه وا پیش فرض بیئن نشو دار کو.",
        "tog-previewontop": "پیش سیل نه دما جعوه ویرایشت نشو بیئه",
@@ -47,8 +47,8 @@
        "tog-norollbackdiff": "فرخیا نه د بین بوریت نها یه گل عقو گرد کردن",
        "tog-useeditwarning": "د گاتی که آلشتیا اماییه نبیه د بلگه ویرایشت وه جا می نم خورم کو",
        "tog-prefershttps": "همیشه د گاتی که مه وامئن هئم د ارتواط امن وه کار بیئر",
-       "underline-always": "هميشه",
-       "underline-never": "هيژوخت",
+       "underline-always": "هأمیشە",
+       "underline-never": "هیژڤأخت",
        "underline-default": "پوسه یا دوارته نیئر پیش فرض",
        "editfont-style": "راساگه فونت شلک نه ویرایشت کو",
        "editfont-default": "دوارته نیئر پیش بینی بیه",
index e848ea5..6c8ecb0 100644 (file)
        "preview": "Seng khoàⁿ-māi",
        "showpreview": "Seng khoàⁿ-māi",
        "showdiff": "Khòaⁿ kái-piàn ê pō·-hūn",
-       "anoneditwarning": "'''Kéng-kò:''' Lí bô teng-ji̍p. Lí ê IP chū-chí ē kì tī pún ia̍h ê pian-chi̍p le̍k-sú lāi-bīn.",
+       "anoneditwarning": "'''thê-chhíⁿ:''' Lí bô teng-ji̍p. Lí nā ū kái mi̍h-kiāⁿ, lí ê IP ē hô͘ lâng khoàⁿ tio̍h. Lí nā <strong>[$1 teng-ji̍p]</strong> iah-sī <strong>[$2 khui chi̍t-ê kháu-chō]</strong>; lí kái ê mi̍h-kiāⁿ ē kái kì lí ê kháu-chō-miâ. Mā ū kî-thaⁿ ê hó-chhù.",
        "summary-preview": "Khài-iàu ê preview:",
        "subject-preview": "Ū-lám tê-bo̍k/piau-tê:",
        "blockednoreason": "無寫理由",
        "yourdiff": "Chha-pia̍t",
        "readonlywarning": "'''CHÙ-Ì: Chu-liāu-khò· taⁿ só tiâu leh thang pān î-siu khang-khòe, só·-í lí hiān-chú-sî bô thang pó-chûn jīn-hô phian-chi̍p hāng-bo̍k. Lí ē-sái kā siong-koan pō·-hūn tah--ji̍p-khì 1-ê bûn-jī tóng-àn pó-chûn, āu-chhiú chiah koh kè-sio̍k.'''",
        "protectedpagewarning": "'''KÉNG-KÒ: Pún ia̍h só tiâu leh. Kan-taⁿ ū hêng-chèng te̍k-koân ê iōng-chiá (sysop) ē-sái siu-kái.'''",
-       "templatesused": "Chit ia̍h iōng {{PLURAL:$1| ê pang-bô·| ê pang-bô·}} :",
+       "templatesused": "Chit ia̍h iōng {{PLURAL:$1| ê pang-bô·}} :",
        "templatesusedpreview": "Chit ê preview iōng chia ê pang-bô͘:",
        "templatesusedsection": "Chit ê section iōng chia ê pang-bô͘:",
        "template-protected": "(pó-hō͘)",
        "filehist-current": "hiān-chāi",
        "filehist-datetime": "Ji̍t-kî/ Sî-kan",
        "filehist-thumb": "細張圖",
+       "filehist-thumbtext": "$1版本的細圖",
        "filehist-user": "Iōng-chiá",
        "imagelinks": "tóng-àn sù-iōng ê chōng-hòng",
-       "linkstoimage": "ē-kha $1 ê ia̍h ū iōng tio̍h chit ê iáⁿ-siōng:",
+       "linkstoimage": "ē-kha {{PLURAL:$1|ê ia̍h}} ū iōng tio̍h chit ê iáⁿ-siōng:",
        "nolinkstoimage": "Bô poàⁿ ia̍h liân kàu chit tiuⁿ iáⁿ-siōng.",
        "mimesearch": "MIME chhiau-chhoē",
        "unwatchedpages": "Bô lâng kàm-sī ê ia̍h",
        "nbytes": "$1 {{PLURAL:$1|jī-goân|jī-goân}}",
        "ncategories": "$1 {{PLURAL:$1|ê lūi-pia̍t |ê lūi-pia̍t}}",
        "nlinks": "$1 ê liân-kiat",
-       "nmembers": "$1{{PLURAL:$1|ê sêng-oân|ê sêng-oân}}",
+       "nmembers": "$1{{PLURAL:$1|ê sêng-oân}}",
        "nrevisions": "$1 ê siu-tēng-pún",
        "lonelypages": "Ko·-ia̍h",
        "uncategorizedpages": "Bô lūi-pia̍t ê ia̍h",
        "tooltip-t-permalink": "Chi̍t ia̍h kái--koè pán-pún ê éng-kiú liân-kiat",
        "tooltip-ca-nstab-main": "khoàⁿ ia̍h ê loē-iông",
        "tooltip-ca-nstab-user": "Khoàⁿ iōng-chiá ê Ia̍h",
+       "tooltip-ca-nstab-special": "這是一个特殊頁,你袂使改這頁。",
        "tooltip-ca-nstab-image": "Khoàⁿ tóng-àn ia̍h",
        "tooltip-ca-nstab-category": "Khoàⁿ lūi-pia̍t ia̍h",
        "tooltip-minoredit": "記這是一个小改",
        "markaspatrolleddiff": "Phiau-sī sûn--kòe",
        "markedaspatrolledtext": "Í-keng phiau-sī chit ê siu-tēng-pún ū lâng sûn--kòe.",
        "deletedrevision": "Kū siu-tēng-pún $1 thâi-tiāu ā.",
-       "previousdiff": "← Khì chêng 1 ê diff",
-       "nextdiff": "Khì āu 1 ê diff →",
+       "previousdiff": "← 進前改的",
+       "nextdiff": "新改的 →",
        "imagemaxsize": "Iáⁿ-siōng biô-su̍t-ia̍h ê tô· ke̍k-ke hián-sī jōa tōa tiuⁿ:",
        "thumbsize": "Sok-tô· (thumbnail) jōa tōa tiuⁿ:",
        "file-nohires": "Bô khah koân ê kái-sek-tō͘.",
index f6025d8..70e0ff5 100644 (file)
        "hidetoc": "लुकाउनुहोस्",
        "collapsible-collapse": "खुम्च्याउने",
        "collapsible-expand": "फैलाउ",
-       "confirmable-confirm": "तपाà¤\88à¤\82 {{GENDER:$1|लिà¤\99à¥\8dà¤\97}} à¤¹à¥\8b?",
+       "confirmable-confirm": "à¤\95à¥\87 {{GENDER:$1|तपाà¤\88à¤\82}} à¤¸à¥\81निशà¥\8dà¤\9aित à¤¹à¥\81नà¥\81हà¥\81नà¥\8dà¤\9b ?",
        "confirmable-yes": "हो",
        "confirmable-no": "होइन",
        "thisisdeleted": "$1 हेर्ने या पूर्वरुपमा फर्काउने हो?",
        "yourtext": "तपाईंका पाठहरु",
        "storedversion": "संग्रहित पुनरावलोकन",
        "nonunicodebrowser": "<strong>चेतावनी: तपाईंको ब्राउजर युनिकोडलाई स्वीकार गर्दैन।</strong> \nतपाईंद्वारा सहि रुपले पृष्ठ सम्पादनको लागि: गैर-एयससिआइआइ क्यारेक्टर हेक्जाडेसिमल कोड (hexadecimal) मा देखाइनेछ।",
-       "editingold": "<strong>चेतावनी: तपाईं यस पृष्ठको अति पुरनो अप्रचलित संशोधनलाई सम्पादन गर्नुहुँदैछ।<strong>\nयदि तपाईंले यस परिवर्तनलाई सङ्ग्रह गर्नु भयो भने यस पछिका संशोधनहरू नष्ट हुनेछन्।",
+       "editingold": "<strong>à¤\9aà¥\87तावनà¥\80: à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¯à¤¸ à¤ªà¥\83षà¥\8dठà¤\95à¥\8b à¤\85ति à¤ªà¥\81रानà¥\8b à¤\85पà¥\8dरà¤\9aलित à¤¸à¤\82शà¥\8bधनलाà¤\88 à¤¸à¤®à¥\8dपादन à¤\97रà¥\8dनà¥\81हà¥\81à¤\81दà¥\88à¤\9b।<strong>\nयदि à¤¤à¤ªà¤¾à¤\88à¤\82लà¥\87 à¤¯à¤¸ à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनलाà¤\88 à¤¸à¤\99à¥\8dà¤\97à¥\8dरह à¤\97रà¥\8dनà¥\81 à¤­à¤¯à¥\8b à¤­à¤¨à¥\87 à¤¯à¤¸ à¤ªà¤\9bिà¤\95ा à¤¸à¤\82शà¥\8bधनहरà¥\82 à¤¨à¤·à¥\8dà¤\9f à¤¹à¥\81नà¥\87à¤\9bनà¥\8d।",
        "yourdiff": "भिन्नताहरु",
        "copyrightwarning": "कृपया ध्यान दिनुहोस् यस {{SITENAME}}मा दिइएका योगदानहरू $2को अनुसार सम्पादन र पुनर्वितरणकोलागि खुला मानिनेछ (विवरणकोलागि $1 हेर्नुहोस्) । यदि तपाईंको लेखलाई सम्पादन अथवा पुनः वितरण गराउन चाहनुहुन्न भने कृपया यहाँ तपाईंको लेख प्रस्तुत नगर्नुहोस् ।<br />       \nयदि तपाईं किटानसाथ भन्नुहुन्छ कि कुनै लेख मैले लेखेको हो अथवा सार्वजनिक ज्ञानक्षेत्र अथवा मुक्त संसाधनबाट लिइएको हो, '''यस्तो लेख कपिराइटबिना यहाँ नराख्नुहोस्!'''",
-       "copyrightwarning2": "à¤\95à¥\83पया à¤§à¥\8dयान à¤¦à¤¿à¤¨à¥\81हà¥\8bसà¥\8d à¤¯à¤¸ {{SITENAME}}मा à¤¦à¤¿à¤\87à¤\8fà¤\95ा à¤¯à¥\8bà¤\97दानहरà¥\81लाà¤\88 à¤\85नà¥\8dय à¤¯à¥\8bà¤\97दाताहरà¥\81दà¥\8dवारा à¤¸à¤®à¥\8dपादन à¤\97रिनà¥\87à¤\9b, à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रिनà¥\87à¤\9b à¤\85थवा à¤¹à¤\9fाà¤\87नà¥\87à¤\9b। à¤¯à¤¦à¤¿  à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤²à¥\87à¤\96लाà¤\88 à¤¨à¤¿à¤°à¥\8dदयता à¤ªà¥\82रà¥\8dवà¤\95 à¤¸à¤®à¥\8dपादन à¤\97रà¥\87à¤\95à¥\8b à¤\9aाहनà¥\81हà¥\81नà¥\8dन à¤­à¤¨à¥\87à¤\82 à¤¤à¥\8dयà¥\8b à¤¯à¤¹à¤¾à¤\81 à¤¨à¤¦à¤¿à¤¨à¥\81हà¥\8bसà¥\8d।<br />\nयदि à¤¤à¤ªà¤¾à¤\88à¤\82 à¤\95िà¤\9fानसाथ à¤­à¤¨à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¤\95ि à¤¯à¥\8b à¤²à¥\87à¤\96 à¤¤à¤ªà¤¾à¤\88à¤\82 à¤\86फà¥\88 लेखेको हो अथवा सार्वजनिक ज्ञानक्षेत्र अथवा मुक्त संसाधनबाट लिइएको हो (विवरणकोलागि हेर्नुहोस् $1 ). \n'''कपीराइट भएको रचना अनुमति बिना  यहाँ नदिनुहोस्!'''",
+       "copyrightwarning2": "à¤\95à¥\83पया à¤§à¥\8dयान à¤¦à¤¿à¤¨à¥\81हà¥\8bसà¥\8d à¤¯à¤¸ {{SITENAME}}मा à¤¦à¤¿à¤\87à¤\8fà¤\95ा à¤¯à¥\8bà¤\97दानहरà¥\82लाà¤\88 à¤\85नà¥\8dय à¤¯à¥\8bà¤\97दानà¤\95रà¥\8dताहरà¥\82दà¥\8dवारा à¤¸à¤®à¥\8dपादन à¤\97रिनà¥\87à¤\9b, à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रिनà¥\87à¤\9b à¤\85थवा à¤¹à¤\9fाà¤\87नà¥\87à¤\9b। à¤¯à¤¦à¤¿ à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤²à¥\87à¤\96लाà¤\88 à¤¨à¤¿à¤°à¥\8dदयता à¤ªà¥\82रà¥\8dवà¤\95 à¤¸à¤®à¥\8dपादन à¤\97रà¥\87à¤\95à¥\8b à¤\9aाहनà¥\81हà¥\81नà¥\8dन à¤­à¤¨à¥\87 à¤¤à¥\8dयà¥\8b à¤¯à¤¹à¤¾à¤\81 à¤¨à¤¦à¤¿à¤¨à¥\81हà¥\8bसà¥\8d।<br />\nयदि à¤¤à¤ªà¤¾à¤\88à¤\82 à¤\95िà¤\9fानसाथ à¤­à¤¨à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¤\95ि à¤¯à¥\8b à¤²à¥\87à¤\96 à¤¤à¤ªà¤¾à¤\88à¤\82 à¤\86फà¥\88लà¥\87 लेखेको हो अथवा सार्वजनिक ज्ञानक्षेत्र अथवा मुक्त संसाधनबाट लिइएको हो (विवरणकोलागि हेर्नुहोस् $1 ). \n'''कपीराइट भएको रचना अनुमति बिना  यहाँ नदिनुहोस्!'''",
        "longpageerror": "'''त्रुटि: तपाईंले बुझाएको पाठ {{PLURAL:$1|one किलोबाइट|$1 किलोबाइट}} लामो छ, जो अधिकतम {{PLURAL:$2|one किलोबाइट|$2 किलोबाइट}} भन्दा लामो छ।'''\nयो संग्रहित हुन सक्तैन।",
-       "readonlywarning": "<strong>चेतावनी: तथ्याक मर्मतको निम्ति बन्द गरिएकोछ, यस कारण तपाईं आफ्नो सम्पादन अहिले सङ्ग्रह गर्न सक्नुहुन्न।</strong>\n\nयदि तपाईं चाहनुहुन्छ भने अहिले यहाँ भएका पाठलाई कट गरि कतै टेक्स्ट फाइलमा पेस्ट गरेर सङ्ग्रह गर्न सक्नुहुन्छ।\n\nप्रवन्धक जसले यो बन्द गरेको छ उसले यस्तो विवरण दिएको छ: $1",
+       "readonlywarning": "<strong>à¤\9aà¥\87तावनà¥\80: à¤¤à¤¥à¥\8dयाà¤\99à¥\8dà¤\95 à¤®à¤°à¥\8dमतà¤\95à¥\8b à¤¨à¤¿à¤®à¥\8dति à¤¬à¤¨à¥\8dद à¤\97रिà¤\8fà¤\95à¥\8bà¤\9b, à¤¯à¤¸ à¤\95ारण à¤¤à¤ªà¤¾à¤\88à¤\82 à¤\86फà¥\8dनà¥\8b à¤¸à¤®à¥\8dपादन à¤\85हिलà¥\87 à¤¸à¤\99à¥\8dà¤\97à¥\8dरह à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dन।</strong>\n\nयदि à¤¤à¤ªà¤¾à¤\88à¤\82 à¤\9aाहनà¥\81हà¥\81नà¥\8dà¤\9b à¤­à¤¨à¥\87 à¤\85हिलà¥\87 à¤¯à¤¹à¤¾à¤\81 à¤­à¤\8fà¤\95ा à¤ªà¤¾à¤ à¤²à¤¾à¤\88 à¤\95à¤\9f à¤\97रि à¤\95तà¥\88 à¤\9fà¥\87à¤\95à¥\8dसà¥\8dà¤\9f à¤«à¤¾à¤\87लमा à¤ªà¥\87सà¥\8dà¤\9f à¤\97रà¥\87र à¤¸à¤\99à¥\8dà¤\97à¥\8dरह à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b।\n\nपà¥\8dरवनà¥\8dधà¤\95 à¤\9cसलà¥\87 à¤¯à¥\8b à¤¬à¤¨à¥\8dद à¤\97रà¥\87à¤\95à¥\8b à¤\9b à¤\89सलà¥\87 à¤¯à¤¸à¥\8dतà¥\8b à¤µà¤¿à¤µà¤°à¤£ à¤¦à¤¿à¤\8fà¤\95à¥\8b à¤\9b: $1",
        "protectedpagewarning": "<strong>सूचना: यस पृष्ठलाई सुरक्षित गरिएको छ यसकारण प्रवन्धकको विशेषाधिकार प्राप्त प्रयोगकर्ताहरूले मात्र यसलाई सम्पादन गर्न सक्छन् ।</strong>\nसन्दर्भको लागि नविनतम लग प्रविष्टि तल दिइएको छ:",
        "semiprotectedpagewarning": "<strong>सूचना:</strong> यो पृष्ठलाई सुरक्षित गरिएको हुँदा दर्ता भएका प्रयोगकर्ताहरूले मात्र यसलाई सम्पादन गर्न सक्छन् ।\nसन्दर्भको लागि नविनतम लग प्रविष्टि तल दिइएको छ:",
        "cascadeprotectedwarning": "<strong>चेतावनी:</strong> यस पृष्ठलाई सुरक्षित गरिएको छ यसकारण संशोधन प्रवन्धनको विशेषाधिकार प्राप्त प्रयोगकर्ताले मात्र सम्पादन गर्न सक्नेछन् किन भने यो {{PLURAL:$1|पृष्ठ|पृष्ठहरू}}को सुरक्षित निम्न सूचीमा सुरक्षित छ:",
        "content-failed-to-parse": "$1 को लागि $2 सामग्रीलाई पार्स गर्न विफल, त्रुटि: $3",
        "invalid-content-data": "अमान्य सामग्री डेटा",
        "content-not-allowed-here": "सामग्री \"$1\"  [[$2]] पृष्ठमा राख्न अनुमती छैन ।",
-       "editwarning-warning": "यस à¤ªà¥\83षà¥\8dठबाà¤\9f à¤¬à¤¾à¤¹à¤¿à¤° à¤\9cाà¤\81दा à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¦à¥\8dवारा à¤\97रिà¤\8fà¤\95à¥\8b à¤\95à¥\81नà¥\88 à¤\95à¥\8bà¤\88 à¤ªà¤¨à¤¿ à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤¹à¤°à¤¾à¤\89नà¥\87à¤\9b।\nयदि à¤¤à¤ªà¤¾à¤\88à¤\82लà¥\87 à¤²à¤\97 à¤\87न à¤\97रà¥\8dनà¥\81भà¤\8fà¤\95à¥\8b à¤\9b à¤­à¤¨à¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¯à¤¸ à¤¸à¥\82à¤\9aनालाà¤\88 à¤¦à¥\87à¤\96ाà¤\89न à¤\86फà¥\8dनà¥\8b à¤\85भिरà¥\82à¤\9aà¥\80हरà¥\82à¤\95à¥\8b \"{{int:prefs-editing}}\" à¤­à¤¾à¤\97मा à¤\97à¤\8fर à¤¬à¤¨à¥\8dद à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b।",
+       "editwarning-warning": "यà¥\8b à¤ªà¥\83षà¥\8dठबाà¤\9f à¤¬à¤¾à¤¹à¤¿à¤° à¤\9cाà¤\81दा à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¦à¥\8dवारा à¤\97रिà¤\8fà¤\95à¥\8b à¤\95à¥\81नà¥\88 à¤ªà¤¨à¤¿ à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤¹à¤°à¤¾à¤\89नà¥\87à¤\9b।\nयदि à¤¤à¤ªà¤¾à¤\88à¤\82लà¥\87 à¤²à¤\97 à¤\87न à¤\97रà¥\8dनà¥\81भà¤\8fà¤\95à¥\8b à¤\9b à¤­à¤¨à¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¯à¤¸ à¤¸à¥\82à¤\9aनालाà¤\88 à¤¦à¥\87à¤\96ाà¤\89न à¤\86फà¥\8dनà¥\8b à¤\85भिरà¥\82à¤\9aà¥\80हरà¥\82à¤\95à¥\8b \"{{int:prefs-editing}}\" à¤­à¤¾à¤\97मा à¤\97à¤\8fर à¤¬à¤¨à¥\8dद à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b।",
        "editpage-notsupportedcontentformat-title": "सामग्री प्रकार समर्थित छैन",
        "editpage-notsupportedcontentformat-text": "$1 सामग्री स्वरूप $2 सामग्री मोडलद्वारा समर्थित छैन।",
        "content-model-wikitext": "विकिपाठ",
        "largefileserver": "उर्ध्वभरण गरिएको फाइल सर्भरमा निर्धारित सीमा भन्दा ठूलो छ।",
        "emptyfile": "तपाईले उर्ध्वभरण गर्नुभएको फाइल रित्तो छ।\nयो फाइलनाम गलत राखिएको कारणले भएको हुनसक्छ\nयो फाइल साच्चै उर्ध्वभरण गर्नेकुरामा निश्चित हुनुहोस् ।",
        "windows-nonascii-filename": "विशेष वर्ण सहितका फाइलनामहरु यस विकिद्वारा समर्थित छैनन् ।",
-       "fileexists": "यो नामको फाइल पहिले नैं छ, यदि तपाईं परिवर्तन गर्ने कुरामा सुनिश्चित हुनुहुन्न भने कृपया <strong>[[:$1]]</strong> जाँच गर्नुहोस्।\n[[$1|thumb]]",
+       "fileexists": "यो नामको फाइल पहिले नैं छ, यदि तपाईं परिवर्तन गर्ने कुरामा सुनिश्चित हुनुहुन्न भने कृपया <strong>[[:$1]]</strong> जाँच गर्नुहोस्।\n[[$1|thumb]]",
        "filepageexists": "यस फाइलको लागि विवरण पृष्ठ पहिले नै <strong>[[:$1]]</strong> बनाइ सकिएको छ, तर यस नामको कुनै फाइल अहिले उपस्थित छैन। \nतपाईं जुन विवरण दिनुहुन्छ त्यो विवरण पृष्ठमा देखिंदैन। \nतपाईंको आफ्नो विवरणलाई त्यहाँ राख्न म्यानुअली सम्पादन गर्नु पर्नेछ।\n[[$1|thumb]]",
        "fileexists-extension": "यहि नामको एउटा फाइल पहिलेदेखि नैं छ: [[$2|thumb]]\n* उर्ध्वभरण हुँदै गरेको फाइलको नाम: <strong>[[:$1]]</strong>\n* पहिलेदेखि नैं भएको फाइलको नाम: <strong>[[:$2]]</strong>\nकृपया अर्कै नाम रोज्नुहोस्।",
        "fileexists-thumbnail-yes": "यो फाइल ठुलो चित्रको सानो आकार ''(थम्बनेल)'' जस्तो देखिन्छ। [[$1|thumb]]\n<strong>[[:$1]]</strong> फाइललाई हेर्ने।\nयदि जाँच गरिएको फाइल यसै आकारको छ भने सानो आकारको फाइल अपलोड गर्ने आवश्यकता छैन।",
        "upload-description": "फाइल वर्णन",
        "upload-options": "उर्ध्वभरण विकल्पहरु",
        "watchthisupload": "यो पृष्ठ निगरानी गर्नुहोस्",
-       "filewasdeleted": "यस नामको एक फाइल पहिले पनि अपलोड गरे पछि हटाई सकिएको छ।\nपुन अपलोड गर्नु पूर्व तपाईं $1 लाई राम्रो सँग जाँच गर्नुहोला।",
+       "filewasdeleted": "यस नामको एक फाइल पहिले पनि अपलोड गरे पछि हटाई सकिएको छ।\nपुनः अपलोड गर्नु पूर्व तपाईं $1 लाई राम्रोसँग जाँच गर्नुहोला।",
        "filename-bad-prefix": "तपाईं जुन फाइल अपलोड गर्दै हुनुहुन्छ त्यसको नाम <strong>\"$1\"</strong>बाट शुरू हुन्छ, जुन डिजिटल क्यामराद्वारा दिइएको नाम हो।\nकृपया यस फाइलको लागि कुनै दोश्रो अधिक जानकारीयुक्त नाम छान्नुहोस्।",
        "upload-success-subj": "उर्ध्वभरण सफल",
        "upload-success-msg": "[$2]बाट त्पाईंको उर्ध्वभरण सफल भयो। त्यो यहाँ पाउन सकिनेछ: [[:{{ns:file}}:$1]]",
        "emailuser-title-target": "{{GENDER:$1|प्रयोगकर्ता}}लाई इमेल गर्ने",
        "emailuser-title-notarget": "प्रयोगकर्तालाई इमेल गर्नुहोस्",
        "emailpage": "प्रयोगकर्तालाई इमेल गर्नुहोस्",
-       "emailpagetext": "तल दिइएको फर्मले तपाईं यस {{GENDER:$1|प्रयोगकर्ता}}लाई इमेल पठाउन सक्नुहुन्छ। तपाईं जुन ठेगाना [[Special:Preferences|आफ्नो प्रयोगकर्ता अभिरूचीहरू]]मा दिनुभएको थियो त्यो यस इमेललाई \"पठाउने\" को रूपमा आउनेछ, अतः प्राप्तकर्ता तपाईंलाई सिधै जवाफ दिनसक्छ।",
+       "emailpagetext": "तल दिइएको फर्मले तपाईं यस {{GENDER:$1|प्रयोगकर्ता}}लाई इमेल पठाउन सक्नुहुन्छ। तपाईंले जुन ठेगाना [[Special:Preferences|आफ्नो प्रयोगकर्ता अभिरूचीहरू]]मा दिनुभएको थियो त्यो यस इमेललाई \"पठाउने\" को रूपमा आउनेछ, अतः प्राप्तकर्ता तपाईंलाई सिधै जवाफ दिनसक्छ।",
        "defemailsubject": "{{SITENAME}} प्रयपोगकर्ता \"$1\" बाट इमेल",
        "usermaildisabled": "प्रयोगकर्ता इमेल निरस्त गरिएको",
        "usermaildisabledtext": "यस विकिमा तपाईं अरु प्रयोगकर्तालाई ई-मेल पठाउन सक्नुहुन्न",
        "ipbnounblockself": "तपाई आफैले आफैलाई रोक खुलाउन सक्नुहुन्न ।",
        "lockdb": "डेटाबेस ताल्चामार्ने",
        "unlockdb": "डेटाबेसको ताल्चा खोल्ने",
-       "lockdbtext": "डेटाबेसमा ताला लगाउनाले सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो अभिरूचीमा परिवर्तन, आफ्नो ध्यानसूचीमा सम्पादन, र अन्य वस्तु जसको लागि डेटाबेसमा परिवर्तन गरें हुन्छ, त्यसबाट वन्चित हुनेछ। कृपया यो सुनिश्चित गर्नुहोस कि तपाईं यो गर्न चाहनुहुन्छ, र तपाईं रक्षण पश्चात ताला खोल्नुहुन्छ।",
+       "lockdbtext": "डेटाबेसमा ताला लगाउनाले सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो अभिरूचीमा परिवर्तन, आफ्नो ध्यानसूचीमा सम्पादन, र अन्य वस्तु जसको लागि डेटाबेसमा परिवर्तन गरें हुन्छ, त्यसबाट वन्चित हुनेछ। कृपया यो सुनिश्चित गर्नुहोस् कि तपाईं यो गर्न चाहनुहुन्छ, र तपाईं रक्षण पश्चात ताला खोल्नुहुन्छ ।",
        "unlockdbtext": "डेटाबेसको ताला खोल्नका लागि सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो अभिरूचीहरूमा परिवर्तन, आफ्नो ध्यानसूचीमा सम्पादन, र अन्य वस्तु जसको लागि डेटाबेसमा परिवर्तन गर्नु पर्छ, को सक्षमतालाई पुनर्स्थापित गर्नछ। कृपया यो सुनिश्चित गर्नुस कि तपाईं यो गर्न चाहनुहुन्छ।",
        "lockconfirm": "हो, म साँच्चिकै डेटाबेस थुन्न चाहन्छु।",
        "unlockconfirm": "हो , म साँच्चै  डेटाबेसको ताल्चा खोल्न चाहन्छु ।",
        "move-page": " $1 लाई सार्ने",
        "move-page-legend": "पृष्ठ सार्नुहोस्",
        "movepagetext": "तल दिएको फारमको उपयोगले पृष्ठ नाम परिवर्तन हुनेछ र पृष्ठको सम्पूर्ण इतिहास नयाँ नामको साथमा जानेछ।\nपुरानो शीर्षक नयाँ शीर्षककोलागि अनुप्रेषित पृष्ठ बनिनेछ।\nतपाईंले यो स्वचालित रूपले अनुप्रेषित पृष्ठलाई अपडेट गर्न सक्नुहुनेछ।\nयदि तपाईं हुँदैन चुन्नुहुन्छ भनें जाँचेर सुनिश्चित गर्नुहोस् कि [[Special:DoubleRedirects|दोहोरो]] अथवा [[Special:BrokenRedirects|टुटेको अनुप्रेषण]]।\nतपाईंमाथि यो सुनिश्चित गर्ने उत्तरदायित्व रहन्छ कि लिङ्क कुन विन्दुमा जानु पर्ने हो ।\n\nध्यान दिनुहोस् नयाँ नामको पृष्ठ पहिलेबाट नैं छ भनें पृष्ठ सारिने <strong>छैन</strong>। नयाँ नामको पृष्ठ पहिलेबाट भएर पनि यदि यो खालि छ अथवा अनुप्रेषित छ र सम्पादित इतिहास छैन भनें सारिनेछ।\nयसको अर्थ हुन्छ यदि कुनै गल्ती गरेमा तपाईंले पुनः पुरानै नाम दिनु पर्ने हुन्छ यसलाई अधिलेखन गर्नसक्नु हुनेछैन। \n\n<strong>चेतावनी!</strong>\nयो एक लोकप्रिय पृष्ठको लागि एउटा कठोर र अप्रत्याशित परिवर्तन हुनसक्नेछ;\nकृपया सुनिश्चित गर्नुहोस् कि तपाईंले यसको सही परिणाम बुझ्नु भएको छ अनि मात्र नयाँ नाम दिन अघि बढ्नुहोस्।",
-       "movepagetext-noredirectfixer": "तल दिइएको फारम पृष्ठको नाम परिवर्तन गर्नेछ, उसको सबै इतिहास पनि नयाँ नामले देखिनेछ।\nपुरानो शीर्षक नयाँ नाममा अनुप्रेषण गर्नेछ।\nमूल शीर्षक तर्फ लिएर जाने सबै अनुप्रेषणहरूलाई तपाईं स्वचालित रूपले परिवर्तन गर्न सक्नुहुन्छ।\nयदि तपाईं यसो गर्नुहुन्न भने कृपया [[Special:DoubleRedirects|दोहोरो]] पुनर्निर्देशन वा [[Special:BrokenRedirects|टुटेको पुनर्निर्देशन]]को लागि पक्कै जाँच गर्नुहोस।\nलिङ्क आफ्नो स्थानमै रहोस, यो सुनिश्चित गर्ने जिम्मेवारी तपाईंको हो।\n\nयदि नयाँ शीर्षकको लेख पहिले देखि छ भने स्थानान्तरण '''हुन''' सक्दैन। तर यदि नयाँ शीर्षक भएको लेख खाली छ अथवा कतै अन्य स्थानमा अनुप्रेषित गर्दैछ र साथै उसको पुरानो संस्करण छैन भने त्यो स्थानान्तरण हुनेछ।\nयसको अभिप्राय यो हो कि यदि तपाईंद्वारा गलती भएको छ भने तपाईं फेरी पुरानो नाममा यस पृष्ठलाई स्थानान्तरण गर्न सक्नुहुन्छ, र साथै तपाईं कुनै पहिले देखि रहेको पृष्ठको सट्टा यो स्थानान्तरण गर्न सक्नुहुन्न।\n\n<strong>चेतावनी!<strong>\nयदि पृष्ठ खासै लोकप्रिय छ भने त्यसको लागि यो एउटा ठुलो र अकस्मात परिवर्तन हुन सक्छ;\nअगाडी बढ्नु भन्दा पहिले तपाईं यसको नतिजासँग परिचित हुनुहुन्छ।",
+       "movepagetext-noredirectfixer": "तल दिइएको फारमले पृष्ठको नाम परिवर्तन गर्नेछ, उसको सबै इतिहास पनि नयाँ नामले देखिनेछ ।\nपुरानो शीर्षक नयाँ नाममा अनुप्रेषण गर्नेछ ।\nमूल शीर्षक तर्फ लिएर जाने सबै अनुप्रेषणहरूलाई तपाईं स्वचालित रूपले परिवर्तन गर्न सक्नुहुन्छ ।\nयदि तपाईं यसो गर्नुहुन्न भने कृपया [[Special:DoubleRedirects|दोहोरो]] पुनर्निर्देशन वा [[Special:BrokenRedirects|टुटेको पुनर्निर्देशन]]को लागि पक्कै जाँच गर्नुहोस् ।\nलिङ्क आफ्नो स्थानमै रहोस्, यो सुनिश्चित गर्ने जिम्मेवारी तपाईंको हो ।\n\nयदि नयाँ शीर्षकको लेख पहिले देखि छ भने नाम परिवर्तन '''हुन''' सक्दैन । तर यदि नयाँ शीर्षक भएको लेख खाली छ अथवा कतै अन्य स्थानमा अनुप्रेषित गर्दैछ र साथै उसको पुरानो संस्करण छैन भने त्यसको नाम परिवर्तन हुनेछ ।\nयसको अभिप्राय यो हो कि यदि तपाईंद्वारा गल्ती भएको छ भने तपाईं फेरी पुरानो नाममा यस पृष्ठलाई सार्न सक्नुहुन्छ, र साथै तपाईं कुनै पहिले देखि रहेको पृष्ठको सट्टा यो स्थानान्तरण गर्न सक्नुहुन्न।\n\n<strong>चेतावनी!<strong>\nयदि पृष्ठ खासै लोकप्रिय छ भने त्यसको लागि यो एउटा ठुलो र अकस्मात परिवर्तन हुन सक्छ;\nअगाडी बढ्नु भन्दा पहिले तपाईं यसको नतिजासँग परिचित हुनुहुन्छ।",
        "movepagetalktext": "संबद्ध वार्तालाप पृष्ठ स्वतः योसित जानेछ '''यदि'''\n* नयाँ नामको पृष्ठको वार्तालाप पृष्ठ रिक्त छैन अथवा\n* तपाईंले यसको सन्दूकमा अनचेक गर्नुहुन्छ भनें '''वार्तालाप पृष्ठ जानेछैन'''। \n\nयस्तो भएमा, तपाईंको इच्छाले आफैंले (manually) पृष्ठ सार्नु अथवा मिलाउनु पर्ने हुन्छ।",
        "movearticle": "पृष्ठ सार्नुहोस्",
        "moveuserpage-warning": "'''चेतावनी:''' तपाईंले प्रयोगकर्ता पृष्ठ सार्न आँट्नु भएकोछ। कृपया याद राख्नुहोस् पृष्ठ मात्र सारिने छ र प्रयोगकर्ताको अर्को नाम राख्न '''सकिंदैन'''।",
        "move-over-sharedrepo": "==फाइल पहिले देखि छ==\n[[$1]] एक साझा भण्डारमा पहिले देखि नै छ। यस नामको स्थानान्तरणले नयाँ फाइल साझा फाइललाई ओभरराइड गर्नेछ।",
        "file-exists-sharedrepo": "छानिएको फाइल नाम पहिले देखि नै साझा भण्डारमा प्रयोगमा छ। कृपया अन्य नाम छान्नुहोस्।",
        "export": "पृष्ठहरू निर्यात गर्ने",
-       "exporttext": "तपाईं विशिष्ठ पृष्ठको विषय वस्तु र सम्पादन इतिहासलाई निर्यात गर्न सक्नुहुन्छ अथवा पृष्ठहरूको समूहका केहि XML मा बेर्न सक्नुहुन्छ।\nयो [[Special:Import|आयात पृष्ठ]]को सहायताले मीडियाविकीको प्रयोग गरेर दोश्रो विकीबाट आयात गर्न सकिनेछ।\n\nपृष्ठहरूको निर्यात गर्नका लागि, तल विषय वस्तु बाकसमा शीर्षक दिनुहोस, एक शीर्षक प्रति पङ्क्ति, र छान्नुहोस् कि तपाईं वर्तमान अवतरणसँग पुरानै अवतरण पनि चाहनुहुन्छ वा चाहनुहुन्न, वा पछिल्लो सम्पादनको बारेमा जानकारीसँग मात्रै वर्तमान अवतरण चाहनुहुन्छ।\n\nपछीको स्थितिको लागि तपाईं लिङ्कको पनि प्रयोग गर्न सक्नुहुन्छ, उदाहरणको लागि, \"[[{{MediaWiki:Mainpage}}]]\" पृष्ठको लागि [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]]।",
+       "exporttext": "तपाईं विशिष्ठ पृष्ठको विषय वस्तु र सम्पादन इतिहासलाई निर्यात गर्न सक्नुहुन्छ अथवा पृष्ठहरूको समूहका केहि XML मा बेर्न सक्नुहुन्छ।\nयो [[Special:Import|आयात पृष्ठ]]को सहायताले मीडियाविकीको प्रयोग गरेर दोश्रो विकीबाट आयात गर्न सकिनेछ।\n\nपृष्ठहरूको निर्यात गर्नका लागि, तल विषय वस्तु बाकसमा शीर्षक दिनुहोस, एक शीर्षक प्रति पङ्क्ति, र छान्नुहोस् कि तपाईं वर्तमान अवतरणसँग पुरानै अवतरण पनि चाहनुहुन्छ वा चाहनुहुन्न, वा पछिल्लो सम्पादनको बारेमा जानकारीसँग मात्रै वर्तमान अवतरण चाहनुहुन्छ।\n\nपछीको स्थितिको लागि तपाईं लिङ्कको पनि प्रयोग गर्न सक्नुहुन्छ, उदाहरणको लागि, \"[[{{MediaWiki:Mainpage}}]]\" पृष्ठको लागि [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]]।",
        "exportall": "सबै पृष्ठहरू निर्यात गर्ने",
        "exportcuronly": "हालको संस्करण मात्र थप्ने ,पूरा इतिहास हैन",
        "exportnohistory": "----\n<strong>सूचना:</strong> यस फारमको प्रयोग गरेर पृष्ठको पुरै इतिहास निर्यात गर्दा प्रदर्शन कारणले अक्षम गरिएको छ।",
        "tags-delete-title": "ट्याग मेट्नुहोस्",
        "tags-delete-explanation-initial": "तपाईले ट्याग \"$1\" लाई डाटावेसबाट हटाउन खोज्दै हुनु हुन्छ ।",
        "tags-delete-explanation-in-use": "ट्यागलाई {{PLURAL:$2|$2 संशोधन वा लग प्रविष्टि|सबै $2 संशोधन र/वा लग प्रविष्टिहरू}}बाट हटाइनेछ जहाँ अहिले त्यसको प्रयोग गरिंदै छ।",
-       "tags-delete-explanation-warning": "यà¥\8b à¤\95à¥\8dरिया <strong>à¤\85परिवरà¥\8dतनà¥\80य</strong> à¤¹à¥\8b à¤° <strong>तà¥\8dयसलाà¤\88 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤¸à¤\95िà¤\82दà¥\88न</strong>, à¤¡à¥\87à¤\9fाà¤\9fाबà¥\87स à¤ªà¥\8dरवनà¥\8dधà¤\95 à¤ªà¤¨à¤¿ à¤¯à¤¸à¤²à¤¾à¤\88 à¤\95à¥\87हि à¤\97रà¥\8dन à¤¸à¤\95à¥\8dदà¥\88ननà¥\8d। à¤µà¤¿à¤¶à¥\8dवासपà¥\82रà¥\8dण à¤°à¥\82पलà¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¤à¤¯ à¤\97रà¥\8dनà¥\81स कि तपाईं यस ट्यागलाई हटाउन चाहनुहुन्छ।",
+       "tags-delete-explanation-warning": "यà¥\8b à¤\95à¥\8dरिया <strong>à¤\85परिवरà¥\8dतनà¥\80य</strong> à¤¹à¥\8b à¤° <strong>तà¥\8dयसलाà¤\88 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤¸à¤\95िà¤\82दà¥\88न</strong>, à¤¡à¥\87à¤\9fाबà¥\87स à¤ªà¥\8dरवनà¥\8dधà¤\95 à¤ªà¤¨à¤¿ à¤¯à¤¸à¤²à¤¾à¤\88 à¤\95à¥\87हि à¤\97रà¥\8dन à¤¸à¤\95à¥\8dदà¥\88ननà¥\8d। à¤µà¤¿à¤¶à¥\8dवासपà¥\82रà¥\8dण à¤°à¥\82पलà¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¤à¤¯ à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d कि तपाईं यस ट्यागलाई हटाउन चाहनुहुन्छ।",
        "tags-delete-explanation-active": "<strong>ट्याग \"$1\" अहिले पनि सक्रिय छ, र यसको प्रयोग भविष्यमा पनि जारी रहनेछ।</strong> यसलाई रोकनका लागि, ती स्थानहरूमा जानुहोस जहाँ यस ट्यागको प्रयोग भइरहेको छ र त्यहाँ देखि यसलाई अक्षम गर्नुहोस।",
        "tags-delete-reason": "कारण:",
        "tags-delete-submit": "उल्टाउन नसकिने गरि यो ट्यागलाई मेटाउने",
        "feedback-back": "अघिल्लो",
        "feedback-bugcheck": "राम्रो! जाँच्नुस की कतै [ $1 ज्ञात बगहरू] पहिले देखि नै नहोस्।",
        "feedback-bugnew": "मैले जाँच गरिसके। नयाँ बगको खबर दिनुहोस्",
-       "feedback-bugornote": "यदि à¤¤à¤ªà¤¾à¤\88à¤\82 à¤\95à¥\81नà¥\88 à¤ªà¥\8dराविधिà¤\95 à¤¸à¤®à¤¸à¥\8dयालाà¤\88 à¤µà¤¿à¤¸à¥\8dतारलà¥\87 à¤¸à¤®à¤\9dाà¤\89न à¤¤à¤¯à¤¾à¤° à¤¹à¥\81नà¥\81हà¥\81नà¥\8dà¤\9b à¤­à¤¨à¥\87 à¤\95à¥\83पया [$1 à¤¬à¤\97 à¤°à¤¾à¤\96à¥\8dनà¥\81हà¥\8bस]।\nयदि à¤¹à¥\88न, à¤­à¤¨à¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¤à¤² à¤¦à¤¿à¤\87à¤\8fà¤\95à¥\8b à¤¸à¤°à¤² à¤«à¤¾à¤°à¤®à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dनसà¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b। à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\9fिपà¥\8dपणà¥\80 à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¨à¤¾à¤® à¤° à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤¬à¥\8dराà¤\89à¤\9cरà¤\95à¥\8b à¤¨à¤¾à¤® à¤¸à¤¹à¤¿à¤¤ \"[$3 $2]\" à¤ªà¥\83षà¥\8dठ मा जोडिनेछ।",
+       "feedback-bugornote": "यदि à¤¤à¤ªà¤¾à¤\88à¤\82 à¤\95à¥\81नà¥\88 à¤ªà¥\8dराविधिà¤\95 à¤¸à¤®à¤¸à¥\8dयालाà¤\88 à¤µà¤¿à¤¸à¥\8dतारलà¥\87 à¤¸à¤®à¥\8dà¤\9dाà¤\89न à¤¤à¤¯à¤¾à¤° à¤¹à¥\81नà¥\81हà¥\81नà¥\8dà¤\9b à¤­à¤¨à¥\87 à¤\95à¥\83पया [$1 à¤¬à¤\97 à¤°à¤¾à¤\96à¥\8dनà¥\81हà¥\8bस]।\nयदि à¤¹à¥\88न, à¤­à¤¨à¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¤à¤² à¤¦à¤¿à¤\87à¤\8fà¤\95à¥\8b à¤¸à¤°à¤² à¤«à¤¾à¤°à¤®à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dनसà¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b। à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\9fिपà¥\8dपणà¥\80 à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¨à¤¾à¤® à¤° à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤¬à¥\8dराà¤\89à¤\9cरà¤\95à¥\8b à¤¨à¤¾à¤® à¤¸à¤¹à¤¿à¤¤ \"[$3 $2]\" à¤ªà¥\83षà¥\8dठमा जोडिनेछ।",
        "feedback-cancel": "रद्द गर्ने",
        "feedback-close": "गरियो",
        "feedback-external-bug-report-button": "प्राविधिक कार्य पेश गर्नुहोस्",
index 7e67800..dd78e7e 100644 (file)
        "watchthis": "ଏହି ପୃଷ୍ଠାଟିକୁ ଦେଖିବେ",
        "savearticle": "ସାଇତିବେ [Save]",
        "preview": "ସାଇତିବା ଆଗରୁ ଦେଖନ୍ତୁ",
-       "showpreview": "ପà­\82ରà­\8dବଦà­\87à¬\96ଣା [Preview]",
+       "showpreview": "ଦେଖଣା [Preview]",
        "showdiff": "ବଦଳଗୁଡ଼ିକ ଦେଖାଇବେ",
        "blankarticle": "<strong>ଚେତାବନୀ:</strong> ଆପଣ ସମ୍ପାଦନା କରୁଥିବା ଏହି ପୃଷ୍ଠାଟି ଫାଙ୍କା ଅଛି ।\nଯଦି ଆପଣ \"{{int:savearticle}}\" ଉପରେ ଆଉଥରେ କ୍ଲିକ କରନ୍ତି, ପୃଷ୍ଠାଟି କୌଣସି ବିଷୟବସ୍ତୁ ନଥାଇ ତିଆରି ହୋଇଯିବ ।",
        "anoneditwarning": "<strong>ସାବଧାନ:</strong> ଆପଣ ଲଗ-ଇନ କରିନାହାନ୍ତି । ଅଧିକ ସମ୍ପାଦନା କଲେ ଆପଣଙ୍କ IP Address ଟି ସମସ୍ତଙ୍କୁ ଦେଖାଯିବ । <strong>[$1ଲଗ ଇନ କଲେ]</strong> କିମ୍ବା <strong>[$2 ନୂଆ ଖାତାଟିଏ ତିଆରି କଲେ]</strong>, ଆପଣଙ୍କ ସମ୍ପାଦନାର ଶ୍ରେୟ ଅନ୍ୟାନ୍ୟ ସୁବିଧା ସହିତ ଆପଣଙ୍କ ଇଉଜର ନାମରେ ଦିଆହେବ ।",
        "prefs-timeoffset": "ସମୟ ଆରମ୍ଭ",
        "prefs-advancedediting": "ସାଧାରଣ ବିକଳ୍ପ",
        "prefs-editor": "ସମ୍ପାଦକ",
-       "prefs-preview": "ପà­\82ରà­\8dବଦà­\87à¬\96ଣା",
+       "prefs-preview": "ଦେଖଣା",
        "prefs-advancedrc": "ଉନ୍ନତ ବିକଳ୍ପସମୂହ",
        "prefs-advancedrendering": "ଉନ୍ନତ ବିକଳ୍ପସମୂହ",
        "prefs-advancedsearchoptions": "ଉନ୍ନତ ବିକଳ୍ପସମୂହ",
        "expand_templates_remove_nowiki": "ଫଳାଫଳରେ <nowiki> ଟ୍ୟାଗମାନଙ୍କୁ ଦବାଇଦିଅନ୍ତୁ",
        "expand_templates_generate_xml": "XML ପାର୍ସ ସଂରଚନା ଦେଖାନ୍ତୁ",
        "expand_templates_generate_rawhtml": "କେବଳ HTML କୋଡ଼ ଦେଖାନ୍ତୁ",
-       "expand_templates_preview": "ପà­\82ରà­\8dବଦà­\87à¬\96ଣା",
+       "expand_templates_preview": "ଦେଖଣା",
        "pagelanguage": "ପୃଷ୍ଠା ଭାଷା ବଛା",
        "pagelang-name": "ପୃଷ୍ଠା",
        "pagelang-language": "ଭାଷା",
index f37779b..10a1e12 100644 (file)
        "searchrelated": "ਸਬੰਧਤ",
        "searchall": "ਸਭ",
        "showingresults": "ਹੇਠਾਂ #'''$2''' ਨਾਲ਼ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲ਼ੇ {{PLURAL:\n$1|'''1''' ਨਤੀਜਾ|'''$1''' ਤੱਕ ਨਤੀਜੇ}} ਵਖਾਓ।",
+       "search-showingresults": "{{PLURAL:$4|<strong>$3</strong> ਵਿੱਚੋਂ <strong>$1</strong> ਨਤੀਜੇ| <strong>$3</strong> ਵਿੱਚੋਂ <strong>$1 - $2</strong> ਨਤੀਜੇ}}",
        "search-nonefound": "ਤੁਹਾਡੀ ਖੋਜ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਮਿਲੇ।",
        "powersearch-legend": "ਤਕਨੀਕੀ ਖੋਜ",
        "powersearch-ns": "ਨੇਮ-ਸਪੇਸ ਵਿੱਚ ਖੋਜ:",
index 01ddf9a..ca5db9a 100644 (file)
        "underline-never": "Nigdy",
        "underline-default": "według ustawień skórki lub przeglądarki",
        "editfont-style": "Styl czcionki w polu edycyjnym:",
-       "editfont-default": "Domyślna przeglądarka",
+       "editfont-default": "domyślny przeglądarki",
        "editfont-monospace": "czcionka o stałej szerokości",
        "editfont-sansserif": "czcionka bezszeryfowa",
        "editfont-serif": "czcionka szeryfowa",
index 7288066..11ea692 100644 (file)
        "version-libraries": "Header on [[Special:Version]] above a table that lists installed external libraries and their version numbers.",
        "version-libraries-library": "Column header for the library's name\n{{Identical|Library}}",
        "version-libraries-version": "Column header for the library's version number\n{{Identical|Version}}",
+       "version-libraries-license": "Column header for the library's license",
+       "version-libraries-description": "Column header for the library's description",
+       "version-libraries-authors": "Column header for the library's authors",
        "redirect": "{{doc-special|Redirect}}\nThis means \"Redirect by file'''name''', user '''ID''', page '''ID''', or revision ID\".",
        "redirect-legend": "Legend of fieldset around input box in [[Special:Redirect]]",
        "redirect-text": "Inside fieldset for [[Special:Redirect]]",
index 7d0cf38..5c36432 100644 (file)
        "yourdiff": "Differenze",
        "copyrightwarning": "Pe piacere vide ca tutte le condrebbute de {{SITENAME}} sonde considerete de essere rilasciete sotte 'a $2 (vide $1 pe le dettaglie).\nCe tu non ge vuè ca le condrebbute tue avènene ausete da otre o avènene cangete, non le scè mettènne proprie.<br />\nTu na promettere pure ca le cose ca scrive tu, sonde 'mbormaziune libbere o copiete da 'nu pubbleche dominie.<br />\n'''NON METTE' NISCIUNA FATJE CA JE' PROTETTE DA DERITTE SENZA PERMESSE!'''",
        "copyrightwarning2": "Pe piacere vide ca tutte le condrebbute de {{SITENAME}} ponne essere cangete, alterate o luvete da otre condrebbutore.\nCe tu non ge vuè ca quidde ca scrive avène cangete da tre, allore non scè scrivenne proprie aqquà.<br />\nTu ne stè promitte ca quidde ca scrive tu, o lè scritte cu 'u penziere tue o lè cupiate da risorse de pubbliche dominie o sembre robba libbere (vide $1 pe cchiù dettaglie).\n'''NO REGGISTRA' FATIJE CUPERTE DA 'U COPYRIGHT SENZA PERMESSE! NO FA STUDECARIE!'''",
+       "editpage-cannot-use-custom-model": "'U modelle de condenute de sta pàgene non ge pò essere cangiate.",
        "longpageerror": "'''ERRORE: 'U teste ca tu vuè ccu reggistre è luenghe {{PLURAL:$1|'nu kilobyte|$1 kilobyte}}, invece 'u limite massime jè de {{PLURAL:$2|'nu kilobyte|$2 kilobyte}}.'''\nNon ge puè reggistrà sta pàggene.",
        "readonlywarning": "'''FA ATTENZIO': 'U database ha state bloccate pe manutenzione, e allore tu non ge puè reggistrà le cangiaminde ca ste face mò.'''\nTu puè fa 'na bella cose, tagghie e 'nzicche le cangiaminde jndr'à 'nu file de teste sus a 'u combiuter tune e pò cchiù tarde le reggistre sus 'a Uicchi.\n\nL'amministratore ca ha bloccate 'u database ha date stu mutive: $1",
        "protectedpagewarning": "'''ATTENZIO': Sta pàgene ha state bloccate e allore sulamende le utinde cu le privilegge de ''sysop'' ponne cangiarle.'''\nL'urteme archivie de le trasute ha state previste aqquà sotte pe referimende:",
        "content-model-css": "CSS",
        "content-json-empty-object": "Oggette vacande",
        "content-json-empty-array": "Matrice vacande",
+       "duplicate-args-warning": "<strong>Attenziò:</strong> [[:$1]] ste chiame [[:$2]] cu cchiù de 'nu valore pu parametre \"$3\". Sulamende l'urteme valore date avène ausate.",
        "duplicate-args-category": "Pàggene ca ausane le argumende a doppie jndr'à le chiamate d'u template",
        "duplicate-args-category-desc": "'A pàgene téne chiamate a template ca ausane arguminde a doppie, cumme <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> o <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "Fà attenziò: Sta vosce tène 'nu sbuenne de funziune de chiamate a l'analizzatore.\n\nAvessere a essere mene de $2 {{PLURAL:$2|chiamate|chiamate}}, 'nvece mò {{PLURAL:$1|ste $1 chiamate|ne stonne $1 chiamate}}.",
        "uploaded-script-svg": "Acchiate elemende pe script \"$1\" jndr'à 'u file SVG carecate.",
        "uploaded-hostile-svg": "Acchiate 'nu CSS insecure ndr'à l'elemende de stile d'u file SVG carecate.",
        "uploaded-event-handler-on-svg": "'A 'mbostazione de le attribute de gestione de l'evende <code>$1=\"$2\"</code> non ge se pò ffà cu le file SVG.",
+       "uploaded-href-attribute-svg": "le attribbute href <code>&lt;$1 $2=\"$3\"&gt;</code> cu le destinaziune de fore (p.e. http://, javascript:, etc) non ge se ponne mettere jndr'à le file SVG.",
        "uploadscriptednamespace": "Stu file SVG tène 'nu namespace illegale '$1'",
        "uploadinvalidxml": "L'XML jndr'à 'u file carecate non ge pò essere analizzate.",
        "uploadvirus": "Alanga toje, 'u file condiene 'nu virus! Dettaglie: $1",
        "special-characters-group-khmer": "Khmer",
        "special-characters-title-endash": "trattine en",
        "special-characters-title-emdash": "trattine em",
-       "special-characters-title-minus": "segne mene"
+       "special-characters-title-minus": "segne mene",
+       "mw-widgets-titleinput-description-new-page": "'a pàgene non g'esiste angore",
+       "mw-widgets-titleinput-description-redirect": "redirezionate sus a $1"
 }
index 96d221d..9c50242 100644 (file)
        "prefs-tokenwatchlist": "Token",
        "prefs-diffs": "Rozdiely",
        "prefs-help-prefershttps": "Táto voľba sa prejaví pri vašom ďalšom prihlásení.",
-       "email-address-validity-valid": "Formát e-mailovej adresa vyzerá byť správny",
+       "prefswarning-warning": "Vykonali ste zmeny v nastaveniach, ktoré zatiaľ nie sú uložené. Ak túto stránku opustíte bez kliknutia na „$1“, vaše nastavenia sa neaktualizujú.",
+       "email-address-validity-valid": "Formát e-mailovej adresy sa zdá byť správny",
        "email-address-validity-invalid": "Zadajte platnú e-mailovú adresu",
        "userrights": "Spravovanie používateľských práv",
        "userrights-lookup-user": "Spravovať skupiny používateľov",
        "right-browsearchive": "Hľadať v zmazaných stránkach",
        "right-undelete": "Obnoviť zmazanú stránku",
        "right-suppressrevision": "Kontrolovať a obnovovať revízie skryté správcom",
+       "right-viewsuppressed": "Zobrazovať revízie skryté pred všetkými používateľmi",
        "right-suppressionlog": "Zobrazovať súkromné záznamy",
        "right-block": "Blokovať ostatných používateľov",
        "right-blockemail": "Zablokovať používateľovi posielanie emailu",
        "right-protect": "Meniť úroveň zamknutia a upravovať kaskádovito zamknuté stránky",
        "right-editprotected": "Upravovať stránky zamknuté ako „{{int:protect-level-sysop}}“",
        "right-editsemiprotected": "Upravovať stránky zamknuté ako „{{int:protect-level-autoconfirmed}}“",
+       "right-editcontentmodel": "Upravovať model obsahu stránky",
        "right-editinterface": "Upravovať správy používateľského rozhrania",
        "right-editusercssjs": "Upravovať CSS a JS súbory ostatných používateľov",
        "right-editusercss": "Upravovať CSS súbory ostatných používateľov",
        "action-viewmywatchlist": "zobraziť zoznam sledovaných stránok",
        "action-viewmyprivateinfo": "zobraziť vaše súkromné údaje",
        "action-editmyprivateinfo": "upraviť vaše súkromné údaje",
+       "action-editcontentmodel": "upraviť model obsahu stránky",
        "action-managechangetags": "vytvorte a odstráňte značky z databázy",
        "nchanges": "$1 {{PLURAL:$1|úprava|úpravy|úprav}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|od poslednej návštevy}}",
        "unusedimages": "Nepoužité obrázky",
        "wantedcategories": "Žiadané kategórie",
        "wantedpages": "Žiadané stránky",
+       "wantedpages-summary": "Zoznam neexistujúcich stránok, na ktoré smeruje najviac odkazov, s výnimkou stránok, na ktoré odkazujú len presmerovania. Pre zoznam neexistujúcich stránok, na ktoré odkazujú presmerovania, pozri [[{{#special:BrokenRedirects}}|zoznam pokazených presmerovaní]].",
        "wantedpages-badtitle": "Neplatný názov vo výsledkoch: $1",
        "wantedfiles": "Žiadané súbory",
        "wantedfiletext-cat": "Nasledovné súbory sa používajú, ale nie sú k dispozícii. Súbory z cudzích repozitárov môžu byť uvedené aj napriek tomu, že existujú. Takéto falošné poplachy budú <del>prečiarknuté</del>. Okrem toho stránky, ktoré obsahujú vložené súbory, ktoré nie sú k dispozícii sú uvedené na [[:$1]].",
        "deadendpagestext": "Nasledujúce stránky neodkazujú na žiadne iné stránky na {{GRAMMAR:lokál|{{SITENAME}}}}.",
        "protectedpages": "Zamknuté stránky",
        "protectedpages-indef": "Zamknutia iba na neurčito",
+       "protectedpages-summary": "Táto stránka obsahuje zoznam existujúcich stránok, ktoré sú momentálne zamknuté. Zoznam názvov zamknutých proti vytvoreniu nájdete na stránke [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
        "protectedpages-cascade": "Iba kaskádové zamykanie",
        "protectedpages-noredirect": "Skryť presmerovania",
        "protectedpagesempty": "Momentálne nie sú žiadne stránky s týmito parametrami zamknuté.",
        "protectedpages-timestamp": "Dátum a čas",
        "protectedpages-page": "Stránka",
        "protectedpages-expiry": "Koniec platnosti",
+       "protectedpages-performer": "Zamkol",
        "protectedpages-params": "Nastavenie zámku",
        "protectedpages-reason": "Dôvod",
        "protectedpages-unknown-timestamp": "Neznáme",
        "protectedpages-unknown-performer": "Neznámy redaktor",
        "protectedtitles": "Zamknuté názvy",
+       "protectedtitles-summary": "Táto stránka obsahuje zoznam názvov, ktoré sú momentálne zamknuté proti vytvoreniu. Zoznam existujúcich zamknutých stránok nájdete na stránke [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
        "protectedtitlesempty": "Tieto parametre momentálne nezamykajú žiadne názvy stránok.",
        "listusers": "Zoznam používateľov",
        "listusers-editsonly": "Vynechať používateľov bez úprav",
index 4c7e55e..903bce1 100644 (file)
        "special-characters-group-khmer": "Kmerski",
        "special-characters-title-endash": "navaden pomišljaj",
        "special-characters-title-emdash": "dolgi pomišljaj",
-       "special-characters-title-minus": "znak za minus"
+       "special-characters-title-minus": "znak za minus",
+       "mw-widgets-titleinput-description-new-page": "stran še ne obstaja",
+       "mw-widgets-titleinput-description-redirect": "preusmeritev na $1"
 }
index 2793fa3..89f4154 100644 (file)
        "special-characters-group-thai": "тајландски",
        "special-characters-group-lao": "лаоски",
        "special-characters-group-khmer": "кмерски",
-       "mw-widgets-titleinput-description-new-page": "страница још увек не постоји"
+       "mw-widgets-titleinput-description-new-page": "страница још увек не постоји",
+       "mw-widgets-titleinput-description-redirect": "преусмерава на $1"
 }
index 6da7572..a341526 100644 (file)
        "yourdiff": "Skillnader",
        "copyrightwarning": "Observera att alla bidrag till {{SITENAME}} är att betrakta som utgivna under $2 (se $1 för detaljer). Om du inte vill att din text ska redigeras eller kopieras efter andras gottfinnande skall du inte skriva något här.<br />\nDu lovar oss också att du skrev texten själv, eller kopierade från kulturellt allmängods som inte skyddas av upphovsrätt, eller liknande källor. '''LÄGG INTE UT UPPHOVSRÄTTSSKYDDAT MATERIAL HÄR UTAN TILLÅTELSE!'''",
        "copyrightwarning2": "Observera att alla bidrag till {{SITENAME}} kan komma att redigeras, ändras, eller tas bort av andra deltagare. Om du inte vill se din text förändrad efter andras gottfinnade skall du inte skriva in någon text här.<br />\nDu lovar oss också att du skrev texten själv, eller kopierade från kulturellt allmängods som inte skyddas av upphovsrätt, eller liknande källor - se $1 för detaljer.\n'''LÄGG INTE UT UPPHOVSRÄTTSSKYDDAT MATERIAL HÄR UTAN TILLÅTELSE!'''",
+       "editpage-cannot-use-custom-model": "Innehållsmodellen för denna sida kan inte ändras.",
        "longpageerror": "'''FEL: Texten som du försöker spara är {{PLURAL:$1|en kilobyte|$1 kilobyte}}, vilket är mer än det maximalt tillåtna {{PLURAL:$2|en kilobyte|$2 kilobyte}}.'''\nDen kan inte sparas.",
        "readonlywarning": "'''VARNING: Databasen är tillfälligt låst för underhåll. Du kommer inte att kunna spara dina ändringar just nu.\nDet kan vara klokt att kopiera texten till ett textdokument som sparas på din dator tills vidare.'''\n\nAdministratören som låste databasen gav följande förklaring: $1",
        "protectedpagewarning": "'''Varning: Den här sidan har låsts så att bara användare med administratörsrättigheter kan redigera den.'''\nDen senaste loggposten tillhandahålls nedan som referens:",
index 3ec0241..f1b5c3f 100644 (file)
        "yourdiff": "Відмінності",
        "copyrightwarning": "Зверніть увагу, що будь-які додавання і зміни до {{grammar:genitive|{{SITENAME}}}} розглядаються як випущені на умовах ліцензії $2 (детальніше див. $1).\nЯкщо ви не бажаєте, щоб написане вами безжально редагувалось і розповсюджувалося за бажанням будь-кого, не пишіть тут.<br />\nВи також підтверджуєте, що написане вами тут належить вам або взяте з джерела, що є суспільним надбанням чи подібного вільного джерела.\n'''Не публікуйте тут без дозволу матеріали, захищені авторським правом!'''",
        "copyrightwarning2": "Будь ласка, зверніть увагу, що всі зміни, внесені вами до {{SITENAME}}, можуть редагуватися, доповнюватися або вилучатися іншими користувачами.\nЯкщо ви не бажаєте, щоб написане вами безжально редагувалось — не пишіть тут.<br />\nВи також підтверджуєте, що наведене тут написано вами особисто або запозичено з джерела, яке є суспільним надбанням, або подібного вільного джерела (див. $1).<br />\n'''Не публікуйте тут без дозволу матеріали, захищені авторським правом!'''",
+       "editpage-cannot-use-custom-model": "Модель вмісту цієї сторінки не може бути змінена.",
        "longpageerror": "'''Помилка: Поданий вами текст становить $1 {{PLURAL:$1|кілобайт|кілобайти|кілобайтів}}, що більше за встановлену межу у {{PLURAL:$2|кілобайт|кілобайти|кілобайтів}}.'''\nЙого неможливо зберегти.",
        "readonlywarning": "'''Попередження: База даних заблокована на обслуговування, тому, на даний момент, ви не можете записати ваші зміни.\nМожливо, вам варто скопіювати текст у файл на вашому комп'ютері й зберегти його на пізніше.'''\n\nАдміністратор, що заблокував базу даних, залишив наступне пояснення: $1",
        "protectedpagewarning": "'''Попередження: Ця сторінка була захищена від змін так, що тільки користувачі з правами адміністратора можуть її редагувати.'''\nОстанній запис журналу наведений нижче для довідки:",
        "badsig": "Неправильний підпис.\nПеревірте коректність HTML-тегів.",
        "badsiglength": "Ваш підпис дуже довгий.\nПовинно бути не більше $1 {{PLURAL:$1|символу|символів|символів}}.",
        "yourgender": "Стать:",
-       "gender-unknown": "Ð\9dе Ð²Ð¸Ð·Ð½Ð°Ñ\87ена",
+       "gender-unknown": "Ð\97гадÑ\83Ñ\8eÑ\87и Ð\92аÑ\81, Ð¿Ñ\80огÑ\80амне Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ\87еннÑ\8f Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83ваÑ\82име Ð¿Ð¾ Ð·Ð¼Ð¾Ð·Ñ\96 Ð³ÐµÐ½Ð´ÐµÑ\80но Ð½ÐµÐ¹Ñ\82Ñ\80алÑ\8cнÑ\96 Ñ\81лова",
        "gender-male": "Чоловіча",
        "gender-female": "Жіноча",
        "prefs-help-gender": "Задання цього параметру — необов'язкове. Застосовується рушієм у тих звертаннях до користувача, які залежать від статі.\nЦя інформація загальнодоступна.",
        "nmembers": "$1 {{PLURAL:$1|об'єкт|об'єкти|об'єктів}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|член|члени|членів}}",
        "nrevisions": "$1 {{PLURAL:$1|версія|версії|версій}}",
-       "nviews": "$1 {{PLURAL:$1|перегляд|перегляди|переглядів}}",
        "nimagelinks": "Використовується на $1 {{PLURAL:$1|1=сторінці|сторінках}}",
        "ntransclusions": "використовується на $1 {{PLURAL:$1|1=сторінці|сторінках}}",
        "specialpage-empty": "Запит не дав результатів.",
        "special-characters-group-khmer": "Кхмерські",
        "special-characters-title-endash": "коротке тире",
        "special-characters-title-emdash": "довге тире",
-       "special-characters-title-minus": "мінус"
+       "special-characters-title-minus": "мінус",
+       "mw-widgets-titleinput-description-new-page": "сторінка ще не існує",
+       "mw-widgets-titleinput-description-redirect": "перенаправлення на $1"
 }
index b7fe80b..3e86d8a 100644 (file)
@@ -31,7 +31,7 @@ class ConvertExtensionToRegistration extends Maintenance {
         * @var array
         */
        protected $noLongerSupportedGlobals = array(
-               'SpecialPageGroups' => 'deprecated',
+               'SpecialPageGroups' => 'deprecated', // Deprecated 1.21, removed in 1.26
        );
 
        /**
index 6f2dd39..a3ea91c 100644 (file)
@@ -58,7 +58,9 @@
 堂姊 堂姐
 學姊 学姐
 乾姊 干姐
+清澈 清澈 #分詞用
 澈底 彻底
+仲介 中介
 卯足 铆足
 逕庭 径庭
 逕到 径到
@@ -2662,8 +2664,8 @@ A型肝炎        甲型肝炎
 電腦程式   计算机程序
 應用程式   应用程序
 雷射 激光
-鱼雷射      鱼雷射
-魚雷射      鱼雷射
+鱼雷 鱼雷 #分詞用
+魚雷 鱼雷
 尖峰時間   高峰时间
 尖峰時段   高峰时段
 咖哩 咖喱
index 6e3a7b5..61ffc4d 100644 (file)
 冲着 衝著
 干着 幹著
 干着急      干著急
+对着干      對著幹
 斗着 鬥著
 面包着      面包著
 徵狀 症狀
index 464f455..bc4bff8 100644 (file)
 乾村沙
 乾暖
 乾料
-乾敲梆子不賣油
 乾支支
 乾支剌
 乾擦
 幹人
 乾產
 乾喬
-夯幹
 大目乾連
 國之楨榦
 唇乾
 顛乾倒坤
 強幹
 乾眼
-幹的停當
 井幹
 乾巴
 偎乾
 臧穀亡羊
 種穀
 颳雪
-刮風下雪倒便宜
 广部
-亂鬨不過來
+亂鬨
 斗鬨
-亂鬨
 開鬨
 花鬨
 鬨動
 印纍綬若
 灕湘
 灕然
¾¤æ»²ç\81\95è\80\8cä¸\8bé\99\8d
»²ç\81\95
 裏勾外連
 水里溪
 二里頭
 擀麵
 過水麵
 蕎麥麵
-巧婦做不得無麵餺飥
 削麵
 小米麵
 壯麵
 麵點師
 麵點、
 、麵點
+麵製品
 冷面相
 糞穢衊面
 僕僕
 鬆元音
 鬆喉
 鬆化
+很鬆
 囉囉囌囌
 囉囌
 骨罈
 幹事
 幹什麼
 幹細胞
-配水幹管
 口燥唇乾
 舌乾唇焦
 不食乾腊
 乾物
 乾食
 乾鍋
+自乾五
+不乾膠
 楨幹
 新幹縣
 誰幹的
+他幹的
+們幹的
+人幹的
+幹的事
+幹的好事
 得力幹將
 黑幹將
 的幹將
+幹大事
+對着幹
 李連杰
 周杰
 杰倫
 鬥獸
 鬥龍
 鬥勇
+鬥狗
+鬥蛐
+鬥垮
+鬥敗
 石樑
 木樑
 藏歷史
 母醜
 一齣子
 齣兒
-獃串了皮
-占便宜的是獃
 丰標
 丰姿
 丰韻
 仲裁制
 獨裁制
 恒生
+恒基
+恒隆
 嚴云農
 伊東怜
 衛後莊公
 留長髮
 髮披肩
 髮及腰
+飄髮自由女神
 後天
 學家
 游離
 誇稱
 誇讚
 讚嘆
-繼承制
 布穀鳥
 黎克特制
 筆桿
 麻將蓆
 被廢後
 蒸製
+烹製
 體徵
 綜合徵
 价川
 菜餚
 梁啓超
 改制成
+王添灯
index b4efa9a..5b259e7 100644 (file)
@@ -1,7 +1,8 @@
 /*!
  * Styling for Special:Version
  */
-.mw-version-ext-name {
+.mw-version-ext-name,
+.mw-version-library-name {
        font-weight: bold;
 }
 
diff --git a/tests/phpunit/data/media/2_webp_a.webp b/tests/phpunit/data/media/2_webp_a.webp
new file mode 100644 (file)
index 0000000..8764f06
Binary files /dev/null and b/tests/phpunit/data/media/2_webp_a.webp differ
diff --git a/tests/phpunit/data/media/2_webp_ll.webp b/tests/phpunit/data/media/2_webp_ll.webp
new file mode 100644 (file)
index 0000000..5794bbf
Binary files /dev/null and b/tests/phpunit/data/media/2_webp_ll.webp differ
diff --git a/tests/phpunit/data/media/webp_animated.webp b/tests/phpunit/data/media/webp_animated.webp
new file mode 100644 (file)
index 0000000..25c6a4d
Binary files /dev/null and b/tests/phpunit/data/media/webp_animated.webp differ
index b5fd5f6..cac3b10 100644 (file)
@@ -27,34 +27,95 @@ class ComposerLockTest extends MediaWikiTestCase {
                        'wikimedia/cdb' => array(
                                'version' => '1.0.1',
                                'type' => 'library',
+                               'licenses' => array( 'GPL-2.0' ),
+                               'authors' => array(
+                                       array(
+                                               'name' => 'Tim Starling',
+                                               'email' => 'tstarling@wikimedia.org',
+                                       ),
+                                       array(
+                                               'name' => 'Chad Horohoe',
+                                               'email' => 'chad@wikimedia.org',
+                                       ),
+                               ),
+                               'description' => 'Constant Database (CDB) wrapper library for PHP. Provides pure-PHP fallback when dba_* functions are absent.',
                        ),
                        'cssjanus/cssjanus' => array(
                                'version' => '1.1.1',
                                'type' => 'library',
+                               'licenses' => array( 'Apache-2.0' ),
+                               'authors' => array(),
+                               'description' => 'Convert CSS stylesheets between left-to-right and right-to-left.',
                        ),
                        'leafo/lessphp' => array(
                                'version' => '0.5.0',
                                'type' => 'library',
+                               'licenses' => array( 'MIT', 'GPL-3.0' ),
+                               'authors' => array(
+                                       array(
+                                               'name' => 'Leaf Corcoran',
+                                               'email' => 'leafot@gmail.com',
+                                               'homepage' => 'http://leafo.net',
+                                       ),
+                               ),
+                               'description' => 'lessphp is a compiler for LESS written in PHP.',
                        ),
                        'psr/log' => array(
                                'version' => '1.0.0',
                                'type' => 'library',
+                               'licenses' => array( 'MIT' ),
+                               'authors' => array(
+                                       array(
+                                               'name' => 'PHP-FIG',
+                                               'homepage' => 'http://www.php-fig.org/',
+                                       ),
+                               ),
+                               'description' => 'Common interface for logging libraries',
                        ),
                        'oojs/oojs-ui' => array(
                                'version' => '0.6.0',
                                'type' => 'library',
+                               'licenses' => array( 'MIT' ),
+                               'authors' => array(),
+                               'description' => '',
                        ),
                        'composer/installers' => array(
                                'version' => '1.0.19',
                                'type' => 'composer-installer',
+                               'licenses' => array( 'MIT' ),
+                               'authors' => array(
+                                       array(
+                                               'name' => 'Kyle Robinson Young',
+                                               'email' => 'kyle@dontkry.com',
+                                               'homepage' => 'https://github.com/shama',
+                                       ),
+                               ),
+                               'description' => 'A multi-framework Composer library installer',
                        ),
                        'mediawiki/translate' => array(
                                'version' => '2014.12',
                                'type' => 'mediawiki-extension',
+                               'licenses' => array( 'GPL-2.0+' ),
+                               'authors' => array(
+                                       array(
+                                               'name' => 'Niklas Laxström',
+                                               'email' => 'niklas.laxstrom@gmail.com',
+                                               'role' => 'Lead nitpicker',
+                                       ),
+                                       array(
+                                               'name' => 'Siebrand Mazeland',
+                                               'email' => 's.mazeland@xs4all.nl',
+                                               'role' => 'Developer',
+                                       ),
+                               ),
+                               'description' => 'The only standard solution to translate any kind of text with an avant-garde web interface within MediaWiki, including your documentation and software',
                        ),
                        'mediawiki/universal-language-selector' => array(
                                'version' => '2014.12',
                                'type' => 'mediawiki-extension',
+                               'licenses' => array( 'GPL-2.0+', 'MIT' ),
+                               'authors' => array(),
+                               'description' => 'The primary aim is to allow users to select a language and configure its support in an easy way. Main features are language selection, input methods and web fonts.',
                        ),
                ), $lock->getInstalledDependencies(), false, true );
        }
diff --git a/tests/phpunit/includes/media/WebPTest.php b/tests/phpunit/includes/media/WebPTest.php
new file mode 100644 (file)
index 0000000..d36710a
--- /dev/null
@@ -0,0 +1,127 @@
+<?php
+class WebPHandlerTest extends MediaWikiTestCase {
+       public function setUp() {
+               parent::setUp();
+               // Allocated file for testing
+               $this->tempFileName = tempnam( wfTempDir(), 'WEBP' );
+       }
+       public function tearDown() {
+               parent::tearDown();
+               unlink( $this->tempFileName );
+       }
+       /**
+        * @dataProvider provideTestExtractMetaData
+        */
+       public function testExtractMetaData( $header, $expectedResult ) {
+               // Put header into file
+               file_put_contents( $this->tempFileName, $header );
+
+               $this->assertEquals( $expectedResult, WebPHandler::extractMetadata( $this->tempFileName ) );
+       }
+       public function provideTestExtractMetaData() {
+               return array(
+                       // Files from https://developers.google.com/speed/webp/gallery2
+                       array( "\x52\x49\x46\x46\x90\x68\x01\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x83\x68\x01\x00\x2F\x8F\x01\x4B\x10\x8D\x38\x6C\xDB\x46\x92\xE0\xE0\x82\x7B\x6C",
+                               array( 'compression' => 'lossless', 'width' => 400, 'height' => 301 ) ),
+                       array( "\x52\x49\x46\x46\x64\x5B\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x8F\x01\x00\x2C\x01\x00\x41\x4C\x50\x48\xE5\x0E",
+                               array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 400, 'height' => 301) ),
+                       array( "\x52\x49\x46\x46\xA8\x72\x00\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x9B\x72\x00\x00\x2F\x81\x81\x62\x10\x8D\x40\x8C\x24\x39\x6E\x73\x73\x38\x01\x96",
+                               array( 'compression' => 'lossless', 'width' => 386, 'height' => 395 ) ),
+                       array( "\x52\x49\x46\x46\xE0\x42\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x81\x01\x00\x8A\x01\x00\x41\x4C\x50\x48\x56\x10",
+                               array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 386, 'height' => 395 ) ),
+                       array( "\x52\x49\x46\x46\x70\x61\x02\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x63\x61\x02\x00\x2F\x1F\xC3\x95\x10\x8D\xC8\x72\xDB\xC8\x92\x24\xD8\x91\xD9\x91",
+                               array( 'compression' => 'lossless', 'width' => 800, 'height' => 600 ) ),
+                       array( "\x52\x49\x46\x46\x1C\x1D\x01\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x1F\x03\x00\x57\x02\x00\x41\x4C\x50\x48\x25\x8B",
+                               array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 800, 'height' => 600 ) ),
+                       array( "\x52\x49\x46\x46\xFA\xC5\x00\x00\x57\x45\x42\x50\x56\x50\x38\x4C\xEE\xC5\x00\x00\x2F\xA4\x81\x28\x10\x8D\x40\x68\x24\xC9\x91\xA4\xAE\xF3\x97\x75",
+                               array( 'compression' => 'lossless', 'width' => 421, 'height' => 163 ) ),
+                       array( "\x52\x49\x46\x46\xF6\x5D\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\xA4\x01\x00\xA2\x00\x00\x41\x4C\x50\x48\x38\x1A",
+                               array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 421, 'height' => 163 ) ),
+                       array( "\x52\x49\x46\x46\xC4\x96\x01\x00\x57\x45\x42\x50\x56\x50\x38\x4C\xB8\x96\x01\x00\x2F\x2B\xC1\x4A\x10\x11\x87\x6D\xDB\x48\x12\xFC\x60\xB0\x83\x24",
+                               array( 'compression' => 'lossless', 'width' => 300, 'height' => 300 ) ),
+                       array( "\x52\x49\x46\x46\x0A\x11\x01\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x2B\x01\x00\x2B\x01\x00\x41\x4C\x50\x48\x67\x6E",
+                               array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 300, 'height' => 300 ) ),
+
+                       // Lossy files from https://developers.google.com/speed/webp/gallery1
+                       array( "\x52\x49\x46\x46\x68\x76\x00\x00\x57\x45\x42\x50\x56\x50\x38\x20\x5C\x76\x00\x00\xD2\xBE\x01\x9D\x01\x2A\x26\x02\x70\x01\x3E\xD5\x4E\x97\x43\xA2",
+                               array( 'compression' => 'lossy', 'width' => 550, 'height' => 368 ) ),
+                       array( "\x52\x49\x46\x46\xB0\xEC\x00\x00\x57\x45\x42\x50\x56\x50\x38\x20\xA4\xEC\x00\x00\xB2\x4B\x02\x9D\x01\x2A\x26\x02\x94\x01\x3E\xD1\x50\x96\x46\x26",
+                               array( 'compression' => 'lossy', 'width' => 550, 'height' => 404 ) ),
+                       array( "\x52\x49\x46\x46\x7A\x19\x03\x00\x57\x45\x42\x50\x56\x50\x38\x20\x6E\x19\x03\x00\xB2\xF8\x09\x9D\x01\x2A\x00\x05\xD0\x02\x3E\xAD\x46\x99\x4A\xA5",
+                               array( 'compression' => 'lossy', 'width' => 1280, 'height' => 720 ) ),
+                       array( "\x52\x49\x46\x46\x44\xB3\x02\x00\x57\x45\x42\x50\x56\x50\x38\x20\x38\xB3\x02\x00\x52\x57\x06\x9D\x01\x2A\x00\x04\x04\x03\x3E\xA5\x44\x96\x49\x26",
+                               array( 'compression' => 'lossy', 'width' => 1024, 'height' => 772) ),
+                       array( "\x52\x49\x46\x46\x02\x43\x01\x00\x57\x45\x42\x50\x56\x50\x38\x20\xF6\x42\x01\x00\x12\xC0\x05\x9D\x01\x2A\x00\x04\xF0\x02\x3E\x79\x34\x93\x47\xA4",
+                               array( 'compression' => 'lossy', 'width' => 1024, 'height' => 752) ),
+
+                       // Animated file from https://groups.google.com/a/chromium.org/d/topic/blink-dev/Y8tRC4mdQz8/discussion
+                       array( "\x52\x49\x46\x46\xD0\x0B\x02\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x12\x00\x00\x00\x3F\x01\x00\x3F\x01\x00\x41\x4E",
+                               array( 'compression' => 'unknown', 'animated' => true, 'transparency' => true, 'width' => 320, 'height' => 320 ) ),
+
+                       // Error cases
+                       array( '', false ),
+                       array( '                                    ', false ),
+                       array( 'RIFF                                ', false ),
+                       array( 'RIFF1234WEBP                        ', false ),
+                       array( 'RIFF1234WEBPVP8                     ', false ),
+                       array( 'RIFF1234WEBPVP8L                    ', false ),
+               );
+       }
+
+       /**
+        * @dataProvider provideTestWithFileExtractMetaData
+        */
+       public function testWithFileExtractMetaData( $filename, $expectedResult ) {
+               $this->assertEquals( $expectedResult, WebPHandler::extractMetadata( $filename ) );
+       }
+       public function provideTestWithFileExtractMetaData() {
+               return array(
+                               array( __DIR__ . '/../../data/media/2_webp_ll.webp',
+                                       array( 'compression' => 'lossless', 'width' => 386, 'height' => 395 ) ),
+                               array( __DIR__ . '/../../data/media/2_webp_a.webp',
+                                       array( 'compression' => 'lossy', 'animated' => false, 'transparency' => true, 'width' => 386, 'height' => 395 ) ),
+               );
+       }
+
+       /**
+        * @dataProvider provideTestGetImageSize
+        */
+       public function testGetImageSize( $path, $expectedResult ) {
+               $handler = new WebPHandler();
+               $this->assertEquals( $expectedResult, $handler->getImageSize( null, $path ) );
+       }
+       public function provideTestGetImageSize() {
+               return array(
+                       // Public domain files from https://developers.google.com/speed/webp/gallery2
+                       array( __DIR__ . '/../../data/media/2_webp_a.webp', array( 386, 395 ) ),
+                       array( __DIR__ . '/../../data/media/2_webp_ll.webp', array( 386, 395 ) ),
+                       array( __DIR__ . '/../../data/media/webp_animated.webp', array( 300, 225 ) ),
+
+                       // Error cases
+                       array( __FILE__, false ),
+               );
+       }
+
+       /**
+        * Tests the WebP MIME detection. This should really be a separate test, but sticking it
+        * here for now.
+        *
+        * @dataProvider provideTestGetMimeType
+        */
+       public function testGuessMimeType( $path ) {
+               $mime = MimeMagic::singleton();
+               $this->assertEquals( 'image/webp', $mime->guessMimeType( $path, false ) );
+       }
+       public function provideTestGetMimeType() {
+               return array(
+                               // Public domain files from https://developers.google.com/speed/webp/gallery2
+                               array( __DIR__ . '/../../data/media/2_webp_a.webp' ),
+                               array( __DIR__ . '/../../data/media/2_webp_ll.webp' ),
+                               array( __DIR__ . '/../../data/media/webp_animated.webp' ),
+               );
+       }
+}
+
+/* Python code to extract a header and convert to PHP format:
+ * print '"%s"' % ''.join( '\\x%02X' % ord(c) for c in urllib.urlopen(url).read(36) )
+ */