Index: messages.po
===================================================================
--- messages.po	(版本 8983)
+++ messages.po	(工作副本)
@@ -8,167 +8,182 @@
 "Project-Id-Version: Trac 0.12\n"
 "Report-Msgid-Bugs-To: trac-dev@googlegroups.com\n"
 "POT-Creation-Date: 2007-06-23 15:38+0200\n"
-"PO-Revision-Date: 2009-06-15 09:51+0800\n"
-"Last-Translator: Zeng Jie <zengjie@gmail.com>\n"
+"PO-Revision-Date: 2009-12-25 08:23+0800\n"
+"Last-Translator: Hong Shuning <hongshuning@gmail.com>, Zeng Jie <zengjie@gmail.com>\n"
 "Language-Team: zh_CN <trac-dev@googlegroups.com>\n"
 "Plural-Forms: nplurals=1; plural=0\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.2\n"
+"Generated-By: Babel 0.9.4\n"
 
-#: trac/about.py:43 trac/templates/about.html:9 trac/templates/about.html:28
+#: tracopt/mimeview/php.py:97
+msgid ""
+"You appear to be using the PHP CGI binary. Trac requires the CLI version "
+"for syntax highlighting."
+msgstr "浣犱娇鐢ㄧ殑鏄疨HP CGI鐨勪簩杩涘埗鐗堟湰, Trac闇瑕佷娇鐢–LI鐗堟湰浠ユ彁渚涜娉曢珮浜."
+
+#: trac/about.py:44 trac/templates/about.html:9 trac/templates/about.html:28
 msgid "About Trac"
 msgstr "鍏充簬Trac"
 
-#: trac/attachment.py:149
+#: trac/attachment.py:148
 #, python-format
 msgid "Attachment '%(title)s' does not exist."
 msgstr "闄勪欢 '%(title)s' 涓嶅瓨鍦."
 
-#: trac/attachment.py:150
+#: trac/attachment.py:149
 msgid "Invalid Attachment"
 msgstr "鏃犳晥闄勪欢"
 
-#: trac/attachment.py:192
+#: trac/attachment.py:191
 msgid "Could not delete attachment"
 msgstr "涓嶈兘鍒犻櫎闄勪欢"
 
-#: trac/attachment.py:298
+#: trac/attachment.py:297
 #, python-format
 msgid "Attachment '%(filename)s' not found"
 msgstr "娌℃湁鎵惧埌鏂囦欢鍚嶄负 '%(filename)s' 鐨勯檮浠"
 
-#: trac/attachment.py:372
+#: trac/attachment.py:371
 msgid "Bad request"
 msgstr "閿欒璇锋眰"
 
-#: trac/attachment.py:389
+#: trac/attachment.py:388
 #, python-format
 msgid "Back to %(parent)s"
 msgstr "杩斿洖 %(parent)s"
 
-#: trac/attachment.py:481
+#: trac/attachment.py:480
 msgid " attached to "
 msgstr "闄勫姞鍒"
 
-#: trac/attachment.py:542
+#: trac/attachment.py:541
 #, python-format
 msgid "Attachment '%(id)s' in %(parent)s"
 msgstr "鍦 %(parent)s 涓殑闄勪欢 '%(id)s'"
 
-#: trac/attachment.py:545
+#: trac/attachment.py:544
 #, python-format
 msgid "Attachments of %(parent)s"
 msgstr "鍦 %(parent)s 涓殑闄勪欢"
 
-#: trac/attachment.py:558 trac/attachment.py:581 trac/admin/web_ui.py:428
-#: trac/admin/web_ui.py:431 trac/admin/web_ui.py:435
+#: trac/attachment.py:557 trac/attachment.py:580 trac/admin/web_ui.py:455
+#: trac/admin/web_ui.py:458 trac/admin/web_ui.py:462
 msgid "No file uploaded"
 msgstr "娌℃湁鏂囦欢琚笂浼"
 
-#: trac/attachment.py:566
+#: trac/attachment.py:565
 msgid "Can't upload empty file"
 msgstr "涓嶈兘涓婁紶绌烘枃浠"
 
-#: trac/attachment.py:571
+#: trac/attachment.py:570
 #, python-format
 msgid "Maximum attachment size: %(num)s bytes"
 msgstr "闄勪欢鐨勬渶澶у昂瀵镐负: %(num)s 瀛楄妭"
 
-#: trac/attachment.py:572
+#: trac/attachment.py:571
 msgid "Upload failed"
 msgstr "涓婁紶澶辫触"
 
-#: trac/attachment.py:593
+#: trac/attachment.py:592
 #, python-format
 msgid "Attachment field %(field)s is invalid: %(message)s"
 msgstr "闄勪欢瀛楁 %(field)s 鏃犳晥: %(message)s"
 
-#: trac/attachment.py:597
+#: trac/attachment.py:596
 #, python-format
 msgid "Invalid attachment: %(message)s"
 msgstr "鏃犳晥闄勪欢: %(message)s"
 
-#: trac/attachment.py:634
+#: trac/attachment.py:607
 #, python-format
+msgid ""
+"You don't have permission to replace the attachment %(name)s. You can "
+"only replace your own attachments. Replacing other's attachments requires"
+" ATTACHMENT_DELETE permission."
+msgstr ""
+"浣犳病鏈夋浛鎹㈤檮浠 %(name)s 鐨勬潈闄愩備綘鍙兘鏇挎崲浣犺嚜宸辩殑闄勪欢锛孿"\n"
+"\"鏇挎崲鍒汉鐨勯檮浠堕渶瑕 ATTACHMENT_DELETE鏉冮檺"
+
+#: trac/attachment.py:639
+#, python-format
 msgid "%(attachment)s (delete)"
 msgstr "%(attachment)s (鍒犻櫎)"
 
-#: trac/attachment.py:696 trac/versioncontrol/web_ui/browser.py:510
-#: trac/wiki/web_ui.py:70
+#: trac/attachment.py:700 trac/versioncontrol/web_ui/browser.py:525
+#: trac/wiki/web_ui.py:69
 msgid "Plain Text"
 msgstr "绾枃鏈"
 
-#: trac/attachment.py:702 trac/versioncontrol/web_ui/browser.py:515
+#: trac/attachment.py:706 trac/versioncontrol/web_ui/browser.py:530
 msgid "Original Format"
 msgstr "鍘熷鏍煎紡"
 
-#: trac/attachment.py:744 trac/attachment.py:750 trac/templates/macros.html:164
-#: trac/templates/macros.html:165 trac/ticket/templates/ticket.html:58
-#: trac/ticket/templates/ticket.html:59
+#: trac/attachment.py:748 trac/attachment.py:754
+#: trac/ticket/templates/ticket.html:82 trac/ticket/templates/ticket.html:83
 msgid "Download"
 msgstr "涓嬭浇"
 
-#: trac/attachment.py:844
+#: trac/attachment.py:848
 #, python-format
 msgid "Invalid resource identifier '%(id)s'"
 msgstr "璧勬簮鏍囩ず绗'%(id)s'鏃犳晥"
 
-#: trac/attachment.py:880 trac/admin/templates/admin_components.html:80
+#: trac/attachment.py:884 trac/admin/templates/admin_components.html:80
 #: trac/admin/templates/admin_enums.html:47
 #: trac/admin/templates/admin_milestones.html:103
 #: trac/admin/templates/admin_versions.html:77 trac/templates/about.html:68
-#: trac/templates/error.html:166 trac/ticket/admin.py:201
-#: trac/ticket/admin.py:390 trac/ticket/admin.py:547
+#: trac/templates/error.html:166 trac/ticket/admin.py:209
+#: trac/ticket/admin.py:400 trac/ticket/admin.py:559
 msgid "Name"
 msgstr "鍚嶇О"
 
-#: trac/attachment.py:880
+#: trac/attachment.py:884
 msgid "Size"
 msgstr "澶у皬"
 
-#: trac/attachment.py:880 trac/templates/history_view.html:28
-#: trac/versioncontrol/templates/revisionlog.html:96
+#: trac/attachment.py:884 trac/templates/history_view.html:29
+#: trac/versioncontrol/templates/revisionlog.html:98
 msgid "Author"
 msgstr "浣滆"
 
-#: trac/attachment.py:880 trac/templates/history_view.html:27
-#: trac/versioncontrol/templates/revisionlog.html:95
+#: trac/attachment.py:884 trac/templates/history_view.html:28
+#: trac/versioncontrol/templates/revisionlog.html:97
 msgid "Date"
 msgstr "鏃ユ湡"
 
-#: trac/attachment.py:881 trac/templates/attachment.html:86
-#: trac/ticket/api.py:214 trac/ticket/templates/ticket.html:173
+#: trac/attachment.py:885 trac/templates/attachment.html:89
+#: trac/ticket/api.py:287 trac/ticket/templates/ticket.html:201
 msgid "Description"
 msgstr "鎻忚堪"
 
-#: trac/attachment.py:906 trac/wiki/admin.py:74
+#: trac/attachment.py:910 trac/wiki/admin.py:101
 #, python-format
 msgid "File '%(name)s' exists"
 msgstr "鏂囦欢 '%(name)s' 宸茬粡瀛樺湪."
 
-#: trac/config.py:331
+#: trac/config.py:384
 #, python-format
 msgid "[%(section)s] %(entry)s: expected integer, got %(value)s"
 msgstr "[%(section)s] %(entry)s: 鏈熸湜鏄暣鏁, 鍗村緱鍒 %(value)s"
 
-#: trac/env.py:506
+#: trac/env.py:521
 msgid "Database newer than Trac version"
 msgstr "鏁版嵁搴撶殑鐗堟湰姣擳rac浣跨敤鐨勭増鏈柊"
 
-#: trac/env.py:518
+#: trac/env.py:535
 #, python-format
 msgid "No upgrade module for version %(num)i (%(version)s.py)"
 msgstr "鐗堟湰%(num)i 娌℃湁鍗囩骇妯″潡 (%(version)s.py)"
 
-#: trac/env.py:563
+#: trac/env.py:580
 msgid ""
 "Missing environment variable \"TRAC_ENV\". Trac requires this variable to"
 " point to a valid Trac environment."
 msgstr "娌℃湁鐜鍙橀噺\"TRAC_ENV\". Trac瑕佹眰浣跨敤璇ュ彉閲忎互鎸囧悜涓涓湁鏁堢殑Trac鐜."
 
-#: trac/env.py:595
+#: trac/env.py:612
 #, python-format
 msgid ""
 "The Trac Environment needs to be upgraded.\n"
@@ -179,116 +194,116 @@
 "\n"
 "璇锋墽琛孿"trac-admin %(path)s upgrade\""
 
-#: trac/env.py:629
+#: trac/env.py:646
 msgid "Copying resources from:"
-msgstr "Copying resources from:"
+msgstr "姝ｅ湪澶嶅埗璧勬簮鑷細"
 
-#: trac/env.py:645
+#: trac/env.py:662
 msgid "Creating scripts."
-msgstr "Creating scripts."
+msgstr "姝ｅ湪鍒涘缓鑴氭湰銆"
 
-#: trac/env.py:662
+#: trac/env.py:677
 #, python-format
 msgid "hotcopy can't overwrite existing '%(dest)s'"
 msgstr "鐑鏃犳硶瑕嗙洊宸插瓨鍦ㄧ殑 '%(dest)s'"
 
-#: trac/env.py:672
+#: trac/env.py:687
 #, python-format
 msgid "Hotcopying %(src)s to %(dst)s ..."
-msgstr "Hotcopying %(src)s to %(dst)s ..."
+msgstr "姝ｅ湪灏 %(src)s 鐑鑷 %(dst)s ..."
 
-#: trac/env.py:687
+#: trac/env.py:702
 msgid "The following errors happened while copying the environment:"
-msgstr "The following errors happened while copying the environment:"
+msgstr "褰撳鍒剁幆澧冩椂鍙戠敓浠ヤ笅閿欒锛"
 
-#: trac/env.py:698
+#: trac/env.py:713
 msgid "Hotcopy done."
 msgstr "鐑缁撴潫銆"
 
-#: trac/env.py:703 trac/admin/api.py:126
+#: trac/env.py:718 trac/admin/api.py:125
 msgid "Invalid arguments"
 msgstr "鏃犳晥鍙傛暟"
 
-#: trac/env.py:706
+#: trac/env.py:721
 msgid "Database is up to date, no upgrade necessary."
-msgstr "Database is up to date, no upgrade necessary."
+msgstr "鏁版嵁搴撴槸鏈鏂扮殑锛屾棤闇鍗囩骇銆"
 
-#: trac/env.py:714
+#: trac/env.py:729
 #, python-format
 msgid ""
 "Backup failed with '%(msg)s'.\n"
 "Use '--no-backup' to upgrade without doing a backup."
 msgstr ""
-"Backup failed with '%(msg)s'.\n"
-"Use '--no-backup' to upgrade without doing a backup."
+"澶囦唤澶辫触锛'%(msg)s'.\n"
+"浣跨敤 '--no-backup' 鎵ц涓嶅仛澶囦唤鐨勫崌绾с"
 
-#: trac/env.py:719
+#: trac/env.py:734
 msgid "Upgrade done."
-msgstr "Upgrade done."
+msgstr "鍗囩骇瀹屾垚銆"
 
 #: trac/notification.py:155
 msgid "TLS enabled but server does not support TLS"
 msgstr "鍚敤浜員LS, 浣嗘槸鏈嶅姟鍣ㄥ苟涓嶆敮鎸乀LS"
 
-#: trac/notification.py:304
+#: trac/notification.py:303
 #, python-format
 msgid "Invalid email encoding setting: %s"
 msgstr "鏃犳晥鐨別mail缂栫爜璁剧疆: %s"
 
-#: trac/notification.py:330
+#: trac/notification.py:329
 msgid "Header length is too short"
 msgstr "Header闀垮害杩囩煭"
 
-#: trac/perm.py:49
+#: trac/perm.py:48
 #, python-format
 msgid "%(perm)s privileges are required to perform this operation on %(resource)s"
 msgstr "瀵 %(resource)s 鎵ц鐨勬搷浣滈渶瑕 %(perm)s 鏉冮檺"
 
-#: trac/perm.py:51
+#: trac/perm.py:50
 #, python-format
 msgid "%(perm)s privileges are required to perform this operation"
 msgstr "鎵ц璇ユ搷浣滈渶瑕 %(perm)s 鏉冮檺"
 
-#: trac/perm.py:54
+#: trac/perm.py:55
 msgid "Insufficient privileges to perform this operation."
 msgstr "娌℃湁瓒冲鐨勬潈闄愭墽琛岃鎿嶄綔."
 
-#: trac/perm.py:320
+#: trac/perm.py:319
 #, python-format
 msgid "%(name)s is not a valid action."
 msgstr "%(name)s 鏄棤鏁堝姩浣."
 
-#: trac/perm.py:616
+#: trac/perm.py:615
 msgid "User"
 msgstr "鐢ㄦ埛"
 
-#: trac/perm.py:616 trac/admin/templates/admin_perms.html:69
-#: trac/ticket/templates/ticket.html:379
+#: trac/perm.py:615 trac/admin/templates/admin_perms.html:69
+#: trac/ticket/templates/ticket.html:439
 msgid "Action"
 msgstr "鍔ㄤ綔"
 
-#: trac/perm.py:618
+#: trac/perm.py:617
 msgid "Available actions:"
 msgstr "鍙夊姩浣: "
 
-#: trac/perm.py:631
+#: trac/perm.py:630
 msgid "Group names must be in lower case and actions in upper case"
 msgstr "缁勫悕蹇呴』灏忓啓锛岃屽姩浣滃悕蹇呴』澶у啓"
 
-#: trac/resource.py:329
+#: trac/resource.py:328
 #, python-format
 msgid " at version %(version)s"
 msgstr "浜庣増鏈 %(version)s"
 
-#: trac/admin/api.py:130
+#: trac/admin/api.py:129
 msgid "Command not found"
 msgstr "鍛戒护鏃犳硶鎵惧埌"
 
-#: trac/admin/console.py:81 trac/ticket/templates/report_edit.html:34
+#: trac/admin/console.py:110 trac/ticket/templates/report_edit.html:34
 msgid "Error:"
 msgstr "閿欒:"
 
-#: trac/admin/console.py:99
+#: trac/admin/console.py:128
 #, python-format
 msgid ""
 "Welcome to trac-admin %(version)s\n"
@@ -304,38 +319,38 @@
 "\n"
 "杈撳叆 '?' 鎴 'help' 鑾峰彇鍛戒护甯姪"
 
-#: trac/admin/console.py:131
+#: trac/admin/console.py:160
 msgid "Failed to open environment."
 msgstr "鎵撳紑鐜澶辫触銆"
 
-#: trac/admin/console.py:198
+#: trac/admin/console.py:229
 msgid "Completion error:"
 msgstr "鑷姩瀹屾垚閿欒:"
 
-#: trac/admin/console.py:249
+#: trac/admin/console.py:280
 #, python-format
 msgid "No documentation found for '%(cmd)s'"
 msgstr "娌℃湁鎵惧埌 '%(cmd)s' 鐨勬枃妗"
 
-#: trac/admin/console.py:251
+#: trac/admin/console.py:282
 #, python-format
 msgid "trac-admin - The Trac Administration Console %(version)s"
 msgstr "trac-admin - Trac绠＄悊鎺у埗鍙 %(version)s"
 
-#: trac/admin/console.py:255
+#: trac/admin/console.py:286
 msgid "Usage: trac-admin </path/to/projenv> [command [subcommand] [option ...]]\n"
 msgstr "鐢ㄦ硶: trac-admin </path/to/projenv> [command [subcommand] [option ...]]\n"
 
-#: trac/admin/console.py:258
+#: trac/admin/console.py:289
 msgid "Invoking trac-admin without command starts interactive mode.\n"
 msgstr "涓嶅甫鍛戒护璋冪敤trac-admin灏嗗惎鍔ㄤ氦浜掓ā寮忋"
 
-#: trac/admin/console.py:296
+#: trac/admin/console.py:329
 #, python-format
 msgid "Creating a new Trac environment at %(envname)s"
 msgstr "鍦%(envname)s澶勫垱寤轰竴涓柊鐨凾rac鐜"
 
-#: trac/admin/console.py:298
+#: trac/admin/console.py:331
 msgid ""
 "\n"
 "Trac will first ask a few questions about your environment \n"
@@ -349,12 +364,12 @@
 "璇疯緭鍏ユ偍椤圭洰鐨勫悕绉般俓n"
 "姝ゅ悕绉板皢鍦ㄩ〉闈㈡爣棰樺拰鎻忚堪涓娇鐢ㄣ"
 
-#: trac/admin/console.py:306
+#: trac/admin/console.py:339
 #, python-format
 msgid "Project Name [%(default)s]> "
 msgstr "椤圭洰鍚嶇О [%(default)s]> "
 
-#: trac/admin/console.py:308
+#: trac/admin/console.py:341
 msgid ""
 " \n"
 " Please specify the connection string for the database to use.\n"
@@ -368,12 +383,12 @@
 "浣跨敤涓涓凡瀛樺湪鐨凱ostgreSQL鏁版嵁搴撲篃鏄彲琛岀殑\n"
 "(鍏蜂綋鐨勮繛鎺ュ瓧绗︿覆璇硶璇锋煡鐪婽rac鏂囨。)銆"
 
-#: trac/admin/console.py:316
+#: trac/admin/console.py:349
 #, python-format
 msgid "Database connection string [%(default)s]> "
 msgstr "鏁版嵁搴撹繛鎺ュ瓧绗︿覆 [%(default)s]> "
 
-#: trac/admin/console.py:318
+#: trac/admin/console.py:351
 msgid ""
 " \n"
 " Please specify the type of version control system,\n"
@@ -389,12 +404,12 @@
 "璇峰湪姝ら夋嫨缂虹渷鍊硷紝骞跺湪涓嬩竴涓棶棰樹腑涓嶈\n"
 "鎸囧畾鐗堟湰搴撶洰褰曘"
 
-#: trac/admin/console.py:327
+#: trac/admin/console.py:360
 #, python-format
 msgid "Repository type [%(default)s]> "
 msgstr "鐗堟湰搴撶被鍨 [%(default)s]> "
 
-#: trac/admin/console.py:329
+#: trac/admin/console.py:362
 msgid ""
 "\n"
 " Please specify the absolute path to the version control\n"
@@ -405,28 +420,28 @@
 "琛ㄦ槑鍦ㄦ棤鐗堟湰搴撴ā寮忎笅浣跨敤Trac銆俓n"
 "鎮ㄤ篃鍙互鍦ㄤ互鍚庡啀鎸囧畾鐗堟湰搴撲綅缃"
 
-#: trac/admin/console.py:334
+#: trac/admin/console.py:367
 msgid "Path to repository [/path/to/repos]> "
 msgstr "鐗堟湰搴撹矾寰 [/path/to/repos]> "
 
-#: trac/admin/console.py:341
+#: trac/admin/console.py:374
 #, python-format
 msgid "Initenv for '%(env)s' failed."
 msgstr "瀵'%(env)s' 鎵ц initenv 澶辫触銆"
 
-#: trac/admin/console.py:370
+#: trac/admin/console.py:403
 msgid "Creating and Initializing Project"
 msgstr "鍒涘缓鍜屽垵濮嬪寲椤圭洰"
 
-#: trac/admin/console.py:389
+#: trac/admin/console.py:422
 msgid " Installing default wiki pages"
 msgstr " 瀹夎缂虹渷Wiki椤"
 
-#: trac/admin/console.py:400
+#: trac/admin/console.py:433
 msgid " Indexing repository"
 msgstr " 寤虹珛鐗堟湰搴撶储寮"
 
-#: trac/admin/console.py:403
+#: trac/admin/console.py:436
 msgid ""
 "\n"
 "---------------------------------------------------------------------\n"
@@ -451,7 +466,7 @@
 "鎮ㄧ殑trac.ini鏂囦欢浠ュ強[trac] repository_type\n"
 "鍜宺epository_path 璁剧疆浠ュ惎鐢═rac鐗堟湰搴撴祻瑙堝櫒銆"
 
-#: trac/admin/console.py:447
+#: trac/admin/console.py:480
 #, python-format
 msgid ""
 "\n"
@@ -501,35 +516,35 @@
 "\n"
 "鎭枩鎮紒\n"
 
-#: trac/admin/console.py:507
+#: trac/admin/console.py:540
 #, python-format
 msgid "non-ascii environment path '%(path)s' not supported."
 msgstr "涓嶆敮鎸侀潪ASCII鐜璺緞 '%(path)s'銆"
 
-#: trac/admin/web_ui.py:67
+#: trac/admin/web_ui.py:81
 msgid "Admin"
 msgstr "绠＄悊"
 
-#: trac/admin/web_ui.py:68 trac/admin/templates/admin.html:16
+#: trac/admin/web_ui.py:82 trac/admin/templates/admin.html:16
 msgid "Administration"
 msgstr "绠＄悊"
 
-#: trac/admin/web_ui.py:84
+#: trac/admin/web_ui.py:98
 msgid "No administration panels available"
 msgstr "娌℃湁鍙敤鐨勭鐞嗛潰鏉"
 
-#: trac/admin/web_ui.py:106 trac/admin/web_ui.py:110
+#: trac/admin/web_ui.py:124 trac/admin/web_ui.py:128
 msgid "Unknown administration panel"
 msgstr "鏈煡绠＄悊闈㈡澘"
 
-#: trac/admin/web_ui.py:183 trac/ticket/admin.py:58 trac/ticket/admin.py:83
-#: trac/ticket/admin.py:267 trac/ticket/admin.py:447 trac/ticket/admin.py:598
-#: trac/ticket/admin.py:683 trac/ticket/report.py:172
-#: trac/ticket/roadmap.py:674 trac/wiki/web_ui.py:290
+#: trac/admin/web_ui.py:201 trac/ticket/admin.py:65 trac/ticket/admin.py:90
+#: trac/ticket/admin.py:275 trac/ticket/admin.py:457 trac/ticket/admin.py:609
+#: trac/ticket/admin.py:697 trac/ticket/report.py:177
+#: trac/ticket/roadmap.py:685 trac/wiki/web_ui.py:289
 msgid "Your changes have been saved."
 msgstr "鎮ㄧ殑淇敼宸蹭繚瀛"
 
-#: trac/admin/web_ui.py:186 trac/ticket/admin.py:61
+#: trac/admin/web_ui.py:204 trac/ticket/admin.py:68
 msgid ""
 "Error writing to trac.ini, make sure it is writable by the web server. "
 "Your changes have not been saved."
@@ -537,114 +552,114 @@
 "鍐欏叆trac.ini閿欒锛岃纭繚瀹冭兘琚玏eb鏈嶅姟鍣ㄥ啓鍏ャ俓n"
 "鎮ㄧ殑淇敼娌℃湁淇濆瓨銆"
 
-#: trac/admin/web_ui.py:199 trac/admin/web_ui.py:226 trac/admin/web_ui.py:314
-#: trac/admin/web_ui.py:404 trac/prefs/web_ui.py:88
+#: trac/admin/web_ui.py:217 trac/admin/web_ui.py:245 trac/admin/web_ui.py:333
+#: trac/admin/web_ui.py:431 trac/prefs/web_ui.py:86
 #: trac/prefs/templates/prefs_general.html:9
 msgid "General"
 msgstr "涓鑸"
 
-#: trac/admin/web_ui.py:199 trac/admin/templates/admin_basics.html:13
+#: trac/admin/web_ui.py:217 trac/admin/templates/admin_basics.html:13
 msgid "Basic Settings"
 msgstr "鍩虹璁剧疆"
 
-#: trac/admin/web_ui.py:226 trac/admin/templates/admin_logging.html:10
+#: trac/admin/web_ui.py:245 trac/admin/templates/admin_logging.html:10
 #: trac/admin/templates/admin_logging.html:22
 msgid "Logging"
 msgstr "鏃ュ織"
 
-#: trac/admin/web_ui.py:235 trac/ticket/templates/milestone_delete.html:31
-#: trac/ticket/templates/milestone_edit.html:73
+#: trac/admin/web_ui.py:254 trac/ticket/templates/milestone_delete.html:31
+#: trac/ticket/templates/milestone_edit.html:72
 msgid "None"
 msgstr "鏃"
 
-#: trac/admin/web_ui.py:236
+#: trac/admin/web_ui.py:255
 msgid "Console"
 msgstr "鎺у埗鍙"
 
-#: trac/admin/web_ui.py:238 trac/templates/attachment.html:28
-#: trac/templates/attachment.html:89 trac/versioncontrol/api.py:114
+#: trac/admin/web_ui.py:257 trac/templates/attachment.html:29
+#: trac/versioncontrol/api.py:111
 msgid "File"
 msgstr "鏂囦欢"
 
-#: trac/admin/web_ui.py:240
+#: trac/admin/web_ui.py:259
 msgid "Syslog"
-msgstr "Syslog"
+msgstr "绯荤粺鏃ュ織"
 
-#: trac/admin/web_ui.py:242
+#: trac/admin/web_ui.py:261
 msgid "Windows event log"
 msgstr "Windows浜嬩欢鏃ュ織"
 
-#: trac/admin/web_ui.py:255
+#: trac/admin/web_ui.py:274
 #, python-format
 msgid "Unknown log type %(type)s"
 msgstr "鏈煡鏃ュ織绫诲瀷 %(type)s"
 
-#: trac/admin/web_ui.py:256
+#: trac/admin/web_ui.py:275
 msgid "Invalid log type"
 msgstr "鏃犳晥鏃ュ織绫诲瀷"
 
-#: trac/admin/web_ui.py:270
+#: trac/admin/web_ui.py:289
 #, python-format
 msgid "Unknown log level %(level)s"
 msgstr "鏈煡鏃ュ織绾у埆 %(level)s"
 
-#: trac/admin/web_ui.py:271
+#: trac/admin/web_ui.py:290
 msgid "Invalid log level"
 msgstr "鏃犳晥鏃ュ織绾у埆"
 
-#: trac/admin/web_ui.py:284
+#: trac/admin/web_ui.py:303
 msgid "You must specify a log file"
 msgstr "蹇呴』鎸囧畾涓涓棩蹇楁枃浠"
 
-#: trac/admin/web_ui.py:285
+#: trac/admin/web_ui.py:304
 msgid "Missing field"
 msgstr "缂哄皯瀛楁"
 
-#: trac/admin/web_ui.py:314 trac/admin/templates/admin_perms.html:9
+#: trac/admin/web_ui.py:333 trac/admin/templates/admin_perms.html:9
 msgid "Permissions"
 msgstr "鏉冮檺"
 
-#: trac/admin/web_ui.py:328
+#: trac/admin/web_ui.py:347
 msgid "All upper-cased tokens are reserved for permission names"
 msgstr "鍏ㄩ儴澶у啓鐨勬爣璁板凡淇濈暀涓烘潈闄愬悕绉"
 
-#: trac/admin/web_ui.py:335
+#: trac/admin/web_ui.py:354
 msgid "Unknown action"
 msgstr "鏈煡鍔ㄤ綔"
 
-#: trac/admin/web_ui.py:339
+#: trac/admin/web_ui.py:358
 #, python-format
 msgid "The user %(subject)s has been granted the permission %(action)s."
 msgstr "鐢ㄦ埛 %(subject)s 宸插垎閰嶆潈闄 %(action)s銆"
 
-#: trac/admin/web_ui.py:344
+#: trac/admin/web_ui.py:363
 #, python-format
 msgid "The permission %(action)s was already granted to %(subject)s."
 msgstr "鏉冮檺 \"%(action)s\" 宸插垎閰嶇粰 \"%(subject)s\""
 
-#: trac/admin/web_ui.py:360
+#: trac/admin/web_ui.py:379
 #, python-format
 msgid "The user %(subject)s has been added to the group %(group)s."
 msgstr "\"%(subject)s\" 宸插鍔犲埌鐢ㄦ埛缁 \"%(group)s\""
 
-#: trac/admin/web_ui.py:365
+#: trac/admin/web_ui.py:384
 #, python-format
 msgid "The user %(subject)s was already added to the group %(group)s."
 msgstr "\"%(subject)s\" 宸插鍔犲埌鐢ㄦ埛缁 \"%(group)s\""
 
-#: trac/admin/web_ui.py:378
+#: trac/admin/web_ui.py:397
 msgid "The selected permissions have been revoked."
 msgstr "鎵閫夋潈闄愬凡鏀跺洖銆"
 
-#: trac/admin/web_ui.py:404 trac/admin/templates/admin_plugins.html:9
+#: trac/admin/web_ui.py:431 trac/admin/templates/admin_plugins.html:9
 msgid "Plugins"
 msgstr "鎻掍欢s"
 
-#: trac/admin/web_ui.py:438
+#: trac/admin/web_ui.py:465
 msgid "Uploaded file is not a Python source file or egg"
 msgstr "涓婁紶鐨勬枃浠朵笉鏄疨ython婧愭枃浠舵垨鑰卐gg鍖"
 
-#: trac/admin/web_ui.py:443
+#: trac/admin/web_ui.py:470
 #, python-format
 msgid "Plugin %(name)s already installed"
 msgstr "鎻掍欢 %(name)s 宸插畨瑁"
@@ -678,7 +693,7 @@
 msgstr "URL:"
 
 #: trac/admin/templates/admin_basics.html:29
-#: trac/ticket/templates/ticket.html:302
+#: trac/ticket/templates/ticket.html:362
 msgid "Description:"
 msgstr "鎻忚堪:"
 
@@ -687,12 +702,12 @@
 #: trac/admin/templates/admin_enums.html:69
 #: trac/admin/templates/admin_logging.html:54
 #: trac/admin/templates/admin_milestones.html:128
-#: trac/admin/templates/admin_plugins.html:103
+#: trac/admin/templates/admin_plugins.html:164
 #: trac/admin/templates/admin_versions.html:94
 msgid "Apply changes"
 msgstr "搴旂敤淇敼"
 
-#: trac/admin/templates/admin_components.html:10
+#: trac/admin/templates/admin_components.html:10 trac/ticket/admin.py:76
 msgid "Components"
 msgstr "缁勪欢"
 
@@ -722,13 +737,15 @@
 #: trac/admin/templates/admin_enums.html:23
 #: trac/admin/templates/admin_milestones.html:67
 #: trac/admin/templates/admin_versions.html:45
-#: trac/templates/attachment.html:57 trac/templates/attachment.html:70
+#: trac/templates/attachment.html:60 trac/templates/attachment.html:73
 #: trac/ticket/templates/milestone_delete.html:40
-#: trac/ticket/templates/milestone_edit.html:94
+#: trac/ticket/templates/milestone_edit.html:93
 #: trac/ticket/templates/report_delete.html:21
 #: trac/ticket/templates/report_edit.html:42
+#: trac/ticket/templates/ticket.html:108
 #: trac/wiki/templates/wiki_delete.html:36
-#: trac/wiki/templates/wiki_edit.html:35 trac/wiki/templates/wiki_edit.html:126
+#: trac/wiki/templates/wiki_edit.html:80
+#: trac/wiki/templates/wiki_edit_form.html:77
 msgid "Cancel"
 msgstr "鍙栨秷"
 
@@ -753,7 +770,8 @@
 msgid "Add"
 msgstr "澧炲姞"
 
-#: trac/admin/templates/admin_components.html:80 trac/ticket/admin.py:201
+#: trac/admin/templates/admin_components.html:80 trac/ticket/admin.py:209
+#: trac/ticket/api.py:281 trac/ticket/web_ui.py:1309
 msgid "Owner"
 msgstr "灞炰富"
 
@@ -799,6 +817,7 @@
 msgstr "绠＄悊"
 
 #: trac/admin/templates/admin_enums.html:18
+#: trac/ticket/templates/ticket.html:134
 msgid "Modify"
 msgstr "淇敼"
 
@@ -829,7 +848,8 @@
 "            [1:log] directory of the project environment ([2:%(dir)s])."
 msgstr "濡傛灉鎸囧畾浜嗙浉瀵硅矾寰勶紝鏃ュ織鏂囦欢灏嗚瀛樺偍鍦ㄩ」鐩幆澧([2:%(dir)s])鐨 [1:log]鐩綍銆"
 
-#: trac/admin/templates/admin_milestones.html:10 trac/ticket/roadmap.py:839
+#: trac/admin/templates/admin_milestones.html:10 trac/ticket/admin.py:241
+#: trac/ticket/roadmap.py:853
 msgid "Milestones"
 msgstr "閲岀▼纰"
 
@@ -843,7 +863,7 @@
 
 #: trac/admin/templates/admin_milestones.html:25
 #: trac/admin/templates/admin_milestones.html:84
-#: trac/ticket/templates/milestone_edit.html:51
+#: trac/ticket/templates/milestone_edit.html:50
 msgid "Due:"
 msgstr "閫炬湡鏃:"
 
@@ -852,19 +872,19 @@
 #: trac/admin/templates/admin_milestones.html:88
 #: trac/admin/templates/admin_versions.html:30
 #: trac/admin/templates/admin_versions.html:63
-#: trac/ticket/templates/milestone_edit.html:54
-#: trac/ticket/templates/milestone_edit.html:66
+#: trac/ticket/templates/milestone_edit.html:53
+#: trac/ticket/templates/milestone_edit.html:65
 msgid "Format:"
 msgstr "鏍煎紡:"
 
 #: trac/admin/templates/admin_milestones.html:35
-#: trac/ticket/templates/milestone_edit.html:59
+#: trac/ticket/templates/milestone_edit.html:58
 msgid "Completed:"
 msgstr "瀹屾垚鏃:"
 
 #: trac/admin/templates/admin_milestones.html:57
 #: trac/admin/templates/admin_versions.html:35
-#: trac/ticket/templates/milestone_edit.html:85
+#: trac/ticket/templates/milestone_edit.html:84
 msgid "Description (you may use [1:WikiFormatting] here):"
 msgstr "鎻忚堪 (姝ゅ鍙敤 [1:WikiFormatting] 鏍煎紡):"
 
@@ -872,13 +892,11 @@
 msgid "Add Milestone:"
 msgstr "澧炲姞閲岀▼纰:"
 
-#: trac/admin/templates/admin_milestones.html:103 trac/ticket/admin.py:390
+#: trac/admin/templates/admin_milestones.html:103 trac/ticket/admin.py:400
 msgid "Due"
 msgstr "棰勬湡"
 
-#: trac/admin/templates/admin_milestones.html:103 trac/ticket/admin.py:390
-#: trac/ticket/templates/milestone_view.html:26
-#: trac/ticket/templates/roadmap.html:37
+#: trac/admin/templates/admin_milestones.html:103 trac/ticket/admin.py:400
 msgid "Completed"
 msgstr "瀹屾垚"
 
@@ -932,7 +950,7 @@
 msgid "Note that"
 msgstr "娉ㄦ剰"
 
-#: trac/admin/templates/admin_perms.html:92 trac/ticket/templates/query.html:62
+#: trac/admin/templates/admin_perms.html:92 trac/ticket/templates/query.html:74
 msgid "or"
 msgstr "鎴"
 
@@ -946,19 +964,19 @@
 "      as that is reserved for permission names."
 msgstr "鍚嶄笉鑳藉叏閮ㄥぇ鍐欙紝鍥犱负杩欐槸鏉冮檺鍚嶇О鐨勪繚鐣欐牸寮忋"
 
-#: trac/admin/templates/admin_plugins.html:17
+#: trac/admin/templates/admin_plugins.html:41
 msgid "Manage Plugins"
 msgstr "绠＄悊鎻掍欢"
 
-#: trac/admin/templates/admin_plugins.html:21
+#: trac/admin/templates/admin_plugins.html:45
 msgid "Install Plugin:"
 msgstr "瀹夎鎻掍欢:"
 
-#: trac/admin/templates/admin_plugins.html:23
+#: trac/admin/templates/admin_plugins.html:47
 msgid "File:"
 msgstr "鏂囦欢:"
 
-#: trac/admin/templates/admin_plugins.html:28
+#: trac/admin/templates/admin_plugins.html:52
 msgid ""
 "The web server does not have sufficient permissions to store files in\n"
 "            the environment plugins directory."
@@ -966,36 +984,53 @@
 "web鏈嶅姟鍣ㄦ病鏈夎冻澶熺殑鏉冮檺鎶婃枃浠朵繚瀛樺湪\n"
 "            杩愯鐜鐨勬彃浠剁洰褰曚腑."
 
-#: trac/admin/templates/admin_plugins.html:32
+#: trac/admin/templates/admin_plugins.html:56
 msgid "Upload a plugin packaged as Python egg."
 msgstr "涓婁紶涓涓狿ython egg鍖呭舰寮忕殑鎻掍欢."
 
-#: trac/admin/templates/admin_plugins.html:37
+#: trac/admin/templates/admin_plugins.html:61
 msgid "Install"
 msgstr "瀹夎"
 
-#: trac/admin/templates/admin_plugins.html:60 trac/templates/diff_view.html:43
-#: trac/versioncontrol/templates/changeset.html:97
+#: trac/admin/templates/admin_plugins.html:84 trac/templates/diff_view.html:46
+#: trac/versioncontrol/templates/changeset.html:102
 msgid "Author:"
 msgstr "浣滆:"
 
-#: trac/admin/templates/admin_plugins.html:69
+#: trac/admin/templates/admin_plugins.html:93
 msgid "Home page:"
 msgstr "棣栭〉:"
 
-#: trac/admin/templates/admin_plugins.html:76
+#: trac/admin/templates/admin_plugins.html:100
 msgid "License:"
 msgstr "鎺堟潈:"
 
-#: trac/admin/templates/admin_plugins.html:83
+#: trac/admin/templates/admin_plugins.html:110
+msgid "Show all descriptions"
+msgstr "鏄剧ず鎵鏈夋弿杩"
+
+#: trac/admin/templates/admin_plugins.html:112
+msgid "Hide all descriptions"
+msgstr "闅愯棌鎵鏈夋弿杩"
+
+#: trac/admin/templates/admin_plugins.html:114 trac/ticket/admin.py:76
+#: trac/ticket/api.py:294
 msgid "Component"
 msgstr "缁勪欢"
 
-#: trac/admin/templates/admin_plugins.html:83
+#: trac/admin/templates/admin_plugins.html:117
 msgid "Enabled"
 msgstr "鍚敤"
 
-#: trac/admin/templates/admin_versions.html:10
+#: trac/admin/templates/admin_plugins.html:126
+msgid "Toggle the module description"
+msgstr "鍒囨崲妯″潡鎻忚堪"
+
+#: trac/admin/templates/admin_plugins.html:142
+msgid "Toggle the component description"
+msgstr "鍒囨崲缁勫缓鎻忚堪"
+
+#: trac/admin/templates/admin_versions.html:10 trac/ticket/admin.py:440
 msgid "Versions"
 msgstr "鐗堟湰"
 
@@ -1023,106 +1058,115 @@
 msgid "Released"
 msgstr "鍙戝竷"
 
-#: trac/db/api.py:131
+#: trac/db/api.py:132
 #, python-format
 msgid "Unsupported database type \"%(scheme)s\""
 msgstr "涓嶆敮鎸佺殑鏁版嵁搴 \"%(scheme)s\""
 
-#: trac/db/api.py:156
-msgid "Database connection string must start with scheme:/"
-msgstr "鏁版嵁搴撻摼鎺ュ瓧绗︿覆蹇呴』濮嬩簬scheme:/"
+#: trac/db/api.py:160
+#, python-format
+msgid ""
+"Unknown scheme \"%(scheme)s\"; database connection string must start with"
+" {scheme}:/"
+msgstr "鏈煡scheme \"%(scheme)s\"锛涙暟鎹簱閾炬帴瀛楃涓插繀椤诲浜巗cheme:/"
 
+#: trac/db/mysql_backend.py:75
+msgid "Cannot load Python bindings for MySQL"
+msgstr "鏃犳硶鍔犺浇 Python 鐨 MySQL 璁块棶妯″潡"
+
 #: trac/db/pool.py:122
 #, python-format
 msgid "Unable to get database connection within %(time)d seconds"
-msgstr "鏃犳硶鍦%(time)d 绉掑唴鑾峰緱鏁版嵁搴撹繛鎺"
+msgstr "鏃犳硶鍦 %(time)d 绉掑唴鑾峰緱鏁版嵁搴撹繛鎺"
 
-#: trac/db/sqlite_backend.py:133
+#: trac/db/postgres_backend.py:68
+msgid "Cannot load Python bindings for PostgreSQL"
+msgstr "鏃犳硶鍔犺浇 Python 鐨 PostgreSQL 璁块棶妯″潡"
+
+#: trac/db/sqlite_backend.py:149
+msgid "Cannot load Python bindings for SQLite"
+msgstr "鏃犳硶鍔犺浇 Python 鐨 SQLite 璁块棶妯″潡"
+
+#: trac/db/sqlite_backend.py:153
+msgid "Need at least PySqlite 2.0.7 or higher"
+msgstr "鑷冲皯闇瑕 PySqlite 2.0.7 鎴栦互涓婄増鏈"
+
+#: trac/db/sqlite_backend.py:168
 #, python-format
 msgid "Database already exists at %(path)s"
 msgstr "鏁版嵁搴撳凡缁忓瓨鍦ㄤ簬 %(path)s"
 
-#: trac/db/sqlite_backend.py:173
+#: trac/db/sqlite_backend.py:210
 #, python-format
 msgid "Database \"%(path)s\" not found."
 msgstr "鏁版嵁搴 \"%(path)s\" 鏈壘鍒."
 
-#: trac/db/sqlite_backend.py:182
+#: trac/db/sqlite_backend.py:218
 #, python-format
 msgid ""
-"The user %(user)s requires read _and_ write permission to the database "
+"The user %(user)s requires read _and_ write permissions to the database "
 "file %(path)s and the directory it is located in."
-msgstr "鐢ㄦ埛 %(user)s 闇瑕佹暟鎹簱鏂囦欢 %(path)s 鍗冲叾鎵鍦ㄧ洰褰曠殑璇/鍐欐潈闄."
+msgstr "鐢ㄦ埛 %(user)s 闇瑕佹暟鎹簱鏂囦欢 %(path)s 鍙婂叾鎵鍦ㄧ洰褰曠殑璇/鍐欐潈闄."
 
-#: trac/mimeview/api.py:644 trac/mimeview/api.py:654
+#: trac/mimeview/api.py:662 trac/mimeview/api.py:672
 #, python-format
 msgid "No available MIME conversions from %(old)s to %(new)s"
 msgstr "娌℃湁鏈夋晥鐨凪IME灏 %(old)s 杞崲涓 %(new)s"
 
-#: trac/mimeview/api.py:756
+#: trac/mimeview/api.py:780
 #, python-format
 msgid "HTML preview using %(renderer)s failed (%(err)s)"
 msgstr "浣跨敤%(renderer)s杩涜HTML棰勮澶辫触 (%(err)s)"
 
-#: trac/mimeview/patch.py:55
+#: trac/mimeview/patch.py:53
 msgid "Invalid unified diff content"
 msgstr "鏃犳晥鐨剈nified diff鍐呭"
 
-#: trac/mimeview/patch.py:165
+#: trac/mimeview/patch.py:163
 #, python-format
 msgid "new file %(new)s"
 msgstr "鏂版枃浠 %(new)s"
 
-#: trac/mimeview/patch.py:169
+#: trac/mimeview/patch.py:167
 #, python-format
 msgid "deleted file %(deleted)s"
 msgstr "宸插垹闄ゆ枃浠%(deleted)s"
 
-#: trac/mimeview/patch.py:241
+#: trac/mimeview/patch.py:239
 msgid "this hunk was shorter than expected"
 msgstr "姝ゅ潡姣旈鏈熺殑鐭"
 
-#: trac/mimeview/php.py:98
-msgid ""
-"You appear to be using the PHP CGI binary. Trac requires the CLI version "
-"for syntax highlighting."
-msgstr "浣犱娇鐢ㄧ殑鏄疨HP CGI鐨勪簩杩涘埗鐗堟湰, Trac闇瑕佷娇鐢–LI鐗堟湰浠ユ彁渚涜娉曢珮浜."
+#: trac/mimeview/pygments.py:121 trac/prefs/templates/prefs_pygments.html:9
+msgid "Syntax Highlighting"
+msgstr "璇硶楂樹寒"
 
-#: trac/mimeview/rst.py:60
-msgid "Docutils not found"
-msgstr "鏃犳硶鎵惧埌Docutils"
-
-#: trac/mimeview/rst.py:62
-#, python-format
-msgid "Docutils version >= %(version)s required, %(found)s found"
-msgstr "闇瑕丏ocutils鐗堟湰 >= %(version)s, 鐜版湁鐗堟湰涓%(found)s"
-
-#: trac/prefs/web_ui.py:53 trac/prefs/templates/prefs.html:16
-#: trac/ticket/templates/ticket.html:263 trac/wiki/templates/wiki_edit.html:99
+#: trac/prefs/web_ui.py:52 trac/prefs/templates/prefs.html:16
+#: trac/ticket/templates/ticket.html:473
+#: trac/wiki/templates/wiki_edit_form.html:50
 msgid "Preferences"
 msgstr "涓汉璁剧疆"
 
-#: trac/prefs/web_ui.py:76
+#: trac/prefs/web_ui.py:75
 msgid "Unknown preference panel"
 msgstr "鏈煡閫夐」闈㈡澘"
 
-#: trac/prefs/web_ui.py:89 trac/prefs/templates/prefs_datetime.html:10
+#: trac/prefs/web_ui.py:87 trac/prefs/templates/prefs_datetime.html:10
 msgid "Date & Time"
 msgstr "鏃ユ湡鍜屾椂闂"
 
-#: trac/prefs/web_ui.py:90 trac/prefs/templates/prefs_keybindings.html:10
+#: trac/prefs/web_ui.py:88 trac/prefs/templates/prefs_keybindings.html:10
 msgid "Keyboard Shortcuts"
 msgstr "閿洏蹇嵎鏂瑰紡"
 
-#: trac/prefs/web_ui.py:92 trac/prefs/templates/prefs_language.html:9
+#: trac/prefs/web_ui.py:90 trac/prefs/templates/prefs_language.html:9
 msgid "Language"
 msgstr "璇█"
 
-#: trac/prefs/web_ui.py:94 trac/prefs/templates/prefs_advanced.html:9
+#: trac/prefs/web_ui.py:92 trac/prefs/templates/prefs_advanced.html:9
 msgid "Advanced"
 msgstr "楂樼骇"
 
-#: trac/prefs/web_ui.py:146
+#: trac/prefs/web_ui.py:143
 msgid "Your preferences have been saved."
 msgstr "鎮ㄧ殑涓汉璁剧疆宸蹭繚瀛樸"
 
@@ -1296,55 +1340,47 @@
 "        language negotiation feature to select the appropriate language."
 msgstr "鈥滅己鐪佽瑷鈥濋夐」浣跨敤娴忚鍣ㄧ殑璇█鍗忓晢鍔熻兘閫夋嫨鍚堥傜殑璇█銆"
 
-#: trac/prefs/templates/prefs_pygments.html:9
-msgid "Pygments Theme"
-msgstr "Pygments涓婚"
-
 #: trac/prefs/templates/prefs_pygments.html:36
 msgid ""
 "The Pygments syntax highlighter can be used with\n"
-"      different coloring themes."
+"      different coloring styles."
 msgstr "Pygments璇硶楂樹寒鍙互浣跨敤涓嶅悓鐨勯鑹蹭富棰."
 
 #: trac/prefs/templates/prefs_pygments.html:38
-msgid "Theme:"
-msgstr "涓婚:"
+msgid "Style:"
+msgstr "涓婚锛"
 
 #: trac/prefs/templates/prefs_pygments.html:43
 msgid "Preview:"
 msgstr "棰勮:"
 
-#: trac/search/web_ui.py:64 trac/search/templates/search.html:11
+#: trac/search/web_ui.py:63 trac/search/templates/search.html:11
 #: trac/search/templates/search.html:24 trac/search/templates/search.html:29
 #: trac/templates/theme.html:28
 msgid "Search"
 msgstr "鎼滅储"
 
-#: trac/search/web_ui.py:108
+#: trac/search/web_ui.py:153
 #, python-format
+msgid "Browse repository path %(path)s"
+msgstr "娴忚鐗堟湰搴撹矾寰 %(path)s"
+
+#: trac/search/web_ui.py:193
+#, python-format
 msgid "Search query too short. Query must be at least %(num)s characters long."
 msgstr "鎼滅储鏌ヨ澶煭. 鏌ヨ蹇呴』鑷冲皯鍖呭惈 %(num)s 瀛楃."
 
-#: trac/search/web_ui.py:110
-msgid "Search Error"
-msgstr "鎼滅储閿欒"
-
-#: trac/search/web_ui.py:145 trac/ticket/query.py:682 trac/ticket/report.py:324
+#: trac/search/web_ui.py:231 trac/ticket/query.py:759 trac/ticket/report.py:353
 msgid "Next Page"
 msgstr "涓嬩竴椤"
 
-#: trac/search/web_ui.py:151 trac/ticket/query.py:687 trac/ticket/report.py:328
+#: trac/search/web_ui.py:237 trac/ticket/query.py:764 trac/ticket/report.py:356
 msgid "Previous Page"
 msgstr "涓婁竴椤"
 
-#: trac/search/web_ui.py:193
-#, python-format
-msgid "Browse repository path %(path)s"
-msgstr "娴忚鐗堟湰搴撹矾寰 %(path)s"
-
 #: trac/search/templates/search.html:11 trac/search/templates/search.html:41
-#: trac/ticket/templates/query_results.html:21
-#: trac/ticket/templates/report_view.html:87
+#: trac/ticket/templates/query_results.html:22
+#: trac/ticket/templates/report_view.html:86
 msgid "Results"
 msgstr "缁撴灉"
 
@@ -1357,7 +1393,7 @@
 msgstr "鎿嶄綔鑰:"
 
 #: trac/search/templates/search.html:66
-#: trac/ticket/templates/report_view.html:216
+#: trac/ticket/templates/report_view.html:199
 msgid "No matches found."
 msgstr "娌℃湁鍖归厤鐨勭粨鏋."
 
@@ -1433,72 +1469,71 @@
 msgid "Value"
 msgstr "鍊"
 
-#: trac/templates/attachment.html:10
+#: trac/templates/attachment.html:11
 msgid "Attachment"
 msgstr "闄勪欢"
 
-#: trac/templates/attachment.html:25
+#: trac/templates/attachment.html:26
 msgid "Add Attachment to"
 msgstr "澧炲姞闄勪欢鍒"
 
-#: trac/templates/attachment.html:28
+#: trac/templates/attachment.html:29
 msgid "(size limit"
 msgstr "(澶у皬闄愬埗"
 
-#: trac/templates/attachment.html:33
+#: trac/templates/attachment.html:34
 msgid "Attachment Info"
 msgstr "闄勪欢淇℃伅"
 
-#: trac/templates/attachment.html:36 trac/ticket/templates/ticket.html:254
-#: trac/wiki/templates/wiki_edit.html:95
+#: trac/templates/attachment.html:37 trac/ticket/templates/ticket.html:464
+#: trac/wiki/templates/wiki_edit_form.html:46
 msgid "Your email or username:"
 msgstr "鎮ㄧ殑email鎴栫敤鎴峰悕:"
 
-#: trac/templates/attachment.html:42
+#: trac/templates/attachment.html:43
 msgid "Description of the file (optional):"
 msgstr "鏂囦欢鎻忚堪(鍙):"
 
-#: trac/templates/attachment.html:47
+#: trac/templates/attachment.html:49
 msgid "Replace existing attachment of the same name"
 msgstr "鏇挎崲宸叉湁鍚屽悕闄勪欢"
 
-#: trac/templates/attachment.html:56
+#: trac/templates/attachment.html:59
 msgid "Add attachment"
 msgstr "杩藉姞闄勪欢"
 
-#: trac/templates/attachment.html:64
+#: trac/templates/attachment.html:67
 msgid "Are you sure you want to delete this attachment?"
 msgstr "纭畾鍒犻櫎璇ラ檮浠?"
 
-#: trac/templates/attachment.html:64 trac/wiki/templates/wiki_delete.html:32
+#: trac/templates/attachment.html:67 trac/wiki/templates/wiki_delete.html:32
 msgid "This is an irreversible operation."
 msgstr "璇ユ搷浣滄槸涓嶅彲閫嗙殑."
 
-#: trac/templates/attachment.html:71 trac/templates/attachment.html:111
+#: trac/templates/attachment.html:74 trac/templates/attachment.html:114
 msgid "Delete attachment"
 msgstr "鍒犻櫎闄勪欢"
 
-#: trac/templates/attachment.html:80
+#: trac/templates/attachment.html:83
 msgid "Attach another file"
 msgstr "闄勫姞鍙︿竴涓枃浠"
 
-#: trac/templates/attachment.html:90
-msgid "(added by"
-msgstr "(娣诲姞鑰"
+#: trac/templates/attachment.html:92
+#, python-format
+msgid ""
+"File %(file)s, %(size)s\n"
+"                (added by %(author)s,  %(date)s ago)"
+msgstr ""
+"鏂囦欢 %(file)s, %(size)s\n"
+"            (鐢%(author)s鍦%(date)s鍓嶆坊鍔)"
 
-#: trac/templates/attachment.html:91 trac/templates/diff_view.html:40
-#: trac/versioncontrol/templates/changeset.html:96
-#: trac/wiki/templates/wiki_view.html:33
-msgid "ago)"
-msgstr "鍓)"
-
 #: trac/templates/diff_div.html:58
-#: trac/versioncontrol/templates/browser.html:134
+#: trac/versioncontrol/templates/browser.html:138
 msgid "Property"
 msgstr "灞炴"
 
-#: trac/templates/diff_div.html:69 trac/ticket/templates/ticket.html:64
-#: trac/versioncontrol/templates/changeset.html:32
+#: trac/templates/diff_div.html:69 trac/ticket/templates/ticket.html:88
+#: trac/versioncontrol/templates/changeset.html:37
 msgid "to"
 msgstr "鑷"
 
@@ -1506,84 +1541,90 @@
 msgid "Differences"
 msgstr "宸紓"
 
-#: trac/templates/diff_view.html:17
+#: trac/templates/diff_view.html:18
 msgid "Changes"
 msgstr "鍙樻洿"
 
-#: trac/templates/diff_view.html:18 trac/templates/diff_view.html:21
-#: trac/ticket/templates/query.html:104
+#: trac/templates/diff_view.html:19 trac/templates/diff_view.html:22
+#: trac/ticket/templates/query.html:116
 msgid "between"
 msgstr "涔嬮棿"
 
-#: trac/templates/diff_view.html:19 trac/templates/diff_view.html:25
-#: trac/templates/history_view.html:26 trac/ticket/templates/ticket.html:103
-#: trac/wiki/web_ui.py:549 trac/wiki/templates/wiki_view.html:32
+#: trac/templates/diff_view.html:20 trac/templates/diff_view.html:26
+#: trac/templates/history_view.html:27 trac/ticket/admin.py:440
+#: trac/ticket/api.py:295 trac/ticket/templates/ticket.html:148
 msgid "Version"
 msgstr "鐗堟湰"
 
-#: trac/templates/diff_view.html:19 trac/templates/diff_view.html:22
-#: trac/ticket/templates/query.html:106
+#: trac/templates/diff_view.html:20 trac/templates/diff_view.html:23
+#: trac/ticket/templates/query.html:118
 msgid "and"
 msgstr "鍜"
 
-#: trac/templates/diff_view.html:22 trac/ticket/web_ui.py:765
-#: trac/ticket/templates/ticket.html:100
+#: trac/templates/diff_view.html:23 trac/ticket/web_ui.py:787
+#: trac/ticket/web_ui.py:922 trac/ticket/templates/ticket.html:145
 msgid "Initial Version"
 msgstr "鍒濆鐗堟湰"
 
-#: trac/templates/diff_view.html:24
-#: trac/versioncontrol/templates/changeset.html:71
+#: trac/templates/diff_view.html:25
+#: trac/versioncontrol/templates/changeset.html:76
 msgid "from"
 msgstr "浠"
 
-#: trac/templates/diff_view.html:25
+#: trac/templates/diff_view.html:26
 msgid "of"
 msgstr "鐨"
 
-#: trac/templates/diff_view.html:37
-#: trac/versioncontrol/templates/changeset.html:94
+#: trac/templates/diff_view.html:39
+#: trac/versioncontrol/templates/changeset.html:99
 msgid "Timestamp:"
 msgstr "鏃堕棿鎴:"
 
-#: trac/templates/diff_view.html:39 trac/templates/diff_view.html:45
-#: trac/templates/diff_view.html:51
+#: trac/templates/diff_view.html:41 trac/templates/diff_view.html:48
+#: trac/templates/diff_view.html:54
 msgid "(multiple changes)"
 msgstr "(澶氭鍙樻洿)"
 
-#: trac/templates/diff_view.html:47
+#: trac/templates/diff_view.html:43
+#: trac/versioncontrol/templates/changeset.html:100
+#, python-format
+msgid "%(date)s (%(duration)s ago)"
+msgstr "%(date)s 锛%(duration)s 鍓嶏級"
+
+#: trac/templates/diff_view.html:50
 msgid "(IP:"
 msgstr "(IP:"
 
-#: trac/templates/diff_view.html:49
+#: trac/templates/diff_view.html:52
 msgid "Comment:"
 msgstr "璇勮:"
 
-#: trac/templates/diff_view.html:57
-#: trac/versioncontrol/templates/changeset.html:151
-#: trac/versioncontrol/templates/revisionlog.html:71
+#: trac/templates/diff_view.html:60
+#: trac/versioncontrol/templates/changeset.html:156
+#: trac/versioncontrol/templates/revisionlog.html:72
 msgid "Legend:"
 msgstr "鍥句緥:"
 
-#: trac/templates/diff_view.html:59
-#: trac/versioncontrol/templates/changeset.html:153
+#: trac/templates/diff_view.html:62
+#: trac/versioncontrol/templates/changeset.html:158
 msgid "Unmodified"
 msgstr "鏈慨鏀"
 
-#: trac/templates/diff_view.html:60
-#: trac/versioncontrol/templates/changeset.html:154
-#: trac/versioncontrol/templates/revisionlog.html:73
+#: trac/templates/diff_view.html:63
+#: trac/versioncontrol/templates/changeset.html:159
+#: trac/versioncontrol/templates/revisionlog.html:74
 msgid "Added"
 msgstr "宸插鍔"
 
-#: trac/templates/diff_view.html:61
-#: trac/versioncontrol/templates/changeset.html:155
-#: trac/versioncontrol/templates/revisionlog.html:75
+#: trac/templates/diff_view.html:64
+#: trac/versioncontrol/templates/changeset.html:160
+#: trac/versioncontrol/templates/revisionlog.html:76
 msgid "Removed"
 msgstr "鍒犻櫎"
 
-#: trac/templates/diff_view.html:62 trac/ticket/api.py:250
-#: trac/versioncontrol/templates/changeset.html:157
-#: trac/versioncontrol/templates/revisionlog.html:77 trac/wiki/admin.py:155
+#: trac/templates/diff_view.html:65 trac/ticket/api.py:323
+#: trac/versioncontrol/templates/changeset.html:162
+#: trac/versioncontrol/templates/revisionlog.html:78 trac/wiki/admin.py:196
 msgid "Modified"
 msgstr "淇敼"
 
@@ -1645,10 +1686,10 @@
 
 #: trac/templates/error.html:106
 msgid ""
-"There was an internal error in Trac. \n"
-"                It is recommended that you notify your local \n"
+"There was an internal error in Trac.\n"
+"                It is recommended that you notify your local\n"
 "                [1:\n"
-"                    Trac administrator] with the information needed to \n"
+"                    Trac administrator] with the information needed to\n"
 "                reproduce the issue."
 msgstr "Trac鍙戠敓浜嗗唴閮ㄩ敊璇傚缓璁偍鍚戞湰鍦癧1:Trac 绠＄悊鍛榏鎻愪緵閲嶇幇闂鎵闇瑕佺殑淇℃伅銆"
 
@@ -1691,37 +1732,7 @@
 "              搴旇冭檻鍚慣rac寮鍙戝洟闃熸姤鍛婅繖涓棶棰樸"
 
 #: trac/templates/error.html:131
-msgid "Before you do that, though, please first try"
-msgstr "鍦ㄦ涔嬪墠锛岃棣栧厛灏濊瘯"
-
-#: trac/templates/error.html:132
-msgid "searching"
-msgstr "鎼滅储"
-
-#: trac/templates/error.html:132
-msgid "for similar issues"
-msgstr "绫讳技闂"
-
-#: trac/templates/error.html:133
 msgid ""
-", as it is quite likely that this problem\n"
-"                has been reported before. For questions about "
-"installation\n"
-"                and configuration of Trac, please try the"
-msgstr ""
-"锛屽洜涓哄緢鍙兘杩欎釜闂浠ュ墠宸茬粡鎶ュ憡杩囦簡銆俓n"
-"鏈夊叧Trac瀹夎鍜岄厤缃殑闂锛岃灏濊瘯"
-
-#: trac/templates/error.html:136
-msgid "mailing list"
-msgstr "閭欢鍒楄〃"
-
-#: trac/templates/error.html:136
-msgid "instead of filing a ticket."
-msgstr "鑰屼笉鏄～鍐欎换鍔″崟"
-
-#: trac/templates/error.html:131
-msgid ""
 "Before you do that, though, please first try\n"
 "                [1:[2:searching]\n"
 "                for similar issues], as it is quite likely that this "
@@ -1804,26 +1815,31 @@
 msgid "Change History for"
 msgstr "鍙樻洿鍘嗗彶"
 
-#: trac/templates/history_view.html:20 trac/templates/history_view.html:51
+#: trac/templates/history_view.html:21 trac/templates/history_view.html:52
 #: trac/versioncontrol/templates/diff_form.html:58
-#: trac/versioncontrol/templates/revisionlog.html:85
-#: trac/versioncontrol/templates/revisionlog.html:171
+#: trac/versioncontrol/templates/revisionlog.html:87
+#: trac/versioncontrol/templates/revisionlog.html:180
 msgid "View changes"
 msgstr "鏌ラ槄鍙樻洿"
 
-#: trac/templates/history_view.html:22
+#: trac/templates/history_view.html:23
 msgid "Change history"
 msgstr "鍙樻洿鍘嗗彶"
 
-#: trac/templates/history_view.html:29
+#: trac/templates/history_view.html:30
 #: trac/ticket/templates/ticket_notify_email.txt:21
 msgid "Comment"
 msgstr "璇勮"
 
-#: trac/templates/history_view.html:41
+#: trac/templates/history_view.html:42
 msgid "View this version"
 msgstr "鏌ョ湅璇ョ増鏈"
 
+#: trac/templates/history_view.html:45
+#, python-format
+msgid "IP-Address: %(ipnr)s"
+msgstr "IP鍦板潃锛 %(ipnr)s"
+
 #: trac/templates/index.html:8 trac/templates/index.html:12
 msgid "Available Projects"
 msgstr "鏈夋晥椤圭洰"
@@ -1832,128 +1848,151 @@
 msgid "Error"
 msgstr "閿欒"
 
-#: trac/templates/layout.html:42
+#: trac/templates/layout.html:49
 msgid "Download in other formats:"
 msgstr "鐢ㄥ叾浠栨牸寮忎笅杞:"
 
-#: trac/templates/macros.html:40
+#: trac/templates/macros.html:29
 msgid "anonymous"
 msgstr "鍖垮悕"
 
-#: trac/templates/macros.html:73 trac/templates/macros.html:74
+#: trac/templates/macros.html:37
+msgid "Go to root directory"
+msgstr "杞埌鏍圭洰褰"
+
+#: trac/templates/macros.html:37
+#, python-format
+msgid "View %(folder)s"
+msgstr "鏌ョ湅 %(folder)s"
+
+#: trac/templates/macros.html:62 trac/templates/macros.html:63
 msgid "Previous"
 msgstr "涓婁竴涓"
 
-#: trac/templates/macros.html:83 trac/templates/macros.html:84
+#: trac/templates/macros.html:72 trac/templates/macros.html:73
 msgid "Next"
 msgstr "涓嬩竴涓"
 
-#: trac/templates/macros.html:94
+#: trac/templates/macros.html:83
 msgid "View differences"
 msgstr "鏌ョ湅宸紓"
 
-#: trac/templates/macros.html:97
+#: trac/templates/macros.html:86
 msgid "inline"
 msgstr "鍐呭祵"
 
-#: trac/templates/macros.html:99
+#: trac/templates/macros.html:88
 msgid "side by side"
 msgstr "骞舵帓"
 
-#: trac/templates/macros.html:101
+#: trac/templates/macros.html:90
 msgid "Show"
 msgstr "鏄剧ず"
 
-#: trac/templates/macros.html:104
+#: trac/templates/macros.html:93
 msgid "lines around each change"
 msgstr "姣忔鍙樻洿琛屾暟"
 
-#: trac/templates/macros.html:107
+#: trac/templates/macros.html:96
 msgid "Ignore:"
 msgstr "蹇界暐:"
 
-#: trac/templates/macros.html:111
+#: trac/templates/macros.html:100
 msgid "Blank lines"
 msgstr "绌鸿"
 
-#: trac/templates/macros.html:116
+#: trac/templates/macros.html:105
 msgid "Case changes"
 msgstr "澶у皬鍐欏彉鍖"
 
-#: trac/templates/macros.html:121
+#: trac/templates/macros.html:110
 msgid "White space changes"
 msgstr "绌哄瓧绗﹀彉鍖"
 
-#: trac/templates/macros.html:125 trac/ticket/templates/milestone_view.html:54
-#: trac/ticket/templates/query.html:191
+#: trac/templates/macros.html:114 trac/ticket/templates/milestone_view.html:59
+#: trac/ticket/templates/query.html:210
 #: trac/ticket/templates/report_view.html:33
 #: trac/ticket/templates/roadmap.html:25
 #: trac/timeline/templates/timeline.html:32
-#: trac/versioncontrol/templates/revisionlog.html:65
+#: trac/versioncontrol/templates/revisionlog.html:66
 msgid "Update"
 msgstr "鏇存柊缁撴灉"
 
-#: trac/templates/macros.html:138
+#: trac/templates/macros.html:127
 msgid "(The file is empty)"
 msgstr "(鏂囦欢涓虹┖)"
 
-#: trac/templates/macros.html:141
+#: trac/templates/macros.html:130
 msgid "HTML preview not available"
 msgstr "HTML棰勮鍔熻兘涓嶅彲鐢"
 
-#: trac/templates/macros.html:143
+#: trac/templates/macros.html:132
 msgid "since the file size exceeds"
 msgstr "鐢变簬鏂囦欢澶у皬瓒呰繃"
 
-#: trac/templates/macros.html:144
+#: trac/templates/macros.html:133
 msgid "bytes."
-msgstr "瀛楄妭."
+msgstr "瀛楄妭銆"
 
-#: trac/templates/macros.html:146
+#: trac/templates/macros.html:135
 msgid "since no preview renderer could handle it."
-msgstr "鐢变簬娌℃湁鍚堥傜殑娓叉煋鍣ㄦ潵澶勭悊."
+msgstr "鐢变簬娌℃湁鍚堥傜殑娓叉煋鍣ㄦ潵澶勭悊銆"
 
-#: trac/templates/macros.html:149
+#: trac/templates/macros.html:138
 msgid "Try"
 msgstr "灏濊瘯"
 
-#: trac/templates/macros.html:150
+#: trac/templates/macros.html:139
 msgid "downloading"
 msgstr "涓嬭浇"
 
-#: trac/templates/macros.html:150
+#: trac/templates/macros.html:139
 msgid "the file instead."
-msgstr "鏂囦欢浠ｆ浛."
+msgstr "鏂囦欢浠ｆ浛銆"
 
-#: trac/templates/macros.html:163
-msgid "View attachment"
-msgstr "鏌ョ湅闄勪欢"
+#: trac/templates/macros.html:152
+#, python-format
+msgid ""
+"[1:%(file)s]\n"
+"        [2:[3:]]\n"
+"        (%(size)s) - added by [4:%(author)s]\n"
+"        %(date)s ago."
+msgstr ""
+"[1:%(file)s]\n"
+"        [2:[3:]]\n"
+"        (%(size)s)\n"
+"            (鐢盵4:%(author)s]鍦%(date)s鍓嶆坊鍔)"
 
-#: trac/templates/macros.html:166
-msgid ") - added by"
-msgstr ") - 娣诲姞鑰"
-
-#: trac/templates/macros.html:167 trac/ticket/templates/query_results.html:77
-msgid "ago."
-msgstr "鍓."
-
-#: trac/templates/macros.html:172 trac/templates/macros.html:183
+#: trac/templates/macros.html:163 trac/templates/macros.html:174
+#: trac/ticket/templates/ticket.html:487
 msgid "Attachments"
 msgstr "闄勪欢"
 
-#: trac/templates/macros.html:208
+#: trac/templates/macros.html:199
 msgid "Attach file"
 msgstr "闄勫姞鏂囦欢"
 
-#: trac/templates/macros.html:236 trac/templates/macros.html:237
-#: trac/templates/macros.html:245
-msgid "s:"
-msgstr "s:"
+#: trac/templates/macros.html:214
+#, python-format
+msgid "%(num)s of %(total)s %(unit)s %(title)s"
+msgid_plural "%(num)s of %(total)s %(units)s %(title)s"
+msgstr[0] "%(num)s / %(total)s %(unit)s %(title)s"
+msgstr[1] "%(num)s / %(total)s %(units)s %(title)s"
 
-#: trac/templates/macros.html:245
-msgid "Total"
-msgstr "鎬昏"
+#: trac/templates/macros.html:227
+#, python-format
+msgid "%(title)s %(unit)s:"
+msgid_plural "%(title)s %(units)s:"
+msgstr[0] "%(title)s %(unit)s:"
+msgstr[1] "%(title)s %(units)s:"
 
+#: trac/templates/macros.html:237
+#, python-format
+msgid "Total %(unit)s:"
+msgid_plural "Total %(units)s:"
+msgstr[0] "鎬昏 %(unit)s:"
+msgstr[1] "鎬昏 %(units)s:"
+
 #: trac/templates/theme.html:26
 msgid "Search:"
 msgstr "鎼滅储:"
@@ -1966,93 +2005,124 @@
 msgid "Warning:"
 msgstr "璀﹀憡:"
 
-#: trac/ticket/admin.py:105
+#: trac/ticket/admin.py:36
+msgid "(Undefined)"
+msgstr "锛堟湭瀹氫箟鐨勶級"
+
+#: trac/ticket/admin.py:47
+msgid "Ticket System"
+msgstr "浠诲姟鍗曠郴缁"
+
+#: trac/ticket/admin.py:112
 #, python-format
 msgid "The component \"%(name)s\" has been added."
 msgstr "缁勪欢 '%(name)s' 宸叉坊鍔犮"
 
-#: trac/ticket/admin.py:109
+#: trac/ticket/admin.py:117 trac/ticket/model.py:664 trac/ticket/model.py:686
+msgid "Invalid component name."
+msgstr "鏃犳晥鐨勭粍浠跺悕绉般"
+
+#: trac/ticket/admin.py:118
 #, python-format
 msgid "Component %(name)s already exists."
 msgstr "缁勪欢 %(name)s 宸茬粡瀛樺湪."
 
-#: trac/ticket/admin.py:116
+#: trac/ticket/admin.py:125
 msgid "No component selected"
 msgstr "娌℃湁閫夋嫨缁勪欢"
 
-#: trac/ticket/admin.py:124
+#: trac/ticket/admin.py:133
 msgid "The selected components have been removed."
 msgstr "閫夊畾缁勪欢宸插垹闄ゃ"
 
-#: trac/ticket/admin.py:262 trac/ticket/roadmap.py:651
+#: trac/ticket/admin.py:241 trac/ticket/api.py:293
+#: trac/ticket/templates/milestone_view.html:11
+#: trac/ticket/templates/milestone_view.html:22
+msgid "Milestone"
+msgstr "閲岀▼纰"
+
+#: trac/ticket/admin.py:270 trac/ticket/roadmap.py:662
 msgid "Completion date may not be in the future"
 msgstr "瀹屾垚鏃ユ湡涓嶈兘鏄湭鏉ョ殑鏃ユ湡"
 
-#: trac/ticket/admin.py:264
+#: trac/ticket/admin.py:272
 msgid "Invalid Completion Date"
 msgstr "鏃犳晥瀹屾垚鏃ユ湡"
 
-#: trac/ticket/admin.py:291
+#: trac/ticket/admin.py:299
 #, python-format
 msgid "The milestone \"%(name)s\" has been added."
 msgstr "閲岀▼纰 \"%(name)s\" 宸叉坊鍔犮"
 
-#: trac/ticket/admin.py:295
+#: trac/ticket/admin.py:304 trac/ticket/model.py:804 trac/ticket/model.py:829
+msgid "Invalid milestone name."
+msgstr "鏃犳晥鐨勯噷绋嬬鍚嶇О銆"
+
+#: trac/ticket/admin.py:305
 #, python-format
 msgid "Milestone %(name)s already exists."
 msgstr "閲岀▼纰 %(name)s 宸茬粡瀛樺湪."
 
-#: trac/ticket/admin.py:303
+#: trac/ticket/admin.py:313
 msgid "No milestone selected"
 msgstr "娌℃湁閫夋嫨閲岀▼纰"
 
-#: trac/ticket/admin.py:311
+#: trac/ticket/admin.py:321
 msgid "The selected milestones have been removed."
 msgstr "閫夊畾閲岀▼纰戝凡鍒犻櫎銆"
 
-#: trac/ticket/admin.py:470
+#: trac/ticket/admin.py:480
 #, python-format
 msgid "The version \"%(name)s\" has been added."
 msgstr "鐗堟湰 '%(name)s' 宸叉坊鍔犮"
 
-#: trac/ticket/admin.py:474
+#: trac/ticket/admin.py:485 trac/ticket/model.py:941 trac/ticket/model.py:963
+msgid "Invalid version name."
+msgstr "鏃犳晥鐨勭増鏈悕绉般"
+
+#: trac/ticket/admin.py:486
 #, python-format
 msgid "Version %(name)s already exists."
 msgstr "鐗堟湰 %(name)s 宸茬粡瀛樺湪."
 
-#: trac/ticket/admin.py:481
+#: trac/ticket/admin.py:493
 msgid "No version selected"
 msgstr "娌℃湁閫夋嫨鐗堟湰"
 
-#: trac/ticket/admin.py:489
+#: trac/ticket/admin.py:501
 msgid "The selected versions have been removed."
 msgstr "閫夊畾鐗堟湰宸插垹闄ゃ"
 
-#: trac/ticket/admin.py:547
+#: trac/ticket/admin.py:559
 msgid "Time"
 msgstr "鏃堕棿"
 
-#: trac/ticket/admin.py:618
+#: trac/ticket/admin.py:629
 #, python-format
 msgid "The %(field)s \"%(name)s\" has been added."
 msgstr "%(field)s \"%(name)s\" 宸叉坊鍔犮"
 
-#: trac/ticket/admin.py:623
+#: trac/ticket/admin.py:635 trac/ticket/model.py:523 trac/ticket/model.py:550
 #, python-format
+msgid "Invalid %(type)s name."
+msgstr "鏃犳晥鐨%(type)s鍚嶇О銆"
+
+#: trac/ticket/admin.py:637
+#, python-format
 msgid "%(type)s %(name)s already exists"
 msgstr "%(type)s %(name)s 宸茬粡瀛樺湪"
 
-#: trac/ticket/admin.py:629
+#: trac/ticket/admin.py:643
 #, python-format
 msgid "No %s selected"
 msgstr "娌℃湁 %s 琚夋嫨"
 
-#: trac/ticket/admin.py:639
+#: trac/ticket/admin.py:653
 #, python-format
 msgid "The selected %(fields)s have been removed."
 msgstr "閫夊畾%(fields)s宸插垹闄ゃ"
 
-#: trac/ticket/admin.py:660
+#: trac/ticket/admin.py:674
 msgid ""
 "Error writing to trac.ini, make sure it is writable by the web server. "
 "The default value has not been saved."
@@ -2060,70 +2130,126 @@
 "鍐欏叆trac.ini閿欒锛岃纭繚瀹冨彲琚玏eb鏈嶅姟鍣ㄥ啓鍏ャ俓n"
 "缂虹渷鍊兼病鏈夎淇濆瓨銆"
 
-#: trac/ticket/admin.py:672
+#: trac/ticket/admin.py:686
 msgid "Order numbers must be unique"
 msgstr "搴忓彿蹇呴』鍞竴"
 
-#: trac/ticket/admin.py:734
+#: trac/ticket/admin.py:748
 msgid "Possible Values"
 msgstr "鍙彇鍊"
 
-#: trac/ticket/admin.py:756
+#: trac/ticket/admin.py:770
 #, python-format
 msgid "Invalid up/down value: %(value)s"
 msgstr "鏃犳晥鐨 up/down 鍊: %(value)s"
 
-#: trac/ticket/admin.py:822
+#: trac/ticket/admin.py:790 trac/ticket/api.py:292
+msgid "Priority"
+msgstr "浼樺厛绾"
+
+#: trac/ticket/admin.py:790
+msgid "Priorities"
+msgstr "浼樺厛绾"
+
+#: trac/ticket/admin.py:796 trac/ticket/api.py:297
+msgid "Resolution"
+msgstr "澶勭悊缁撴灉"
+
+#: trac/ticket/admin.py:796
+msgid "Resolutions"
+msgstr "澶勭悊缁撴灉"
+
+#: trac/ticket/admin.py:802 trac/ticket/api.py:296
+msgid "Severity"
+msgstr "涓ラ噸鎬"
+
+#: trac/ticket/admin.py:802
+msgid "Severities"
+msgstr "涓ラ噸鎬"
+
+#: trac/ticket/admin.py:808
+msgid "Ticket Type"
+msgstr "浠诲姟鍗曠被鍨"
+
+#: trac/ticket/admin.py:808
+msgid "Ticket Types"
+msgstr "浠诲姟鍗曠被鍨"
+
+#: trac/ticket/admin.py:836
 msgid "<number> must be a number"
 msgstr "<number> 蹇呴』鏄竴涓暟"
 
-#: trac/ticket/admin.py:827
+#: trac/ticket/admin.py:841
 #, python-format
 msgid "Ticket %(num)s and all associated data removed."
 msgstr "浠诲姟鍗 %(num)s 鍜屾墍鏈夌浉鍏虫暟鎹潎宸茶鍒犻櫎銆"
 
-#: trac/ticket/api.py:248
+#: trac/ticket/api.py:275
+msgid "Summary"
+msgstr "姒傝堪:"
+
+#: trac/ticket/api.py:277
+msgid "Reporter"
+msgstr "鎶ュ憡浜:"
+
+#: trac/ticket/api.py:290
+msgid "Type"
+msgstr "绫诲瀷:"
+
+#: trac/ticket/api.py:291
+msgid "Status"
+msgstr "鐘舵"
+
+#: trac/ticket/api.py:316
+msgid "Keywords"
+msgstr "鍏抽敭璇"
+
+#: trac/ticket/api.py:317
+msgid "Cc"
+msgstr "鎶勯"
+
+#: trac/ticket/api.py:321
 msgid "Created"
 msgstr "鍒涘缓"
 
-#: trac/ticket/api.py:405
+#: trac/ticket/api.py:481
 #, python-format
 msgid "Comment %(cnum)s for Ticket #%(id)s"
-msgstr "璇勮 %(cnum)s 浠诲姟鍗 #%(id)s"
+msgstr "浠诲姟鍗 #%(id)s 鐨勮瘎璁 %(cnum)s"
 
-#: trac/ticket/api.py:426
+#: trac/ticket/api.py:502
 #, python-format
 msgid "Ticket #%(shortname)s"
 msgstr "浠诲姟鍗 #%(shortname)s"
 
-#: trac/ticket/default_workflow.py:222
+#: trac/ticket/default_workflow.py:225
 msgid "Current state no longer exists"
 msgstr "褰撳墠鐘舵佸繁涓嶅瓨鍦"
 
-#: trac/ticket/default_workflow.py:224
+#: trac/ticket/default_workflow.py:227
 msgid "The ticket will be disowned"
 msgstr "浠诲姟鍗曞皢灏嗚劚绂诲睘涓"
 
-#: trac/ticket/default_workflow.py:243 trac/ticket/default_workflow.py:257
+#: trac/ticket/default_workflow.py:246 trac/ticket/default_workflow.py:260
 #, python-format
 msgid "The owner will change from %(current_owner)s"
 msgstr "灞炰富灏嗙敱%(current_owner)s鍙樻洿"
 
-#: trac/ticket/default_workflow.py:248
+#: trac/ticket/default_workflow.py:251
 #, python-format
 msgid "The owner will change from %(current_owner)s to %(selected_owner)s"
 msgstr "灞炰富灏嗙敱%(current_owner)s鍙樻洿涓%(selected_owner)s"
 
-#: trac/ticket/default_workflow.py:253
+#: trac/ticket/default_workflow.py:256
 msgid "to "
 msgstr "鍒"
 
-#: trac/ticket/default_workflow.py:261
+#: trac/ticket/default_workflow.py:264
 #, python-format
 msgid "The owner will change from %(current_owner)s to %(authname)s"
 msgstr "灞炰富灏嗙敱%(current_owner)s鍙樻洿涓%(authname)s"
 
-#: trac/ticket/default_workflow.py:272
+#: trac/ticket/default_workflow.py:274
 msgid ""
 "Your workflow attempts to set a resolution but none is defined "
 "(configuration issue, please contact your Trac admin)."
@@ -2131,420 +2257,522 @@
 "鎮ㄧ殑宸ヤ綔娴佽瘯鍥捐缃鐞嗙粨鏋滐紝浣嗕竴涓篃娌℃湁瀹氫箟\n"
 "(閰嶇疆闂锛岃鑱旂郴鎮ㄧ殑Trac绠＄悊鍛)銆"
 
-#: trac/ticket/default_workflow.py:277
+#: trac/ticket/default_workflow.py:279
 #, python-format
 msgid "The resolution will be set to %(name)s"
 msgstr "澶勭悊缁撴灉灏嗚缃负 %(name)s"
 
-#: trac/ticket/default_workflow.py:287
+#: trac/ticket/default_workflow.py:289
 msgid "The resolution will be set"
 msgstr "澶勭悊缁撴灉灏嗚缃负"
 
-#: trac/ticket/default_workflow.py:293
+#: trac/ticket/default_workflow.py:295
 #, python-format
 msgid "Next status will be '%(name)s'"
 msgstr "涓嬩竴涓姸鎬佸皢鏄 '%(name)s'"
 
-#: trac/ticket/model.py:140
+#: trac/ticket/model.py:107
+#, python-format
+msgid "Ticket %(id)s does not exist."
+msgstr "浠诲姟鍗 %(id)s 涓嶅瓨鍦."
+
+#: trac/ticket/model.py:108
+msgid "Invalid ticket number"
+msgstr "鏃犳晥鐨勪换鍔″崟缂栧彿"
+
+#: trac/ticket/model.py:144
 msgid "Multi-values fields not supported yet"
 msgstr "灏氫笉鏀寔澶氬煎瓧娈"
 
-#: trac/ticket/model.py:392
+#: trac/ticket/model.py:482
 #, python-format
 msgid "%(type)s %(name)s does not exist."
 msgstr "%(type)s %(name)s 涓嶅瓨鍦."
 
-#: trac/ticket/model.py:540
+#: trac/ticket/model.py:631
 #, python-format
 msgid "Component %(name)s does not exist."
 msgstr "缁勪欢 '%(name)s' 涓嶅瓨鍦."
 
-#: trac/ticket/model.py:773
+#: trac/ticket/model.py:749
+#, python-format
+msgid "Milestone %(name)s does not exist."
+msgstr "閲岀▼纰 '%(name)s' 涓嶅瓨鍦."
+
+#: trac/ticket/model.py:750
+msgid "Invalid milestone name"
+msgstr "鏃犳晥鐨勯噷绋嬬鍚嶇О"
+
+#: trac/ticket/model.py:887
 msgid "Open (by due date)"
 msgstr "寮鍚(鏈夋湡闄)"
 
-#: trac/ticket/model.py:774
+#: trac/ticket/model.py:888
 msgid "Open (no due date)"
 msgstr "寮鍚(鏃犳湡闄)"
 
-#: trac/ticket/model.py:777
+#: trac/ticket/model.py:891
 msgid "Closed"
 msgstr "鍏抽棴"
 
-#: trac/ticket/model.py:793
+#: trac/ticket/model.py:908
 #, python-format
 msgid "Version %(name)s does not exist."
 msgstr "鐗堟湰 '%(name)s' 涓嶅瓨鍦."
 
-#: trac/ticket/query.py:76
+#: trac/ticket/query.py:53
+msgid "Invalid query constraint value"
+msgstr "鏃犳晥鐨勬煡璇㈡潯浠"
+
+#: trac/ticket/query.py:87
 #, python-format
 msgid "Query page %(page)s is invalid."
 msgstr "鏌ヨ椤甸潰 %(page)s 鏃犳晥"
 
-#: trac/ticket/query.py:91
+#: trac/ticket/query.py:102
 #, python-format
 msgid "Query max %(max)s is invalid."
 msgstr "Query max %(max)s 鏃犳晥"
 
-#: trac/ticket/query.py:130
+#: trac/ticket/query.py:158
 msgid "Query filter requires field and constraints separated by a \"=\""
 msgstr "鏌ヨ杩囨护鍣ㄨ姹備娇鐢╘"=\"鍒嗛殧瀛楁鍜岀害鏉"
 
-#: trac/ticket/query.py:143
+#: trac/ticket/query.py:171
 msgid "Query filter requires field name"
 msgstr "鏌ヨ杩囨护鍣ㄩ渶瑕佸瓧娈靛悕"
 
-#: trac/ticket/query.py:273
+#: trac/ticket/query.py:304
 #, python-format
 msgid "Page %(page)s is beyond the number of pages in the query"
 msgstr "椤甸潰 %(page)s 宸茶秴鍑烘煡璇㈢粨鏋滈〉鏁"
 
-#: trac/ticket/query.py:609 trac/ticket/web_ui.py:601
-msgid "Ticket"
-msgstr "浠诲姟鍗"
+#: trac/ticket/query.py:558
+#, python-format
+msgid "Invalid ticket id list: %(value)s"
+msgstr "鏃犳晥鐨勪换鍔″崟ID鍒楄〃锛 %(value)s"
 
-#: trac/ticket/query.py:627 trac/ticket/query.py:635
+#: trac/ticket/query.py:657 trac/ticket/query.py:665
 msgid "contains"
 msgstr "鍖呭惈"
 
-#: trac/ticket/query.py:628 trac/ticket/query.py:636
+#: trac/ticket/query.py:658 trac/ticket/query.py:666
 msgid "doesn't contain"
 msgstr "涓嶅寘鍚"
 
-#: trac/ticket/query.py:629
+#: trac/ticket/query.py:659
 msgid "begins with"
 msgstr "璧峰浜"
 
-#: trac/ticket/query.py:630
+#: trac/ticket/query.py:660
 msgid "ends with"
 msgstr "缁撴潫浜"
 
-#: trac/ticket/query.py:631 trac/ticket/query.py:639
+#: trac/ticket/query.py:661 trac/ticket/query.py:669 trac/ticket/query.py:673
 msgid "is"
 msgstr "鏄"
 
-#: trac/ticket/query.py:632 trac/ticket/query.py:640
+#: trac/ticket/query.py:662 trac/ticket/query.py:670 trac/ticket/query.py:674
 msgid "is not"
 msgstr "涓嶆槸"
 
-#: trac/ticket/query.py:695 trac/ticket/report.py:335
+#: trac/ticket/query.py:704 trac/ticket/query.py:710
+msgid "Ticket"
+msgstr "浠诲姟鍗"
+
+#: trac/ticket/query.py:772 trac/ticket/report.py:362
 #, python-format
 msgid "Page %(num)d"
 msgstr "绗 %(num)d 椤"
 
-#: trac/ticket/query.py:744 trac/ticket/report.py:526 trac/ticket/web_ui.py:151
-#: trac/timeline/web_ui.py:216 trac/versioncontrol/web_ui/log.py:240
+#: trac/ticket/query.py:821 trac/ticket/report.py:522 trac/ticket/web_ui.py:129
+#: trac/timeline/web_ui.py:214 trac/versioncontrol/web_ui/log.py:283
 msgid "RSS Feed"
 msgstr "RSS Feed"
 
-#: trac/ticket/query.py:746 trac/ticket/report.py:529 trac/ticket/web_ui.py:147
+#: trac/ticket/query.py:823 trac/ticket/report.py:524 trac/ticket/web_ui.py:125
 msgid "Comma-delimited Text"
 msgstr "閫楀彿鍒嗗壊鏂囨湰"
 
-#: trac/ticket/query.py:748 trac/ticket/report.py:531 trac/ticket/web_ui.py:149
+#: trac/ticket/query.py:825 trac/ticket/report.py:526 trac/ticket/web_ui.py:127
 msgid "Tab-delimited Text"
 msgstr "Tab鍒嗗壊鏂囨湰"
 
-#: trac/ticket/query.py:770 trac/ticket/report.py:63
+#: trac/ticket/query.py:847 trac/ticket/report.py:64
 msgid "View Tickets"
 msgstr "鏌ョ湅浠诲姟鍗"
 
-#: trac/ticket/query.py:948 trac/ticket/query.py:959 trac/ticket/report.py:121
+#: trac/ticket/query.py:1054 trac/ticket/query.py:1065
+#: trac/ticket/report.py:126
 msgid "Custom Query"
 msgstr "瀹氬埗鏌ヨ"
 
-#: trac/ticket/query.py:958 trac/ticket/report.py:111 trac/ticket/report.py:112
-#: trac/ticket/report.py:114 trac/ticket/report.py:229
+#: trac/ticket/query.py:1064 trac/ticket/report.py:116
+#: trac/ticket/report.py:117 trac/ticket/report.py:119
+#: trac/ticket/templates/report_list.html:10
+#: trac/ticket/templates/report_list.html:15
 msgid "Available Reports"
 msgstr "鍙敤鐨勬姤琛"
 
-#: trac/ticket/query.py:1046
+#: trac/ticket/query.py:1147
 #, python-format
 msgid "[Error: %(error)s]"
 msgstr "[Error: %(error)s]"
 
-#: trac/ticket/query.py:1144
+#: trac/ticket/query.py:1281
 msgid "No results"
 msgstr "娌℃湁缁撴灉"
 
-#: trac/ticket/query.py:1162
+#: trac/ticket/query.py:1299
 #, python-format
 msgid "%(groupvalue)s %(groupname)s tickets matching %(query)s"
 msgstr "%(groupvalue)s %(groupname)s 浠诲姟鍗曞尮閰 %(query)s"
 
-#: trac/ticket/query.py:1184
+#: trac/ticket/query.py:1321
 #, python-format
 msgid "%(groupvalue)s %(groupname)s tickets:"
 msgstr "%(groupvalue)s %(groupname)s 浠诲姟鍗曪細"
 
-#: trac/ticket/report.py:145
+#: trac/ticket/report.py:150
 msgid "The report has been created."
 msgstr "鎶ヨ〃宸插垱寤恒"
 
-#: trac/ticket/report.py:157
+#: trac/ticket/report.py:162
 #, python-format
 msgid "The report {%(id)d} has been deleted."
 msgstr "鎶ヨ〃 {%(id)d} 宸插垹闄ゃ"
 
-#: trac/ticket/report.py:181
+#: trac/ticket/report.py:186
 #, python-format
 msgid "Delete Report {%(num)s} %(title)s"
 msgstr "鍒犻櫎鎶ヨ〃 {%(num)s} %(title)s"
 
-#: trac/ticket/report.py:186 trac/ticket/report.py:198
-#: trac/ticket/report.py:241
+#: trac/ticket/report.py:191 trac/ticket/report.py:203
+#: trac/ticket/report.py:253
 #, python-format
 msgid "Report %(num)s does not exist."
 msgstr "鎶ヨ〃 %(num)s 涓嶅瓨鍦."
 
-#: trac/ticket/report.py:187 trac/ticket/report.py:199
-#: trac/ticket/report.py:242
+#: trac/ticket/report.py:192 trac/ticket/report.py:204
+#: trac/ticket/report.py:254
 msgid "Invalid Report Number"
 msgstr "鏃犳晥鎶ヨ〃鍙"
 
-#: trac/ticket/report.py:211
+#: trac/ticket/report.py:216
 msgid "Create New Report"
 msgstr "鏂板缓鎶ヨ〃"
 
-#: trac/ticket/report.py:215
+#: trac/ticket/report.py:220
 #, python-format
 msgid "Edit Report {%(num)d} %(title)s"
 msgstr "缂栬緫鎶ヨ〃 {%(num)d} %(title)s"
 
-#: trac/ticket/report.py:232
-msgid "This is a list of available reports."
-msgstr "鏈夋晥鎶ヨ〃鍒楄〃."
-
-#: trac/ticket/report.py:247
+#: trac/ticket/report.py:259
 #, python-format
 msgid "Report failed: %(error)s"
 msgstr "鎶ヨ〃澶辫触: %(error)s"
 
-#: trac/ticket/report.py:262
+#: trac/ticket/report.py:274
 #, python-format
 msgid "When specified, the report number should be \"%(num)s\"."
 msgstr "褰撴寚瀹氬悗, 鎶ヨ〃鍙峰簲鏄 \"%(num)s\"."
 
-#: trac/ticket/report.py:313
+#: trac/ticket/report.py:325
 #, python-format
 msgid "Report execution failed: %(error)s"
 msgstr "鎶ヨ〃鎵ц澶辫触: %(error)s"
 
-#: trac/ticket/report.py:514
+#: trac/ticket/report.py:530
+msgid "SQL Query"
+msgstr "SQL鏌ヨ"
+
+#: trac/ticket/report.py:554
 #, python-format
 msgid "The following arguments are missing: %(args)s"
 msgstr "缂哄皯濡備笅鍙傛暟锛%(args)s"
 
-#: trac/ticket/report.py:533
-msgid "SQL Query"
-msgstr "SQL鏌ヨ"
-
-#: trac/ticket/report.py:547
+#: trac/ticket/report.py:568
 #, python-format
 msgid "Report %(num)s has no SQL query."
 msgstr "鎶ヨ〃 %(num)s 娌℃湁SQL鏌ヨ."
 
-#: trac/ticket/report.py:577
+#: trac/ticket/report.py:598
 #, python-format
 msgid "Query parameter \"sort=%(sort_col)s\"  is invalid"
 msgstr "鏌ヨ鍙傛暟 \"sort=%(sort_col)s\"  鏃犳晥"
 
-#: trac/ticket/roadmap.py:215
+#: trac/ticket/roadmap.py:208
+msgid "ticket status"
+msgstr "浠诲姟鍗曠姸鎬"
+
+#: trac/ticket/roadmap.py:208
+msgid "ticket"
+msgstr "浠诲姟鍗"
+
+#: trac/ticket/roadmap.py:208
+msgid "tickets"
+msgstr "浠诲姟鍗"
+
+#: trac/ticket/roadmap.py:218
 #, python-format
 msgid ""
 "'%(group1)s' and '%(group2)s' milestone groups both are declared to be "
 "\"catch-all\" groups. Please check your configuration."
 msgstr "'%(group1)s' 鍜 '%(group2)s' 閲岀▼纰戠粍閮藉０鏄庝负\"catch-all\" 缁. 璇锋鏌ユ偍鐨勯厤缃."
 
-#: trac/ticket/roadmap.py:231
+#: trac/ticket/roadmap.py:234
 #, python-format
 msgid ""
 "'%(groupname)s' milestone group reused status '%(status)s' already taken "
 "by other groups. Please check your configuration."
 msgstr "'%(groupname)s' 閲岀▼纰戠粍閲嶇敤浜嗗凡缁忚鍏跺畠缁勪娇鐢ㄧ殑鐘舵 '%(status)s'. 璇锋鏌ユ偍鐨勯厤缃."
 
-#: trac/ticket/roadmap.py:310 trac/ticket/roadmap.py:424
-#: trac/ticket/roadmap.py:559 trac/ticket/templates/roadmap.html:11
+#: trac/ticket/roadmap.py:317 trac/ticket/roadmap.py:433
+#: trac/ticket/roadmap.py:568 trac/ticket/templates/roadmap.html:11
 #: trac/ticket/templates/roadmap.html:16
 msgid "Roadmap"
 msgstr "璺嚎鍥"
 
-#: trac/ticket/roadmap.py:354
+#: trac/ticket/roadmap.py:361
 msgid "iCalendar"
 msgstr "iCalendar"
 
-#: trac/ticket/roadmap.py:433 trac/ticket/roadmap.py:829
+#: trac/ticket/roadmap.py:442 trac/ticket/roadmap.py:843
 #, python-format
 msgid "Milestone %(name)s"
 msgstr "閲岀▼纰 %(name)s"
 
-#: trac/ticket/roadmap.py:452
+#: trac/ticket/roadmap.py:461
 #, python-format
 msgid "Ticket #%(num)s: %(summary)s"
 msgstr "浠诲姟鍗 #%(num)s: %(summary)s"
 
-#: trac/ticket/roadmap.py:514
+#: trac/ticket/roadmap.py:523
 msgid "Milestones reached"
 msgstr "閲岀▼纰戣揪鎴"
 
-#: trac/ticket/roadmap.py:602
+#: trac/ticket/roadmap.py:611
 #, python-format
 msgid "The milestone \"%(name)s\" has been deleted."
 msgstr "閲岀▼纰 %(name)s 宸插垹闄ゃ"
 
-#: trac/ticket/roadmap.py:640
+#: trac/ticket/roadmap.py:651
 #, python-format
-msgid "Milestone \"%(name)s\" already exists, please choose another name"
+msgid "Milestone \"%(name)s\" already exists, please choose another name."
 msgstr "閲岀▼纰 \"%(name)s\" 宸茬粡瀛樺湪, 璇烽夋嫨鍏朵粬鍚嶇О"
 
-#: trac/ticket/roadmap.py:645
+#: trac/ticket/roadmap.py:654
 msgid "You must provide a name for the milestone."
 msgstr "鎮ㄥ繀椤讳负閲岀▼纰戞彁渚涘悕绉."
 
-#: trac/ticket/web_ui.py:173 trac/ticket/templates/ticket.html:17
+#: trac/ticket/web_ui.py:151 trac/ticket/templates/ticket.html:18
 msgid "New Ticket"
 msgstr "鏂板缓浠诲姟鍗"
 
-#: trac/ticket/web_ui.py:189
+#: trac/ticket/web_ui.py:167
 msgid "id can't be set for a new ticket request."
 msgstr "id涓嶈兘璁剧疆缁欐柊浠诲姟鍗曡姹."
 
-#: trac/ticket/web_ui.py:247
+#: trac/ticket/web_ui.py:225
 msgid "Opened and closed tickets"
 msgstr "寮鍚拰鍏抽棴鐨勪换鍔″崟"
 
-#: trac/ticket/web_ui.py:249
+#: trac/ticket/web_ui.py:227
 msgid "Ticket updates"
 msgstr "浠诲姟鍗曟洿鏂"
 
-#: trac/ticket/web_ui.py:255
+#: trac/ticket/web_ui.py:233
 msgid "created"
 msgstr "宸插垱寤"
 
-#: trac/ticket/web_ui.py:256
+#: trac/ticket/web_ui.py:234
 msgid "reopened"
 msgstr "宸查噸鏂版墦寮"
 
-#: trac/ticket/web_ui.py:257
+#: trac/ticket/web_ui.py:235
 msgid "closed"
 msgstr "宸插叧闂"
 
-#: trac/ticket/web_ui.py:258
+#: trac/ticket/web_ui.py:236
 msgid "updated"
 msgstr "宸插崌绾"
 
-#: trac/ticket/web_ui.py:354
+#: trac/ticket/web_ui.py:256
 #, python-format
+msgid "%(labels)s changed"
+msgid_plural "%(labels)s changed"
+msgstr[0] "%(labels)s 宸插彉鏇"
+msgstr[1] "%(labels)s 宸插彉鏇"
+
+#: trac/ticket/web_ui.py:336
+#, python-format
 msgid "Ticket %(ticketref)s (%(summary)s) %(verb)s"
 msgstr "浠诲姟鍗 %(ticketref)s (%(summary)s) %(verb)s"
 
-#: trac/ticket/web_ui.py:482
+#: trac/ticket/web_ui.py:490
 #, python-format
 msgid "Invalid action \"%(name)s\""
 msgstr "鏃犳晥鍔ㄤ綔: \"%(name)s\""
 
-#: trac/ticket/web_ui.py:601
+#: trac/ticket/web_ui.py:618
+msgid "Previous Ticket"
+msgstr "涓婁竴涓换鍔″崟"
+
+#: trac/ticket/web_ui.py:618
+msgid "Next Ticket"
+msgstr "涓嬩竴涓换鍔″崟"
+
+#: trac/ticket/web_ui.py:619
 msgid "Back to Query"
 msgstr "杩斿洖鏌ヨ"
 
-#: trac/ticket/web_ui.py:677 trac/ticket/web_ui.py:827
+#: trac/ticket/web_ui.py:695 trac/ticket/web_ui.py:843
+#: trac/ticket/web_ui.py:851
 msgid "Ticket History"
 msgstr "浠诲姟鍗曞巻鍙"
 
-#: trac/ticket/web_ui.py:722
+#: trac/ticket/web_ui.py:699 trac/ticket/web_ui.py:898
+#, python-format
+msgid "Back to Ticket #%(num)s"
+msgstr "鍥炲埌浠诲姟鍗 #%(num)s"
+
+#: trac/ticket/web_ui.py:741
 msgid "No differences to show"
 msgstr "娌℃湁宸紓"
 
-#: trac/ticket/web_ui.py:762 trac/ticket/web_ui.py:817
-#: trac/ticket/web_ui.py:825 trac/wiki/web_ui.py:378 trac/wiki/web_ui.py:384
-#: trac/wiki/web_ui.py:531 trac/wiki/web_ui.py:545
+#: trac/ticket/web_ui.py:784 trac/ticket/web_ui.py:840
+#: trac/ticket/web_ui.py:848 trac/ticket/web_ui.py:919
+#: trac/ticket/web_ui.py:956 trac/ticket/web_ui.py:963 trac/wiki/web_ui.py:375
+#: trac/wiki/web_ui.py:381 trac/wiki/web_ui.py:569 trac/wiki/web_ui.py:583
 #, python-format
 msgid "Version %(num)s"
 msgstr "鐗堟湰 %(num)s"
 
-#: trac/ticket/web_ui.py:765
+#: trac/ticket/web_ui.py:787 trac/ticket/web_ui.py:922
 msgid "initial"
 msgstr "鍒濆"
 
-#: trac/ticket/web_ui.py:827 trac/versioncontrol/web_ui/changeset.py:344
-#: trac/wiki/web_ui.py:397
-msgid "Change"
-msgstr "鍙樻洿"
+#: trac/ticket/web_ui.py:850 trac/ticket/web_ui.py:965
+#: trac/versioncontrol/web_ui/changeset.py:341 trac/wiki/web_ui.py:394
+msgid "Previous Change"
+msgstr "涓婁竴涓洿鏀"
 
-#: trac/ticket/web_ui.py:832
+#: trac/ticket/web_ui.py:850 trac/ticket/web_ui.py:965
+#: trac/versioncontrol/web_ui/changeset.py:341 trac/wiki/web_ui.py:394
+msgid "Next Change"
+msgstr "涓嬩竴涓洿鏀"
+
+#: trac/ticket/web_ui.py:856
 msgid "Ticket Diff"
 msgstr "浠诲姟鍗曞樊寮"
 
-#: trac/ticket/web_ui.py:904
+#: trac/ticket/web_ui.py:890 trac/ticket/web_ui.py:959
+#: trac/ticket/web_ui.py:966
+msgid "Ticket Comment History"
+msgstr "浠诲姟鍗曡瘎璁哄巻鍙"
+
+#: trac/ticket/web_ui.py:892 trac/ticket/web_ui.py:916
+#: trac/ticket/web_ui.py:973
+#, python-format
+msgid "Ticket #%(num)s, comment %(cnum)d"
+msgstr "浠诲姟鍗 #%(num)s, 璇勮 %(cnum)d"
+
+#: trac/ticket/web_ui.py:971
+msgid "Ticket Comment Diff"
+msgstr "浠诲姟鍗曡瘎璁哄樊寮"
+
+#: trac/ticket/web_ui.py:1057
+msgid "No permission to edit description."
+msgstr "鏃犳潈淇敼鎻忚堪銆"
+
+#: trac/ticket/web_ui.py:1060
 msgid "No permission to change ticket fields."
 msgstr "鏃犳潈淇敼浠诲姟鍗曞瓧娈."
 
-#: trac/ticket/web_ui.py:912
-msgid "No permissions to change ticket fields."
-msgstr "鏃犳潈淇敼浠诲姟鍗曞瓧娈."
-
-#: trac/ticket/web_ui.py:921
+#: trac/ticket/web_ui.py:1076
 msgid "No permissions to add a comment."
 msgstr "鏃犳潈澧炲姞璇勮."
 
-#: trac/ticket/web_ui.py:927
+#: trac/ticket/web_ui.py:1082
 msgid ""
 "Sorry, can not save your changes. This ticket has been modified by "
 "someone else since you started"
 msgstr "瀵逛笉璧, 鏃犳硶淇濆瓨鎮ㄧ殑淇敼. 璇ヤ换鍔″崟宸茬粡琚叾浠栦汉淇敼"
 
-#: trac/ticket/web_ui.py:934
+#: trac/ticket/web_ui.py:1089
 msgid "Tickets must contain a summary."
 msgstr "浠诲姟鍗曞繀椤绘湁姒傝堪."
 
-#: trac/ticket/web_ui.py:957
+#: trac/ticket/web_ui.py:1112
 #, python-format
 msgid "Ticket description is too long (must be less than %(num)s characters)"
 msgstr "浠诲姟鍗曟弿杩板お闀(蹇呴』灏戜簬 %(num)s 涓瓧绗)"
 
-#: trac/ticket/web_ui.py:964
+#: trac/ticket/web_ui.py:1119
 #, python-format
 msgid "Ticket comment is too long (must be less than %(num)s characters)"
 msgstr "浠诲姟鍗曡瘎璁哄お闀(蹇呴』灏戜簬 %(num)s 涓瓧绗)"
 
-#: trac/ticket/web_ui.py:979
+#: trac/ticket/web_ui.py:1134
 msgid "Invalid comment threading identifier"
 msgstr "鏃犳晥璇勮绾跨储鏍囪瘑"
 
-#: trac/ticket/web_ui.py:986
+#: trac/ticket/web_ui.py:1141
 #, python-format
 msgid "The ticket field '%(field)s' is invalid: %(message)s"
 msgstr "浠诲姟鍗曞瓧娈 '%(field)s' 鏃犳晥: %(message)s"
 
-#: trac/ticket/web_ui.py:1136
-msgid "Assign to"
-msgstr "鎸囨淳缁"
+#: trac/ticket/web_ui.py:1160
+#, python-format
+msgid ""
+"The ticket has been created, but an error occurred while sending "
+"notifications: %(message)s"
+msgstr "璇ヤ换鍔″崟宸插垱寤猴紝浣嗗湪鍙戦侀偖浠堕氱煡鏃跺彂鐢熼敊璇細 %(message)s"
 
-#: trac/ticket/web_ui.py:1166
+#: trac/ticket/web_ui.py:1170
+#, python-format
+msgid ""
+"Your ticket %(ticketref)s has been created, but you don't have permission"
+" to view it."
+msgstr "浣犵殑浠诲姟鍗 %(ticketref)s 宸茬粡鍒涘缓锛屼絾浣犳病鏈夋潈闄愭煡鐪嬪畠銆"
+
+#. TRANSLATOR: The 'change' has been saved... (link)
+#: trac/ticket/web_ui.py:1201
+msgid "change"
+msgstr "鍙樻洿"
+
+#: trac/ticket/web_ui.py:1207
+#, python-format
+msgid ""
+"The %(change)s has been saved, but an error occurred while sending "
+"notifications: %(message)s"
+msgstr "%(change)s宸蹭繚瀛橈紝浣嗗湪鍙戦侀偖浠堕氱煡鏃跺彂鐢熼敊璇細 %(message)s"
+
+#: trac/ticket/web_ui.py:1339
 msgid "Add to Cc"
 msgstr "澧炲姞鎶勯"
 
-#: trac/ticket/web_ui.py:1167
+#: trac/ticket/web_ui.py:1340
 msgid "Remove from Cc"
 msgstr "鍒犻櫎鎶勯"
 
-#: trac/ticket/web_ui.py:1168
+#: trac/ticket/web_ui.py:1341
 msgid "Add/Remove from Cc"
 msgstr "澧炲姞/鍒犻櫎鎶勯"
 
-#: trac/ticket/web_ui.py:1169
+#: trac/ticket/web_ui.py:1342
 msgid "<Author field>"
 msgstr "<Author field>"
 
-#: trac/ticket/web_ui.py:1190 trac/ticket/templates/query.html:91
+#: trac/ticket/web_ui.py:1363 trac/ticket/templates/query.html:103
 msgid "yes"
 msgstr "鏄"
 
-#: trac/ticket/web_ui.py:1190 trac/ticket/templates/query.html:94
+#: trac/ticket/web_ui.py:1363 trac/ticket/templates/query.html:106
 msgid "no"
 msgstr "鍚"
 
-#: trac/ticket/web_ui.py:1383 trac/versioncontrol/templates/changeset.html:130
+#: trac/ticket/web_ui.py:1554 trac/versioncontrol/templates/changeset.html:135
 msgid "modified"
 msgstr "宸蹭慨鏀"
 
@@ -2562,7 +2790,7 @@
 msgstr "閲嶆柊鍏宠仈鐩稿叧浠诲姟鍗曞埌閲岀▼纰"
 
 #: trac/ticket/templates/milestone_delete.html:41
-#: trac/ticket/templates/milestone_view.html:100
+#: trac/ticket/templates/milestone_view.html:105
 msgid "Delete milestone"
 msgstr "鍒犻櫎閲岀▼纰"
 
@@ -2574,178 +2802,193 @@
 msgstr "[1:娉ㄦ剰:] 浣跨敤璺嚎鍥剧殑甯姪鍙傝 [2:TracRoadmap]銆"
 
 #: trac/ticket/templates/milestone_edit.html:11
-#: trac/ticket/templates/milestone_edit.html:37
+#: trac/ticket/templates/milestone_edit.html:36
 msgid "Edit Milestone"
 msgstr "缂栬緫閲岀▼纰"
 
 #: trac/ticket/templates/milestone_edit.html:12
-#: trac/ticket/templates/milestone_edit.html:38
+#: trac/ticket/templates/milestone_edit.html:37
 msgid "New Milestone"
 msgstr "鏂板缓閲岀▼纰"
 
-#: trac/ticket/templates/milestone_edit.html:45
+#: trac/ticket/templates/milestone_edit.html:44
 msgid "Name of the milestone:"
 msgstr "閲岀▼纰戝悕绉:"
 
-#: trac/ticket/templates/milestone_edit.html:50
+#: trac/ticket/templates/milestone_edit.html:49
 msgid "Schedule"
 msgstr "鏃堕棿琛"
 
-#: trac/ticket/templates/milestone_edit.html:71
+#: trac/ticket/templates/milestone_edit.html:70
 msgid "Retarget associated open tickets to milestone:"
 msgstr "閲嶆寚瀹氬叧鑱旀椿鍔ㄤ换鍔″崟鍒伴噷绋嬬"
 
-#: trac/ticket/templates/milestone_edit.html:92
-#: trac/ticket/templates/ticket.html:403 trac/wiki/templates/wiki_edit.html:119
-#: trac/wiki/templates/wiki_edit.html:124
+#: trac/ticket/templates/milestone_edit.html:91
+#: trac/ticket/templates/ticket.html:107 trac/ticket/templates/ticket.html:497
+#: trac/wiki/templates/wiki_edit_form.html:70
+#: trac/wiki/templates/wiki_edit_form.html:75
 msgid "Submit changes"
 msgstr "鎻愪氦鍙樻洿"
 
-#: trac/ticket/templates/milestone_edit.html:93
+#: trac/ticket/templates/milestone_edit.html:92
 msgid "Add milestone"
 msgstr "澧炲姞閲岀▼纰"
 
-#: trac/ticket/templates/milestone_edit.html:98
-#: trac/ticket/templates/milestone_view.html:106
-#: trac/ticket/templates/roadmap.html:70
+#: trac/ticket/templates/milestone_edit.html:97
+#: trac/ticket/templates/milestone_view.html:111
+#: trac/ticket/templates/roadmap.html:76
 msgid ""
 "[1:Note:] See\n"
 "        [2:TracRoadmap] for help on using\n"
 "        the roadmap."
 msgstr "[1:娉ㄦ剰:] 浣跨敤璺嚎鍥剧殑甯姪鍙傝 [2:TracRoadmap]銆"
 
-#: trac/ticket/templates/milestone_view.html:11
-#: trac/ticket/templates/milestone_view.html:23
-msgid "Milestone"
-msgstr "閲岀▼纰"
+#: trac/ticket/templates/milestone_view.html:26
+#, python-format
+msgid ""
+"Completed %(duration)s ago\n"
+"              (%(date)s)"
+msgstr ""
+"浜 %(duration)s 鍓嶅畬鎴怽n"
+"              (%(date)s)"
 
-#: trac/ticket/templates/milestone_view.html:27
+#: trac/ticket/templates/milestone_view.html:32
+#, python-format
 msgid ""
-"ago\n"
-"            ("
+"[1:%(duration)s late]\n"
+"              (%(date)s)"
 msgstr ""
-"鍓峔n"
-"            ("
+"[1:婊炲悗 %(duration)s]\n"
+"              (%(date)s)"
 
-#: trac/ticket/templates/milestone_view.html:31
-#: trac/ticket/templates/roadmap.html:42
-msgid "late"
-msgstr "寤舵湡"
+#: trac/ticket/templates/milestone_view.html:38
+#, python-format
+msgid ""
+"Due in %(duration)s\n"
+"              (%(date)s)"
+msgstr ""
+"Due in %(duration)s\n"
+"              (%(date)s)"
 
-#: trac/ticket/templates/milestone_view.html:34
-#: trac/ticket/templates/roadmap.html:45
-msgid "Due in"
-msgstr "鍓╀綑"
-
-#: trac/ticket/templates/milestone_view.html:38
-#: trac/ticket/templates/roadmap.html:49
+#: trac/ticket/templates/milestone_view.html:43
+#: trac/ticket/templates/roadmap.html:55
 msgid "No date set"
 msgstr "娌℃湁璁剧疆鏃ユ湡"
 
-#: trac/ticket/templates/milestone_view.html:48
+#: trac/ticket/templates/milestone_view.html:53
 #: trac/timeline/templates/timeline.html:44
 msgid "by"
-msgstr ": "
+msgstr "鎸: "
 
-#: trac/ticket/templates/milestone_view.html:62
+#: trac/ticket/templates/milestone_view.html:67
 msgid "(none)"
 msgstr "(鏃)"
 
-#: trac/ticket/templates/milestone_view.html:94
+#: trac/ticket/templates/milestone_view.html:99
 msgid "Edit milestone"
 msgstr "缂栬緫閲岀▼纰"
 
 #: trac/ticket/templates/query.html:29
-#: trac/ticket/templates/query_results.html:29
+#: trac/ticket/templates/query_results.html:30
+#: trac/ticket/templates/report_view.html:94
 #, python-format
 msgid "%(num)s match"
 msgid_plural "%(num)s matches"
-msgstr[0] "%(num)s鍖归厤"
-msgstr[1] "%(num)s鍖归厤"
+msgstr[0] "%(num)s澶勫尮閰"
+msgstr[1] "%(num)s澶勫尮閰"
 
-#: trac/ticket/templates/query.html:39
+#: trac/ticket/templates/query.html:38
 msgid "Filters"
 msgstr "杩囨护鍣"
 
-#: trac/ticket/templates/query.html:40
+#: trac/ticket/templates/query.html:39
 msgid "Query filters"
 msgstr "鏌ヨ杩囨护鍣"
 
-#: trac/ticket/templates/query.html:124
-msgid "Add filter"
-msgstr "澧炲姞杩囨护鍣"
+#: trac/ticket/templates/query.html:45 trac/ticket/templates/query.html:142
+msgid "Or"
+msgstr "鎴"
 
-#: trac/ticket/templates/query.html:144
+#: trac/ticket/templates/query.html:128
+msgid "And"
+msgstr "鍜"
+
+#: trac/ticket/templates/query.html:163
 msgid "Columns"
 msgstr "鍒"
 
-#: trac/ticket/templates/query.html:158
+#: trac/ticket/templates/query.html:177
 msgid "Group results by"
 msgstr "缁撴灉鍒嗙粍"
 
-#: trac/ticket/templates/query.html:169
+#: trac/ticket/templates/query.html:188
 msgid "descending"
 msgstr "闄嶅簭"
 
-#: trac/ticket/templates/query.html:173
+#: trac/ticket/templates/query.html:192
 msgid "Show under each result:"
 msgstr "鍦ㄦ瘡涓粨鏋滀笅鏄剧ず:"
 
-#: trac/ticket/templates/query.html:183
+#: trac/ticket/templates/query.html:202
 #: trac/ticket/templates/report_view.html:27
 msgid "Max items per page"
 msgstr "姣忛〉鏈澶氭潯鐩"
 
-#: trac/ticket/templates/query.html:226
+#: trac/ticket/templates/query.html:245
 msgid "Edit query"
 msgstr "缂栬緫鏌ヨ"
 
-#: trac/ticket/templates/query.html:234
+#: trac/ticket/templates/query.html:253
 msgid "Save query"
 msgstr "淇濆瓨鏌ヨ"
 
-#: trac/ticket/templates/query.html:234
+#: trac/ticket/templates/query.html:253
 #, python-format
 msgid "Save updated query in report {%(id)s}"
 msgstr "鍦ㄦ姤琛 {%(id)s} 涓繚瀛樻洿鏂扮殑鏌ヨ"
 
-#: trac/ticket/templates/query.html:234
+#: trac/ticket/templates/query.html:253
 msgid "Create new report from current query"
 msgstr "鐢ㄥ綋鍓嶆煡璇㈠垱寤烘柊鐨"
 
-#: trac/ticket/templates/query.html:243
+#: trac/ticket/templates/query.html:261
 msgid "Delete query"
 msgstr "鍒犻櫎鏌ヨ"
 
-#: trac/ticket/templates/query.html:249
+#: trac/ticket/templates/query.html:267
 msgid ""
 "[1:Note:] See [2:TracQuery]\n"
 "        for help on using queries."
 msgstr "[1:娉ㄦ剰锛歖鏈夊叧浣跨敤鏌ヨ鐨勫府鍔╁弬瑙乕2:TracQuery]"
 
-#: trac/ticket/templates/query_results.html:44
+#: trac/ticket/templates/query_results.html:45
 msgid "No tickets found"
 msgstr "娌℃湁鍖归厤鐨勪换鍔″崟"
 
-#: trac/ticket/templates/query_results.html:58
-#: trac/ticket/templates/query_results.html:60
+#: trac/ticket/templates/query_results.html:59
+#: trac/ticket/templates/query_results.html:61
 msgid "View ticket"
 msgstr "鏌ョ湅浠诲姟鍗"
 
-#: trac/ticket/templates/query_results.html:65
-#: trac/ticket/templates/report_view.html:183
+#: trac/ticket/templates/query_results.html:66
+#: trac/ticket/templates/report_view.html:176
 msgid "View milestone"
 msgstr "鏌ョ湅閲岀▼纰"
 
-#: trac/ticket/templates/query_results.html:76
-msgid "Reported by"
-msgstr "姹囨姤浜"
+#: trac/ticket/templates/query_results.html:77
+#, python-format
+msgid ""
+"Reported by [1:%(author)s],\n"
+"                      %(date)s ago."
+msgstr ""
+"鐢 [1:%(author)s] 鎶ュ憡,\n"
+"                      %(date)s鍓嶃"
 
-#: trac/ticket/templates/query_results.html:83
+#: trac/ticket/templates/query_results.html:84
 msgid "(this ticket)"
 msgstr "(鏈换鍔″崟)"
 
-#: trac/ticket/templates/query_results.html:99
+#: trac/ticket/templates/query_results.html:100
 msgid "(more results for this group on next page)"
 msgstr "(涓嬮〉鏈夋洿澶氱粨鏋)"
 
@@ -2754,13 +2997,15 @@
 msgstr "纭畾鍒犻櫎姝ゆ姤琛ㄥ悧?"
 
 #: trac/ticket/templates/report_delete.html:22
+#: trac/ticket/templates/report_list.html:36
 #: trac/ticket/templates/report_view.html:82
 msgid "Delete report"
 msgstr "鍒犻櫎鎶ヨ〃"
 
 #: trac/ticket/templates/report_delete.html:26
-#: trac/ticket/templates/report_edit.html:48
-#: trac/ticket/templates/report_view.html:218
+#: trac/ticket/templates/report_edit.html:47
+#: trac/ticket/templates/report_list.html:54
+#: trac/ticket/templates/report_view.html:201
 msgid ""
 "[1:Note:]\n"
 "        See [2:TracReports] for help on using and creating reports."
@@ -2784,9 +3029,58 @@
 msgid "Save report"
 msgstr "淇濆瓨鎶ヨ〃"
 
+#: trac/ticket/templates/report_list.html:18
+msgid "This is a list of available reports."
+msgstr "鏈夋晥鎶ヨ〃鍒楄〃."
+
+#: trac/ticket/templates/report_list.html:25
+msgid "Report"
+msgstr "鎶ヨ〃"
+
+#: trac/ticket/templates/report_list.html:26 trac/wiki/admin.py:196
+msgid "Title"
+msgstr "鏍囬"
+
+#: trac/ticket/templates/report_list.html:27
+#: trac/wiki/templates/wiki_edit.html:68
+msgid "Actions"
+msgstr "鍔ㄤ綔"
+
+#: trac/ticket/templates/report_list.html:32
+#: trac/ticket/templates/report_list.html:33
+#: trac/ticket/templates/report_view.html:129
+msgid "View report"
+msgstr "鏌ョ湅鎶ヨ〃"
+
+#: trac/ticket/templates/report_list.html:34
+#: trac/ticket/templates/report_view.html:70
+msgid "Edit report"
+msgstr "缂栬緫鎶ヨ〃"
+
+#: trac/ticket/templates/report_list.html:35
+#: trac/ticket/templates/ticket.html:269 trac/wiki/templates/wiki_edit.html:124
+msgid "Edit"
+msgstr "缂栬緫"
+
+#: trac/ticket/templates/report_list.html:37
+#: trac/wiki/templates/wiki_delete.html:22
+msgid "Delete"
+msgstr "鍒犻櫎"
+
+#: trac/ticket/templates/report_list.html:40
+msgid "No reports available."
+msgstr "娌℃湁鍙敤鐨勬姤琛ㄣ"
+
+#: trac/ticket/templates/report_list.html:49
+msgid "Create new report"
+msgstr "鏂板缓鎶ヨ〃"
+
 #: trac/ticket/templates/report_view.html:21
-msgid "matches)"
-msgstr "鍖归厤)"
+#, python-format
+msgid "%(num)d match"
+msgid_plural "%(num)d matches"
+msgstr[0] "%(num)d涓尮閰"
+msgstr[1] "%(num)d涓尮閰"
 
 #: trac/ticket/templates/report_view.html:42
 msgid "Arguments"
@@ -2796,27 +3090,14 @@
 msgid "Report arguments"
 msgstr "鎶ヨ〃鍙傛暟"
 
-#: trac/ticket/templates/report_view.html:70
-msgid "Edit report"
-msgstr "缂栬緫鎶ヨ〃"
-
 #: trac/ticket/templates/report_view.html:76
 msgid "Copy report"
 msgstr "澶嶅埗鎶ヨ〃"
 
 #: trac/ticket/templates/report_view.html:94
-msgid "match"
-msgstr "鍖归厤"
+msgid "No matches"
+msgstr "娌℃湁鍖归厤缁撴灉"
 
-#: trac/ticket/templates/report_view.html:128
-#: trac/ticket/templates/report_view.html:135
-msgid "View report"
-msgstr "鏌ョ湅鎶ヨ〃"
-
-#: trac/ticket/templates/report_view.html:210
-msgid "Create new report"
-msgstr "鏂板缓鎶ヨ〃"
-
 #: trac/ticket/templates/roadmap.html:22
 msgid "Show already completed milestones"
 msgstr "鏄剧ず宸插畬鎴愰噷绋嬬"
@@ -2826,174 +3107,235 @@
 msgstr "閲岀▼纰:"
 
 #: trac/ticket/templates/roadmap.html:38
+#, python-format
 msgid ""
-"ago\n"
-"                ("
+"Completed %(duration)s ago\n"
+"                  (%(date)s)"
 msgstr ""
-"鍓峔n"
-"                ("
+"浜 %(duration)s 鍓嶅畬鎴怽n"
+"                  (%(date)s)"
 
-#: trac/ticket/templates/roadmap.html:66
+#: trac/ticket/templates/roadmap.html:44
+#, python-format
+msgid ""
+"[1:%(duration)s late]\n"
+"                  (%(date)s)"
+msgstr ""
+"[1:婊炲悗 %(duration)s]\n"
+"                  (%(date)s)"
+
+#: trac/ticket/templates/roadmap.html:50
+#, python-format
+msgid ""
+"Due in %(duration)s\n"
+"                  (%(date)s)"
+msgstr ""
+"Due in %(duration)s\n"
+"                  (%(date)s)"
+
+#: trac/ticket/templates/roadmap.html:72
 msgid "Add new milestone"
 msgstr "鏂板缓閲岀▼纰"
 
-#: trac/ticket/templates/ticket.html:59
-#: trac/versioncontrol/templates/changeset.html:128
+#: trac/ticket/templates/ticket.html:83
+#: trac/versioncontrol/templates/changeset.html:133
 msgid "added"
 msgstr "澧炲姞"
 
-#: trac/ticket/templates/ticket.html:63
+#: trac/ticket/templates/ticket.html:87
 msgid "changed from"
 msgstr "鍙樻洿鑷"
 
-#: trac/ticket/templates/ticket.html:66
-#: trac/versioncontrol/templates/browser.html:135
+#: trac/ticket/templates/ticket.html:90
+#: trac/versioncontrol/templates/browser.html:139
 msgid "set to"
 msgstr "璁剧疆涓"
 
-#: trac/ticket/templates/ticket.html:70
+#: trac/ticket/templates/ticket.html:94
 msgid "deleted"
 msgstr "鍒犻櫎"
 
-#: trac/ticket/templates/ticket.html:84
+#: trac/ticket/templates/ticket.html:106 trac/ticket/templates/ticket.html:496
+#: trac/wiki/templates/wiki_edit.html:70 trac/wiki/templates/wiki_edit.html:128
+#: trac/wiki/templates/wiki_edit_form.html:39
+#: trac/wiki/templates/wiki_edit_form.html:68
+msgid "Preview"
+msgstr "棰勮"
+
+#: trac/ticket/templates/ticket.html:108
+msgid "Cancel comment edit"
+msgstr "鏀惧純缂栬緫璇勮"
+
+#: trac/ticket/templates/ticket.html:134
+msgid "Go to the ticket editor"
+msgstr "杞埌浠诲姟鍗曠紪杈戝櫒"
+
+#: trac/ticket/templates/ticket.html:138
 msgid "Ticket #"
 msgstr "浠诲姟鍗 #"
 
-#: trac/ticket/templates/ticket.html:88
-msgid "Create New Ticket"
-msgstr "鍒涘缓鏂颁换鍔″崟"
-
-#: trac/ticket/templates/ticket.html:99 trac/ticket/templates/ticket.html:102
+#: trac/ticket/templates/ticket.html:144 trac/ticket/templates/ticket.html:147
 msgid "鈥 at"
 msgstr "鈥 浜"
 
-#: trac/ticket/templates/ticket.html:113
-msgid "Preview ("
-msgstr "棰勮 ("
+#: trac/ticket/templates/ticket.html:152
+msgid "Create New Ticket"
+msgstr "鍒涘缓鏂颁换鍔″崟"
 
-#: trac/ticket/templates/ticket.html:113 trac/wiki/templates/wiki_edit.html:52
-msgid "skip"
-msgstr "璺宠繃"
-
-#: trac/ticket/templates/ticket.html:118 trac/ticket/templates/ticket.html:217
-msgid "in reply to:"
-msgstr "鍥炲鍒:"
-
-#: trac/ticket/templates/ticket.html:120
-msgid "Changed by"
-msgstr "淇敼鑰"
-
-#: trac/ticket/templates/ticket.html:131
-msgid "Opened"
-msgstr "寮鍚簬"
-
-#: trac/ticket/templates/ticket.html:131 trac/ticket/templates/ticket.html:132
-msgid "ago"
-msgstr "鍓"
-
-#: trac/ticket/templates/ticket.html:131
+#: trac/ticket/templates/ticket.html:160
 #, python-format
 msgid "Opened %(created)s ago"
 msgstr "寮鍚簬 %(created)s 鍓"
 
-#: trac/ticket/templates/ticket.html:132
-msgid "Last modified"
-msgstr "鏈鍚庝慨鏀逛簬"
-
-#: trac/ticket/templates/ticket.html:132
+#: trac/ticket/templates/ticket.html:161
 #, python-format
 msgid "Last modified %(modified)s ago"
 msgstr "鏈鍚庝慨鏀逛簬 %(modified)s 鍓"
 
-#: trac/ticket/templates/ticket.html:133
+#: trac/ticket/templates/ticket.html:162
 msgid "(ticket not yet created)"
 msgstr "(杩樻病鏈夊垱寤轰换鍔″崟)"
 
-#: trac/ticket/templates/ticket.html:142
+#: trac/ticket/templates/ticket.html:170
 msgid "Reported by:"
 msgstr "姹囨姤浜:"
 
-#: trac/ticket/templates/ticket.html:146
+#: trac/ticket/templates/ticket.html:174
 msgid "Owned by:"
 msgstr "灞炰富:"
 
-#: trac/ticket/templates/ticket.html:176
+#: trac/ticket/templates/ticket.html:203
 msgid "(last modified by"
 msgstr "(鏈鏂颁慨鏀硅"
 
-#: trac/ticket/templates/ticket.html:178
+#: trac/ticket/templates/ticket.html:205 trac/ticket/templates/ticket.html:291
 msgid "diff"
 msgstr "宸紓"
 
-#: trac/ticket/templates/ticket.html:189 trac/ticket/templates/ticket.html:231
+#: trac/ticket/templates/ticket.html:214 trac/ticket/templates/ticket.html:263
 msgid "Reply"
 msgstr "鍥炲"
 
-#: trac/ticket/templates/ticket.html:189
+#: trac/ticket/templates/ticket.html:214
 msgid "Reply, quoting this description"
 msgstr "鍥炲, 寮曠敤姝ゆ弿杩"
 
-#: trac/ticket/templates/ticket.html:208
+#: trac/ticket/templates/ticket.html:232
 msgid "Change History"
 msgstr "鍙樻洿鍘嗗彶"
 
-#: trac/ticket/templates/ticket.html:221
+#: trac/ticket/templates/ticket.html:247 trac/ticket/templates/ticket.html:324
+msgid "in reply to:"
+msgstr "鍥炲鍒:"
+
+#: trac/ticket/templates/ticket.html:251
 msgid "follow-up"
 msgstr "璺熼殢"
 
-#: trac/ticket/templates/ticket.html:227
+#: trac/ticket/templates/ticket.html:257
 #, python-format
-msgid "%(date)s ago by"
-msgstr "浜%(date)s鍓嶏紝鎿嶄綔鑰: "
+msgid "Changed %(date)s ago by %(author)s"
+msgstr "鐢 %(author)s 鍦 %(date)s 鍓嶅彉鏇"
 
-#: trac/ticket/templates/ticket.html:246
-msgid "Add/Change #"
-msgstr "澧炲姞/淇敼 #"
+#: trac/ticket/templates/ticket.html:276
+#, python-format
+msgid ""
+"Version %(version)s, edited %(date)s ago\n"
+"                      by %(author)s"
+msgstr ""
+"鐗堟湰 %(version)s, %(date)s 鐢盶n"
+"                      %(author)s 缂栬緫"
 
-#: trac/ticket/templates/ticket.html:262 trac/wiki/templates/wiki_edit.html:98
-msgid "E-mail address and user name can be saved in the"
-msgstr "E-mail鍦板潃鍜岀敤鎴峰悕鍙互淇濆瓨鍦"
+#: trac/ticket/templates/ticket.html:280
+#, python-format
+msgid ""
+"Last edited %(date)s ago\n"
+"                      by %(author)s"
+msgstr "鐢 %(author)s 浜 %(date)s 鍓嶆渶鍚庝竴娆＄紪杈"
 
-#: trac/ticket/templates/ticket.html:269
+#: trac/ticket/templates/ticket.html:285
+#: trac/versioncontrol/templates/changeset.html:92
+msgid "previous"
+msgstr "涓婁竴涓"
+
+#: trac/ticket/templates/ticket.html:288
+msgid "next"
+msgstr "涓嬩竴涓"
+
+#: trac/ticket/templates/ticket.html:307
+msgid "View ticket fields and description"
+msgstr "鏌ョ湅浠诲姟鍗曞瓧娈靛拰鎻忚堪"
+
+#: trac/ticket/templates/ticket.html:307
+msgid "View"
+msgstr "棰勮"
+
+#: trac/ticket/templates/ticket.html:310
+msgid "Add a comment"
+msgstr "娣诲姞璇勮"
+
+#: trac/ticket/templates/ticket.html:314
 msgid ""
-"Comment (you may use\n"
+"You may use\n"
 "              [1:WikiFormatting]\n"
-"              here):"
-msgstr "璇勮(鎮ㄥ彲浠ヤ娇鐢╗1:WikiFormatting]): "
+"              here."
+msgstr ""
+"鎮ㄥ彲浠ュ湪姝ゅ\n"
+"\"\n"
+"\"              浣跨敤\n"
+"\"\n"
+"\"              [1:WikiFormatting]銆"
 
-#: trac/ticket/templates/ticket.html:282
+#: trac/ticket/templates/ticket.html:326
+msgid "Changed by"
+msgstr "淇敼鑰"
+
+#: trac/ticket/templates/ticket.html:334
+msgid "Modify Ticket"
+msgstr "淇敼浠诲姟鍗"
+
+#: trac/ticket/templates/ticket.html:340
+msgid "Change Properties"
+msgstr "鏀瑰彉灞炴"
+
+#: trac/ticket/templates/ticket.html:341
 msgid "Properties"
 msgstr "灞炴"
 
-#: trac/ticket/templates/ticket.html:285
+#: trac/ticket/templates/ticket.html:345
 msgid "Summary:"
-msgstr "姒傝:"
+msgstr "姒傝堪:"
 
-#: trac/ticket/templates/ticket.html:293
+#: trac/ticket/templates/ticket.html:353
 msgid "Reporter:"
-msgstr "姹囨姤浜:"
+msgstr "鎶ュ憡浜:"
 
-#: trac/ticket/templates/ticket.html:353
+#: trac/ticket/templates/ticket.html:413
 msgid "This checkbox allows you to add or remove yourself from the CC list."
 msgstr "鎮ㄥ彲浠ヤ娇鐢ㄦ澶嶉夋灏嗚嚜宸卞姞鍏ュ埌鎶勯佸垪琛ㄤ腑鎴栦粠涓Щ闄ゃ"
 
-#: trac/ticket/templates/ticket.html:359
+#: trac/ticket/templates/ticket.html:419
 msgid "Space or comma delimited email addresses and usernames are accepted."
 msgstr "鍙互鎺ュ彈浣跨敤绌烘牸鎴栭楀彿闅斿紑鐨別mail鍦板潃鎴栫敤鎴峰悕銆"
 
-#: trac/ticket/templates/ticket.html:391
+#: trac/ticket/templates/ticket.html:472
+#: trac/wiki/templates/wiki_edit_form.html:49
+msgid "E-mail address and user name can be saved in the"
+msgstr "E-mail鍦板潃鍜岀敤鎴峰悕鍙互淇濆瓨鍦"
+
+#: trac/ticket/templates/ticket.html:481
 msgid "I have files to attach to this ticket"
 msgstr "鎴戞湁鏂囦欢闇瑕侀檮鍔犲埌浠诲姟鍗"
 
-#: trac/ticket/templates/ticket.html:402 trac/wiki/templates/wiki_edit.html:117
-msgid "Preview"
-msgstr "棰勮"
+#: trac/ticket/templates/ticket.html:487
+msgid "Go to the list of attachments"
+msgstr "杞埌闄勪欢鍒楄〃"
 
-#: trac/ticket/templates/ticket.html:403
+#: trac/ticket/templates/ticket.html:497
 msgid "Create ticket"
 msgstr "鍒涘缓鏂颁换鍔″崟"
 
-#: trac/ticket/templates/ticket.html:408
+#: trac/ticket/templates/ticket.html:502
 msgid ""
 "[1:Note:] See\n"
 "        [2:TracTickets] for help on using\n"
@@ -3016,28 +3358,49 @@
 "-- \n"
 "浠诲姟鍗 URL: <"
 
-#: trac/timeline/web_ui.py:77 trac/timeline/templates/timeline.html:11
+#: trac/timeline/web_ui.py:75 trac/timeline/templates/timeline.html:11
 #: trac/timeline/templates/timeline.html:17
 msgid "Timeline"
 msgstr "鏃堕棿绾"
 
-#: trac/timeline/web_ui.py:229
-msgid "Previous period"
+#: trac/timeline/web_ui.py:227 trac/timeline/web_ui.py:235
+msgid "Previous Period"
 msgstr "涓婁竴鍛ㄦ湡"
 
-#: trac/timeline/web_ui.py:236
-msgid "Next period"
+#: trac/timeline/web_ui.py:234 trac/timeline/web_ui.py:235
+msgid "Next Period"
 msgstr "涓嬩竴鍛ㄦ湡"
 
-#: trac/timeline/web_ui.py:237
-msgid "Period"
-msgstr "鍛ㄦ湡"
-
-#: trac/timeline/web_ui.py:297
+#: trac/timeline/web_ui.py:295
 #, python-format
 msgid "%(date)s in Timeline"
 msgstr "鏃堕棿绾夸腑鐨%(date)s"
 
+#. TRANSLATOR: other_events
+#: trac/timeline/web_ui.py:343
+msgid "other kind of events"
+msgstr "鍏朵粬绫诲瀷浜嬩欢"
+
+#: trac/timeline/web_ui.py:348
+#, python-format
+msgid "Event provider %(name)s failed for filters %(kinds)s: "
+msgstr "浜嬩欢鎻愪緵鑰 %(name)s 澶辨晥锛岃繃婊ゅ櫒绫诲瀷涓 %(kinds)s锛"
+
+#: trac/timeline/web_ui.py:354
+#, python-format
+msgid ""
+"\n"
+"              You may want to see the %(other_events)s from the Timeline "
+"or \n"
+"              notify your Trac administrator about the error (detailed\n"
+"              informations were written to the log).\n"
+"            "
+msgstr ""
+"\n"
+"              涔熻浣犳兂瑕佷粠鏃堕棿绾夸腑鏌ョ湅 %(other_events)s 鎴栬匼n"
+"              灏嗛敊璇氱煡浣犵殑Trac绠＄悊鍛橈紙璇︾粏淇℃伅宸插啓鍏ユ棩蹇楋級銆俓n"
+"            "
+
 #: trac/timeline/templates/timeline.html:20
 msgid ""
 "[1:View changes from [2:]] [3:]\n"
@@ -3047,7 +3410,7 @@
 "\n"
 "[1:鏌ョ湅[2:]] [3:]涔嬪墠\n"
 "[4:[5:]澶[6:]\n"
-"[7:鐢盵8:]瀹屾垚]杩涜鐨勫彉鏇"
+"[7:鐢盵8:]]杩涜鐨勫彉鏇"
 
 #: trac/timeline/templates/timeline.html:37
 msgid "Today"
@@ -3063,6 +3426,55 @@
 "        for information about the timeline view."
 msgstr "[1:娉ㄦ剰:] 鏃堕棿绾胯鍥剧殑鐩稿叧淇℃伅鍙傝[2:TracTimeline]銆"
 
+#: trac/util/datefmt.py:68
+#, python-format
+msgid "%(num)d year"
+msgid_plural "%(num)d years"
+msgstr[0] "%(num)d 骞"
+msgstr[1] "%(num)d 骞"
+
+#: trac/util/datefmt.py:69
+#, python-format
+msgid "%(num)d month"
+msgid_plural "%(num)d months"
+msgstr[0] "%(num)d 涓湀"
+msgstr[1] "%(num)d 涓湀"
+
+#: trac/util/datefmt.py:70
+#, python-format
+msgid "%(num)d week"
+msgid_plural "%(num)d weeks"
+msgstr[0] "%(num)d 鍛"
+msgstr[1] "%(num)d 鍛"
+
+#: trac/util/datefmt.py:71
+#, python-format
+msgid "%(num)d day"
+msgid_plural "%(num)d days"
+msgstr[0] "%(num)d 澶"
+msgstr[1] "%(num)d 澶"
+
+#: trac/util/datefmt.py:72
+#, python-format
+msgid "%(num)d hour"
+msgid_plural "%(num)d hours"
+msgstr[0] "%(num)d 灏忔椂"
+msgstr[1] "%(num)d 灏忔椂"
+
+#: trac/util/datefmt.py:73
+#, python-format
+msgid "%(num)d minute"
+msgid_plural "%(num)d minutes"
+msgstr[0] "%(num)d 鍒"
+msgstr[1] "%(num)d 鍒"
+
+#: trac/util/datefmt.py:92
+#, python-format
+msgid "%(num)i second"
+msgid_plural "%(num)i seconds"
+msgstr[0] "%(num)i 绉"
+msgstr[1] "%(num)i 绉"
+
 #: trac/util/presentation.py:254
 #, python-format
 msgid "%(last)d of %(total)d"
@@ -3093,96 +3505,92 @@
 msgid "Done."
 msgstr "瀹屾垚銆"
 
-#: trac/versioncontrol/api.py:90
+#: trac/versioncontrol/api.py:87
 #, python-format
 msgid ""
 "Can't synchronize with the repository (%(error)s). Look in the Trac log "
 "for more information."
 msgstr "鏃犳硶涓庣増鏈簱鍚屾 (%(error)s)銆傛洿澶氫俊鎭鏌ョ湅Trac鏃ュ織銆"
 
-#: trac/versioncontrol/api.py:105
+#: trac/versioncontrol/api.py:102
 #, python-format
 msgid "Changeset %(rev)s"
 msgstr "鍙樻洿闆 %(rev)s"
 
-#: trac/versioncontrol/api.py:112
+#: trac/versioncontrol/api.py:109
 msgid "Directory"
 msgstr "鐩綍"
 
-#: trac/versioncontrol/api.py:116
+#: trac/versioncontrol/api.py:113
 #, python-format
 msgid "at version %(rev)s"
-msgstr "浜庣増鏈 %(rev)s"
+msgstr "浜庝慨璁 %(rev)s"
 
-#: trac/versioncontrol/api.py:118
+#: trac/versioncontrol/api.py:115
 msgid "Path"
 msgstr "璺緞"
 
-#: trac/versioncontrol/api.py:142
+#: trac/versioncontrol/api.py:139
 #, python-format
 msgid "Unsupported version control system \"%(name)s\": \"%(error)s\" "
 msgstr "涓嶆敮鎸佺殑鐗堟湰鎺у埗绯荤粺 \"%(name)s\": \"%(error)s\""
 
-#: trac/versioncontrol/api.py:146
+#: trac/versioncontrol/api.py:143
 #, python-format
 msgid ""
 "Unsupported version control system \"%(name)s\": Can't find an "
 "appropriate component, maybe the corresponding plugin was not enabled? "
 msgstr "涓嶆敮鎸佺殑鐗堟湰鎺у埗绯荤粺\"%(name)s\"锛氭湭鑳芥壘鍒板悎閫傜殑缁勪欢锛屼篃璁哥浉鍏虫彃浠舵病鏈夎婵娲伙紵"
 
-#: trac/versioncontrol/api.py:178
+#: trac/versioncontrol/api.py:175
 #, python-format
 msgid "No changeset %(rev)s in the repository"
 msgstr "鍦ㄧ増鏈簱涓病鏈夊彉鏇撮泦 %(rev)s"
 
-#: trac/versioncontrol/api.py:180
+#: trac/versioncontrol/api.py:177
 msgid "No such changeset"
 msgstr "娌℃湁杩欎釜鍙樻洿闆"
 
-#: trac/versioncontrol/api.py:186
+#: trac/versioncontrol/api.py:183
 msgid "No such node"
 msgstr "娌℃湁杩欎釜鑺傜偣"
 
-#: trac/versioncontrol/api.py:524
+#: trac/versioncontrol/api.py:523
 #, python-format
 msgid "Insufficient permissions to access %(path)s"
 msgstr "璁块棶 %(path)s 鐨勬潈闄愪笉澶"
 
-#: trac/versioncontrol/api.py:529
+#: trac/versioncontrol/api.py:528
 #, python-format
 msgid "Insufficient permissions to access changeset %(id)s"
 msgstr "璁块棶鍙樻洿闆 %(id)s 鐨勬潈闄愪笉澶"
 
-#: trac/versioncontrol/cache.py:102
+#: trac/versioncontrol/cache.py:104
 msgid ""
 "The 'repository_dir' has changed, a 'trac-admin resync' operation is "
 "needed."
 msgstr "'repository_dir'宸茬粡琚慨鏀, 闇瑕佹墽琛'trac-admin resync'鎿嶄綔."
 
-#: trac/versioncontrol/cache.py:121
+#: trac/versioncontrol/cache.py:123
 msgid "Missing \"youngest_rev\" in cache metadata"
 msgstr "鍦ㄧ紦瀛樼殑鍏冩暟鎹腑娌℃湁 \"youngest_rev\""
 
-#: trac/versioncontrol/svn_fs.py:305
+#: trac/versioncontrol/svn_fs.py:301
 #, python-format
 msgid "Subversion >= 1.0 required: Found %(version)s"
 msgstr "闇瑕丼ubversion >= 1.0: 鍙戠幇鐨勬槸 %(version)s"
 
-#: trac/versioncontrol/svn_fs.py:387
-msgid "No svn:externals configured in trac.ini"
-msgstr "鍦╰rac.ini娌℃湁svn:externals閰嶇疆"
-
-#: trac/versioncontrol/svn_fs.py:422
+#: trac/versioncontrol/svn_fs.py:325
 #, python-format
 msgid "%(path)s does not appear to be a Subversion repository."
 msgstr "%(path)s 涓嶆槸Subversion鐗堟湰搴撹矾寰."
 
-#: trac/versioncontrol/svn_fs.py:429
+#: trac/versioncontrol/svn_fs.py:332
 #, python-format
 msgid "Couldn't open Subversion repository %(path)s: %(svn_error)s"
 msgstr "涓嶈兘鎵撳紑Subversion鐗堟湰搴 %(path)s锛%(svn_error)s"
 
-#: trac/versioncontrol/svn_fs.py:685
+#: trac/versioncontrol/svn_fs.py:603
 #, python-format
 msgid ""
 "Diff mismatch: Base is a %(oldnode)s (%(oldpath)s in revision %(oldrev)s)"
@@ -3191,53 +3599,119 @@
 "宸紓涓嶅尮閰: 鍩哄噯鏄 %(oldnode)s (%(oldpath)s 鍦ㄤ慨璁 %(oldrev)s)涓,  鑰岀洰鏍囨槸 %(newnode)s "
 "(%(newpath)s 鍦ㄤ慨璁 %(newrev)s)涓."
 
-#: trac/versioncontrol/svn_fs.py:838
+#: trac/versioncontrol/svn_fs.py:757
 #, python-format
 msgid "svn blame failed on %(path)s: %(error)s"
 msgstr "svn杩芥函澶辫触 %(path)s: %(error)s"
 
-#: trac/versioncontrol/templates/browser.html:50
+#: trac/versioncontrol/svn_prop.py:111
+msgid "No svn:externals configured in trac.ini"
+msgstr "鍦╰rac.ini娌℃湁svn:externals閰嶇疆"
+
+#: trac/versioncontrol/svn_prop.py:148
+msgid "merged"
+msgstr "宸插悎骞"
+
+#: trac/versioncontrol/svn_prop.py:148
+msgid "blocked"
+msgstr "宸查樆姝"
+
+#: trac/versioncontrol/svn_prop.py:190
+msgid "eligible"
+msgstr "鍚堟牸鐨"
+
+#: trac/versioncontrol/svn_prop.py:204
+msgid "(toggle deleted branches)"
+msgstr "锛堝垏鎹㈡樉绀哄凡鍒犻櫎鐨勫垎鏀級"
+
+#: trac/versioncontrol/svn_prop.py:231
+msgid "View merge source"
+msgstr "鏄剧ず鍚堝苟婧"
+
+#: trac/versioncontrol/svn_prop.py:241
+msgid "No revisions"
+msgstr "娌℃湁杩欎釜淇"
+
+#: trac/versioncontrol/svn_prop.py:276
+msgid "merged: "
+msgstr "宸插悎骞讹細"
+
+#: trac/versioncontrol/svn_prop.py:276
+msgid "blocked: "
+msgstr "宸查樆姝細"
+
+#: trac/versioncontrol/svn_prop.py:277
+msgid "reverse-merged: "
+msgstr "鍙嶅悜鍚堝苟锛"
+
+#: trac/versioncontrol/svn_prop.py:277
+msgid "un-blocked: "
+msgstr "鏈樆姝細"
+
+#: trac/versioncontrol/svn_prop.py:288
+msgid " (added)"
+msgstr " (宸叉坊鍔)"
+
+#: trac/versioncontrol/svn_prop.py:316
+#: trac/versioncontrol/templates/changeset.html:134
+msgid "removed"
+msgstr "宸插垹闄"
+
+#: trac/versioncontrol/svn_prop.py:319
+msgid " (with no actual effect on merging)"
+msgstr " 锛堝苟闈炵湡鐨勮繘琛屽悎骞讹級"
+
+#: trac/versioncontrol/svn_prop.py:320
+#, python-format
+msgid "Property %(prop)s changed"
+msgstr "灞炴 %(prop)s 宸叉敼鍙"
+
+#: trac/versioncontrol/templates/browser.html:54
+msgid "Hint: clear the field to view latest revision"
+msgstr "鎻愮ず锛氭竻闄よ瀛楁鍙互鏌ョ湅鏈鏂扮殑淇"
+
+#: trac/versioncontrol/templates/browser.html:54
 msgid "View revision:"
 msgstr "鏌ョ湅淇:"
 
-#: trac/versioncontrol/templates/browser.html:60
+#: trac/versioncontrol/templates/browser.html:64
 msgid "Visit:"
 msgstr "璁块棶:"
 
-#: trac/versioncontrol/templates/browser.html:68
+#: trac/versioncontrol/templates/browser.html:72
 msgid "Go!"
 msgstr "璧!"
 
-#: trac/versioncontrol/templates/browser.html:68
+#: trac/versioncontrol/templates/browser.html:72
 msgid "Jump to the chosen preselected path"
 msgstr "璺宠浆鍒伴閫夋嫨鐨勮矾寰"
 
-#: trac/versioncontrol/templates/browser.html:87
-#: trac/versioncontrol/templates/revisionlog.html:93
-#: trac/versioncontrol/web_ui/browser.py:621
+#: trac/versioncontrol/templates/browser.html:91
+#: trac/versioncontrol/templates/revisionlog.html:95
+#: trac/versioncontrol/web_ui/browser.py:644
 msgid "Rev"
 msgstr "Rev"
 
-#: trac/versioncontrol/templates/browser.html:89
-#: trac/versioncontrol/web_ui/browser.py:372 trac/wiki/web_ui.py:550
-#: trac/wiki/web_ui.py:576
+#: trac/versioncontrol/templates/browser.html:93
+#: trac/versioncontrol/web_ui/browser.py:387 trac/wiki/web_ui.py:589
+#: trac/wiki/web_ui.py:616
 msgid "Last Change"
 msgstr "鏈鏂板彉鏇"
 
-#: trac/versioncontrol/templates/browser.html:96
+#: trac/versioncontrol/templates/browser.html:100
 msgid "Parent Directory"
 msgstr "鐖剁洰褰"
 
-#: trac/versioncontrol/templates/browser.html:102
+#: trac/versioncontrol/templates/browser.html:106
 msgid "No files found"
 msgstr "娌℃湁鎵惧埌浠讳綍鏂囦欢銆"
 
-#: trac/versioncontrol/templates/browser.html:110
-#: trac/wiki/templates/wiki_edit.html:41 trac/wiki/templates/wiki_view.html:30
+#: trac/versioncontrol/templates/browser.html:114
+#: trac/wiki/templates/wiki_edit.html:112 trac/wiki/templates/wiki_view.html:37
 msgid "Revision info"
 msgstr "淇淇℃伅"
 
-#: trac/versioncontrol/templates/browser.html:112
+#: trac/versioncontrol/templates/browser.html:116
 #, python-format
 msgid ""
 "Revision [1:%(rev)s], %(size)s\n"
@@ -3246,101 +3720,106 @@
 "淇 [1:%(rev)s], %(size)s\n"
 "            (鐢%(author)s鍦%(date)s鍓嶇鍏)"
 
-#: trac/versioncontrol/templates/browser.html:151
+#: trac/versioncontrol/templates/browser.html:155
 msgid ""
 "[1:Note:] See [2:TracBrowser]\n"
 "        for help on using the browser."
 msgstr "[1:娉ㄦ剰:] 浣跨敤婧愮爜娴忚鍣ㄧ殑甯姪鍙傝 [2:TracBrowser]銆"
 
-#: trac/versioncontrol/templates/browser.html:163
+#: trac/versioncontrol/templates/browser.html:167
 msgid "View changes..."
 msgstr "鏌ラ槄鍙樻洿..."
 
-#: trac/versioncontrol/templates/browser.html:163
+#: trac/versioncontrol/templates/browser.html:167
 msgid "Select paths and revs for Diff"
 msgstr "閫夋嫨杩涜瀵规瘮鐨勮矾寰勫拰淇"
 
-#: trac/versioncontrol/templates/changeset.html:21
-#: trac/versioncontrol/templates/changeset.html:36
-#: trac/versioncontrol/web_ui/changeset.py:346
+#: trac/versioncontrol/templates/changeset.html:26
+#: trac/versioncontrol/templates/changeset.html:41
 msgid "Changeset"
 msgstr "鍙樻洿闆"
 
-#: trac/versioncontrol/templates/changeset.html:22
-#: trac/versioncontrol/templates/changeset.html:32
-#: trac/versioncontrol/templates/changeset.html:34
-#: trac/versioncontrol/templates/changeset.html:36
+#: trac/versioncontrol/templates/changeset.html:27
+#: trac/versioncontrol/templates/changeset.html:37
+#: trac/versioncontrol/templates/changeset.html:39
+#: trac/versioncontrol/templates/changeset.html:41
 msgid "Show full changeset"
 msgstr "鏄剧ず鍏ㄩ儴鍙樻洿闆"
 
-#: trac/versioncontrol/templates/changeset.html:22
+#: trac/versioncontrol/templates/changeset.html:27
 msgid "for"
 msgstr "瀵逛簬"
 
-#: trac/versioncontrol/templates/changeset.html:23
-#: trac/versioncontrol/templates/changeset.html:26
+#: trac/versioncontrol/templates/changeset.html:28
 #: trac/versioncontrol/templates/changeset.html:31
-#: trac/versioncontrol/templates/changeset.html:33
-#: trac/versioncontrol/templates/changeset.html:64
+#: trac/versioncontrol/templates/changeset.html:36
+#: trac/versioncontrol/templates/changeset.html:38
+#: trac/versioncontrol/templates/changeset.html:69
 msgid "Show entry in browser"
 msgstr "鍦ㄦ簮鐮佹祻瑙堝櫒涓樉绀烘潯鐩"
 
-#: trac/versioncontrol/templates/changeset.html:25
+#: trac/versioncontrol/templates/changeset.html:30
 msgid "Changes in"
 msgstr "鍙樻洿浜"
 
-#: trac/versioncontrol/templates/changeset.html:27
+#: trac/versioncontrol/templates/changeset.html:32
 msgid "Show revision log"
 msgstr "鏄剧ず淇鏃ュ織"
 
-#: trac/versioncontrol/templates/changeset.html:30
+#: trac/versioncontrol/templates/changeset.html:35
 msgid "Changes from"
 msgstr "鍙樻洿鑷"
 
-#: trac/versioncontrol/templates/changeset.html:31
-#: trac/versioncontrol/templates/changeset.html:33
+#: trac/versioncontrol/templates/changeset.html:36
+#: trac/versioncontrol/templates/changeset.html:38
 msgid "at"
 msgstr "浜"
 
-#: trac/versioncontrol/templates/changeset.html:32
-#: trac/versioncontrol/templates/changeset.html:34
+#: trac/versioncontrol/templates/changeset.html:37
+#: trac/versioncontrol/templates/changeset.html:39
 msgid "r"
 msgstr "r"
 
-#: trac/versioncontrol/templates/changeset.html:77
-#: trac/versioncontrol/templates/changeset.html:80
+#: trac/versioncontrol/templates/changeset.html:82
+#: trac/versioncontrol/templates/changeset.html:85
 msgid "Show differences"
 msgstr "鏄剧ず宸紓"
 
-#: trac/versioncontrol/templates/changeset.html:77
+#: trac/versioncontrol/templates/changeset.html:82
 msgid "view diffs"
 msgstr "鏌ョ湅宸紓"
 
-#: trac/versioncontrol/templates/changeset.html:87
+#: trac/versioncontrol/templates/changeset.html:85
+#, python-format
+msgid "%(num)d diff"
+msgid_plural "%(num)d diffs"
+msgstr[0] "%(num)d涓樊寮"
+msgstr[1] "%(num)d涓樊寮"
+
+#: trac/versioncontrol/templates/changeset.html:88
+#, python-format
+msgid "%(num)d prop"
+msgid_plural "%(num)d props"
+msgstr[0] "%(num)d涓睘鎬"
+msgstr[1] "%(num)d涓睘鎬"
+
+#: trac/versioncontrol/templates/changeset.html:92
 msgid "Show previous version in browser"
 msgstr "鍦ㄦ祻瑙堝櫒涓樉绀轰笂涓涓増鏈"
 
-#: trac/versioncontrol/templates/changeset.html:87
-msgid "previous"
-msgstr "涓婁竴涓"
-
-#: trac/versioncontrol/templates/changeset.html:109
+#: trac/versioncontrol/templates/changeset.html:114
 msgid "Message:"
 msgstr "娑堟伅:"
 
-#: trac/versioncontrol/templates/changeset.html:121
+#: trac/versioncontrol/templates/changeset.html:126
 msgid "Location:"
 msgstr "浣嶇疆:"
 
-#: trac/versioncontrol/templates/changeset.html:129
-msgid "removed"
-msgstr "宸插垹闄"
-
-#: trac/versioncontrol/templates/changeset.html:131
+#: trac/versioncontrol/templates/changeset.html:136
 msgid "copied"
 msgstr "宸插鍒"
 
-#: trac/versioncontrol/templates/changeset.html:132
+#: trac/versioncontrol/templates/changeset.html:137
 msgid "moved"
 msgstr "宸茬Щ鍔"
 
@@ -3392,75 +3871,83 @@
 msgid "(log)"
 msgstr "(鏃ュ織)"
 
-#: trac/versioncontrol/templates/revisionlog.html:23
+#: trac/versioncontrol/templates/revisionlog.html:24
 msgid "Revision Log Mode:"
 msgstr "淇鏃ュ織妯″紡:"
 
-#: trac/versioncontrol/templates/revisionlog.html:27
+#: trac/versioncontrol/templates/revisionlog.html:28
 msgid "Stop on copy"
 msgstr "鍙樉绀哄埌澶嶅埗鏃剁殑淇"
 
-#: trac/versioncontrol/templates/revisionlog.html:33
+#: trac/versioncontrol/templates/revisionlog.html:34
 msgid "Follow copies"
 msgstr "璺熼殢澶嶅埗"
 
-#: trac/versioncontrol/templates/revisionlog.html:39
+#: trac/versioncontrol/templates/revisionlog.html:40
 msgid "Show only adds and deletes"
 msgstr "鍙樉绀哄鍔犲拰鍒犻櫎"
 
-#: trac/versioncontrol/templates/revisionlog.html:44
+#: trac/versioncontrol/templates/revisionlog.html:45
 msgid "View log starting at"
 msgstr "鏌ョ湅鏃ュ織锛岃捣濮嬩慨璁:"
 
-#: trac/versioncontrol/templates/revisionlog.html:48
+#: trac/versioncontrol/templates/revisionlog.html:49
 msgid "and back to"
 msgstr "缁撴潫淇:"
 
-#: trac/versioncontrol/templates/revisionlog.html:53
+#: trac/versioncontrol/templates/revisionlog.html:54
 msgid "Show at most"
 msgstr "鏈澶氭樉绀"
 
-#: trac/versioncontrol/templates/revisionlog.html:55
+#: trac/versioncontrol/templates/revisionlog.html:56
 msgid "revisions per page."
 msgstr "淇/椤."
 
-#: trac/versioncontrol/templates/revisionlog.html:60
+#: trac/versioncontrol/templates/revisionlog.html:61
 msgid "Show full log messages"
 msgstr "鏄剧ず瀹屾暣鏃ュ織淇℃伅"
 
-#: trac/versioncontrol/templates/revisionlog.html:78
+#: trac/versioncontrol/templates/revisionlog.html:79
 msgid "Copied or renamed"
 msgstr "澶嶅埗鎴栨洿鍚"
 
-#: trac/versioncontrol/templates/revisionlog.html:85
+#: trac/versioncontrol/templates/revisionlog.html:87
 msgid "Diff from Old Revision to New Revision (select them below)"
 msgstr "鏄剧ず鏃т慨璁㈠埌鏂颁慨璁㈢殑宸紓(浠庝笅闈㈤夋嫨)"
 
-#: trac/versioncontrol/templates/revisionlog.html:94
+#: trac/versioncontrol/templates/revisionlog.html:93
+msgid "Old / New"
+msgstr "鏃/鏂"
+
+#: trac/versioncontrol/templates/revisionlog.html:93
+msgid "Diff"
+msgstr "宸紓"
+
+#: trac/versioncontrol/templates/revisionlog.html:96
 msgid "Chgset"
 msgstr "鍙樻洿闆"
 
-#: trac/versioncontrol/templates/revisionlog.html:97
+#: trac/versioncontrol/templates/revisionlog.html:99
 msgid "Log Message"
 msgstr "鏃ュ織娑堟伅"
 
-#: trac/versioncontrol/templates/revisionlog.html:104
+#: trac/versioncontrol/templates/revisionlog.html:106
 msgid "No revisions found"
 msgstr "娌℃湁鎵惧埌浠讳綍淇"
 
-#: trac/versioncontrol/templates/revisionlog.html:116
+#: trac/versioncontrol/templates/revisionlog.html:120
 msgid "copied from"
 msgstr "澶嶅埗浜"
 
-#: trac/versioncontrol/templates/revisionlog.html:130
+#: trac/versioncontrol/templates/revisionlog.html:134
 msgid "View log starting at this revision"
 msgstr "鏌ョ湅姝や慨璁箣鍚庣殑鏃ュ織"
 
-#: trac/versioncontrol/templates/revisionlog.html:171
+#: trac/versioncontrol/templates/revisionlog.html:180
 msgid "Diff from Old Revision to New Revision (select them above)"
 msgstr "鏄剧ず鏃т慨璁㈠埌鏂颁慨璁㈢殑宸紓(浠庝笂闈㈤夋嫨)"
 
-#: trac/versioncontrol/templates/revisionlog.html:176
+#: trac/versioncontrol/templates/revisionlog.html:185
 msgid ""
 "[1:Note:] See [2:TracRevisionLog]\n"
 "        for help on using the revision log."
@@ -3482,208 +3969,225 @@
 "# \n"
 "# 鐢盩rac鐢熸垚"
 
-#: trac/versioncontrol/web_ui/browser.py:297
+#: trac/versioncontrol/web_ui/browser.py:293
 msgid "Browse Source"
 msgstr "婧愮爜娴忚"
 
-#: trac/versioncontrol/web_ui/browser.py:344
-#: trac/versioncontrol/web_ui/changeset.py:242
+#: trac/versioncontrol/web_ui/browser.py:340
+#: trac/versioncontrol/web_ui/changeset.py:239
 msgid "Invalid Changeset Number"
 msgstr "鏃犳晥鍙樻洿闆嗙増鏈彿"
 
-#: trac/versioncontrol/web_ui/browser.py:350
-#: trac/versioncontrol/web_ui/log.py:97
+#: trac/versioncontrol/web_ui/browser.py:372
+#: trac/versioncontrol/web_ui/browser.py:380
+#, python-format
+msgid "Revision %(num)s"
+msgstr "淇 %(num)s"
+
+#: trac/versioncontrol/web_ui/browser.py:381
+msgid "Previous Revision"
+msgstr "涓婁竴淇"
+
+#: trac/versioncontrol/web_ui/browser.py:381
+msgid "Next Revision"
+msgstr "涓嬩竴淇"
+
+#: trac/versioncontrol/web_ui/browser.py:382
+msgid "Latest Revision"
+msgstr "鏈鏂颁慨璁"
+
+#: trac/versioncontrol/web_ui/browser.py:386
+#: trac/versioncontrol/web_ui/log.py:279
 msgid "Parent directory"
 msgstr "鐖剁洰褰"
 
-#: trac/versioncontrol/web_ui/browser.py:376
+#: trac/versioncontrol/web_ui/browser.py:391
 msgid "Normal"
 msgstr "姝ｅ父"
 
-#: trac/versioncontrol/web_ui/browser.py:377
+#: trac/versioncontrol/web_ui/browser.py:392
 msgid "View file without annotations"
 msgstr "鏌ョ湅鏂囦欢(涓嶅寘鍚敞瑙)"
 
-#: trac/versioncontrol/web_ui/browser.py:381
+#: trac/versioncontrol/web_ui/browser.py:396
 msgid "Annotate"
 msgstr "娉ㄨВ"
 
-#: trac/versioncontrol/web_ui/browser.py:382
+#: trac/versioncontrol/web_ui/browser.py:397
 msgid ""
 "Annotate each line with the last changed revision (this can be time "
 "consuming...)"
 msgstr "缁欐渶鏂颁慨璁㈡瘡琛岄兘鍔犳敞瑙 (杩欏彲鑳芥槸鑰楁椂鎿嶄綔...)"
 
-#: trac/versioncontrol/web_ui/browser.py:388
+#: trac/versioncontrol/web_ui/browser.py:403
 msgid "Revision Log"
 msgstr "淇鏃ュ織"
 
-#: trac/versioncontrol/web_ui/browser.py:454
-#: trac/versioncontrol/web_ui/changeset.py:336
+#: trac/versioncontrol/web_ui/browser.py:469
+#: trac/versioncontrol/web_ui/changeset.py:333
 msgid "Zip Archive"
 msgstr "Zip褰掓。"
 
-#: trac/versioncontrol/web_ui/browser.py:621
+#: trac/versioncontrol/web_ui/browser.py:644
 msgid "Revision in which the line changed"
 msgstr "璇ヨ鍙戠敓鍙樻洿鐨勪慨璁"
 
-#: trac/versioncontrol/web_ui/changeset.py:335
+#: trac/versioncontrol/web_ui/changeset.py:332
 msgid "Unified Diff"
 msgstr "缁熶竴瀵规瘮"
 
-#: trac/versioncontrol/web_ui/changeset.py:350
+#: trac/versioncontrol/web_ui/changeset.py:343
+msgid "Previous Changeset"
+msgstr "涓婁竴鍙樻洿闆"
+
+#: trac/versioncontrol/web_ui/changeset.py:343
+msgid "Next Changeset"
+msgstr "涓嬩竴鍙樻洿闆"
+
+#: trac/versioncontrol/web_ui/changeset.py:347
 msgid "Reverse Diff"
 msgstr "鍙嶅悜瀵规瘮"
 
-#: trac/versioncontrol/web_ui/changeset.py:381
+#: trac/versioncontrol/web_ui/changeset.py:378
 #, python-format
 msgid "Changeset %(id)s for %(path)s"
 msgstr "鍙樻洿闆 %(id)s 涓 %(path)s"
 
-#: trac/versioncontrol/web_ui/changeset.py:384
-#: trac/versioncontrol/web_ui/changeset.py:406
-#: trac/versioncontrol/web_ui/changeset.py:424
+#: trac/versioncontrol/web_ui/changeset.py:381
+#: trac/versioncontrol/web_ui/changeset.py:403
+#: trac/versioncontrol/web_ui/changeset.py:421
 #, python-format
 msgid "Changeset %(id)s"
 msgstr "鍙樻洿闆 %(id)s"
 
-#: trac/versioncontrol/web_ui/changeset.py:454
+#: trac/versioncontrol/web_ui/changeset.py:451
 #, python-format
 msgid "Show revision %(rev)s of this file in browser"
 msgstr "鍦ㄦ祻瑙堝櫒涓樉绀烘枃浠剁殑淇 %(rev)s"
 
-#: trac/versioncontrol/web_ui/changeset.py:602
+#: trac/versioncontrol/web_ui/changeset.py:598
 #, python-format
 msgid "Show the changeset %(id)s restricted to %(path)s"
 msgstr "鏄剧ず鍙樻洿闆 %(id)s , 浠呭寘鍚矾寰 %(path)s"
 
-#: trac/versioncontrol/web_ui/changeset.py:612
+#: trac/versioncontrol/web_ui/changeset.py:608
 #, python-format
 msgid "Show the %(range)s differences restricted to %(path)s"
 msgstr "鏄剧ず宸紓鑼冨洿 %(range)s , 浠呭寘鍚矾寰 %(path)s"
 
-#: trac/versioncontrol/web_ui/changeset.py:803
+#: trac/versioncontrol/web_ui/changeset.py:804
 msgid "Repository checkins"
 msgstr "鐗堟湰搴撴鍏"
 
-#: trac/versioncontrol/web_ui/changeset.py:978
+#: trac/versioncontrol/web_ui/changeset.py:979
 msgid "Changesets"
 msgstr "鍙樻洿闆"
 
-#: trac/versioncontrol/web_ui/log.py:169
+#: trac/versioncontrol/web_ui/log.py:178
 #, python-format
 msgid ""
 "The file or directory '%(path)s' doesn't exist at revision %(rev)s or at "
 "any previous revision."
 msgstr "鏂囦欢鎴栫洰褰 '%(path)s' 涓嶅瓨鍦 %(rev)s 鍙婁互鍓嶇殑淇銆"
 
-#: trac/versioncontrol/web_ui/log.py:171
+#: trac/versioncontrol/web_ui/log.py:180
 msgid "Nonexistent path"
 msgstr "璺緞涓嶅瓨鍦"
 
-#: trac/versioncontrol/web_ui/log.py:187
+#: trac/versioncontrol/web_ui/log.py:207
 #, python-format
 msgid "Revision Log (restarting at %(path)s, rev. %(rev)s)"
 msgstr "淇鏃ュ織 (璧峰浜 %(path)s, 淇 %(rev)s)"
 
-#: trac/versioncontrol/web_ui/log.py:244
+#: trac/versioncontrol/web_ui/log.py:287
 msgid "ChangeLog"
 msgstr "鍙樻洿鏃ュ織"
 
-#: trac/versioncontrol/web_ui/log.py:246
+#: trac/versioncontrol/web_ui/log.py:289
 msgid "View Latest Revision"
 msgstr "鏌ョ湅鏈鏂颁慨璁"
 
-#: trac/versioncontrol/web_ui/log.py:250
+#: trac/versioncontrol/web_ui/log.py:293
 msgid "Older Revisions"
 msgstr "鏇存棭鐗堟湰"
 
-#: trac/versioncontrol/web_ui/util.py:61
+#: trac/versioncontrol/web_ui/util.py:57
 msgid "search"
 msgstr "鎼滅储"
 
-#: trac/versioncontrol/web_ui/util.py:65
+#: trac/versioncontrol/web_ui/util.py:61
 #, python-format
 msgid ""
 "You can %(search)s in the repository history to see if that path existed "
 "but was later removed"
 msgstr "鎮ㄥ彲浠ュ湪鐗堟湰搴撳巻鍙蹭腑%(search)s锛屼互鍒ゆ柇鏄惁璺緞鏇剧粡瀛樺湪浣嗗悗鏉ヨ鍒犻櫎浜嗐"
 
-#: trac/web/auth.py:88
+#: trac/web/auth.py:98
 #, python-format
 msgid "logged in as %(user)s"
 msgstr "鐧诲綍涓 %(user)s"
 
-#: trac/web/auth.py:91
+#: trac/web/auth.py:101
 msgid "Logout"
 msgstr "娉ㄩ攢"
 
-#: trac/web/auth.py:94
+#: trac/web/auth.py:104
 msgid "Login"
 msgstr "鐧诲綍"
 
-#: trac/web/auth.py:136
+#: trac/web/auth.py:146
 #, python-format
 msgid "Already logged in as %(user)s."
 msgstr "宸茬粡鐧诲綍涓 %(user)s."
 
-#: trac/web/chrome.py:178 trac/web/chrome.py:186
+#: trac/web/chrome.py:576
 #, python-format
-msgid "Previous %(label)s"
-msgstr "涓婁竴%(label)s"
+msgid "Error with navigation contributor \"%(name)s\""
+msgstr "瀵艰埅璐＄尞鑰 \"%(name)s\" 閿欒"
 
-#: trac/web/chrome.py:198 trac/web/chrome.py:205
-#, python-format
-msgid "Next %(label)s"
-msgstr "涓嬩竴%(label)s"
-
-#: trac/web/chrome.py:814
+#: trac/web/chrome.py:866
 msgid "(unknown template location)"
 msgstr "(鏈煡妯℃澘璺緞)"
 
-#: trac/web/chrome.py:815
+#: trac/web/chrome.py:867
 #, python-format
 msgid "Genshi %(error)s error while rendering template %(location)s"
 msgstr "Genshi鍦ㄦ覆鏌撴ā鏉%(location)s鏃讹紝鍙戠敓閿欒%(error)s銆"
 
-#. ... not logged in, you may want to 'do so' now (link)
-#: trac/web/main.py:493
+#. TRANSLATOR: ... not logged in, you may want to 'do so' now (link)
+#: trac/web/main.py:523
 msgid "do so"
 msgstr "杩欐牱鍋"
 
-#: trac/web/main.py:495
+#: trac/web/main.py:525
 #, python-format
 msgid "You are currently not logged in. You may want to %(do_so)s now."
 msgstr "鎮ㄧ幇鍦ㄦ病鏈夌櫥褰曪紝鎮ㄤ篃璁告兂瑕佺幇鍦ㄥ氨%(do_so)s銆"
 
-#: trac/wiki/admin.py:84
+#: trac/wiki/admin.py:113
 #, python-format
 msgid "'%(name)s' is not a file"
 msgstr "'%(name)s'涓嶆槸涓涓枃浠躲"
 
-#: trac/wiki/admin.py:129
+#: trac/wiki/admin.py:164 trac/wiki/admin.py:247
 #, python-format
 msgid "  %(page)s imported from %(filename)s"
 msgstr "宸蹭粠%(filename)s涓鍏%(page)s"
 
-#: trac/wiki/admin.py:155
-msgid "Title"
-msgstr "鏍囬"
-
-#: trac/wiki/admin.py:155
+#: trac/wiki/admin.py:196
 msgid "Edits"
 msgstr "缂栬緫娆℃暟"
 
-#: trac/wiki/admin.py:165
+#: trac/wiki/admin.py:206
 msgid "Deleted pages"
 msgstr "宸插垹闄ら〉闈 "
 
-#: trac/wiki/admin.py:183
+#: trac/wiki/admin.py:226
 #, python-format
 msgid "'%(name)s' is not a directory"
 msgstr "'%(name)s'涓嶆槸涓涓洰褰曘"
 
-#: trac/wiki/api.py:301 trac/wiki/templates/wiki_view.html:53
+#: trac/wiki/api.py:301
 msgid "no permission to view this wiki page"
 msgstr "鏃犳潈鏌ョ湅姝iki椤甸潰"
 
@@ -3701,28 +4205,28 @@
 msgid "Can't view %(link)s:"
 msgstr "鏃犳硶鏌ョ湅 %(link)s:"
 
-#: trac/wiki/macros.py:478
+#: trac/wiki/macros.py:501
 #, python-format
 msgid "Error: Can't get description for macro %(name)s"
 msgstr "閿欒: 鏃犳硶寰楀埌瀹 %(name)s 鐨勬弿杩"
 
-#: trac/wiki/macros.py:561
+#: trac/wiki/macros.py:595
 msgid "Table of Contents"
 msgstr "鍐呭绱㈠紩"
 
-#: trac/wiki/model.py:149
+#: trac/wiki/model.py:150
 msgid "Page not modified"
 msgstr "鏈慨鏀圭殑椤甸潰"
 
-#: trac/wiki/web_ui.py:89 trac/wiki/web_ui.py:627
+#: trac/wiki/web_ui.py:88 trac/wiki/web_ui.py:667
 msgid "Wiki"
 msgstr "Wiki"
 
-#: trac/wiki/web_ui.py:91
+#: trac/wiki/web_ui.py:90
 msgid "Help/Guide"
 msgstr "甯姪/鎸囧崡"
 
-#: trac/wiki/web_ui.py:126
+#: trac/wiki/web_ui.py:125
 #, python-format
 msgid "No version \"%(num)s\" for Wiki page \"%(name)s\""
 msgstr "鏃犵増鏈 \"%(num)s\" , Wiki椤甸潰 \"%(name)s\""
@@ -3742,7 +4246,7 @@
 msgid "Invalid Wiki page: %(message)s"
 msgstr "鏃犳晥鐨刉iki椤甸潰: %(message)s"
 
-#. wiki page
+#. TRANSLATOR: wiki page
 #: trac/wiki/web_ui.py:224
 msgid "currently edited"
 msgstr "姝ｅ湪缂栬緫"
@@ -3750,7 +4254,7 @@
 #: trac/wiki/web_ui.py:258
 #, python-format
 msgid "The page %(name)s has been deleted."
-msgstr "椤甸潰 %(page)s 宸插垹闄ゃ"
+msgstr "椤甸潰 %(name)s 宸插垹闄ゃ"
 
 #: trac/wiki/web_ui.py:263
 #, python-format
@@ -3762,78 +4266,82 @@
 msgid "The version %(version)d of the page %(name)s has been deleted."
 msgstr "椤甸潰 %(name)s 鐗堟湰 %(version)d 宸插垹闄ゃ"
 
-#: trac/wiki/web_ui.py:294
+#: trac/wiki/web_ui.py:293
 msgid "Page not modified, showing latest version."
 msgstr "椤甸潰鏈慨鏀癸紝鏄剧ず鏈鏂扮増鏈"
 
-#: trac/wiki/web_ui.py:326
+#: trac/wiki/web_ui.py:325
 #, python-format
 msgid "Version %(num)s of page \"%(name)s\" does not exist"
 msgstr "鐗堟湰 %(num)s 涓嶅瓨鍦, 椤甸潰 \"%(name)s\" "
 
-#: trac/wiki/web_ui.py:380
+#: trac/wiki/web_ui.py:377
 msgid "Page history"
 msgstr "椤甸潰鍘嗗彶"
 
-#: trac/wiki/web_ui.py:397
+#: trac/wiki/web_ui.py:395
 msgid "Wiki History"
 msgstr "Wiki鍘嗗彶"
 
-#: trac/wiki/web_ui.py:462
+#: trac/wiki/web_ui.py:481
 #, python-format
 msgid "Page %(name)s does not exist"
 msgstr "椤甸潰 %(name)s 涓嶅瓨鍦"
 
-#: trac/wiki/web_ui.py:500
+#: trac/wiki/web_ui.py:522
 #, python-format
 msgid "Page %(name)s not found"
 msgstr "娌℃湁鎵惧埌椤甸潰 %(name)s"
 
-#: trac/wiki/web_ui.py:536
+#: trac/wiki/web_ui.py:574
 msgid "View latest version"
 msgstr "鏌ョ湅鏈鏂扮増鏈"
 
-#: trac/wiki/web_ui.py:540
+#: trac/wiki/web_ui.py:578
 msgid "View parent page"
 msgstr "鏌ョ湅鐖堕〉闈"
 
-#: trac/wiki/web_ui.py:549
+#: trac/wiki/web_ui.py:587
+msgid "Previous Version"
+msgstr "涓婁竴鐗堟湰"
+
+#: trac/wiki/web_ui.py:587
+msgid "Next Version"
+msgstr "涓嬩竴鐗堟湰"
+
+#: trac/wiki/web_ui.py:588
 msgid "View Latest Version"
 msgstr "鏌ョ湅鏈鏂扮増鏈"
 
-#: trac/wiki/web_ui.py:555
+#: trac/wiki/web_ui.py:594
 msgid "Up"
 msgstr "鍚戜笂"
 
-#: trac/wiki/web_ui.py:571
+#: trac/wiki/web_ui.py:611
 msgid "Start Page"
 msgstr "璧峰椤"
 
-#: trac/wiki/web_ui.py:572
+#: trac/wiki/web_ui.py:612
 msgid "Index"
 msgstr "绱㈠紩"
 
-#: trac/wiki/web_ui.py:574
+#: trac/wiki/web_ui.py:614
 msgid "History"
 msgstr "鍘嗗彶"
 
-#: trac/wiki/web_ui.py:584
+#: trac/wiki/web_ui.py:624
 msgid "Wiki changes"
 msgstr "Wiki鍙樻洿"
 
-#. wiki page
-#: trac/wiki/web_ui.py:613
+#. TRANSLATOR: wiki page
+#: trac/wiki/web_ui.py:653
 msgid " edited"
 msgstr "宸茬紪杈"
 
-#: trac/wiki/web_ui.py:613
+#: trac/wiki/web_ui.py:653
 msgid " created"
 msgstr "宸插垱寤"
 
-#: trac/wiki/templates/wiki_delete.html:22
-msgid "Delete"
-msgstr "鍒犻櫎"
-
 #: trac/wiki/templates/wiki_delete.html:26
 msgid "Are you sure you want to"
 msgstr "鎮ㄧ‘璁"
@@ -3860,121 +4368,185 @@
 msgid "Delete version %(version)d"
 msgstr "鍒犻櫎鐗堟湰 %(version)d"
 
-#: trac/wiki/templates/wiki_edit.html:28
+#: trac/wiki/templates/wiki_edit.html:67
+msgid "Go to Save, Preview, Review or Cancel buttons"
+msgstr "杞埌淇濆瓨銆侀瑙堛佹鏌ユ垨鍙栨秷鎸夐挳"
+
+#: trac/wiki/templates/wiki_edit.html:69
+msgid "See the diffs"
+msgstr "鏌ョ湅宸紓"
+
+#: trac/wiki/templates/wiki_edit.html:69
+#: trac/wiki/templates/wiki_edit_form.html:38
+msgid "Review"
+msgstr "妫鏌"
+
+#: trac/wiki/templates/wiki_edit.html:70
+msgid "See the preview"
+msgstr "鏌ョ湅棰勮"
+
+#: trac/wiki/templates/wiki_edit.html:73
 msgid "Editing"
 msgstr "缂栬緫"
 
-#: trac/wiki/templates/wiki_edit.html:30
+#: trac/wiki/templates/wiki_edit.html:75
 msgid "Someone else has modified that page since you started your edits."
 msgstr "宸叉湁鍏朵粬浜轰慨鏀逛簡璇ラ〉闈."
 
-#: trac/wiki/templates/wiki_edit.html:31
+#: trac/wiki/templates/wiki_edit.html:76
 msgid "If you save right away, you risk to revert those changes"
 msgstr "濡傛灉鎮ㄧ幇鍦ㄤ繚瀛, 鍙兘灏嗛偅浜涗慨鏀硅鐩"
 
-#: trac/wiki/templates/wiki_edit.html:31
+#: trac/wiki/templates/wiki_edit.html:76
 msgid "(highlighted below as deletions)."
 msgstr "(鍒犻櫎閮ㄥ垎鍦ㄤ笅闈㈤珮浜樉绀)."
 
-#: trac/wiki/templates/wiki_edit.html:33
+#: trac/wiki/templates/wiki_edit.html:78
 msgid ""
 "Please review all those changes and manually merge them with your\n"
 "        own changes."
 msgstr "璇锋鏌ユ墍鏈変慨鏀, 骞舵墜宸ュ悎骞跺埌鎮ㄧ殑淇敼涓."
 
-#: trac/wiki/templates/wiki_edit.html:34
+#: trac/wiki/templates/wiki_edit.html:79
 msgid "If you're unsure about what you're doing, please press"
 msgstr "濡傛灉鎮ㄥ鎵鍋氱殑涓嶇‘瀹, 璇锋寜"
 
-#: trac/wiki/templates/wiki_edit.html:35
+#: trac/wiki/templates/wiki_edit.html:80
 msgid ""
 "(losing your changes) and start editing the latest version of the page\n"
 "        again."
 msgstr "(澶卞幓鎮ㄧ殑淇敼) 鐒跺悗閲嶆柊寮濮嬬紪杈戦〉闈㈢殑鏈鍏堢増鏈."
 
-#: trac/wiki/templates/wiki_edit.html:43
+#: trac/wiki/templates/wiki_edit.html:114
 msgid "Change information for future version"
 msgstr "鏀瑰彉鏈潵鐗堟湰鐨勪俊鎭"
 
-#: trac/wiki/templates/wiki_edit.html:44 trac/wiki/templates/wiki_view.html:33
+#: trac/wiki/templates/wiki_edit.html:115
 msgid "(modified by"
 msgstr "(淇敼鑰"
 
-#: trac/wiki/templates/wiki_edit.html:62
+#: trac/wiki/templates/wiki_edit.html:124
+msgid "Go to the editor"
+msgstr "杞悜缂栬緫鍣"
+
+#: trac/wiki/templates/wiki_edit.html:127
+#: trac/wiki/templates/wiki_edit_form.html:74
+msgid "Review Changes"
+msgstr "棰勮鍙樻洿"
+
+#: trac/wiki/templates/wiki_edit.html:129
+msgid "No changes"
+msgstr "娌℃湁鍙樻洿"
+
+#: trac/wiki/templates/wiki_edit.html:142
 msgid ""
 "Sorry, this page has been modified by somebody else since you started\n"
 "            editing. Your changes cannot be saved."
 msgstr "瀵逛笉璧, 璇ラ〉闈㈠凡缁忚鍏朵粬浜轰慨鏀. 鎮ㄤ笉鑳戒繚瀛樻墍鍋氱殑淇敼."
 
-#: trac/wiki/templates/wiki_edit.html:75
+#: trac/wiki/templates/wiki_edit_form.html:16
 msgid "Adjust edit area height:"
 msgstr "璋冩暣缂栬緫妗嗛珮搴:"
 
-#: trac/wiki/templates/wiki_edit.html:87
+#: trac/wiki/templates/wiki_edit_form.html:24
+msgid "Selecting and pressing 'Preview' enters a two-column [edit|preview] mode"
+msgstr "閫夋嫨骞舵寜涓 '棰勮' 杩涘叆鍙屽垪 [缂栬緫|棰勮] 妯″紡"
+
+#: trac/wiki/templates/wiki_edit_form.html:24
+msgid "Edit side-by-side"
+msgstr "骞舵帓缂栬緫"
+
+#: trac/wiki/templates/wiki_edit_form.html:32
 msgid ""
 "[1:Note:] See [2:WikiFormatting] and\n"
-"          [3:TracWiki] for help on editing wiki content."
+"        [3:TracWiki] for help on editing wiki content."
 msgstr ""
 "[1:娉ㄩ噴:] 鏌ョ湅 [2:WikiFormatting] 鍜孿n"
 "          [3:TracWiki] 浠ヨ幏寰楃紪杈慦iki鍐呭鐨勫府鍔."
 
-#: trac/wiki/templates/wiki_edit.html:92
+#: trac/wiki/templates/wiki_edit_form.html:38
+msgid "See the start of the diffs"
+msgstr "閫夋嫨宸紓鐨勫熀鍑嗗拰鐩爣:"
+
+#: trac/wiki/templates/wiki_edit_form.html:39
+msgid "See the start of the preview"
+msgstr "鏌ョ湅棰勮寮澶"
+
+#: trac/wiki/templates/wiki_edit_form.html:43
 msgid "Change information"
 msgstr "鍙樻洿淇℃伅"
 
-#: trac/wiki/templates/wiki_edit.html:103
+#: trac/wiki/templates/wiki_edit_form.html:54
 msgid "Comment about this change (optional):"
 msgstr "璇勮姝ゆ淇敼(鍙):"
 
-#: trac/wiki/templates/wiki_edit.html:110
+#: trac/wiki/templates/wiki_edit_form.html:61
 msgid "Page is read-only"
 msgstr "椤甸潰鍙"
 
-#: trac/wiki/templates/wiki_edit.html:118
+#: trac/wiki/templates/wiki_edit_form.html:69
 msgid "Merge changes"
 msgstr "鍚堝苟鍙樻洿"
 
-#: trac/wiki/templates/wiki_edit.html:122
+#: trac/wiki/templates/wiki_edit_form.html:73
 msgid "Preview Page"
 msgstr "椤甸潰棰勮"
 
-#: trac/wiki/templates/wiki_edit.html:123
-msgid "Review Changes"
-msgstr "棰勮鍙樻洿"
+#: trac/wiki/templates/wiki_view.html:28
+msgid "View WikiStart"
+msgstr "鏌ョ湅 WikiStart"
 
-#: trac/wiki/templates/wiki_view.html:47
-msgid "Describe"
-msgstr "璇峰湪杩欓噷鎻忚堪"
+#: trac/wiki/templates/wiki_view.html:28
+msgid "wiki:"
+msgstr "wiki"
 
-#: trac/wiki/templates/wiki_view.html:47
-msgid "here."
-msgstr "銆"
+#: trac/wiki/templates/wiki_view.html:39
+#, python-format
+msgid "Version %(version)s (modified by %(author)s, %(date)s ago)"
+msgstr "鐗堟湰 %(version)s (鐢 %(author)s 浜 %(date)s 鍓嶄慨鏀)"
 
-#: trac/wiki/templates/wiki_view.html:49
-msgid "Alternatively, you can also create the page higher in the hierarchy:"
+#: trac/wiki/templates/wiki_view.html:52
+#, python-format
+msgid "Last modified by %(author)s on %(datetime)s (%(reldate)s ago)"
+msgstr "鐢 %(author)s 浜 %(datetime)s (%(reldate)s 鍓) 鏈鍚庝竴娆′慨鏀"
+
+#: trac/wiki/templates/wiki_view.html:57
+msgid "The page"
+msgstr "姝ら〉闈"
+
+#: trac/wiki/templates/wiki_view.html:57
+msgid "does not exist. You can create it here."
+msgstr "涓嶅瓨鍦ㄣ備綘鍙互鍦ㄦ鍒涘缓瀹冦"
+
+#: trac/wiki/templates/wiki_view.html:59
+msgid "You could also create the same page higher in the hierarchy:"
 msgstr "姝ゅ锛屾偍涔熷彲浠ュ垱寤虹洰褰曞眰娆℃洿楂樼殑椤甸潰:"
 
-#: trac/wiki/templates/wiki_view.html:74
+#: trac/wiki/templates/wiki_view.html:80
 msgid "Edit this page"
 msgstr "缂栬緫姝ら〉闈"
 
-#: trac/wiki/templates/wiki_view.html:77
+#: trac/wiki/templates/wiki_view.html:83
 msgid "Create this page"
 msgstr "鍒涘缓姝ら〉闈"
 
-#: trac/wiki/templates/wiki_view.html:79
+#: trac/wiki/templates/wiki_view.html:85
 msgid "Using the template:"
 msgstr "浣跨敤妯℃澘:"
 
-#: trac/wiki/templates/wiki_view.html:82
+#: trac/wiki/templates/wiki_view.html:88
 msgid "(blank page)"
 msgstr "(绌虹櫧椤甸潰)"
 
-#: trac/wiki/templates/wiki_view.html:101
+#: trac/wiki/templates/wiki_view.html:107
 msgid "Delete this version"
 msgstr "鍒犻櫎姝ょ増鏈"
 
-#: trac/wiki/templates/wiki_view.html:103
+#: trac/wiki/templates/wiki_view.html:109
 msgid "Delete page"
 msgstr "鍒犻櫎椤甸潰 "
 
+#: trac/wiki/templates/wiki_view.html:118
+msgid "The following pages have a name similar to this page, and may be related:"
+msgstr "浠ヤ笅椤甸潰涓庢椤甸潰鍚嶅瓧鐩镐技锛屽彲鑳戒細鏈夊叧鑱旓細"
+

